Учебно-методические материалы для студентов кафедры АСОИУ

ЛР №7 Интеграционное тестирование

Продемонстрируем тестирование взаимодействий на примере взаимодействия класса TCommandQueue и класса TСommand, а также, как и при модульном теcтировании, разработаем спецификацию тестового случая (таблица 4.2):

Таблица 4.2. Спецификация тестового случая для интеграционного тестирования

Названия взаимодействующих классовTСommandQueue, TCommand
Название тестаTCommandQueueTest1
Описание тестатест проверяет возможность создания объекта типа TCommand и добавления его в очередь при вызове метода AddCommand
Начальные условияочередь команд пуста
Ожидаемый результатв очередь будет добавлена одна команда

На основе этой спецификации разработан тестовый драйвер пример 6.1 — класс TCommandQueueTester, который наследуется от класса Tester.

Класс содержит:

конструктор, в котором создаются объекты классов TStore, TTerminalBearing и объект типа TcommandQueue

Методы, реализующие тесты. Каждый тест реализован в отдельном методе.

Метод Run, в котором вызываются методы тестов.

Метод dump, который сохраняет в Log-файле теста информацию обо всех командах, находящихся в очереди в формате — Номер позиции в очереди: полное название команды

Точку входа в программу — метод Main, в котором происходит создание экземпляра класса TСommandQueueTester.

public TCommandQueueTester()
{
TB = new TTerminalBearing();
S = new TStore();
CommandQueue=new TCommandQueue(S,TB);
S.CommandQueue=CommandQueue;
...
}

Пример 6.1. Объект типа TcommandQueue

TCommandQueueTester::TCommandQueueTester()
{
TB = new TTerminalBearing();
S = new TStore();
CommandQueue=new TCommandQueue(S,TB);
S->CommandQueue=CommandQueue;
}

Пример 6.1.1. Объект типа TcommandQueue (C++)

Теперь создадим тест, который проверяет, создается ли объект типа TСommand, и добавляется ли команда в конец очереди.

private void TCommandQueueTest1()
{
LogMessage("///// TCommandQueue Test1 /////");
LogMessage("Проверяем, создается ли
объект типа TCommand");
// В очереди нет команд
dump();
// Добавляем команду
// параметр = -1 означает, что команда
// должна быть добавлена в конец очереди
CommandQueue.AddCommand(TCommand.GetR,0,0,0,
new TBearingParam(),new TAxleParam(),-1);
LogMessage("Command added");
// В очереди одна команда
dump();
}

Пример 6.2. Тест

void TCommandQueueTester::TCommandQueueTest1()
{
LogMessage("///// TCommandQueue Test1 /////");
LogMessage("Проверяем, создается ли
объект типа TCommand");
// В очереди нет команд
dump();
// Добавляем команду
// параметр = -1 означает, что команда
// должна быть добавлена в конец очереди
CommandQueue.AddCommand(GetR,0,0,0,
new TBearingParam(),
new TAxleParam(),-1);
LogMessage("Command added");
// В очереди одна команда
dump();
}

Пример 6.2.1. Тест (C++)

В класс включены еще два разработанных теста.

После завершения теста следует просмотреть текстовый журнал теста, чтобы сравнить полученные результаты с ожидаемыми результатами, заданными в спецификации тестового случая TCommandQueueTest1 пример 6.3.

///// TCommandQueue Test1 /////
Проверяем, создается ли объект типа TCommand
0 commands in command queue
Command added
1 commands in command queue
0: ПОЛУЧИТЬ ИЗ ВХОДНОЙ ЯЧЕЙКИ

Пример 6.3. Спецификация результатов теста (html, txt)

CC-BY-CA Цыганенко В.Н., 15.10.2012