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

Глава 3: Типы тестов ... 71

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

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

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

Однако в этой книге мы уделяем основное внимание тестированию “черного ящика”, и именно ему посвящают большую часть времени все профессиональные тестировщики. (Отдельную и достаточно специфичес­кую область тестирования представляют собой СУБД для мэйнфреймов. Об их тестировании лучше рассказывают такие авторы, как Бейзер (Beizer), Хетзел (Hetzel) и Майерс (Myers).) Тестировщик “черного ящика” не изу­чает исходный код программы — он исследует ее извне, работая с ней так, как это будет делать пользователь. И так же, как исследование программы изнутри позволяет выявить проблемы и критические точки, которых не видно извне, так и тестировщик “черного ящика” выявляет ошибки и недостатки, которые программист упускает.

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

72 Часть I: Основы

Структурное тестирование против функционального

Структурное тестирование является одним из видов тестирования “стек­лянного ящика”. Его главной идеей является правильный выбор тестиру­емого программного пути.

В противоположность ему функциональное тестирование относится к категории тестирования “черного ящика”. Каждая функция программы тестируется путем ввода ее входных данных и анализа выходных. При этом внутренняя структура программы учитывается очень редко.

Более подробное описание этих двух технологий можно найти у Бей- зера (Beizer, 1984). |

Как указывает Данн (Dunn, 1984), хотя структурное тестирование и I имеет под собой гораздо более мощную теоретическую основу, большин- I ство тестировщиков предпочитают функциональное тестирование. Струк- ] турное тестирование лучше поддается математическому моделированию, но это совсем не означает, что оно эффективнее. Каждая из технологий по- | зволяет выявить ошибки, пропускаемые другой, в этом смысле их можно назвать одинаково эффективными.

Тестирование программных путей: критерии охвата

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

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

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