Автотесты
Основная информация
Автотесты (или функциональный мониторинг) - это процесс контроля и проверки работы функциональности приложения или системы в режиме реального времени. Он направлен на обеспечение стабильной работы системы и раннее обнаружение возможных проблем или отклонений в работе функциональности.
Основные задачи функционального мониторинга включают:
- Контроль доступности и отклика системы или приложения
- Мониторинг производительности, включая метрики времени отклика и нагрузки на систему
- Отслеживание ключевых функций и бизнес-процессов
- Обнаружение и регистрация ошибок или сбоев в работе сервисов
При таком способе мониторинга приложений и сервисов используются различные инструменты и фреймворки, такие как Selenium, pytest, JUnit и другие, которые позволяют создавать тестовые сценарии и запускать их при помощи агентов Monq (управляемые проекты автотестирования).
Обратите внимание, что Monq не является инструментом тестирования функционала приложений. А является инструментом контроля, запуска и анализа результатов выполнения ваших тестов.
После выполнения автотестов, результаты сохраняются в определенном формате (например, Allure) и их можно отправлять и обрабатывать в Monq - формировать метрики, определять успешность прохождения теста и формировать сигналы о проблемах, если таковые присутствуют.
Прием результатов тестирования осуществляется через API (справка), а обработка и анализ при помощи сценариев автоматизации (справка).
В Monq существует два типа проектов функционального мониторинга: управляемый и автономный.
- Управляемый проект - Monq осуществляет запуск автотестов по заданному расписанию и настроенному сценарию на своих агентах. Результаты тестирования отправляются в этот же проект.
- Автономный проект - Monq ожидает поступления результатов автотестирования от внешних инструментов запуска тестов (Jenkins, GitlabCI и другие).
Чтобы начать работу с модулем Autotests перейдите в соответсвующий раздел в основном меню системы - будет открыт главный экран управления проектами автотестирования.
Настройка модуля автотестирования
Перед созданием проектов функциональных тестов необходимо импортировать базовые сценарии обработки отчетов функционального тестирования.
Autotest Builds Parser.txt
- сценарий парсинга отчетовAutotest Signal Processor.txt
- сценарий генерации сигналов
Скачать сценарии можно по ссылке из публичного репозитория GitHub.
Приведенные примеры сценариев разработаны для обработки результатов тестирования, сформированных фреймворком Allure. Если вы используете другой инструмент формирования результатов тестирования - вам необходимо разработать собственные сценарии автоматизации или обратиться в компанию "Monq Digital Lab" за помощью.
В отправленном, в коллектор автотестов, zip архиве должна находиться директория allure-results
, в которой хранятся результаты выполнения автотестов в формате Allure JSON. Файлы в директории allure-results
содержат информацию о выполненных тестах, статусе их выполнения, пройденных и не пройденных проверках, времени выполнения, скриншотах, логах и других метаданных.
Минимальный набор файлов в каталоге allure-results
для успешной обработки в Monq:
26a58974-3ada-4445-8375-8e7054aa8b2c-attachment.png
350f3653-71f4-40e7-a96e-ad430e6401be-container.json
5a745ea3-39bb-4a09-9ca9-b6d6366b457a-attachment.png
64ea00a1-d5d6-438d-90d9-349bdf9de33b-result.json
c1e06a96-5144-4f43-a7cf-c7f80479c315-container.json
cb7a38d9-5d36-4421-9579-54d136a32b74-attachment.png
environment.xml
environment.xml
- содержит информацию о среде, в которой выполнялись автотесты. Он содержит различные параметры и переменные окружения, которые могут быть полезны для анализа результатов тестирования.Пример содержимого:
- <environment>
- <parameter>
<key>project</key>
<name>project</name>
<value>None</value>
</parameter>
- <parameter>
<key>build</key>
<name>build</name>
<value>0</value>
</parameter>
- <parameter>
<key>browser</key>
<name>browser</name>
<value>chrome:101.0</value>
</parameter>
- <parameter>
<key>test_key</key>
<name>test_key</name>
<value>3</value>
</parameter>
</environment><uuid>-result.json
- основной файл, который содержит информацию о результате выполнения тестов и шагов. Он используется для построения отчета и отображения результатов тестирования.Пример содержимого:
{
"uuid": "unique-id",
"name": "Test Suite",
"start": 1628671200000,
"stop": 1628671800000,
"status": "passed",
"steps": [
{
"name": "Step 1",
"status": "passed",
"start": 1628671201000,
"stop": 1628671202000,
"attachments": [
{
"name": "screenshot",
"source": "cb7a38d9-5d36-4421-9579-54d136a32b74-attachment.png",
"type": "image/png"
}
]
},
{
"name": "Step 2",
"status": "failed",
"start": 1628671203000,
"stop": 1628671204000,
"attachments": []
}
],
"attachments": []
}<uuid>-container.json
- представляет собой структурированный JSON-объект, который содержит поля, описывающие контейнеры, тест-кейсы и другие связанные данныеПример содержимого:
{"uuid": "deb440bb-e25a-4032-b509-1aad37c97bb8", "children": ["82c81816-40a8-417b-8f40-19aa4aefaf4a"], "befores": [{"name": "prepare_test_env", "status": "passed", "start": 1653559260012, "stop": 1653559260021}], "start": 1653559260012, "stop": 1653559287197}
<uuid>****-attachment.png
- файлы-вложения (attachments)Пример описания в файле
<uuid>-result.json
:{
"name": "screenshot",
"source": "cb7a38d9-5d36-4421-9579-54d136a32b74-attachment.png",
"type": "image/png"
}
Раздел документации Автоматизация
Импортированные сценарии необходимо скомпилировать и активировать.
Создание проекта функционального тестирования
Чтобы создать новый проект, выполните следующие действия:
На экране Autotests нажмите «Создать проект» в правом верхнем углу.
Если у вас еще нет доступных проектов Функционального тестирования - начальная страница экрана Autotests начнется с формы создания проекта.
В открывшемся окне укажите Тип проекта:
- Автономный - Конфигурация и выполнение тестов происходит во внешней системе, проект содержит лишь отчеты о тестировании.
- Управляемый - Конфигурация, запуск автотестов и хранение отчетов тестирования происходит в Monq. Непосредственное выполнение тестов происходит во внешней среде (Selenium, Vanessa и пр.) с установленным Monq Agent.
Выберите Рабочую Группу - владельца проекта
Введите Название проекта
Дополнительно укажите краткое Описание проекта.
Укажите, нужно ли собирать метрические данные по результатам отчета.
Потребуется указать имеющийся или создать новый поток данных в котором будут сохраняться метрики.
Нажмите «Добавить» – будет создан новый проект в состоянии Остановлен, а вы будете перенаправлены на страницу проекта.
Настройка проекта
Основная информация
Для изменения основных параметров проекта (Название, Владелец, Описание, Тип проекта), перейдите на вкладку «Общая информация», укажите в нужном поле новое значение и нажмите «Сохранить».
При изменении типа проекта все настройки проекта будут очищены.
Метки
Вы можете добавить на проект метки для более удобной навигации – для этого нажмите «Добавить метки» рядом с названием проекта и введите название метки. Если нужная метка уже существует, она прикрепится к проекту, если нет – выберите цвет будущей метки и она будет автоматически создана.
Доступ
Для настройки доступа Рабочих Групп к проекту, перейдите во вкладку «Доступ».
Для выдачи Рабочим Группам прав на просмотр или редактирование проекта, выберите одну или несколько групп в поле «Выберите рабочие группы», выберите просмотр или редактирование в поле рядом и нажмите «Выдать доступ».
Для изменения выданного доступа, измените тип доступа в селекторе напротив названия соответствующей группы.
Для отзыва доступа, нажмите на значок «🗑» напротив названия группы.
Автономный проект
Для начала приёма сборок функционального тестирования, сконфигурируйте проект:
На вкладке «Общая информация» сгенерируйте и скопируйте API-ключ – нажмите «Обновить», затем «Копировать».
Перейдите в систему автоматического выполнения сценариев тестирования и укажите скопированный ранее ключ API:
Например, для Jenkins перейдите в настройки проекта и вставьте в поле «Выполнить команду Shell» команду
export X_FMonq_PROJECT_KEY=<ключ API>
, где<ключ API>
– скопированный на 1-м шаге ключ (см. подробнее про API).
Управляемый проект
При использовании Управляемых проектов Autotests запуск функциональных тестов производится на внешних стендах функционального тестирования при помощи Агентов Monq.
Управляющим элементом на стенде функционального тестирования является Агент Monq.
Прежде чем переходить к конфигурации Управляемого проекта необходимо установить Агент на сервере функционального тестирования и подключить его к своему пространству Monq.
Задание
Для запуска функционального теста необходимо сконфигурировать Задание на языке Yaml, которое будет выполняться на внешнем Агенте.
Пример такого задания, может иметь следующий вид:
name: Monq AutoTest
env:
BUILD_NUMBER: $.vars.params.buildId
PROJECT: $.vars.params.projectId
X_FMONQ_PROJECT_KEY: $.vars.params.projectKey
X_SMON_STREAM_KEY: $.vars.params.streamKey
HUB_URL: $.vars.params.hubUrl
BROWSER_VERSION: 118
SEND_EVENT: False
SEND_VERIFY_SSL: False
AGGREGATOR_URL: $.vars.params.testforgeUri
jobs:
- steps:
- name: Run test
run: pytest /tests/test_demovks.py --alluredir ./allure-results --clean-alluredir
в указанном примере Задания в секции env
определяются необходимые переменные окружения для запуска теста на Python и выполняется команда запуска функционального теста в секции steps
.
В приведенном примере запуск теста производится с использованием дополнительного плагина для
pytest
- PytestForge, который облегчает написание тестов с использованием webdriver, а также генерирует и отправляет тест-отчет в Monq.
Пример теста test_demovks.py на языке Python
from allure_commons.types import AttachmentType
from selenium.webdriver.common.by import By
import allure
import time
import os
BASE_URI = os.getenv("IVA_URL") or "https://ivcs-demo.iva-tech.ru/v2/login"
IVA_ID = os.getenv("IVA_ID") or "123-456-789"
@allure.feature('Демо. Функциональный тест DEMO ВКС')
@allure.story('Демо кейс №1 Проверка DEMO ВКС')
def test_vks(browser):
"""
Наименование сценария тестирования: Демо кейс №1 Проверка DEMO ВКС
"""
browser.timeout = 25
with allure.step(f'Шаг 1. Открыть ссылку {BASE_URI} и проверить наличие на странице контрольной фразы “DEMO”'):
try:
browser.get(BASE_URI)
time.sleep(0.1)
assert browser.find_element(By.XPATH, "//*[contains(text(),'DEMO')]")
allure.attach(browser.get_screenshot_as_png(), name='screenshot', attachment_type=AttachmentType.PNG)
except:
allure.attach(browser.get_screenshot_as_png(), name='error_screen', attachment_type=AttachmentType.PNG)
raise
with allure.step('Шаг 2. Переключение языка интерфейса с английского на русский через селектор в правом верхнем углу → Наличие на странице контрольный фразы "Подключиться к мероприятию по ID”'):
try:
browser.xpath("//*[contains(text(), 'English')]").click()
time.sleep(0.1)
browser.xpath("//*[contains(text(), 'Русский')]").click()
time.sleep(0.1)
assert browser.xpath("//*[contains(text(), 'Подключиться к мероприятию по ID')]")
allure.attach(browser.get_screenshot_as_png(), name='screenshot', attachment_type=AttachmentType.PNG)
except:
allure.attach(browser.get_screenshot_as_png(), name='error_screen', attachment_type=AttachmentType.PNG)
raise
with allure.step('Шаг 3. Клик на кнопку “Подключиться к мероприятию по ID” → Открытие страницы с возможностью ввода id конференции, наличие на странице контрольной фразы “Указав уникальный ID номер мероприятия вы можете подключиться к нему прямо сейчас”'):
try:
browser.xpath("//*[contains(text(), 'Подключиться к мероприятию по ID')]").click()
time.sleep(0.1)
assert browser.xpath("//*[contains(text(), 'Указав уникальный ID номер мероприятия вы можете подключиться к нему прямо сейчас')]")
allure.attach(browser.get_screenshot_as_png(), name='screenshot', attachment_type=AttachmentType.PNG)
except:
allure.attach(browser.get_screenshot_as_png(), name='error_screen', attachment_type=AttachmentType.PNG)
raise
with allure.step('Шаг 4. Ввод ID 929-997-704 и нажатие “Подключиться” → наличие контрольной фразы "Планерка"'):
try:
browser.xpath('//input[@placeholder="ID мероприятия"]').send_keys(f"{IVA_ID}")
time.sleep(0.1)
browser.xpath('//*[@e2e-id="login-page.login-by-id-page.submit-btn"]').click()
assert browser.xpath("//*[contains(text(), 'Планерка')]")
allure.attach(browser.get_screenshot_as_png(), name='screenshot', attachment_type=AttachmentType.PNG)
except:
allure.attach(browser.get_screenshot_as_png(), name='error_screen', attachment_type=AttachmentType.PNG)
raise
Переменные окружения
- Системные значения (read-only)
$.vars.params.projectId
- идентификатор текущего проекта.$.vars.params.projectKey
- API-ключ текущего проекта.$.vars.params.testforgeUri
- текущий домен пространства Monq.
- Пользовательские переменные - можно добавить любое количество пользовательских переменных, которые можно использовать в Задании по следующему шаблону:
$.vars.params.<название переменной>
Для добавления пользовательской переменной:
Нажмите кнопку +Добавить переменную
Задайте Название переменной
Выберите Тип переменной (
String
илиNumber
)Задайте Значение по умолчанию.
При необходимости Сделайте защищенной переменную, если это пароль или токен, который необходимо скрыть в проекте.
Расписание запуска задания
Расписание планировщика заданий задается в стандартном формате CRON.
Например, для запуска Задания каждые 30 минут, расписание будет выглядеть следующим образом:
*/30 * * * *
Агент
Распределение заданий на Агент производится по заданным в Координаторах меткам.
Выберите метку Агента в селекторе Метка агента, назначенную в Координаторе подключенного Агента.
Управление проектом
Для изменения состояния проекта воспользуйтесь кнопками в правом верхнем углу страницы:
Нажмите «Запустить», чтобы проект начал приём отчетов функциональных тестов.
Нажмите «Остановить», чтобы проект прекратил приём отчетов.
Опционально – добавьте метки или измените описание, чтобы указать причину остановки проекта и включите «Отложенный запуск», чтобы автоматически Запустить проект через выбранное время. При некорректном заполнении времени отложенного запуска - остановка проекта невозможна.
Нажмите «Архивировать», чтобы проект прекратил приём отчетов и перестал отображается на экране проектов по умолчанию.
Опционально – добавьте метки или измените описание, чтобы указать причину архивации проекта.
Вы можете запускать только сконфигурированные проекты.
- Для Автономных проектов обязательным условием необходимо указание Парсера отчетов тестирования.
- Для Управляемых проектов обязательным условием необходимо указание:
- Парсера
- Метки агента
- Расписания запуска задания
Связь проектов с РСМ
Для привязки проекта к конфигурационной единице РСМ используйте селектор на вкладке «Список связанных КЕ».
Для того, чтобы отвязать проект от КЕ, нажмите «🗑» напротив названия КЕ.
Навигация по проектам
Для навигации по проектам функционального мониторинга, вернитесь на основной экран Autotests (ex. TestForge).
На экране Autotests (ex. TestForge) представлена информация по доступным текущему пользователю проектам в табличном виде и содержит следующие данные:
- Название и описание проекта.
- Результат последних 5-ти сборок и дату последней сборки.
- Тип проекта (иконка) - Автономный или Управляемый проект.
- Владелец проекта - Рабочая группа которой принадлежит проект.
- Метки
Фильтрация проектов
Основным инструментов фильтрации и навигации по проектам на экране является рубрикатор – набор быстрых фильтров по основным параметрам проектов. Находится в левой области экрана.
Для использования рубрикатора, раскройте в таблице слева один из параметров:
Метки
Владелец
Карта РСМ
КЕ
Состояние проекта
Тип
Статус последней сборки
и выберите значение, по которому будут отфильтрованы проекты.
Значения всех выбранных параметров отобразятся в фильтре справа от строки поиска.
Для составления более сложных условий фильтрации, выберите несколько значений одного или нескольких параметров.
Условия фильтрации, содержащие разные значения одного и того же параметра, объединяются через логический оператор ИЛИ
, а значения разных параметров – через логический оператор И
.
Для исключения условия из фильтра нажмите на крестик справа от пары параметр-значение в рубрикаторе или справа от строки поиска.
Избранные проекты
Для сброса всех условий фильтрации выберите «Все проекты» вверху рубрикатора. Выберите «Избранные проекты» для отображения на экране только избранных проектов.
После конфигурации необходимого фильтра, вы можете сохранить его для быстрого доступа – нажмите «Сохранить как» в верхней области страницы и введите имя.
После сохранения, фильтр станет доступен для выбора в списке слева от кнопки «Сохранить». Выберите его и проекты отфильтруются по соответствующим условиям.
Откройте список и отметьте фильтр значком «⭐️» (Избранное) – фильтр отобразится на панели быстрого доступа вверху экрана.
Вы можете редактировать и удалять выбранный фильтр – откройте дополнительное меню справа от кнопки «Сохранить» и выберите нужное действие:
- Сохранить как – сохранение фильтра под новым названием
- Переименовать – изменение названия выбранного фильтра
- Сбросить изменения – сброс условий фильтрации до последних сохраненных
- Удалить запрос – удаление фильтра
Быстрые действия
На экране Autotests (ex. TestForge) вы можете взаимодействовать с проектами без перехода на страницы проектов.
Для управления метками проекта, нажмите на поле «Добавить метки» справа от названия проекта – в открывшемся списке выберите метку из доступных для добавления проекту. Если нужной метки не существует – она будет создана автоматически.
Для удаления метки с проекта нажмите крестик справа от метки.
Для быстрого копирования ключа API проекта откройте контекстное меню справа от меток проекта и нажмите «Копировать API-ключ».
Для быстрого изменения состояния проекта откройте контекстное меню справа от меток проекта и выберите нужное:
«Запустить проект»
«Остановить проект»
«Архивировать проект»
Для быстрого перехода на нужную вкладку страницы проекта откройте контекстное меню справа от меток проекта и выберите нужное:
«Открыть настройки доступа»
«Открыть связанные КЕ»
Для быстрого клонирования проекта откройте контекстное меню справа от меток проекта и выберите «Клонировать проект».
Нажмите «⭐️» справа от контекстного меню чтобы добавить проект в Избранное или снять данную отметку.
Избранные проекты всегда отображаются вверху списка.