Найти в Дзене

Почему пакеты тестирования стартуют параллельно при запуске по расписанию из планировщика заданий Windows?

Один из рабочих дней специалиста по тестированию начинается с просмотра протоколов ночного запуска всех имеющихся регрессионных автотестов. Возможно, это происходит даже ежедневно. И, как правило, чем дольше применяется автоматизированное тестирование, тем меньше обнаруживается ошибок. Разумеется, при условии своевременной коррекции выявленных дефектов и регулярной актуализации самих тестов. По классике, привычный протокол тестирования содержит больше зелёного цвета, чем красного — то есть большинство тестов выполняется успешно, так как зеленым цветом отмечается успешное прохождение шагов сценариев тестирования. Но иногда протокол целиком или преимущественно краснеет, сигнализируя об массовых ошибках. Причина может скрываться в подготовительных шагах: не обновилась информационная база, завис какой-либо процесс, оборвалась связь с клиентом тестирования — всё это мешает выполнению тестов. Либо в некорректной настройке условий выполнения шагов пакета тестирования. Причины есть и могут про
Оглавление

Один из рабочих дней специалиста по тестированию начинается с просмотра протоколов ночного запуска всех имеющихся регрессионных автотестов. Возможно, это происходит даже ежедневно. И, как правило, чем дольше применяется автоматизированное тестирование, тем меньше обнаруживается ошибок. Разумеется, при условии своевременной коррекции выявленных дефектов и регулярной актуализации самих тестов.

По классике, привычный протокол тестирования содержит больше зелёного цвета, чем красного — то есть большинство тестов выполняется успешно, так как зеленым цветом отмечается успешное прохождение шагов сценариев тестирования. Но иногда протокол целиком или преимущественно краснеет, сигнализируя об массовых ошибках. Причина может скрываться в подготовительных шагах: не обновилась информационная база, завис какой-либо процесс, оборвалась связь с клиентом тестирования — всё это мешает выполнению тестов. Либо в некорректной настройке условий выполнения шагов пакета тестирования. Причины есть и могут проявиться не сразу.

Сегодня именно про такой случай «покраснения» протокола тестирования, после ночного запуска пакетов тестирования по расписанию.

Начнем с базовых понятий.

Как можно запускать пакеты тестирования по расписанию?

Никто не запрещает собрать один «большой» пакет и добавить туда все существующие автотесты. Однако на практике это неудобно. Разумнее разделять пакеты по различным критериям. Например, в зависимости от конфигураций или функциональных блоков и объектов. Главное, чтобы это разделение было понятно и удобно.

И, конечно, пакеты тестирования нужно уметь запускать по расписанию. Делается это двумя способами:

  • Первый способ — средствами «1С:Сценарное тестирование» через внешние агенты тестирования.
  • Второй способ — сторонними средствами, работающими с пакетной командой запуска 1С. Это могут быть обычные bat-файлы (да-да, здесь вы сами себе система расписания: решили запустить, запускаем вручную), планировщики заданий либо более серьёзные системы непрерывной интеграции типа Jenkins, TeamCity и прочие.

В рамках данной статьи рассматривается именно второй вариант — на основе планировщика заданий Windows. Применение планировщика является достаточно распространенным способом на первых этапах внедрения автоматизированного тестирования, когда в общий процесс разработки автоматизированное тестирование еще не встроено, а число тестов уже позволяет организовать ночные запуски пакетных проверок.

Как настроить запуск пакетов тестирования через планировщик заданий Windows?

Для настройки запуска пакетов тестирования через планировщик заданий Windows нужно выполнить два основных шага:

  1. Получить командную строку запуска пакета тестирования в «1С:Сценарное тестирование».
  2. Настроить задачу в планировщике заданий Windows для полученной командной строки.

Получение командной строки запуска пакета тестирования в «1С:Сценарное тестирование».

Чтобы получить командную строку для запуска пакета тестирования, откройте его, перейдите в контекстное меню кнопки «Ещё» и выберите команду «Получить командную строку для запуска».

