Всё для программиста

Процесс разработки - Тестирование разбиений на уровне классов
Индекс материала
Процесс разработки
Рабочие потоки процесса
Технические артефакты
Идентификация риска
Анализ риска
Планирование управления риском
Этап НАЧАЛО (Inception)
Этап РАЗВИТИЕ (Elaboration)
Этап КОНСТРУИРОВАНИЕ (Construction)
Этап ПЕРЕХОД (Transition)
Этап НАЧАЛО
Этап РАЗВИТИЕ
Этап КОНСТРУИРОВАНИЕ
ХР-реализация
ХР-итерация
Элемент ХР-разработки
Коллективное владение кодом
Взаимодействие с заказчиком
Объектно-ориентированное тестирование
Особенности тестирования объектно-ориентированных «модулей»
Объектно-ориентированное тестирование правильности
Тестирование, основанное на ошибках
Тестирование, основанное на сценариях
Тестирование поверхностной и глубинной структуры
Тестирование разбиений на уровне классов
Стохастическое тестирование
Тестирование разбиений
Листинг 16.1.
Листинг 16.5.
Листинг 16.10
Листинг 16.15.
Листинг 16.20.
Автоматизация конструирования визуальной модели программной системы
Создание диаграммы последовательности
Создание диаграммы классов
Создание компонентной диаграммы
Заключение
Все страницы
Тестирование разбиений на уровне классов

 

Тестирование разбиений уменьшает количество тестовых вариантов, требуемых для проверки классов (тем же способом, что и разбиение по эквивалентности для стандартного ПО). Области ввода и вывода разбивают на категории, а тестовые Варианты разрабатываются для проверки каждой категории.

Обычно используют одну из трех категории разбиения [43]. Категории образуются операциями класса.

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

Тестовый вариант 1:

Открыть ?Установить ?Положить ?Положить ?Снять ?Снять ?Закрыть.

Тестовый вариант 2:

Открыть ?Установить ?Положить ?Остаток ?Итог ?ОграничитьКредит ?Снять ?Закрыть.

ТВ1 изменяет состояние объекта, в то время как ТВ2 проверяет операции, которые не меняют состояние. Правда, в ТВ2 пришлось включить операции минимальной тестовой последовательности, поэтому для нейтрализации влияния операций Снять и Положить их аргументы должны иметь одинаковые значения.

Второй способ —разбиение на категории по свойствам. Основывается на свойствах, которые используются операциями. В классе Счет для определения разбиений можно использовать свойства остаток и ограничение кредита. Например, на основе свойства ограничение кредита операции подразделяются на три категории:

1) операции, которые используют ограничение кредита;

2) операции, которые изменяют ограничение кредита;

3) операции, которые не используют и не изменяют ограничение кредита.

Для каждой категории создается тестовая последовательность.

Третий способ — разбиение на категории по функциональности. Основывается на общности функций, которые выполняют операции. Например, операции в классе Счет могут быть разбиты на категории:

q       операции инициализации (Открыть, Установить);

q       вычислительные операции (Положить, Снять);

q       запросы (Остаток, Итог, ОграничитьКредит);

q       операции завершения (Закрыть).

Способы тестирования взаимодействия классов

 

Для тестирования сотрудничества классов могут использоваться различные способы [43]:

q       стохастическое тестирование;

q       тестирование разбиений;

q       тестирование на основе сценариев;

q       тестирование на основе состояний.

В качестве примера рассмотрим программную модель банковской системы, в состав которой входят классы Банк, Банкомат, ИнтерфейсБанкомата, Счет, Работа с наличными, ПодтверждениеПравильности, имеющие следующие операции:

Банк:

 

 

ПроверитьСчет( );

ЗапросДепозита ( );

РазрешитьКарту( );

ПроверитьРIN( );

ИнфоСчета( );

СнятьРазрешен( );

ПроверитьПолис( );

ОткрытьСчет( );

ЗакрытьСчет( ).

ЗапросСнятия( );

НачальнДепозит( );

 

Банкомат:

 

 

КартаВставлена( );

Положить( );

СостояниеСчета( );

Пароль( );

Снять( );

Завершить( ).

ИнтерфейсБанкомата:

 

 

ПроверитьСостояние( );

ВыдатьНаличные( );

ЧитатьИнфоКарты( );

СостояниеПоложить( );

ПечатьСостСчета( );

ПолучитьКолвоНалич( ).

Счет:

 

 

ОграничКредит( );

Остаток) );

Положить( );

ТипСчета( );

Снять( );

Закрыть( ).

ПодтверждениеПравильности:

ПодтвРIN( );

ПодтвСчет( ).

 

 

Диаграмма сотрудничества объектов банковской системы представлена на рис. 16.1. На этой диаграмме отображены связи между объектами, стрелки передачи сообщений подписаны именами вызываемых операций.

 

Рис. 16.1. Диаграмма сотрудничества банковской системы