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

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

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

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

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

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

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

Банк:    
ПроверитьСчет( ); ЗапросДепозита ( ); РазрешитьКарту( );
ПроверитьРIN( ); ИнфоСчета( ); СнятьРазрешен( );
ПроверитьПолис( ); ОткрытьСчет( ); ЗакрытьСчет( ).
ЗапросСнятия( ); НачальнДепозит( );  
Банкомат:    
КартаВставлена( ); Положить( ); СостояниеСчета( );
Пароль( ); Снять( ); Завершить( ).
ИнтерфейсБанкомата:    
ПроверитьСостояние( ); ВыдатьНаличные( ); ЧитатьИнфоКарты( );
СостояниеПоложить( ); ПечатьСостСчета( ); ПолучитьКолвоНалич( ).
Счет:    
ОграничКредит( ); Остаток) ); Положить( );
ТипСчета( ); Снять( ); Закрыть( ).
ПодтверждениеПравильности:
ПодтвРIN( ); ПодтвСчет( ).  

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

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

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

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

Стохастические тестовые варианты генерируются следующей последовательностью шагов.

1. Для создания тестов используют списки операций каждого класса-клиента. Операции будут посылать сообщения в классы-серверы.

2. Для каждого созданного сообщения определяется класс-сотрудник и соответствующая операция в классе-сервере.

3. Для каждой операции в классе-сервере, которая вызывается сообщением из класса-клиента, определяются сообщения, которые она, в свою очередь, посылает.

4. Для каждого из сообщений определяется следующий уровень вызываемых операций; они вставляются в тестовую последовательность.

В качестве примера приведем последовательность операций для класса Банк, вызываемых классом Банкомат:

ПроверитьСчет ►ПроверитьРIN ►[[ПроверитьПолис ►

ЗапросСнятия]●ЗапросДепозита●ИнфоСчета]n.

ПРИМЕЧАНИЕ

Здесь приняты следующие обозначения: стрелка означает операцию следования, точка — операцию И/ИЛИ, пара квадратных скобок — группировку операций классов, показатель степени — количество повторений группировки из операций классов.

Случайный тестовый вариант для класса Банк может иметь вид

Тестовый вариант N: ПроверитьСчет ►ПроверитьРШ ►ЗапросДепозита.

Для выявления сотрудников, включенных в этот тест, рассматриваются сообщения, связанные с каждой операцией, записанной в ТВ N. Для выполнения заданий ПроверитьСчет и ПроверитьРТМ Банк должен сотрудничать с классом ПодтверждениеПравильности. Для выполнения задания ЗапросДепозита Банк должен сотрудничать с классом Счет. Отсюда новый ТВ, который проверяет отмеченные сотрудничества:

Тестовый вариант М: ПроверитьСчетБанк ►(ПодтвСчетПодтвПрав) ►ПроверитьРINБанк ►(ПодтвРШПодтвПрав) ►ЗапросДепозитаБанк ►(ПоложитьСчет).

В этой последовательности операции классов-сотрудников Банка помещены в круглые скобки, индексы отображают принадлежность операций к конкретным классам.

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

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

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

Наши рекомендации