2009-09-21 16 views
5

Một câu hỏi ngẫu nhiên khác đánh tôi (Tôi đã uống ~ 9 tách cà phê trong 5 giờ qua, xin lỗi ...) - Bạn sẽ cho bạn thấy loại thanh tiến trình nào cho người dùng mà bạn không làm t biết phải mất bao lâu, nhưng bạn có ý tưởng tốt về thời gian "trung bình". Ví dụ, một nhiệm vụ thường mất khoảng 30 giây, nhưng bạn không có cách nào để biết tiến trình (trừ khi nó vẫn tiếp diễn hoặc thất bại). UX tốt nhất là gì ?:Thanh tiến trình cho các tác vụ có thể mất một lượng thời gian không xác định?

  • Thanh tiến trình khởi động nhanh và chậm (có thể là đường cong 1/x), chạm 50% xung quanh thời gian nhiệm vụ trung bình hướng dẫn gợi ý điều này).
  • Thanh tiến trình tiến triển, từ từ, với tốc độ không đổi và có thể đạt tới "thời gian trung bình" ở mức 15% hoặc cái gì đó (IE/Firefox thực hiện điều này khi bước đầu tìm kiếm tên miền)
  • Thanh không rõ ràng (mac) có điều này tất cả các nơi, các phiên bản windows mới hơn có nó, quá) mà chỉ cho thấy một số loại chuyển động mà không gợi ý bất kỳ tiến bộ, một spinner, hoặc một số hình ảnh động mà chỉ thông báo cho người dùng rằng một cái gì đó đang xảy ra.

Câu trả lời có khác nếu thời gian trung bình là 10 phút thay vì 30 giây?

Cảm ơn, Robert

EDIT:

Chỉ cần được rõ ràng, câu hỏi là về thanh tiến trình mà bạn không có ý tưởng/dấu hiệu cho thấy bao lâu nó sẽ mất (ví dụ, thực hiện một tác vụ trên máy từ xa). Nếu bạn có một số dấu hiệu của sự tiến bộ, nó thường là tốt để sử dụng đó.

+5

Dù bạn làm gì, đừng chạy nó lên đến 99% và giữ nó ở đó trong một thời gian rất dài. Microsoft làm điều đó với tôi mọi lúc. –

+4

Ví dụ: http://xkcd.com/612/ –

+2

@Charlie: bạn nói đúng. Đó là một khả năng sử dụng lớn không-không. – voyager

Trả lời

6

Nghiên cứu khả năng sử dụng (tôi không thể tìm thấy pdf) cho thấy rằng ở cùng thời lượng chính xác, tải các thanh với các mẫu khác nhau (mũ, tuyến tính, logaritmig), những cái mà "cảm thấy nhanh hơn", nơi những người hoàn thành exponentialy. Ý tôi là, những cái bắt đầu chậm, nhưng nhanh hơn khi thời gian trôi qua.

Những gì tôi thường làm là:

  • Nếu tôi biết thời gian trung bình quá trình này có thể mất, alocate để biết thêm một chút, và đi chậm cho đến khi cuối cùng 20% ​​-10%, sau đó thanh tiến trình tăng tốc và bắt kịp tiến độ thực sự, với thời gian như vậy mà quá trình kết thúc tại thời điểm thanh có tốc độ nhanh nhất.
  • Nếu tôi không biết nó có thể kéo dài bao lâu, tôi đo nhiều lần để có sân chơi bóng chày (giây? Phút? Giờ?)
    • Nếu nó là một hoạt động lặp đi lặp lại với ít thay đổi giữa chạy, tôi đưa vào tài khoản thời gian chạy cuối cùng.
    • Nếu hoạt động lâu dài của nó hoặc có độ biến đổi cao, tôi không sử dụng thanh tiến trình, mà là một hoạt ảnh để cho thấy rằng tôi đang làm việc.

Chỉ cần đừng nói dối với người dùng của bạn. Không bao giờ thông báo cho họ rằng nó sẽ kết thúc trong một phút rưỡi sau đó vẫn chạy.

+1

Liên kết ở đây: http://www.chrisharrison.net/projects/progressbars/ProgBarHarrison.pdf ... Điều đó có vẻ giống như một phương pháp tốt, nhưng bạn cần phải có một số ý tưởng về thời điểm để bắt đầu tăng tốc nó lên. –

+0

Kiểm tra, thử nghiệm, kiểm tra. Dữ liệu cứng là Thượng đế. Thời gian hoạt động theo tải và điều kiện khác nhau. – voyager

+1

Nghiên cứu tốt, nhưng sau khi thực tế nhận thấy thời gian tối thiểu là điều quan trọng nhất? Đối với phản hồi thực sự _using_ tiến bộ, người dùng muốn biết: (a) Tôi có nên làm gì khác trong khi điều này chạy không? (b) Tôi nên kiểm tra lại bao lâu? (c) Có phải quá trình mất nhiều thời gian hơn tôi có? (d) Có treo không? Thách thức thiết kế của bạn là cung cấp cho người dùng thông tin để trả lời những câu hỏi này cũng như bạn có thể. –

