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

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

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

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

Некорректное поведение программы проявляется с достаточной очевидностью

Как узнать, прошла ли программа тест? Ответ на этот вопрос не так очевиден, как может показаться на первый взгляд. Тут есть над чем поду­мать. Даже неверные выходные данные на экране или на бумаге тестиров­щик может случайно пропустить, не говоря уже о том, что результат ошибки может оказаться скрытым.

• Разрабатывая тест, подробно опишите ожидаемые выходные данные или реакцию программы. Выполняя его, сверяйтесь со своими запи­сями.

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

Классы эквивалентности и граничные условия

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

Классы эквивалентности

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

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

• Все тесты предназначены для выявления одной и той же ошибки.

• Если один из тестов выявит ошибку, остальные, скорее всего, тоже это сделают.

• Если один из тестов не выявит ошибки, остальные, скорее всего, тоже этого не сделают.

Разумеется, кроме этих абстрактных критериев, необходимы еще и практические, позволяющие отнести к одному классу конкретную группу тестов. Вот на чем может основываться этот отбор.

• Тесты включают значения одних и тех же входных данных.

• Для их проведения выполняются одни и те же операции программы.

• В результате всех тестов формируются значения одних и тех же выходных данных.

• Либо ни один из тестов не вызывает выполнения блока обработки ошибок программы, либо выполнение этого блока вызывается все­ми тестами группы.

Поиск классов эквивалентности

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

Вот несколько рекомендаций для поиска классов эквивалентности:

• Не забывайте о классах, охватывающих заведомо неверные или недопустимые входные данные.

• Организуйте формируемый перечень классов в виде таблицы или плана.

• Определите диапазоны числовых значений.

• Для полей или параметров, принимающих фиксированные перечни значений, выясните, какие из значений входят в перечень.

• Проанализируйте возможные результаты выбора из списков и меню.

• Поищите переменные, значения которых должны быть равными.

• Поищите классы значений, зависящих от времени.