Należy wziąć pod uwagę kilka czynników. Aby zilustrować te punkty, wykorzystam przykład pola, w którym użytkownik powinien wprowadzić wartość procentową w kontekście przydziału określonego dla określonego zadania pod względem ilości miejsca na dysku, które zadanie może wykorzystać. 0% oznacza, że zadanie nie byłoby w stanie zapisać niczego na dysku; 100% oznacza, że zadanie może wypełnić całe miejsce na dysku. Wartości pomiędzy oznaczają, co oznaczają.
Jako programista prawdopodobnie bierzesz pod uwagę, że dopuszczalne wartości to [0, 1, 2, 3, ⋯ 99, 100], a wszystko inne jest głupie. Zobaczmy, dlaczego użytkownicy nadal mogą wprowadzać te „głupie” wartości.
Literówki
%^
Użytkownik wprowadzał wartość 56, ale przez pomyłkę został wciśnięty Shiftpodczas wprowadzania (na przykład dlatego, że na klawiaturze francuskiej należy nacisnąć, Shiftaby wprowadzić cyfry, a użytkownik stale przełączał się między klawiaturą francuską a QWERTY).
W ten sam sposób możesz uzyskać liczbę, z czymś po niej, przed nią lub pomiędzy:
56q
Tutaj użytkownik prawdopodobnie wprowadzał cyfry, a następnie tabulator, aby przejść do następnego pola. Zamiast naciskać ⇆ , użytkownik nacisnął klawisz sąsiada.
Nieporozumienia i błędne interpretacje
Puste dane wejściowe są prawdopodobnie najbardziej powszechne. Użytkownik wyobrażał sobie, że pole jest opcjonalne lub nie wiedział, co wpisać w to pole.
56.5
Użytkownik pomyślał, że wartości zmiennoprzecinkowe są dopuszczalne. Albo użytkownik się myli, a aplikacja powinna uprzejmie wyjaśnić, dlaczego akceptowane są tylko wartości całkowite, lub początkowe wymagania były błędne, i warto pozwolić użytkownikom na wprowadzanie wartości zmiennoprzecinkowych.
none
Użytkownik źle zrozumiał, że zapytany o miejsce, które zadanie może zająć, aplikacja spodziewała się liczby. Może to wskazywać na zły interfejs użytkownika. Na przykład pytanie użytkownika „Ile miejsca na dysku powinno zająć zadanie?” Zachęca do tego rodzaju danych wejściowych, podczas gdy pole ze znakiem procentu otrzyma mniej tego rodzaju danych wejściowych, ponieważ „brak%” nie powoduje dużo rozsądku.
150
Użytkownik źle zrozumiał, co oznacza procent w tym przypadku. Być może użytkownik chciał powiedzieć, że zadanie może zająć 150% aktualnie używanego miejsca, więc jeśli na dysku o pojemności 2 TB użyto 100 GB, zadanie może zużyć 150 GB. Ponownie może pomóc lepszy interfejs użytkownika. Na przykład, zamiast mieć puste pole wejściowe ze znakiem procentu, można to zrobić:
[____] % of disk space (2 TB)
Gdy użytkownik zaczyna pisać, zmienia tekst w locie, tworząc:
[5___] % of disk space (102.4 GB of 2 TB)
Reprezentacje
Duże liczby lub liczby zmiennoprzecinkowe mogą być reprezentowane w różny sposób. Na przykład, liczba 1234,56 mogłyby być napisane tak: 1,234.56
. W zależności od kultury reprezentacja tekstowa tego samego numeru może się różnić. W języku francuskim, taka sama liczba będzie napisane tak: 1 234,56
. Zobacz przecinek, w którym nie spodziewałbyś się, i spację.
Zawsze oczekiwanie określonego formatu przy użyciu określonych ustawień regionalnych prędzej czy później spowoduje kłopoty, ponieważ użytkownicy z różnych krajów mieliby różne nawyki pisania liczb, dat i godzin itp.
Ludzie kontra komputery
Twenty-four
Zwykli ludzie nie myślą tak samo jak komputery. „Dwadzieścia cztery” to rzeczywista liczba, niezależnie od tego, co powiedziałby komputer.
Chociaż (1) większość systemów w ogóle nie obsługuje tego typu danych wejściowych i (2) prawie każdy użytkownik nie wyobrażałby sobie wprowadzenia liczby zapisanej pełnymi literami, nie oznacza to, że takie dane wejściowe są głupie. W About Face 3 Alan Cooper zwraca uwagę, że brak obsługi takich danych wejściowych wskazuje na niezdolność komputerów do przystosowania się do ludzi i idealnie, interfejs powinien być w stanie poprawnie obsługiwać te dane wejściowe.
Jedyne, co muszę dodać do książki Alana Coopera, to to, że w wielu przypadkach cyfry są pomyłkowo zapisywane cyframi . Fakt, że komputery oczekują od swoich użytkowników błędów (i nie będzie tolerował użytkownika, który pisze poprawnie) jest denerwujący.
Unicode
5𝟨
Unicode zastrzega sobie własne niespodzianki: postacie, które mogłyby wyglądać tak samo, nie są takie same. Nieprzekonany? Skopiuj i wklej "5𝟨" === "56"
do narzędzi dla programistów przeglądarki i naciśnij Enter.
Powodem, dla którego te ciągi nie są równe, jest to, że znak Unicode 𝟨
nie jest taki sam jak znak 6
. Spowodowałoby to sytuację, w której zadzwoniłby zły klient, informując, że aplikacja nie działa, udostępniając zrzut ekranu z danymi, które wyglądają na zgodne z prawem, i twierdząc, że dane wejściowe są nieprawidłowe.
Dlaczego ktoś miałby wprowadzać znak Unicode, który wygląda jak cyfra? Chociaż nie spodziewałbym się, że użytkownik przypadkowo wprowadzi jedną, wklejenie kopii z innego źródła może to spowodować, a ja miałem przypadek, w którym użytkownik faktycznie wykonał taki wklejanie ciągu zawierającego znak Unicode, który nie byłby pojawiają się na ekranie.
Wniosek
Takie są przypadki, w których można wprowadzić pole wprowadzania liczb elementarnych. Pozwolę ci sobie wyobrazić, co możesz zrobić w przypadku bardziej złożonych formularzy, takich jak data lub adres.
Moja odpowiedź koncentruje się na tym, co nazywasz „głupim” wkładem. Testowanie nie polega na sprawdzaniu szczęśliwych ścieżek; chodzi również o sprawdzenie, czy aplikacja się nie psuje, gdy złośliwy użytkownik celowo wprowadza dziwne rzeczy, próbując je złamać. Oznacza to, że gdy prosisz o procent, musisz również sprawdzić, co się dzieje, gdy użytkownik odpowiada ciągiem zawierającym 1 000 000 znaków, liczbą ujemną lub tabelą bobby .