1

Tại sao không tăng thanh tiến trình khi bạn hoàn thành các tác vụ trong một phương thức?

Mất bao lâu nhiệm vụ hoặc quá trình, có thể đơn giản tăng giá trị của thanh tiến trình bằng số lượng X khi Y phần của tác vụ hoàn tất hoặc bạn đang ở xa quá trình. (ví dụ: mỗi 5 kilobyte được xử lý trong tải lên tệp 100 kilobyte)

+1

Đây là những gì tôi làm, bất cứ khi nào có thể. Nếu tôi biết tôi đã hoàn thành nhiệm vụ 2/5, tôi có thể hiển thị thanh ở mức 40%. Bạn càng có nhiều tác vụ, thanh tăng dần mượt mà hơn, nhưng có tác vụ thực sự lâu khiến thanh "đóng băng" trong một khoảng thời gian dài. Cá nhân, tôi muốn có một thanh tăng và đóng băng, hơn một thanh không xác định mà nói với tôi không có gì khác hơn là 'vẫn còn làm việc .. chưa được thực hiện.' –

+0

vâng, nhưng điều này bị hỏng nếu mỗi đoạn mất một thời gian dài, ví dụ: đọc từ web và mất 10 giây mỗi đoạn, hoặc 30 giây để đọc bất cứ thứ gì. Có vẻ như bản tải xuống đã bị ngừng hoạt động – Glen

+0

Tôi cũng giống Charlie đó. Tôi không muốn ước tính thời gian 'bình thường' mà một nhiệm vụ 'nên' thực hiện bởi vì nó quá biến trong nhiều trường hợp. Tính toán thời gian có thể chỉ có thể kết thúc trong thất vọng. –

3

Chắc chắn thanh tiến trình cực Barber. Tôi nghĩ đó là tiêu chuẩn trên Hướng dẫn Giao diện Con người Mac (HIG). Tôi chắc chắn các thanh tiến trình tương tự "không xác định" cũng tồn tại cho các nền tảng khác.

Tôi cũng sẽ đặt chỉ báo tiến trình văn bản (ví dụ như số lượng byte được chuyển). "Đoán" một phần trăm hoàn thành có thể khả thi, nhưng bạn chắc chắn phải là rất chắc chắn về thời gian trung bình và độ lệch chuẩn của nó, nếu không bạn sẽ nhận được rất nhiều người dùng tức giận tức giận và nhấp hủy vì tiến trình của bạn bị kẹt ở mức 99 % kể từ một giờ. Điều đó sẽ rất khó chịu đối với họ và danh tiếng của phần mềm của bạn.

6

Tôi đang trở thành một fan hâm mộ lớn của vòng tròn xoay vòng kiểu Mac và Vista cho biết tiến độ mà không đặt ra kỳ vọng người dùng gây hiểu lầm.

XKCD truyện tranh
http://xkcd.com/612/

https://imgs.xkcd.com/comics/estimation.png

+3

Nếu bạn đang đi để downvote, ít nhất để lại một bình luận chỉ ra lý do tại sao bạn đã làm như vậy. –

+0

Được thăng hạng vì khiếp sợ: -) ... Tôi thích điều đó! –

3

Nó không quan trọng nếu di chuyển thanh tiến với tốc độ chính xác không đổi. Thật vậy, theo nghĩa đen, điều đó chắc chắn sẽ gần như không thể. Làm thế nào bạn biết trước những yếu tố nào có thể đi vào hoạt động để tăng tốc hoặc làm chậm tiến trình thực sự?

Vì vậy, tôi chọn bất kỳ biện pháp thuận tiện nào về số lượng công việc cần thực hiện và theo dõi tỷ lệ phần trăm hoàn thành. Nếu đó là số byte để truyền, số lượng các bản ghi để xử lý, số lượng foos để thanh, bất cứ điều gì. Vì vậy, chắc chắn, đôi khi nó bắt đầu nhanh và sau đó chậm lại hoặc ngược lại. Nhưng tất cả những gì thực sự quan trọng là miễn là quá trình này đang tiến tới hoàn thành, nó tiếp tục di chuyển.

Tôi nghĩ rằng vấn đề khó khăn là khi bạn không biết trước BẤT K reasonable biện pháp hợp lý về số lượng công việc phải làm. Giống như, bạn phải xử lý một bộ hồ sơ, nhưng bạn không có cách nào dễ dàng để có được số lượng bản ghi khác ngoài việc đọc tất cả các bản ghi và đếm chúng, và một khi bạn đã làm điều đó, bạn cũng có thể xử lý chúng cùng đường. Trong những trường hợp đó, thay vì thanh tiến trình, tôi thường sử dụng để hiển thị "số lượng tiến trình": Giống như "1 bản ghi đã xử lý", "2 bản ghi được xử lý", v.v. Ít nhất người dùng có thể thấy nó đang di chuyển và sau khi đã hoàn thành vài lần anh ta có thể có một ý tưởng ballpark về việc nó sẽ đi xa như thế nào, tức là nó ở hàng chục ngàn so với hàng trăm ngàn hay bất cứ thứ gì.

