Набор тестов
Набор тестов — это специально подобранные входные данные, с помощью которых проверяют работу алгоритма в разных ситуациях. Хороший набор должен охватывать все существенные ветви алгоритма и случаи, в которых результат или поведение могут измениться.
Как составить набор
Сначала выпишите условия и команды, которые могут привести к разным действиям алгоритма. Для каждого результата условия подберите хотя бы один подходящий тест. Затем добавьте граничные случаи: минимальные и максимальные допустимые значения, ноль, пустую последовательность, равенство сравниваемых величин или переход через границу.
- Определите допустимые входные данные и ограничения.
- Найдите ветви условий: например, «да» и «нет», «меньше», «равно» и «больше».
- Подберите простой тест для каждой ветви.
- Добавьте особые и граничные случаи.
- Проверьте ожидаемый результат каждого теста вручную или с помощью другого способа решения.
Алгоритм определяет, является ли число положительным, отрицательным или нулём. Минимальный набор содержит тесты \(5\), \(-3\) и \(0\). Первые два проверяют разные знаки, а ноль — отдельную ветвь условия. Тесты \(100\) и \(200\) здесь не дают такой новой проверки, поэтому обычно не нужны.
Какой тест обязательно нужно добавить к проверке условия \(x \ge 10\)?
Набор тестов — не то же самое, что один тестовый пример. Один тест проверяет алгоритм на одном входе, а набор объединяет несколько тестов. Также набор тестов отличается от полного тестирования алгоритма: тестирование — это весь процесс выполнения тестов, сравнения результатов и поиска ошибок.
Что делает набор хорошим
Тесты не обязаны быть многочисленными. Важно, чтобы каждый добавленный тест проверял новую ситуацию, а ожидаемый результат был заранее известен. Если два теста проходят через одни и те же ветви и отличаются только несущественными значениями, один из них может оказаться лишним.
Главное
- Набор тестов состоит из нескольких тестовых примеров для разных ветвей и случаев.
- В него включают обычные, граничные и особые входные данные.
- Тесты должны проверять не только типичный случай, но и значения, где меняется поведение алгоритма.