Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тестирование программного обеспечения. Фундамен...docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
935.81 Кб
Скачать

Глава 7; Разработка тестов 197

Случается, что в сложных ситуациях интуиция подсказывает гораздо лучшую тактику тестирования, чем тривиальная логика. Бывает, что сраба­тывает и ассоциативная связь: вы уже находили ошибку в подобных обсто­ятельствах, хотя можете этого даже не помнить. Как бы там ни было, доверяйте своему внутреннему чувству и учитесь к нему прислушиваться: с опытом оно будет становиться все более развитым и надежным.

Тестирование функциональной эквивалентности: автоматизация, анализ чувствительности и случайный ввод

При тестировании функциональной эквивалентности сравниваются ре­зультаты вычислений разными программами одной и той же математичес­кой функции. Этот термин не имеет ничего общего с классами эквивалентности. Если обе программы при вычислении одной и той же функции дают одинаковые результаты, значит, в них применены эквива­лентные методы вычислений.

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

Автоматизация тестирования функциональной эквивалентности

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

• Прежде всего, вам не придется вычислять значения вручную. Если функция сложна, это поможет сэкономить огромное количество времени и избежать ошибок, так часто возникающих при неавтома­тизированных расчетах.

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

198 Часть II: Приемы и технологии тестирования

программы. Компьютер выполнит сравнение файлов и быстрее, и аккуратнее, чем вы. Можно определить и допустимые расхождения результатов — например, погрешности округлений.

• Вполне возможно автоматизировать и весь процесс тестирования: от ввода выходных данных до сравнения выходных. Если это получит­ся, процедура тестирования будет выполняться практически мгно­венно и исключительно надежно. Даже если на сравнение потребуется много компьютерного времени, вы в это время сможе­те заниматься другой работой.

Хотя автоматизация подобных тестов — процесс не особенно сложный, он требует некоторого времени. Если программа может считать входные данные из файла, его необходимо подготовить. Кроме того, придется на­писать небольшие программки, выполняющие сравнение результатов.

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

Разумеется, тестирование функциональной эквивалентности может потребовать некоторых затрат. Прежде всего, надежная эталонная програм­ма, которая будет использоваться для сверки результатов, может оказать­ся не такой уж дешевой. К тому же, скорее всего, придется написать кое-какие программки. Может потребоваться и дополнительная техника, например второй компьютер. Разумеется, нельзя определить универсальные критерии того, сколько денежных средств имеет смысл потратить на про­ведение подобного тестирования. Однако мы настоятельно советуем не пренебрегать им без веских причин.

• Оцените, сколько дней потребуется на тестирование программы вручную. Включите в расчет время планирования, выполнения вы­числений и проведения тестов. Не забудьте и о том, что каждый тест придется провести не один раз, поскольку вы будете выявлять ошиб­ки и повторять всю процедуру тестирования с самого начала. При­киньте, сколько циклов тестирования потребуется провести. Скорее всего, их будет пять или шесть. (Для сравнения можно взять сред­нее количество циклов, потребовавшееся компании при тестирова­нии предыдущих разработок.)

• Оцените, сколько времени сэкономят автоматизированные средства тестирования. Снова учтите весь процесс: планирование, программи­рование и отладку тестировочных программ. Постарайтесь оценить необходимое время как можно более реалистично — ведь впослед­ствии, если работа затянется, вам придется отвечать за свои слова.