бесплатно без регистрации урок 3 из 16

Классы и границы

Выделять классы эквивалентности, проверять границы и объяснять, почему выбраны именно эти значения.

7 мин чтения · 3 главы ·6 заданий ·домашняя работа

Классы эквивалентности

Раз перебрать всё нельзя, нужен способ выбирать. Самый первый и самый полезный называется классы эквивалентности, и идея у него простая: значения, с которыми программа поступает одинаково, достаточно проверить одним из них.

меньше 18отказот 18 до 65приёмбольше 65отказберём 10берём 30берём 80три значения вместо ста — и покрыто всё поведениено только если классы выделены правильно:лишний класс даёт лишнюю проверку,пропущенный — дыру, которую никто не заметит
Внутри класса достаточно одного значения: если сломается, сломается на любом из них.
ПолеКлассыЧто берём
возраст от 18 до 65меньше / внутри / больше10, 30, 80
количество от 1 до 100 и меньше / 1–10 / больше 100, 5, 15
файлнужного вида / чужого вида / пустойтри файла

Поле «возраст» принимает сто с лишним значений, но поведения у него три: отказать как слишком молодому, принять, отказать как слишком старому. Проверив 30, вы проверили и 31, и 44 — программа не различает их ничем.

Важная оговорка: классы выделяет человек, и в этом вся работа. Формула не подскажет, что у поля «страна» есть отдельное поведение для стран без почтового индекса, — это знание о предмете. Пропущенный класс даёт дыру, которую не видно: проверки зелёные, а поведение не проверялось вовсе.

Границы

Вторая техника идёт в паре с первой и почти всегда даёт находки. Ошибки живут на границах классов — там, где «больше» путают с «не меньше», а счёт начинают с нуля вместо единицы.

171819646566граница снизу и граница сверхуна каждую границу — три значения: до, ровно, последве границы дают шесть проверок, и они находят больше,чем сто значений, взятых из середины
Проверяют не середину класса, а его края: там путают «больше» и «не меньше», там срабатывает лишний плюс-минус один.
ГраницаЧто берутЧто ловят
нижняя, 1817, 18, 19принимает ли ровно 18
верхняя, 6564, 65, 66отсекает ли 66 и принимает ли 65
длина строки 8–327, 8, 32, 33лишний плюс-минус один

Почему именно там. Граница — это место, где в коде стоит сравнение, а сравнений четыре вида: больше, больше или равно, меньше, меньше или равно. Ошибиться в одном знаке легко, и ошибка сдвигает поведение ровно на одно значение — то самое, которое в середине класса никогда не встретится.

Практическое правило: на каждую границу берут три значения — до, ровно, после. Для диапазона границ две, то есть шесть проверок. Это дороже трёх представителей классов, но находки здесь бывают почти всегда, а в середине класса — почти никогда.

Как собрать набор

Третье — как две техники складываются в набор проверок и где проходит разумная граница.

ШагЧто делают
выписать поля и условиячто вообще участвует в поведении
разбить каждое на классыгруппируем по поведению программы
взять по представителюодин на класс
добавить границыдо, ровно, после на каждую
убрать дублиодна проверка может закрыть два класса

Последний шаг экономит больше всего. Одна проверка часто закрывает сразу несколько классов: заполнив форму с возрастом 18 и количеством 1, вы проверили обе нижние границы одним действием. Это законно ровно до тех пор, пока ожидаемый результат остаётся один — если два условия дают разные ошибки, совмещать их нельзя, вы увидите только первую.

И про меру. Техники дают кандидатов, а не приговор: из полученного списка берут то, что успевают, начиная с наиболее рискованного. Рискованное — это там, где ошибка дороже (деньги, доступ, потеря данных) и где менялся код.

И общий смысл урока: после этих двух техник вы отвечаете на вопрос «почему проверял именно это» — словами, а не «мне показалось». Этот ответ и отличает работу от перебора наугад.

Задания урока

Каждое проверяется сразу: ответ сверяется с эталоном, и на неверный вариант приходит разбор.

  1. Поле принимает возраст от 18 до 65. Какие классы эквивалентности здесь есть?легко
  2. У поля 3 классов эквивалентности и 1 границы. Сколько проверок даст техника, если на границу брать по три значения?средне
  3. Это представитель класса или граничное значение для диапазона 1–10?средне
  4. Сопоставьте вид значения и его классы.средне
  5. В одну проверку можно положить сразу два неверных значения — так быстрее.средне
  6. Поле «количество» принимает от 1 до 99. Времени на четыре проверки.сложно
Пройти урок с проверкой заданий Курс «Инженер по тестированию» открыт и бесплатен, прогресс сохраняется.
Открыть курс