Что такое классы эквивалентности и граничные значения
Что проверяют
Умеете ли вы сократить число проверок без потери покрытия и объяснить, почему выбрали именно эти значения. Почти всегда дают задачу прямо на встрече: поле «возраст от 18 до 65» или «перевод до 100 000 ₽», выпишите тесты. Следом спрашивают, как вы поступите, если в требованиях не сказано, входит ли граница в диапазон.
Как отвечать
- классы эквивалентности: входные и выходные значения делятся на группы, которые система обрабатывает одинаково. Из класса достаточно одного представителя: если 30 принимается, 42 поведёт себя так же;
- граничные значения: ошибки скапливаются на стыке классов, где разработчик путает
<и<=. Поэтому значения берут у каждой границы.
Для поля «возраст от 18 до 65 включительно»:
- валидный класс: 18…65, представитель 30;
- невалидные числовые: меньше 18 и больше 65;
- невалидные по типу: пусто, пробел, буквы, дробное 18,5, отрицательное, число за пределами
int; - границы: в двухзначном варианте 17, 18, 65, 66, в трёхзначном добавляются 19 и 64. Оба варианта описаны в программе ISTQB Foundation 4.0, трёхзначный берут для критичных полей.
Классы бывают не только у чисел: длина строки (лимит 255 символов даёт границы 255 и 256), даты (29 февраля, конец месяца), размер файла, число товаров в корзине. Плюс неявные границы, которых нет в требованиях: размер колонки в базе, максимум int32, размер страницы в пагинации.
Правило для негативных тестов: один невалидный класс на тест. Иначе первая же ошибка валидации скроет остальные.
Где спотыкаются
Берут из одного класса несколько значений (25, 30, 40) и считают это покрытием. Тестов больше, а новых проверок нет.
Проверяют только числовые границы и забывают про тип и формат: пустое поле, пробелы по краям, 0, ведущие нули, вставку из буфера обмена.
Сами решают, включена ли граница, когда требование звучит как «до 65 лет». Правильно спросить аналитика и зафиксировать ответ, иначе тестировщик и разработчик прочитают фразу по-разному и оба будут правы.