- Зачем тестируют формы
- Разделение эквивалентности
- Анализ граничных значений
- Дополнительно
- Таблица верификации полей
- Бонус
Формы часто скрывают под собой сложную бизнес-логику, поэтому умение правильно тестировать формы — один из критических навыков тестировщика. Количество наборов входных данных, которые может принимать нетривиальная форма, стремится к бесконечности. Проверить их все невозможно физически. Вот почему важно подходить к тестированию форм с умом и использовать техники, упрощающие этот процесс.
Зачем тестируют формы?
1. Безопасность
Злоумышленники могут использовать поля формы для получения информации или других вредоносных действий — это может быть сделано с помощью SQL-инъекций и вредоносных скриптов.
2. Стабильность
Когда пользователь вводит данные, которые не могут быть обработаны приложением, оно может среагировать неожиданным образом — например, упасть.
3. Корректное поведение UI и единообразие
Очень важно, чтобы все формы в приложении были единообразны (и по внешнему виду, и по поведению).
4. Чистота базы данных
Форма — место, которое наполняет базу данных. Если есть проблемы с валидацией, появляется угроза того, что некорректные данные попадут в БД. Это ведет к проблемам с поведением приложения и потенциальным багам.
Разделение эквивалентности
Разделение эквивалентности — это разделение набора возможных данных для ввода на классы. Каждый член класса считается идентичным всем остальным.
Давайте разберем это на примере. Предположим, что есть поле для ввода, которое может принимать только числовые значения в промежутке от 1 до 200 000. Вот классы эквивалентности, которые нужно будет проверить:
- Числа меньше минимального значения промежутка (меньше 1)
- Числа внутри промежутка (1-200 000)
- Числа больше максимального значения промежутка (больше 200 000)
Анализ граничных значений
Кроме классов эквивалентности, нужно протестировать граничные значения. Граничные значения это:
- Минимальное значение
- Максимальное значение
- Выборочные значения из промежутка
Вот пример:

Граничные значения проверяются, потому что ни один разработчик не застрахован от так называемой ошибки на единицу.
Дополнительно
Вместе со всем вышеперечисленным нужно попробовать:
- оставить поле пустым
- ввести нечисловое значение
- ввести число больше 32-bit Integer
- другие варианты, которое подскажет ваш опыт и воображение 🙂
Даже у Google были проблемы с выходом за предел 32-битного промежутка: в декабре 2014 года количество просмотров клипа PSY Gangman Style на YouTube превысило максимальное значение 32-битнгого промежутка. После этого счетчик обновили.

Таблица верификации полей
Вот пример таблицы для верификации полей ввода. Вы можете составить такую же для вашей формы.
Тип данных | Корректный ввод | Некорректный ввод |
---|---|---|
Положительные целые числа | — только числа — максимально возможное значение (N) — числа внутри промежутка (N + 1) / 2 | — число больше максимально возможного (N + 1) — дробные числа — отрицательные числа — строковые значения — числа + строковые значения — числа + специальные символы — Unicode (например U+0000, U+0001) |
Строки | — только символы — только числа — только специальные символы — числа + символы — числа + спецсимволы — символы + спецсимволы | — |
Даты | — проверить, что при выборе появляется datepicker — проверить, что поле нельзя изменить с клавиатуры — проверить, что значение поля можно скопировать, но вставить нельзя — проверить, что при выборе значения в datepicker, оно появляется в поле — проверить, что в феврале 29 дней в високосных годах — проверить, что в феврале 28 дней не в високосных годах | — |
Бонус: BugMagnet
Для тестирования форм есть отличный плагин для Chrome и Firefox — BugMagnet. После установки кликните правой кнопкой мыши по любому полю формы и у вас появится возможность выбора значений для заполнения из огромного списка данных. Вот видео, на котором показано, как работаем BugMagnet: