5.18. Контроль результатов с помощью проверяемой программы

Проверка результатов тестирования может осуществляться самой тестируемой программой. Этот процесс часто называют самопроверкой программой обеспечения. Так, например, если проверяемый модуль должен извлекать квадратный корень из числа, то лучший путь тестирования этого модуля состоит в том, чтобы вызвать его с помощью вспомогательной подпрограммы и затем выдать на "печать вычисленное значение квадратного корня, квадрат его величины и разность между значением входного аргумента и квадратом вычисленного значения корня. Описанная процедура называется реверсивной проверкой. Другими областями ее применения могут быть обращение матриц, преобразования Фурье, шифрирование — дешифрирование и ряд других преобразований. В целях сокращения объема ручной работы по контролю результатов реверсивной проверки модуля можно применять тестовый драйвер или монитор. Это особенно удобно при больших объемах информации, когда драйвер может быть настроен на фиксацию только неблагоприятных исходов тестирования, что сокращает общее количество выдаваемых результатов.

Иллюстрацией реверсивной проверки является контроль правильности решения системы уравнений с помощью подстановки решения в исходную систему. В некоторых случаях между выходными переменными может существовать простая зависимость, и тогда правильность результатов может устанавливаться на основе контроля этой зависимости. Примерами таких ситуаций являются упорядоченные массивы или какие-либо групповые итоговые суммы, которые должны взаимно балансироваться (перекрестные итоги).

В большинстве случаев для проверки правильности выходных результатов тестирования требуется иметь алгоритм, который по своей сложности не уступает самой испытываемой программе. Однако даже и в такой ситуации часто существует возможность установить правдоподобность результатов. Например, начисляемые денежные суммы должны быть не меньше или не больше некоторых установленных пределов, и этот факт можно использовать для контроля результатов вычислений.

Особенно важно проявлять аккуратность в оценке результатов и не допускать, чтобы неверные результаты принимались за правильные. Если вы имеете некоторые промежуточные результаты, выданные машиной, и затем проверяете каждый шаг расчетов, то все, что вы делаете в данном случае, — это проверку способности машины правильно умножать. Но непроверенными остаются корректность выбора математических операций и правильность порядка их выполнения. В этом отношении описанная выше процедура реверсивной проверки модуля для извлечения квадратного корня свободна от указанного недостатка, так как вычисления были проделаны в обоих направлениях и результаты сопоставлены между собой. И хотя эта процедура не дает абсолютной гарантии от ошибок, она является примером полного контроля.

5.17. Средства тестирования || Оглавление || 5.19. Окончательное утверждение программы


Услуги