Có một số yếu tố cần tính đến. Để minh họa những điểm đó, tôi sẽ sử dụng một ví dụ về trường mà người dùng nên nhập tỷ lệ phần trăm trong ngữ cảnh hạn ngạch được xác định cho một tác vụ cụ thể về mặt dung lượng mà tác vụ có thể sử dụng. 0% có nghĩa là tác vụ sẽ không thể ghi bất cứ điều gì vào đĩa; 100% có nghĩa là tác vụ có thể lấp đầy tất cả không gian đĩa. Giá trị ở giữa có nghĩa là những gì họ có nghĩa.
Là nhà phát triển, có lẽ bạn đang xem xét rằng các giá trị có thể chấp nhận là [0, 1, 2, 3, ⋯ 99, 100] và mọi thứ khác đều ngớ ngẩn. Chúng ta hãy xem tại sao người dùng vẫn có thể tham gia vào các giá trị đó.
Typose
%^
Người dùng đã nhập giá trị 56, nhưng nhấn nhầm Shifttrong khi nhập chúng (ví dụ vì trên bàn phím tiếng Pháp, bạn phải nhấn Shiftđể nhập chữ số và người dùng liên tục chuyển đổi giữa bàn phím tiếng Pháp và QWERTY).
Theo cùng một cách, bạn có thể nhận được một số, với một cái gì đó sau hoặc trước nó hoặc ở giữa:
56q
Ở đây, người dùng có thể đã nhập các chữ số, theo sau là một tab để chuyển sang trường tiếp theo. Thay vì nhấn ⇆ , người dùng nhấn phím hàng xóm.
Hiểu lầm và giải thích sai
Một đầu vào trống có lẽ là bình thường nhất. Người dùng tưởng tượng rằng trường này là tùy chọn hoặc không biết nên đặt gì trong trường này.
56.5
Người dùng nghĩ rằng giá trị dấu phẩy động là chấp nhận được. Người dùng sai và ứng dụng nên giải thích một cách lịch sự tại sao chỉ chấp nhận các giá trị nguyên hoặc các yêu cầu ban đầu là sai và việc cho phép người dùng nhập các giá trị dấu phẩy động là hợp lý.
none
Người dùng đã hiểu nhầm rằng khi được yêu cầu dung lượng mà tác vụ có thể thực hiện, ứng dụng sẽ mong đợi một con số. Điều này có thể chỉ ra một giao diện người dùng kém. Chẳng hạn, hỏi người dùng, nhiệm vụ cần bao nhiêu dung lượng đĩa? 'Mời mời loại đầu vào này, trong khi một trường có ký hiệu phần trăm theo sau sẽ nhận được ít hơn loại đầu vào đó, bởi vì không ai %% không thực hiện nhiều ý nghĩa.
150
Người dùng đã hiểu nhầm phần trăm có nghĩa là gì trong trường hợp này. Có thể người dùng muốn nói rằng tác vụ có thể chiếm 150% dung lượng hiện đang sử dụng, vì vậy nếu trên đĩa 2 TB, 100 GB được sử dụng, tác vụ có thể sử dụng 150 GB. Một lần nữa, một giao diện người dùng tốt hơn có thể giúp đỡ. Chẳng hạn, thay vì có một trường đầu vào trống với ký hiệu phần trăm được gắn vào nó, người ta có thể có điều này:
[____] % of disk space (2 TB)
Khi người dùng bắt đầu nhập, nó sẽ thay đổi văn bản một cách nhanh chóng để trở thành thế này:
[5___] % of disk space (102.4 GB of 2 TB)
Đại diện
Số lớn hoặc số có điểm nổi có thể được biểu diễn khác nhau. Chẳng hạn, một số 1234.56 có thể được viết như thế : 1,234.56
. Tùy thuộc vào văn hóa, cách trình bày văn bản của cùng một số sẽ khác nhau. Trong tiếng Pháp, cùng một số sẽ được viết như thế này : 1 234,56
. Hãy xem, một dấu phẩy mà bạn không mong đợi và một khoảng trắng.
Luôn mong đợi một định dạng cụ thể bằng cách sử dụng một ngôn ngữ cụ thể sẽ sớm khiến bạn gặp rắc rối, bởi vì người dùng từ các quốc gia khác nhau sẽ có thói quen viết số, ngày và thời gian khác nhau, v.v.
Con người so với máy tính
Twenty-four
Người thường không nghĩ giống như máy tính. Số hai mươi bốn mươi là một con số thực tế, độc lập với những gì PC sẽ nói với bạn.
Mặc dù (1) hầu hết các hệ thống không xử lý tất cả các loại đầu vào này và (2) gần như mọi người dùng sẽ không tưởng tượng việc nhập một số được viết bằng chữ đầy đủ, điều đó không có nghĩa là đầu vào đó là ngớ ngẩn. Trong About Face 3 , Alan Cooper đưa ra quan điểm rằng việc không xử lý các đầu vào như vậy là dấu hiệu cho thấy máy tính không thể thích ứng với con người và lý tưởng nhất là giao diện có thể xử lý các đầu vào đó một cách chính xác.
Điều duy nhất tôi phải thêm vào cuốn sách của Alan Cooper là trong nhiều trường hợp, các con số được viết bằng chữ số do nhầm lẫn . Việc các máy tính mong muốn người dùng của họ mắc lỗi (và sẽ không tha thứ cho người dùng viết đúng) gây khó chịu.
Unicode
5𝟨
Unicode bảo lưu những bất ngờ của riêng nó: các ký tự có thể trông giống nhau không giống nhau. Không thuyết phục? Sao chép-dán "5𝟨" === "56"
vào các công cụ phát triển của trình duyệt của bạn và nhấn Enter.
Lý do mà các chuỗi đó không bằng nhau là ký tự Unicode 𝟨
không giống với ký tự 6
. Điều này sẽ tạo ra một tình huống mà một khách hàng tức giận sẽ gọi, nói rằng ứng dụng của bạn không hoạt động, cung cấp ảnh chụp màn hình của đầu vào có vẻ hợp pháp và ứng dụng của bạn cho rằng đầu vào không hợp lệ.
Tại sao mọi người sẽ nhập một ký tự Unicode trông giống như một chữ số, bạn sẽ hỏi? Mặc dù tôi không mong muốn người dùng nhập vào một cách vô ý, nhưng việc sao chép từ một nguồn khác nhau có thể gây ra điều đó và tôi đã gặp trường hợp người dùng thực sự thực hiện việc sao chép chuỗi đó có chứa ký tự Unicode sẽ không xuất hiện trên màn hình.
Phần kết luận
Đó là những trường hợp bạn nhận được cho một trường nhập số cơ bản. Tôi sẽ cho bạn tưởng tượng những gì bạn có thể phải xử lý đối với các hình thức phức tạp hơn, chẳng hạn như ngày hoặc địa chỉ.
Câu trả lời của tôi tập trung vào những gì bạn gọi là đầu vào của silly. Kiểm tra không phải là kiểm tra các con đường hạnh phúc; đó cũng là về việc kiểm tra xem ứng dụng của bạn không bị hỏng khi người dùng độc hại cố tình xâm nhập vào những thứ lạ, cố gắng phá vỡ nó. Điều này có nghĩa là khi bạn yêu cầu tỷ lệ phần trăm, bạn cũng phải kiểm tra xem điều gì sẽ xảy ra khi người dùng phản hồi bằng chuỗi chứa 1.000.000 ký tự hoặc số âm hoặc bảng bợm .