Какими должны быть тестовые данные?

Тестовые данные должны обеспечить проверку всех возможных условий возникновения ошибок:

должна быть испытана каждая ветвь алгоритма;

очередной тестовый прогон должен контролировать нечто такое, что еще не было проверено на предыдущих прогонах;

первый тест должен быть максимально прост, чтобы проверить, работает ли программа вообще;

арифметические операции в тестах должны предельно упрощаться для уменьшения объема вычислений;

количества элементов последовательностей, точность для итерационных вычислений, количество проходов цикла в тестовых примерах должны задаваться из соображений сокращения объема вычислений;

минимизация вычислений не должна снижать надежности контроля;

тестирование должно быть целенаправленным и систематизированным, так как случайный выбор исходных данных привел бы к трудностям в определении ручным способом ожидаемых результатов; кроме того, при случайном выборе тестовых данных могут оказаться непроверенными многие ситуации;

усложнение тестовых данных должно происходить постепенно.

Пример. Система тестов для задачи нахождения корней квадратного уравнения ax2 + bx + c = 0 :

Номер теста Проверяемый случай Коэффициенты Результаты
a b c
d > 0 -2 x1 = 1, x2 = -2
d = 0 Корни равны: x1 = -1, x2 = -1
d < 0 Действительных корней нет
a = 0, b = 0, c = 0 Все коэффициенты равны нулю. x — любое число
a = 0, b = 0, c № 0 Неправильное уравнение
a = 0, b № 0 Линейное уравнение; один корень: x = -0.5
a № 0, b № 0, c = 0 x1 = 0, x2 = -0.5