Есть несколько факторов, которые необходимо учитывать. Чтобы проиллюстрировать эти моменты, я буду использовать пример поля, в котором пользователь должен вводить процент в контексте квоты, определенной для конкретной задачи, с точки зрения того, сколько дискового пространства может использовать эта задача. 0% означает, что задача не сможет записать что-либо на диск; 100% означает, что задача может заполнить все дисковое пространство. Значения между ними означают, что они значат.
Как разработчик, вы, вероятно, считаете, что допустимые значения [0, 1, 2, 3, 99, 100], а все остальное глупо. Давайте посмотрим, почему пользователи все еще могут вводить эти «глупые» значения.
Опечатки
%^
Пользователь вводил значение 56, но ошибочно нажимал Shiftпри их вводе (например, потому что на французской клавиатуре приходится нажимать Shiftдля ввода цифр, а пользователь постоянно переключался между французской клавиатурой и QWERTY).
Таким же образом вы можете получить число, с чем-то после или до него, или между:
56q
Здесь пользователь, вероятно, вводил цифры, а затем вкладку для перехода к следующему полю. Вместо нажатия ⇆ пользователь нажал соседнюю клавишу.
Непонимание и неправильное толкование
Пустой ввод, вероятно, самый обычный. Пользователь вообразил, что поле является необязательным, или не знал, что поместить в это поле.
56.5
Пользователь думал, что значения с плавающей запятой были приемлемы. Либо пользователь ошибается, и приложение должно вежливо объяснить, почему принимаются только целочисленные значения, либо были неверны начальные требования, и имеет смысл позволить пользователям вводить значения с плавающей запятой.
none
Пользователь неправильно понял, что при запросе места, которое может занять задание, приложение ожидало число. Это может указывать на плохой пользовательский интерфейс. Например, запрос пользователя «Сколько места на диске должно занимать задание?» Приглашает к такому типу ввода, в то время как поле с последующим знаком процента получит меньше такого рода ввода, потому что «none%» не делает много смысла.
150
Пользователь неправильно понял, что означает процент в данном случае. Возможно, пользователь хотел сказать, что задача может занять 150% используемого в настоящее время пространства, поэтому, если на диске объемом 2 ТБ используется 100 ГБ, задача может использовать 150 ГБ. Опять же, лучший пользовательский интерфейс может помочь. Например, вместо того, чтобы иметь пустое поле ввода со знаком процента, к нему можно добавить следующее:
[____] % of disk space (2 TB)
Когда пользователь начнет печатать, он на лету изменит текст, чтобы он стал таким:
[5___] % of disk space (102.4 GB of 2 TB)
Представления
Большие числа или числа с плавающей точкой могут быть представлены по-разному. Например, число 1234,56 может быть записано так: 1,234.56
. В зависимости от культуры текстовое представление одного и того же номера будет отличаться. Во французском же номер будет записан следующим образом: 1 234,56
. Видите, запятая, где вы не ожидаете, и пробел.
Всегда ожидая, что конкретный формат с использованием определенной локали рано или поздно доставит вам неприятности, потому что у пользователей из разных стран будут разные привычки писать цифры, даты и время и т. Д.
Люди против компьютеров
Twenty-four
Обычные люди не думают так же, как компьютеры. «Двадцать четыре» - это фактическое число, независимо от того, что ПК скажет вам.
Хотя (1) большинство систем вообще не обрабатывают этот тип ввода и (2) почти каждый пользователь не представляет ввода целыми буквами, это не означает, что такой ввод глупый. В « О лице 3» Алан Купер подчеркивает, что отсутствие обработки таких входных данных указывает на неспособность компьютеров адаптироваться к людям, и в идеале интерфейс должен иметь возможность правильно обрабатывать эти входные данные.
Единственное, что я должен добавить к книге Алана Купера, это то, что во многих случаях числа пишутся цифрами по ошибке . Тот факт, что компьютеры ожидают от своих пользователей ошибок (и не потерпит того, кто пишет правильно), раздражает.
Unicode
5𝟨
Unicode оставляет за собой свои сюрпризы: символы, которые могут выглядеть одинаково, не одинаковы. Не убежден? Скопируйте и вставьте "5𝟨" === "56"
в инструменты разработчика своего браузера и нажмите Enter.
Причина того, что эти строки не равны, заключается в том, что символ Unicode отличается 𝟨
от символа 6
. Это создаст ситуацию, когда разъяренный клиент позвонит, сообщив, что ваше приложение не работает, предоставив снимок экрана с вводом, который выглядит правдоподобно, и ваше приложение заявит, что ввод недействителен.
Вы спросите: зачем вводить символ Unicode, который выглядит как цифра? Хотя я не ожидал, что пользователь введет один из них непреднамеренно, копирование-вставка из другого источника может привести к этому, и у меня был случай, когда пользователь фактически делал такую вставку-копирование строки, содержащей символ Unicode, который не появляются на экране.
Заключение
Это те случаи, которые вы получаете для поля ввода элементарного числа. Я позволил бы вам представить, что вы можете обрабатывать для более сложных форм, таких как дата или адрес.
Мой ответ сфокусирован на том, что вы назвали «глупым» вкладом. Тестирование не о проверке счастливых путей; это также проверка того, что ваше приложение не ломается, когда злонамеренный пользователь намеренно вводит странные вещи, пытаясь их сломать. Это означает, что, когда вы запрашиваете процент, вам также необходимо проверить, что происходит, когда пользователь отвечает строкой, содержащей 1 000 000 символов, или отрицательным числом, или таблицей бобби .