Опубликован: 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 можно задействовать символы подстановки.

Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Сергей Чурбанов
Сергей Чурбанов
А И
А И
Беларусь
Sergey Shtemberg
Sergey Shtemberg
Беларусь, Minsk