Опубликован: 05.03.2005 | Доступ: свободный | Студентов: 16965 / 2699 | Оценка: 4.11 / 3.63 | Длительность: 13:20:00
ISBN: 978-5-9556-0027-7
Специальности: Тестировщик
Лекция 6:

Интеграционное тестирование и его особенности для объектно-ориентированного программирования

< Лекция 5 || Лекция 6: 123 || Лекция 7 >

Пример интеграционного тестирования

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

Таблица 6.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. Спецификация результатов теста
< Лекция 5 || Лекция 6: 123 || Лекция 7 >
Сергей Чурбанов
Сергей Чурбанов
Роман Сергеев
Роман Сергеев

Доказательство "концепции Тестирования" из второй лекции "Курса тестирования" трудно понять:

A**3 = A*A*A

A*A*A = A -> R, A*R -> R, A*R -> R

Понятно что A**3 это A*A*A.

Но не понятно что такое А. Что означает A -> R, что это за стрелка, это обращение к внутреннему свойству в А? 

https://intuit.ru/studies/courses/48/48/lecture/1426