Окно программы «1С:Сценарное тестирование» с открытой формой пакета тестирования. Вызвать конструктор командной строки для запуска пакета тестирования можно из меню кнопки «Ещё» по команде «Получить командную строку для запуска»
Окно программы «1С:Сценарное тестирование» с открытой формой пакета тестирования. Вызвать конструктор командной строки для запуска пакета тестирования можно из меню кнопки «Ещё» по команде «Получить командную строку для запуска»

Откроется конструктор командной строки.

Окно конструктора командной строки для запуска пакета тестирования
Окно конструктора командной строки для запуска пакета тестирования

Обязательные для указания параметры будут заполнены по умолчанию:

Окно конструктора командной строки для запуска пакета тестирования. Обязательные для заполнения параметры
Окно конструктора командной строки для запуска пакета тестирования. Обязательные для заполнения параметры

Каталог платформы — путь к версии платформы, на которой необходимо запустить базу «1С:Сценарное тестирование» для выполнения пакета тестирования.

Клиент — вид клиента: Толстый или Тонкий.

Строка соединения — строка соединения с базой «1С:Сценарное тестирование».

Пользователь — пользователь базы «1С:Сценарное тестирование», под которым она будет открыта для выполнения пакета тестирования.

Пароль — пароль для указанного пользователя базы «1С:Сценарное тестирование».

Пакет — пакет тестирования, который необходимо запустить на выполнение.

Закрыть приложение после выполнение пакета — настройка отвечает за закрытие базы «1С:Сценарное тестирование» после завершения выполнения пакета тестирования. Если включена — база закрывается. Если отключена — остаётся открытой.

Далее следуют три настройки, которые по умолчанию необязательно заполнять, но их можно указать при необходимости вручную:

Окно конструктора командной строки для запуска пакета тестирования. Не обязательные для заполнения параметры
Окно конструктора командной строки для запуска пакета тестирования. Не обязательные для заполнения параметры

Имя файла с переменными — путь к файлу с переменными в формате json. Он позволяет загружать значения переменных перед выполнением пакета тестирования.

Конфигурация — название конфигурации, для которой будет производится запуск пакета тестирования.

Сборка — номер версии конфигурации.

И в самом низу конструктора находится готовая командная строка для запуска тестового пакета, которую можно легко скопировать и использовать в планировщике заданий Windows.

Окно конструктора командной строки для запуска пакета тестирования. Готовая командная строка, сформированная по указанным параметрам
Окно конструктора командной строки для запуска пакета тестирования. Готовая командная строка, сформированная по указанным параметрам

Рассмотрим ее формат:

"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8c" ENTERPRISE /F "D:\СцТ\ST" /N "Администратор" /P "123" /TechnicalSpecialistMode /TESTMANAGER /C "AutoStartPackage=0000003;AutoClose=True;SettingsFile = D:\СцТ\VariableList.json;Config = ДТ; Version = 1.0.30.4"

"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8c" — путь к файлу запуска необходимой версии Платформы.

ENTERPRISE /F "D:\СцТ\ST" — команда запуска базы «1С:Сценарное тестирование» в режиме Предприятия.

/N "Администратор" — пользователь «1С:Сценарное тестирование».

/P "123" — пароль пользователя «1С:Сценарное тестирование».

/TechnicalSpecialistMode — команда включения настройки «Функции для технического специалиста».

/TESTMANAGER — команда запуска базы «1С:Сценарное тестирование» как менеджера тестирования.

/C "AutoStartPackage=0000003; — идентификатор запускаемого пакета тестирования. То есть пакет, который нужно запустить на выполнение.

AutoClose=True; — команда закрытия базы «1С:Сценарное тестирование» после выполнение пакета.

SettingsFile = D:\СцТ\VariableList.json; — путь к файлу с переменными, с которыми необходимо запустить пакет тестирования.

Config = ДТ; — имя конфигурации, для которой запускается пакет тестирования.

