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

Глава 7: Разработка тестов 199

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

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

Анализ чувствительности

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

Разумеется, обязательно нужно будет проверить граничные значения, но теперь можно позволить себе роскошь гораздо более обстоятельного тести­рования. Как же отобрать наилучшие тесты? Чаще всего для этого приме­няется анализ чувствительности. Эта процедура состоит в следующем.

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

• Затем ищут участки области определения, на которых небольшие изменения аргументов вызывают значительные скачки результиру­ющих значений. (Например, при приближении X к 90 градусам значение 1ап(Х) резко возрастает.) Именно такие участки наиболее чреваты ошибками.

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

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

Мы рекомендуем равномерно разделить каждый диапазон тестируемых входных значений на ряд поддиапазонов (их может быть около сотни) и протестировать по одному значению внутри каждого из них. Например, если функция получает значения между -1 и 1, введите одно значение, лежащее межу -1 и -0,98, второе — между -0,98 и 096 и т.д. После ввода каждого значения проверяйте, правильный ли получился результат, чтобы не тратить зря времени, если что-то не так.

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

Предположим, что на входном диапазоне от 0,4 до 0,46 значения фун­кции (или их расхождение со значениями эталонной функции) резко воз­растают. Разделите этот диапазон на 100 равных частей и проверьте по одному значению внутри каждой из них. Если все в порядке, вы убедитесь, что значения тестируемой и эталонной функции для всех тестируемых аргументов совпадают, а если нет, можно будет документировать ошибку.

При профессиональном тестировании математических функций не обойтись без некоторых знаний из теории вероятности. Если речь идет не об одной, а о целом ряде функций, необходимы боле эффективные и на­учно обоснованные технологии поиска критических участков области оп­ределения функции — тех, где ее значения резко меняются или отличаются от эталонных. Их описания можно найти в специальной литературе. Для начала подойдет книга Бека и Арнольда (Beck & Arnold 1977). Кроме того, мы рекомендуем работы таких авторов, как Бард (Bard, 1974) и Чамберс (Chambers, 1977).

Случайный ввод

Вместо разделения всей тестируемой области определения функции на определенное количество равных участков можно воспользоваться другим способом подбора входных значений — случайным. Случайный выбор значений более эффективен, поскольку гарантирует их полную равноправ­ность. Например, тестируя такую последовательность входных значений, как 0,02; 0,04; 0,06 и т.д., вы никогда не узнаете, как программа обрабаты­вает нечетные числа — как 0,03 или как числа с большим количеством значащих цифр, такие как 0,1415. В то же время при выборе входных зна­чений случайным образом область определения функции покрывается го­раздо более полно, все типы и диапазоны значений входных данных охватываются равномерно.

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