Какими должны быть тестовые данные?
Тестовые данные должны обеспечить проверку всех возможных условий возникновения ошибок:
- должна быть испытана каждая ветвь алгоритма;
- очередной тестовый прогон должен контролировать нечто такое, что еще не было проверено на предыдущих прогонах;
- первый тест должен быть максимально прост, чтобы проверить, работает ли программа вообще;
- арифметические операции в тестах должны предельно упрощаться для уменьшения объема вычислений;
- количества элементов последовательностей, точность для итерационных вычислений, количество проходов цикла в тестовых примерах должны задаваться из соображений сокращения объема вычислений;
- минимизация вычислений не должна снижать надежности контроля;
- тестирование должно быть целенаправленным и систематизированным, так как случайный выбор исходных данных привел бы к трудностям в определении ручным способом ожидаемых результатов; кроме того, при случайном выборе тестовых данных могут оказаться непроверенными многие ситуации;
- усложнение тестовых данных должно происходить постепенно.
Пример. Система тестов для задачи нахождения корней квадратного уравнения 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 |