Опубликован: 05.03.2005 | Уровень: специалист | Доступ: платный
Практическая работа 3:

Интеграционное тестирование

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

Тестирование взаимодействия или интеграционное тестирование представляет собой тестирование собранных вместе, взаимодействующих модулей (объектов). В интеграционном тестировании можно объединять разное количество объектов - от двух до всех объектов тестируемой системы. Интеграционное тестирование отличается от системного тем, что:

  • при интеграционном тестировании используется подход "белого ящика", а при системном - "черного ящика";
  • целью интеграционного тестирования является только проверка правильности взаимодействия объектов, тогда как целью системного - проверка правильности функционирования системы в целом.

Идентификация взаимодействий

Взаимодействие объектов представляет собой просто запрос одного объекта ( отправителя ) на выполнение другим объектом ( получателем ) одной из операций получателя и всех видов обработки, необходимых для завершения этого запроса.

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

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

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

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

Тип 2. Общедоступная операция возвращает значения объектного типа. На класс может быть возложена задача создания возвращаемого объекта, либо он может возвращать модифицированный параметр.

Тип 3. Метод одного класса создает экземпляр другого класса как часть своей реализации.

Тип 4. Метод одного класса ссылается на глобальный экземпляр некоторого другого класса. Разумеется, принципы хорошего тона в проектировании рекомендуют минимальное использование глобальных объектов. Если реализация какого-либо класса ссылается на некоторый глобальный объект, рассматривайте его как неявный параметр в методах, которые на него ссылаются.

Приведем еще раз таблицу разделения классов на примитивные и непримитивные типы (табл. 3.1):

Таблица 3.1. Типы классов
Класс Тип
TBearingParam Примитивный
TAxleParam Примитивный
TCommand Примитивный
TLog Примитивный
TCommandQueue Непримитивный
Класс Непримитивный
TStore Непримитивный
TTerminalBearing Непримитивный
TTerminalAxle Непримитивный
TModel Непримитивный
MainForm Непримитивный
Таблица 3.2. Типы взаимодействия классов
Непримитивные типы Tbearing Param Taxle Param Tcommand TCommand Queue TStore TTerminal Bearing TTerminal Axle TLog Tmodel
TCommandQueue 1 1 3 1 1
TStore 3 1 1
TTerminalBearing 3
TTerminalAxle 3
TModel 3 3 3 3 3
MainForm 3

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

Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Сергей Чурбанов
Сергей Чурбанов
Юрий Коробков
Юрий Коробков
Россия, Москва, МЭИ, 1998