Опубликован: 05.03.2005 | Уровень: специалист | Доступ: платный
Практическая работа 9:

Автоматизация тестирования с помощью скриптов

Ключевые слова: переменные состояния, tcl

Как создать свой тест?

В данном случае используется тот же принцип, что и при ручном тестировании:

  • задать состояние окружения ( StoreStat, AxlePar, RollerPar, StoreMessage, CommandStatus );
  • ждать, когда в системе произойдет определенное событие;
  • задать новое состояние окружения;
  • и т.д.

Каждый тест должен быть представлен в следующем виде:

ЗАГОЛОВОК
БЛОК
Wait <условие>
БЛОК
Wait <условие>
.....
EndTest

Опишем эти элементы более подробно.

Описание заголовка

Заголовок теста состоит из:

  • команды запуска сервера;
  • команд global, устанавливающих доступ к глобальным переменным состояния окружения;
  • команды StartTest, задающей имя теста (оно не обязательно должно совпадать с именем файла).
source bin\\srv.tcl   // запуск сервера
global StoreStat      // статус склада
global AxlePar        // терминал оси
global RollerPar      // терминал подшипника
global CommandStatus  // возвращаемое значение функции
                      // SendStoreCom
global StoreMessage   // сообщение от склада
global rollers_found  // 1 (можно подобрать подходящий  
                      // подшипник) или 0 (нельзя) 
global fds            // строка для графы "Покрытие FDS" 
                      // в итоговой таблице результатов 
                      // тестирование (по умолчанию - Default)
global last_command   // последняя команда тестируемой системы
global allowed        // список разрешенных команд, их 
                      // получение должно вызывать ошибку
StartTest <имя>       // запуск теста

Описание блока

Каждый блок устанавливает значения одной или более переменных окружения. Например:

Set StoreStat 32
...

Описание Wait

Команда Wait используется для изменения состояния тестового окружения в ответ на действия системы.

При вызове процедуры Wait скрипт входит в состояние ожидания. Обращение со стороны системы приводит к завершению состояния ожидания. Если условие выполнено, то ответ на это обращение будет сформирован на основе следующего блока, иначе - на основе предыдущего.

Wait <команда> <время> <обязательно>

<команда> определяет команду системы, которая приведет к переходу в следующий блок. Можно использовать стандартные символы подстановки *, ?, [];

<время> определяет время ожидания. Если задать 0, то время не ограничено;

<обязательно> дает возможность не формировать ошибку, если за заданное время требуемая команда не была получена. Если задана 1, то в случае неполучения команды будет сформирована ошибка, а если 0, то ошибки не будет.

Примеры использования:

Wait ZZZZZZZ 10 0 - ждать 10 секунд (команда ZZZZZZZ является недопустимой и не может быть получена)

Wait "GetStoreStat *" 0 1 - ждать команды GetStoreStat с любыми параметрами неограниченное время

Wait "SendStoreCom 2 *" 10 1 - ждать команды SendStoreCom с первым параметром 2 и произвольными остальными параметрами в течение 10 секунд, если она не получена, будет зафиксирована ошибка

Wait ZZZZZZZ 0 0 - бесконечное ожидание.

Так как ожидание в процедуре Wait прерывается только при поступлении запроса от системы, то в случае отсутствия запросов (система зависла и ничего не делает) тест также останавливается. Для предотвращения такой ситуации используется следующая команда: Timeout <время>.

<время> определяет число секунд, после которого процесс тестирования будет прерван. При этом в журнал теста будет занесено сообщение TIMEOUT. Срабатывание таймаута приводит к завершению теста. Команда Timeout 0 отменяет ограничение времени.

Описание allowed

Рассмотрим переменную allowed более подробно. Она содержит список тех команд, получение которых разрешено и не должно вызывать ошибку. Например, в следующем примере вызов GetAxlePar не спровоцирует ошибку:

Set StoreStat 32
Wait "GetStoreStat *" 0 1
Wait "GetRollerPar" 0 1
Set allowed [list "GetAxlePar"]
Wait "SendStoreCom 1 0 0 1 0 0 0" 0 1

Однако ошибка все же возникнет, если данная команда в данной ситуации является недопустимой. Несмотря на то, что проверка реализована в скрипте srv.tcl, использование команды Wait и списка allowed могут ужесточить проверку. Значение по умолчанию для allowed - " * ". В этом случае проверку проходят все команды. Вход в процедуру Wait вызывает расширение списка allowed до момента выхода из нее, так что ожидаемая команда системы всегда проходит проверку на принадлежность списку allowed. В списке allowed можно задействовать символы подстановки.

Федор Антонов
Федор Антонов
Оплата и обучение
Сергей Чурбанов
Сергей Чурбанов
Какие подходы используются для обоснования истинности программ?
Марина Дайнеко
Марина Дайнеко
Россия, Moscow, Nope, 2008
Сергей Пантелеев
Сергей Пантелеев
Россия, Москва