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

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

Показывать лекцию целиком

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

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

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

    Вернуться к учебному плану