8.8. Какими должны быть тестовые данные?
Тестовые данные должны обеспечить проверку всех возможных
условий возникновения ошибок:
- должна быть испытана каждая ветвь алгоритма;
- очередной тестовый прогон должен контролировать нечто такое, что еще
не было проверено на предыдущих прогонах;
- первый тест должен быть максимально прост, чтобы проверить,
работает ли программа вообще;
- арифметические операции в тестах должны предельно упрощаться
для уменьшения объема вычислений;
- количества элементов последовательностей, точность для итерационных
вычислений, количество проходов цикла в тестовых примерах должны
задаваться из соображений сокращения объема вычислений;
- минимизация вычислений не должна снижать надежности контроля;
- тестирование должно быть целенаправленным и систематизированным,
так как случайный выбор исходных данных привел бы к трудностям в
определении ручным способом ожидаемых результатов; кроме того, при
случайном выборе тестовых данных могут оказаться непроверенными многие
ситуации;
- усложнение тестовых данных должно происходить
постепенно.
Пример. Система тестов для задачи нахождения корней квадратного
уравнения ax2 + bx + c = 0 :
Номер теста |
Проверяемый случай |
Коэффициенты |
Результаты |
a |
b |
c |
1 |
d > 0 |
1 |
1 |
-2 |
x1 = 1, x2 = -2 |
2 |
d = 0 |
1 |
2 |
1 |
Корни равны: x1 = -1, x2 = -1 |
3 |
d < 0 |
2 |
1 |
2 |
Действительных корней нет |
4 |
a = 0, b = 0, c = 0 |
0 |
0 |
0 |
Все коэффициенты равны нулю. x любое число |
5 |
a = 0, b = 0, c № 0 |
0 |
0 |
2 |
Неправильное уравнение |
6 |
a = 0, b № 0 |
0 |
2 |
1 |
Линейное уравнение; один корень: x = -0.5 |
7 |
a № 0, b
№ 0, c = 0 |
2 |
1 |
0 |
x1 = 0, x2 = -0.5 |