|
Процесс разработки - Тестирование разбиений на уровне классов |
Страница 25 из 37
Тестирование разбиений на уровне классов
Тестирование разбиений уменьшает количество тестовых вариантов, требуемых для проверки классов (тем же способом, что и разбиение по эквивалентности для стандартного ПО). Области ввода и вывода разбивают на категории, а тестовые Варианты разрабатываются для проверки каждой категории. Обычно используют одну из трех категории разбиения [43]. Категории образуются операциями класса. Первый способ — разбиение на категории по состояниям. Основывается на способности операций изменять состояние класса. Обратимся к классу Счет. Операции Снять, Положить изменяют его состояние и образуют первую категорию. Операции Остаток, Итог, ОграничитьКредит не меняют состояние Счета и образуют вторую категорию. Проектируемые тесты отдельно проверяют операции, которые изменяют состояние, а также те операции, которые не изменяют состояние. Таким образом, для нашего примера: Тестовый вариант 1: Открыть ?Установить ?Положить ?Положить ?Снять ?Снять ?Закрыть. Тестовый вариант 2: Открыть ?Установить ?Положить ?Остаток ?Итог ?ОграничитьКредит ?Снять ?Закрыть. ТВ1 изменяет состояние объекта, в то время как ТВ2 проверяет операции, которые не меняют состояние. Правда, в ТВ2 пришлось включить операции минимальной тестовой последовательности, поэтому для нейтрализации влияния операций Снять и Положить их аргументы должны иметь одинаковые значения. Второй способ —разбиение на категории по свойствам. Основывается на свойствах, которые используются операциями. В классе Счет для определения разбиений можно использовать свойства остаток и ограничение кредита. Например, на основе свойства ограничение кредита операции подразделяются на три категории: 1) операции, которые используют ограничение кредита; 2) операции, которые изменяют ограничение кредита; 3) операции, которые не используют и не изменяют ограничение кредита. Для каждой категории создается тестовая последовательность. Третий способ — разбиение на категории по функциональности. Основывается на общности функций, которые выполняют операции. Например, операции в классе Счет могут быть разбиты на категории: q операции инициализации (Открыть, Установить); q вычислительные операции (Положить, Снять); q запросы (Остаток, Итог, ОграничитьКредит); q операции завершения (Закрыть).
Способы тестирования взаимодействия классов
Для тестирования сотрудничества классов могут использоваться различные способы [43]: q стохастическое тестирование; q тестирование разбиений; q тестирование на основе сценариев; q тестирование на основе состояний. В качестве примера рассмотрим программную модель банковской системы, в состав которой входят классы Банк, Банкомат, ИнтерфейсБанкомата, Счет, Работа с наличными, ПодтверждениеПравильности, имеющие следующие операции:
Диаграмма сотрудничества объектов банковской системы представлена на рис. 16.1. На этой диаграмме отображены связи между объектами, стрелки передачи сообщений подписаны именами вызываемых операций.
Рис. 16.1. Диаграмма сотрудничества банковской системы
|