ЛР №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