Tôi đang làm việc trên một hệ thống hiện đang sử dụng thường xuyên phương pháp tôi thấy khá lame: Họ chỉ đính kèm phần trăm hoàn toàn tùy ý vào bất kỳ điểm kiểm tra thuận tiện nào. Giống như nếu một hàm đọc dữ liệu, sắp xếp, định dạng và in, họ sẽ nói 25% khi đọc xong, 50% khi sắp xếp xong, 75% khi định dạng xong và sau đó là 100% khi in xong. Tôi cho rằng nó tốt hơn là không có gì.

2

Tôi chưa bao giờ thấy nó, nhưng làm thế nào về một cửa sổ trượt trên thanh tiến trình, để bạn có thể xem công việc có đang tiến triển hay không, ở mức nào, nhưng kết thúc vẫn tiếp tục. Sắp xếp moonwalking cho thanh tiến trình.Bạn sẽ cần phải làm cho các hình ảnh động đặc biệt để người dùng có thể nói rằng các đốm màu mới đang được thêm vào, và những cái cũ nhất được trượt ra bên trái. Việc trượt dừng lại khi chương trình xác định rằng nó biết khoảng cách đến cuối nhiệm vụ.

+0

Đó là một ý tưởng hay! Tôi không chắc liệu tôi có thể thực hiện điều đó, nhưng ... chết tiệt! –

2

Chiến lược tốt nhất là đơn giản, trung thực và đơn giản. Cho biết những gì đã biết và đặt kỳ vọng đúng.

Nếu nó thể mất một thời gian dài, nó tốt hơn để được tiết, chẳng hạn như:

============================================================================== 
    Executing command xyz.. 

    Started: 10:30 AM (usually requires about 20 minutes to complete) 

    Status: 10:35:10 AM.. Still working...{this line needs to update frequently} 

    [Send to background] [Cancel] 
============================================================================== 

Tôi đã thấy giới thiệu dài dòng như vậy trong một số cài đặt lớn ở đâu đó; không thể nhớ chính xác ở đâu nhưng nó có lẽ là hệ điều hành hoặc phần mềm máy chủ. Các cụm từ như "Tác vụ này có thể mất vài phút để hoàn thành" cũng không phải là không phổ biến trong trình cài đặt. Nếu nhiệm vụ thường mất một thời gian ngắn để hoàn thành (nói 30 giây), nhưng đôi khi có thể mất nhiều thời gian hơn, có lẽ tốt nhất là chỉ hiển thị chỉ báo rằng tác vụ không bị treo hoặc không hoạt động, nếu và chỉ khi đó có thể được xác định chắc chắn. tức là, nếu bạn có thể hãy đảm bảo rằng tác vụ không bị chết hoặc treo. Nếu bạn không chắc chắn là người dùng cuối như những gì đang diễn ra với nhiệm vụ, tốt nhất là chỉ hiển thị tùy chọn nền (để người dùng làm điều gì đó khác trong khi nó tiếp tục) hoặc tùy chọn hủy (nếu tác vụ có thể bị hủy bỏ).

Ví dụ điển hình là bảng điều khiển quản trị cơ sở dữ liệu cho phép người dùng thực thi truy vấn SQL trên cơ sở dữ liệu. Thông thường, các truy vấn được thỏa mãn trong vài giây, nhưng thỉnh thoảng, có những trường hợp truy vấn yêu cầu các sản phẩm cartes lớn, tạo ra nhiều bảng tạm thời, chờ khóa bị xóa, vv có thể mất vài phút. Phần mềm quản trị viên không có phương tiện xác định thời gian truy vấn có thể mất, bởi vì tất cả thông tin về thời gian thực hiện dự kiến ​​của truy vấn chỉ có thể được máy chủ cơ sở dữ liệu biết. Trong trường hợp này:

  1. không thể xác định mất bao lâu.

  2. nó cũng không thể thực hiện để xác định xem máy chủ cơ sở dữ liệu là khó khăn hay treo trong một bế tắc

  3. tồi tệ nhất của tất cả, bạn không thể hủy bỏ việc thực hiện truy vấn.

Trong trường hợp này, điều tốt nhất là để người dùng "làm nền" tác vụ.

+0

Rất tiếc ... điều này có vẻ tuyệt vời đối với các công cụ dành cho nhà phát triển/quản trị viên, nhưng ứng dụng nào dành cho người dùng "trung bình"? Các tin nhắn có gây nhầm lẫn cho chúng không? –

+0

Chúng tôi có thể giải thích về văn bản chính xác. Có thể một cái gì đó như, "Thường mất 2 đến 7 phút hoặc lâu hơn" là đủ tốt cho hầu hết người dùng. Quan trọng hơn là nguyên tắc trung thực với người dùng và không giả vờ theo dõi thứ gì đó mà ứng dụng không thể theo dõi. Phản hồi rác thường tồi tệ hơn không có phản hồi. –

Các vấn đề liên quan