Version = 1.0.30.4" — версия данной конфигурации.

Итак, командную строку для запуска получили — теперь переходим в планировщик заданий и поместим её в задачу.

Настройка задачи в планировщике заданий Windows.

Здесь я остановлюсь лишь на добавлении самой задачи на вкладке «Действия». Заполнение параметров на остальных вкладках легко найти на просторах интернета.

Окно создания новой задачи в планировщике заданий Windows
Окно создания новой задачи в планировщике заданий Windows

Создаём новую задачу и в её параметрах нужно указать приложение, которое требуется запустить, и дополнительные аргументы.

Для нашего примера первая часть командной строки для запуска пакета тестирования "C:\Program Files\1cv8\8.3.25.1374\bin\1cv8c" указывается в строке «Программа или сценарий».

А оставшиеся параметры ENTERPRISE /F "D:\СцТ\ST" /N "Администратор" /P "123" /TechnicalSpecialistMode /TESTMANAGER /C "AutoStartPackage=0000003;AutoClose=True;SettingsFile = D:\СцТ\VariableList.json;Config = ДТ; Version = 1.0.30.4" добавляются в строке «Добавить аргументы (необязательно)».

Окно создания новой задачи в планировщике заданий Windows с указанными параметрами запуска командной строки
Окно создания новой задачи в планировщике заданий Windows с указанными параметрами запуска командной строки

Уже заметили разницу командной строки в тексте и на скриншоте окна настройки задачи в планировщике заданий Windows?

Иногда команда запуска приложения в формате "C:\Program Files\1cv8\8.3.25.1374\bin\1cv8c" может не срабатывать, и запуск базы «1С:Сценарное тестирование» не происходит. Не могу знать, с чем это связано, но знаю, как сделать так, чтобы точно сработало: нужно добавить расширение исполняемого файла — "C:\Program Files\1cv8\8.3.25.1374\bin\1cv8c.exe".

И последнее, на что нужно обратить внимание — это поведение запуска в случае наличия нескольких задач в одном задании, то есть нескольких пакетов тестирования, поскольку каждая задача — это запуск конкретного пакета.

По умолчанию задачи стартуют последовательно и ожидают завершения предыдущей: запускается первая задача, завершает свое выполнение, и только после этого стартует следующая.

Почему задачи стали запускаться параллельно, не дожидаясь завершения предыдущей?

На этом получение базовых знаний окончено. Теперь есть представление, из чего состоит командная строка для запуска пакетов тестирования и в каком формате её нужно добавлять в планировщик заданий Windows.

Пришло время вернуться к цели данной статьи и разобраться — почему пакеты тестирования пестрят красным цветом провалившихся при выполнении шагов.

Как понятно из названия статьи — задачи в планировщике стали запускаться параллельно, не дожидаясь завершения предыдущих. Это выяснилось после ручного запуска задания в планировщике и наблюдения за его выполнением.

А так как выполнение одних пакетов тестирования зависело от выполнения других — возникали ошибки в тестах и протокол пестрил красным цветом.

Но что же повлияло на это? Путь расследования такого поведения приводит к двум подозреваемым — либо что-то изменилось в настройках планировщика, либо в конфигурации «1С:Сценарное тестирование».

Причина оказалась на стороне инструмента «1С:Сценарное тестирование». Повлияло крупное обновление конфигурации с версии 3.0.26 до 3.0.36: в крайней версии изменился формат командной строки для запуска пакета тестирования.

Для версии 3.0.26 идентификатор пакета выглядел вот так: /C "AutoStartPackage=2ae77ece-c4f7-11ea-a410-04d4c4aa8d40".

А начиная с версии 3.0.27 он выглядит вот так: /C "AutoStartPackage=0000003".

Именно это и приводило к параллельному запуску задач планировщиком заданий Windows.

После замены на новый формат командной строки запуска пакетов тестирования в задачах планировщика всё заработало корректно.

-9