Основы тестирования программного обеспечения

         

Пример системного тестирования приложения «Поступление подшипника на склад»


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


Рис. 4-15.  Краткое описание тестируемой системы 'Поступление подшипника на склад'

Спецификация тестового случая №1:

Состояние окружения (входные данные - X ):

Статус склада - 32. Пришел подшипник.

Статус обмена с терминалом подшипника (0 - есть подшипник) и его параметры - "Статус=0 Диаметр=12".

Статус обмена с терминалом оси (1 - нет оси) и ее параметры - "Статус=1 Диаметр=12".

"Статус=1 Диаметр=12".

Статус команды - 0. Команда успешно принята.

Сообщение от склада - 1. Команда успешно выполнена.

Ожидаемая последовательность событий (выходные данные – Y):

Система запрашивает статус склада (вызов функции GetStoreStat) и получает 32

Система запрашивает параметры подшипника (вызов функции GetRollerPar) и получает Статус = 0 Диаметр=12

Система запрашивает параметры оси (вызов функции GetAxlePar) и получает Статус = 1 Диаметр=0

Система добавляет в очередь команд склада на последнее место команду SendR (получить из приемника в ячейку) (вызов функции SendStoreCom) и получает сообщение о том, что команда успешно принята – статус = 0

Система запрашивает склад о результатах выполнения команды (вызов функции GetStoreMessage) и получает сообщение о том, что команда успешно выполнена - статус = 1

Выходные данные (результаты выполнения Yв) – зафиксированы в журнале теста (пример 7.1)

ВЫЗОВ: GetStoreStat РЕЗУЛЬТАТ: 32 ВЫЗОВ: GetRollerPar РЕЗУЛЬТАТ: Статус = 0 Диаметр = 12 ВЫЗОВ: GetAxlePar РЕЗУЛЬТАТ: Статус = 1 Диаметр = 0 ВЫЗОВ: SendStoreCom РЕЗУЛЬТАТ: 0 ВЫЗОВ: GetStoreMessage РЕЗУЛЬТАТ: 1 Пример 7.1.


Журнал тестаПриведенный на пример 7.2 тест был разработан в соответствии со спецификацией тестового случая №1. Детальная спецификация приведена в FS (Практикум, Приложение 1), результаты прогона показаны на пример 7.3.
class Test1:Test { override public void start() { // Задаем состояние окружения // (входные данные) StoreStat="32"; //Поступил подшипник RollerPar="0 NewUser Depot1 123456 1 12 1 1"; // статус обмена с терминалом подшипника // (0 - есть подшипник) и его параметры AxlePar="1 NewUser Depot1 123456 1 0 12 12"; // статус обмена с терминалом оси // (1 - нет оси) и ее параметры CommandStatus="0"; // команда успешно принята StoreMessage="1"; // успешно выполнена // Получаем информацию о функционировании // системы wait("GetStoreStat"); //опрос статуса склада wait("GetRollerPar"); // Получение информации о подшипнике // с терминала подшипника wait("GetAxlePar"); // Получение информации об оси // с терминала оси wait("SendStoreCom"); // добавление в очередь команд склада // на первое место команды GetR // (получить из приемника в ячейку) wait("GetStoreMessage"); // Получение сообщения от склада о // результатах выполнения команды // В результате первый подшипник // должен быть принят } } Пример 7.2. Тест для системного тестированияclass Test1 : public Test { public: void start() { // Задаем состояние окружения // (входные данные) // Поступил подшипник strcpy(StoreStat,"32"); // статус обмена с терминалом подшипника // (0 - есть подшипник) и его параметры strcpy(RollerPar, "0 NewUser Depot1 123456 1 12 1 1"); // статус обмена с терминалом оси // (1 - нет оси) и ее параметры strcpy(AxlePar, "1 NewUser Depot1 123456 1 0 12 12"); strcpy(CommandStatus,"0"); //команда успешно принята strcpy(StoreMessage,"1"); //успешно выполнена // Получаем информацию о // функционировании системы wait("GetStoreStat"); //опрос статуса склада wait("GetRollerPar"); // Получение информации о подшипнике // с терминала подшипника wait("GetAxlePar"); // Получение информации об оси // с терминала оси wait("SendStoreCom"); // добавление в очередь команд склада // на первое место команды GetR // (получить из приемника в ячейку) wait("GetStoreMessage"); // Получение сообщения от склада о // результатах выполнения команды // В результате первый подшипник // должен быть принят } } Пример 7.2.1.Тест для системного тестирования (C++)После завершения теста следует просмотреть текстовый журнал теста, чтобы выяснить, какая последовательность событий в системе была реально зафиксирована (выходные данные) и сравнить их с ожидаемыми результатами, заданными в спецификации тестового случая1. Пример журнала теста (пример 7.1):
Test started CALL:GetStoreStat 0 RETURN:32 CALL:GetRollerPar RETURN:0 NewUser Depot1 123456 1 12 1 1 CALL:GetAxlePar RETURN:1 NewUser Depot1 123456 1 0 12 12 CALL:SendStoreCom 1 0 0 1 0 0 0 RETURN:0 CALL:GetStoreMessage RETURN:1 Пример 7.3. Тестовый журнал для случая прогона системного теста

Содержание раздела