- •Введение
- •1. Основные понятия процесса тестирования
- •1.1 Особенности тестирования программных компонент.
- •1.2. Виды и методы тестирования.
- •1.3. Структурное тестирование. Критерии структурного подхода
- •1.3.1. Тестирование на основе потока управления
- •1.3.2. Тестирование на основе потока данных
- •1.3.3. Методы проектирования тестовых путей.
- •1.3.4. Оценка степени тестированности программного проекта.
- •1.3.5. Примеры построения тестов «белого ящика» .
- •1.4. Функциональное тестирование – принцип «чёрного ящика»
- •1.4.1. Метод эквивалентного разбиения
- •1.4.2. Анализ граничных значений.
- •1.4.3. Метод функциональных диаграмм причинно-следственных связей.
- •1.4.4. Тестирование потока транзакций.
- •1.4.5. Метод предположения об ошибке.
- •1.4.6. Общая стратегия функционального тестирования
- •1.4.7.Примеры функционального тестирования.
- •Метод эквивалентного разбиения
- •Метод граничных условий.
- •Метод функциональных диаграмм причинно-следственных связей.
- •2. Разработка эффективных наборов тестов «чёрного ящика»
- •2.1. Характеристики хорошего теста
- •2.2. Тестирование переходов между состояниями
- •2.3.Условия гонок и другие временные зависимости
- •2.4. Нагрузочные испытания
- •2.5. Тестирование функциональной эквивалентности
- •2.6. Применение технологии эквивалентности
- •3. Задание для самостоятельной работы
1.2. Виды и методы тестирования.
Детерминированное тестирование (ДТ)– это наиболее эффективный метод тестирования, при котором задаются конкретные совокупности исходных данных, которым соответствуют также конкретные значения эталонных результатов. Этот метод позволят не только обнаружить ошибку, но и в ряде случаев локализовать её.
ДТ основывается на двух подходах:
Структурное тестирование, или тестирование программы как «белого ящика» (стратегия тестирования, управляемого логикой программы). Подбираются такие тесты, которые позволяют обеспечить выполнение максимально возможные количества маршрутов, логических ветвлений, циклов и т.п.
Функциональное тестирование, или тестирование как «чёрного ящика» (тестирование по входу - выходу). Абстрагируясь от логики программы, проверяют только входные и выходные функциональные спецификации.
1.3. Структурное тестирование. Критерии структурного подхода
1.3.1. Тестирование на основе потока управления
Тестирование по принципу «белого ящика» характеризуется степенью, в какой тесты выполняют или покрывают логику программы (исходный текст). Элементами, которые должны быть покрыты при прохождения тестов, являются вершины, дуги или подпути управляющего графа программы (УГП), условие, комбинации условий и т. п.
С0 – критерий покрытия операторов, заключается в выполнении каждого оператора хотя бы один раз. Это очень слабый критерий и не является достаточным.
С1 - критерий покрытия решений, заключается в том, что хотя бы по одному разу должны быть выполнены каждый возможный результат всех решений и передача управления при вызове программы или подпрограммы каждой точке входа. С точки зрения УГП, покрытие решений заключается в том, чтобы каждая его дуга и входная вершина содержались по крайней мере в одном из путей тестирования.
Критерий С1 также не может гарантировать выявления всех ошибок в программе.
С2 - критерий покрытия всех путей в УГП .
Например, рассмотрим фрагмент программы на С,С++,ADA:
If (cond1 && ( cond2 || func1()))
statment1;
else statment2;
Покрытие решений (ветвей) может быть достигнуто без вызова func1().
Условия cond1 и cond2, принимая значение true, как бы закрывают вызов функции func1(), что при условии cond1=false может привести к ошибкам в непокрытой тестами части программы.
Исходя из важности проверки всех возможных вариантов значений в булевских выражениях , вводиться критерий покрытия всех условий (булевских).
Критерий покрытия условий/решений совмещаеткритерий С1 и критерий покрытия условий.
1.3.2. Тестирование на основе потока данных
Первоначально анализ потока данных использовался при статистическом тестировании программ для выявления ссылок на не инициализируемые переменные и выявление избыточных присваиваний(аномалий потока данных). Данная стратегия требует тестирования всех взаимосвязей , включающих в себя ссылку и определение переменной, на которую указывает ссылка ,то есть должны покрываться дуги информационного графа программы. Недостаток стратегии заключается в том, что она не включает критерий С1 и не гарантирует покрытия решений.
Наиболее практичным является критерий СР (покрытие пар достижимых дуг). Этот критерий заключается в том, что покрываются все такие пары дуг V и W, что из дуги V достижима дуга W. То есть , фактически, кроме вершины , в которой определена переменная , тестируются и входящие в неё дуги.
