Маленький тест против большого обещания
Выбирать граничные случаи · Находить минимальный контрпример
В этом занятии
- Выбирать граничные случаи
- Находить минимальный контрпример
- Отличать набор проверок от полного доказательства
Пригодится: Рекомендуем сначала пройти «Поймай противоречие в отчёте».
Разберёмся перед практикой+
Маленький тест против большого обещания
Универсальное правило может провалиться на маленьком случае. Утверждение «программа принимает возраст от 12 до 17 включительно» стоит проверить на 11, 12, 17 и 18. Два значения внутри диапазона не проверяют границы: ошибка знака неравенства может остаться незамеченной.
Контрпример должен выполнять предпосылки и нарушать заключение. Если тест 12 отклонён при обещанном включении 12, правило опровергнуто. Отклонение 11, напротив, соответствует правилу. Сначала запишите ожидаемый исход каждого теста, чтобы не оценивать поведение задним числом.
Для составных условий проверяйте каждую часть. Правило «А и Б» требует оба; случай А без Б должен быть отклонён. У правила «А или Б» тот же случай подходит. Четыре булевых набора дают полный перебор именно двух заданных условий, но не проверяют скрытый код или любые другие входы.
Набор удачных примеров не становится доказательством общего правила для бесконечного пространства. Маленькие тесты полезны для обнаружения ошибок и проверки уточнённой модели. Полное доказательство требует аргумента для всех допустимых входов либо полного перебора явно конечного пространства.
Правило принимает целое число x, если 12 ≤ x ≤ 17. Какие четыре соседних с границами значения особенно полезны?
- Нижняя граница: 11 должно быть отклонено, 12 принято.
- Верхняя граница: 17 принято, 18 отклонено.
- Так проверяются включение границ и ближайшие внешние случаи.
Загружаем интерактивную модель…
Попробуйте самостоятельно
Запишите рассуждения в черновик или сделайте построение на бумаге. Эти задания для самостоятельной работы: автоматической проверки и XP за них пока нет.
- Составь таблицу ожиданий для своего вымышленного правила из двух условий.
- Найди минимальный вход, опровергающий ошибочную версию «12 < x ≤ 17».
Читайте и разбирайте пример в своём темпе. К практике можно перейти, когда будете готовы.