Что делать после деления на эквивалентные классы
Что проверяют
Знаете ли, что классы эквивалентности в одиночку не работают. Ожидаемое продолжение это анализ граничных значений, и умение довести разбиение до конкретного набора проверок с данными.
Как отвечать
Назвать следующий шаг сразу: границы. Классы говорят, какие значения равноценны, но дефекты живут на стыках, потому что в коде там стоит сравнение, и > вместо >= промахивается ровно на одно значение.
- Для каждого класса взять представителя изнутри, а на каждой границе проверить три точки: значение до границы, саму границу и следующее за ней.
- Не забыть невалидные классы и особые значения: пусто, пробелы, ноль, отрицательное, максимум типа, неверный формат, другой регистр.
- Свести входы вместе. Если параметров несколько, число сочетаний растёт перемножением, поэтому применяют попарное тестирование, а когда важна логика сочетаний, таблицу решений.
- Расставить приоритеты: сначала валидные представители и границы, редкие сочетания потом.
- Оформить в тест-кейсы с конкретными данными и ожидаемым результатом, причём ожидаемый результат берётся из требований, а не из наблюдаемого поведения системы.
Хорошо добавить, что разбиение стоит сверить с реализацией: если внутри класс обрабатывается двумя разными ветками кода, значит это не один класс, а два.
Где спотыкаются
Останавливаются на представителе из середины класса. Такой набор пропускает ровно те дефекты, ради которых техника и придумана, ошибки на единицу в сравнении.
Проверяют только валидные классы. Поведение на невалидных данных и текст отказа важны не меньше, а находят там обычно больше.
Перемножают все классы всех параметров. Получается неподъёмный набор, который целиком никто не прогоняет. Техника нужна, чтобы тестов стало меньше при том же покрытии, а не больше.