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

         

Изучение настоящего пункта полезно предварить


Изучение настоящего пункта полезно предварить ознакомлением с п.8, в котором описан подход к автоматизации тестирования с помощью языка скриптов. Здесь рассматривается тест на tcl, подобные тесты необходимо будет писать самостоятельно при выполнении заданий. Приведенный пример был разработан в соответствии со спецификацией тестового случая №1. Для простоты будем считать, что события происходят последовательно в строго заданном порядке. Реально наша система - многопоточное приложение, поэтому такое условие далеко не всегда можно гарантировать.


Рис. 6.1.  Система и ее окружение (скрипты)

source bin\\srv.tcl //запуск сервера global StoreStat //статус склада global RollerPar //терминал подшипника global AxlePar //терминал оси global CommandStatus //возвращаемое значение функции //SendStoreCom о результатах получения команды global StoreMessage //сообщение от склада о результатах выполнения команды global rollers_found //1 (можно подобрать подходящий //подшипник или 0 (нельзя) global fds //строка для графы "Покрытие FS" в итоговой //таблице результатов тестирования (по умолчанию - Default) global last_command //последняя команда тестируемой системы global allowed //список разрешенных команд set fds "1.a.1; 1.a.4; 2.a; 2.c; 3.a; 4.c" //покрывает заданные пункты FS StartTest Warehousetest0001 //запуск теста Timeout 30 // процесс тестирования будет прерван через 30 сек //Задаем состояние окружения (входные данные) set StoreStat 32 //Поступил подшипник set RollerPar "0 NewUser Depot1 123456 1 12 1 1" //статус обмена с терминалом подшипника //(0 - есть подшипник) и его параметры set AxlePar "1 NewUser Depot1 123456 1 0 12 12" //статус обмена с терминалом оси (1 - нет оси) //и ее параметры set CommandStatus 0 //команда успешно принята set StoreMessage 1 //команда успешно выполнена set rollers_found 1 //можно подобрать подходящий подшипник //Получаем информацию о функционировании системы Wait "GetStoreStat *" 0 1 //Неограниченное время (0) ждем получения команды ("опрос //статуса склада") и если команда не получена, то будет //зафиксирована ошибка (1) Wait "GetRollerPar" 0 1 //Неограниченное время (0) ждем получения команды //("получить информацию о подшипнике с терминала подшипника") //и если команда не получена, то будет зафиксирована ошибка (1) set allowed [list "GetAxlePar"] //Получение команды "получить информацию об оси с терминала //оси" разрешено и не должно вызвать ошибку Wait "SendStoreCom 1 *" 10 1 //В течение 10 секунд ждем получения команды ("добавить в //очередь команд склада на первое место команду GetR (1 - //получить из приемника в ячейку)" и если команда за это //время не получена, то будет зафиксирована ошибка (1) Wait GetStoreMessage 0 1 //Неограниченное время (0) ждем получения команды //("получить сообщение от склада о результатах выполнения //команды") и если команда не получена, то будет //зафиксирована ошибка (1) //В результате первый подшипник должен быть принят set allowed [list] Wait "GetStoreStat *" 0 1 //Неограниченное время (0) ждем получения команды ("опрос //статуса склада") и если команда не получена, то будет //зафиксирована ошибка (1) Wait GetRollerPar 0 1 //Неограниченное время (0) ждем получения команды //("получить информацию о подшипнике с терминала //подшипника") и если команда не получена, то будет //зафиксирована ошибка (1) set allowed [list "GetAxlePar"] //Получение команды "получить информацию об оси с терминала //оси" разрешено и не должно вызвать ошибку Wait "SendStoreCom 1 *" 10 1 //В течение 10 секунд ждем получения команды ("добавить в //очередь команд склада на первое место команду GetR //(1 - получить из приемника в ячейку)") и если команда за //это время не получена, то будет зафиксирована ошибка (1) Wait "GetStoreMessage" 0 1 //Неограниченное время (0) ждем получения команды //("получить сообщение от склада о результатах выполнения //команды") и если команда не получена, то будет //зафиксирована ошибка (1) //В результате второй подшипник должен быть принят //Задаем новое состояние окружения (входные данные) set StoreStat 32 //Поступил подшипник set RollerPar {1 NA NA 0 0 0 0 0} //статус обмена с терминалом подшипника (1 - нет подшипник) //и его параметры set AxlePar "0 NewUser Depot1 123456 1 0 12 12" //статус обмена с терминалом оси (0 - есть ось) и //ее параметры //Получаем информацию о функционировании системы Wait "GetStoreStat *" 0 1 //Неограниченное время (0) ждем получения команды ("опрос //статуса склада") и если команда не получена, то будет //зафиксирована ошибка (1) Wait "GetRollerPar" 0 1 //Неограниченное время (0) ждем получения команды //("получить информацию о подшипнике с терминала //подшипника") и если команда не получена, то будет //зафиксирована ошибка (1) Wait GetAxlePar 0 1 //Неограниченное время (0) ждем получения команды //("получить информацию о оси с терминала оси") и если //команда не получена, //то будет зафиксирована ошибка (1) //В результате должна прийти ось Wait "SendStoreCom 2 *" 10 1 //В течение 10 секунд ждем получения команды ("добавить в //очередь команд склада на последнее место команду SendR //(2 - ячейку на выход)") и если команда за это время не //получена, то будет зафиксирована ошибка (1) if {![string compare $last_command "SendStoreCom 2 9 9 9 0 0 1"]} { //была послана команда выдать первый подшипник для оси Wait "GetStoreMessage" 0 1 //Неограниченное время (0) ждем получения команды //("получить сообщение от склада о результатах выполнения //команды") и если команда не получена, то будет //зафиксирована ошибка (1) Wait "SendStoreCom 2 9 9 9 0 1 1" 0 1 //Неограниченное время (0) ждем получения команды //("добавить в очередь команд склада на последнее место //команду SendR (2 - ячейку на выход)") и если команда за //это время не получена, то будет зафиксирована ошибка (1) //послали команду выдать второй подшипник } if {![string compare $last_command "SendStoreCom 2 9 9 9 0 1 1"]} { //если была послана команда выдать второй подшипник для оси Wait "GetStoreMessage" 0 1 //Неограниченное время (0) ждем получения команды //("получить сообщение от склада о результатах выполнения //команды") и если команда не получена, то будет //зафиксирована ошибка (1) Wait "SendStoreCom 2 9 9 9 0 0 1" 0 1 //Неограниченное время (0) ждем получения команды //("добавить в очередь команд склада на последнее место //команду SendR (2 - ячейку на выход)") и если команда за //это время не получена, то будет зафиксирована ошибка (1) //послали команду выдать первый подшипник } Wait "GetStoreMessage" 0 1 //Неограниченное время (0) ждем получения команды ("получить //сообщение от склада о результатах выполнения команды") и //если команда не получена, то будет зафиксирована ошибка (1) Wait "SendStoreCom 20 *" 0 1 //Неограниченное время (0) ждем получения команды //("добавить в //очередь команд склада на последнее место //команду Term (20 - //завершение команд выдачи)") и если //команда не получена, то будет зафиксирована ошибка (1) Wait "GetStoreMessage" 0 1 //Неограниченное время (0) ждем получения команды //("получить сообщение от склада о результатах выполнения //команды") и если команда не получена, то будет //зафиксирована ошибка (1) EndTest Листинг 6.1. Тест на tcl/tk

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