Автоматизация тестирования сайта Издательства АЗБУКА
- Описание
- Технологии и инструменты
- Реализованные проверки
- Запуск тестов
- Сборка в Jenkins
- Интеграция с Allure Report
- Интеграция с Allure TestOps
- Уведомления в Telegram
- Видео выполнения теста
- Правовая информация
Издательство АЗБУКА — одно из крупнейших издательств в России. Ежегодно выпускает более 100 книжных серий и отдельных проектов. В издательство входят четыре импринта: «Азбука», «Иностранка», «КоЛибри» и «Махаон».
-
Современная архитектура тестов
- Использован шаблон проектирования Page Object для поддержки чистоты и переиспользуемости кода;
- Конфигурации написаны с использованием библиотеки Owner, что обеспечивает гибкость и удобство настройки окружений.
-
Генерация данных и модели
-
Кастомные расширения для тестов
@WithLogin— автоматическая авторизация в UI-тестах;@Layer,@Microservice,@Manual— категоризация тестов в Allure TestOps.
-
Удобные сценарии запуска
- Локальный и удалённый запуск;
- Фильтрация тестов по тегам;
- Возможность запуска напрямую из Allure TestOps.
-
CI/CD-процессы
- При каждом пуше в основные ветки и перед мержем пулл-реквестов запускается сборка проекта в GitHub Actions.
-
Интеграция с Allure
- После прохождения автотестов формируется наглядный Allure-отчёт:
- Шаги выполнения;
- Скриншот страницы перед завершением теста;
- Видео прохождения сценария;
- HTML-код страницы и логи браузера.
- Результаты автоматически синхронизируются с Allure TestOps.
- После прохождения автотестов формируется наглядный Allure-отчёт:
-
Уведомления о результатах
- Итоги тестового прогона отправляются в Telegram-чат с помощью библиотеки Allure notifications.
-
Среда разработки
-
Язык программирования
-
Фреймворки для тестирования
- JUnit 5 — современный тестовый фреймворк с поддержкой аннотаций, параметризации и расширений
- Selenide — лаконичная обёртка над Selenium WebDriver для UI-тестов
- REST Assured — декларативное тестирование REST API
-
Сборка и управление зависимостями
- Gradle — сборка, управление зависимостями и настройка запуска тестов
-
Контроль версий и репозиторий
-
Инфраструктура и CI/CD
- GitHub Actions — автоматизация рабочих процессов и CI/CD в GitHub
- Jenkins — автоматизация прогонов тестов, формирование отчётов и интеграция с внешними сервисами
- Selenoid — лёгкая и быстрая инфраструктура для параллельного запуска браузеров в Docker
-
Отчётность и интеграции
- Allure Report — детализированные отчёты о тестовых прогонах
- Allure TestOps — управление тестами и аналитика результатов
- Telegram — интеграция через бота для оперативных уведомлений о статусе прогонов
API
Авторизация
- Авторизация с валидными данными через API
- Авторизация с несуществующим логином через API
- Авторизация с неправильным паролем через API
- Авторизация с пустым логином
- Авторизация с пустым паролем
- Авторизация с отсутствующим логином
- Авторизация с отсутствующим паролем
- Авторизация с отсутствующим телом запроса
- Выход из аккаунта с валидным токеном
- Выход из аккаунта с невалидным токеном
- Выход из аккаунта без токена
Профиль пользователя
- Получение информации о текущем пользователе
- Изменение информации о текущем пользователе без загрузки аватара
- Загрузка аватара пользователя с разными расширениями файлов
Закладки
- Получение пустого списка закладок
- Получение не пустого списка закладок
- Добавление книги в закладки через API, когда список закладок пустой
- Добавление книги в закладки через API, когда список закладок не пустой
- Удаление книги из закладок через API, когда в списке закладок только одна книга
- Удаление книги из закладок через API, когда в списке закладок несколько книг
UI
Авторизация
- Авторизация с валидными данными
- Авторизация с несуществующим логином
- Авторизация с неправильным паролем
- Авторизация без заполнения полей
- Выход из аккаунта
- Переход на страницу профиля после выхода из аккаунта
Профиль пользователя
- Отображение информации в профиле с загруженным аватаром
- Изменение информации в профиле с загрузкой аватара
Закладки
- Добавление книги в закладки, когда список закладок пустой, с переходом на страницу "Закладки"
- Добавление книги в закладки, когда список закладок не пустой
- Удаление книги из закладок на странице книги, когда в списке закладок только одна книга, с переходом на страницу "Закладки"
- Удаление книги из закладок на странице книги, когда в списке закладок несколько книг
- Удаление книги из закладок на странице "Закладки", когда в списке закладок только одна книга
- Удаление книги из закладок на странице "Закладки", когда в списке закладок несколько книг
- Отображение книг в списке закладок
- Отображение счетчика закладок
- Переход к закладкам через ссылку в шапке
- Счетчик закладок не отображается, когда нет закладок
- Счетчик закладок отображается, когда есть закладки
Ручные проверки
Поиск
- Дропдаун поиска отображает книги в блоке "Книги"
- Дропдаун поиска отображает статьи в блоке "Статьи"
- Дропдаун поиска показывает сообщение, если нет результатов
- Переход на страницу поиска по нажатию на клавишу Enter
- Переход на страницу поиска по кнопке "Показать еще"
- Нажатие на книгу в дропдауне открывает страницу книги
---
config:
theme: base
themeVariables:
primaryColor: '#e6e6e6'
primaryBorderColor: '#c41325'
primaryTextColor: '#c41325'
lineColor: '#c41325'
nodeBorder: '#c41325'
---
flowchart LR
subgraph C["Локальный запуск"]
C1["Запуск на локальной машине"]
end
subgraph D["Удалённый запуск"]
D2[/"Учетные данные Selenoid"/]
D1["Запуск в Selenoid"]
end
subgraph S["Настройки запуска"]
S1[/"Параметры браузера"/]
S2[/"Учетные данные тестового пользователя"/]
end
A(["Запуск тестов"]) --> B{"Выбор окружения<br>remote=?"}
B -- false --> C1
B -- true --> D1
D1 --> D2
C1 --> S1
D2 --> S1
S1 --> S2
S2 --> U{"Выбор типов тестов<br>includeTags=?"}
U -- ui --> V["UI-тесты"]
U -- api --> W["API-тесты"]
U -- regress --> X["Регрессионные тесты"]
U -- smoke --> Y["Smoke-тесты"]
V --> Z(["Результаты тестов"])
W --> Z
X --> Z
Y --> Z
N1["Возможно хранение в конфигурационных файлах"] -.-> D2 & S1 & S2
N2["Допускается комбинирование"] -.-> U
N1@{ shape: braces}
N2@{ shape: braces}
A:::terminator
B:::decision
C:::block
D:::block
S:::block
U:::decision
Z:::terminator
classDef terminator fill:#f5b7b1,stroke:#c0392b,stroke-width:2px,color:#111
classDef decision fill:#c41325,stroke:#922b21,stroke-width:2px,color:#f5f5f5
classDef block fill:#d6d6d6,stroke:#ccc,stroke-width:2px,color:#333
gradle clean test -Premote={true|false} -PincludeTags={tags} \
-Dremote.domain={domain} -Dremote.username={username} -Dremote.password={password} \
-Dbrowser.name={name} -Dbrowser.version={version} -Dbrowser.size={size} \
-Dtest.email={email} -Dtest.password={password}remote— выбор окружения (опционально):true— запуск тестов в Selenoidfalse— запуск тестов локально (по умолчанию)
groups— теги тестов для запуска:ui— UI-тестыapi— API-тестыregress— регрессионные тестыsmoke— smoke-тесты
remote.*— данные для авторизации на удалённом стенде:usernamepassword
browser.*— параметры браузера для UI тестов: название, версия, размер окнаname(по умолчаниюchrome)versionsize(по умолчанию1920x1080)
test.*— логин и пароль для авторизации тестовым пользователем в тестах:emailpassword
Дополнительные команды
-
Формирование Allure-отчёта:
gradle allureReport
По умолчанию отчёт генерируется в папку
build/allure-results. -
Формирование Allure-отчёта, запуск локального HTTP-сервера и открытие в браузере:
gradle allureServe
Для упрощения локального запуска можно создать файлы remote.properties и user.properties в корневой папке config.
В папке есть шаблоны: remote.example.properties и user.example.properties. Необходимо скопировать их, убрав из имени .example, и заполнить своими данными.
Минимальный набор параметров для локального запуска, если настроена локальная конфигурация:
gradle clean testСборка в Jenkins
Jenkins — инструмент для автоматизации сборки, тестирования и деплоя проектов.
В проекте используется для:
- удалённого запуска автотестов,
- формирования Allure-отчётов по результатам прогонов,
- интеграции с уведомлениями в Telegram.
На странице проекта доступна информация о последних сборках и график успешности прохождения тестов из Allure-отчёта:
Раздел Build with Parameters позволяет задать необходимые параметры перед запуском сборки:
После завершения сборки автоматически формируется Allure-отчёт, и обновляются результаты прохождения тестов в Allure TestOps.
Интеграция с Allure Report
Allure Report — инструмент для визуализации результатов тестов, который формирует наглядные и подробные отчёты.
В проекте используется для:
- отображения шагов выполнения теста,
- демонстрации скриншотов и видео,
- анализа логов и исходного кода страницы,
- отслеживания успешных и упавших тестов.
Во вкладке Overview отображается общий результат прогона тестов: диаграммы успешных и упавших тестов, распределение по сьютам и функциональным фичам:
При переходе в конкретный тест доступны подробности — шаги теста, скриншоты, видео и логи браузера:
Интеграция с Allure TestOps
Allure TestOps — облачная платформа для управления тестами и анализа результатов.
В проекте используется для:
- хранения тест-кейсов,
- группировки тестов по функциональностям и пользовательским историям,
- отслеживания выполнения тестов в динамике,
- интеграции с Jenkins и отчётами Allure.
Интеграция с Jenkins позволяет запускать выбранные тесты и отслеживать их выполнение в реальном времени:
Прогоны тестов отображаются на графиках и диаграммах, что позволяет быстро оценивать динамику и стабильность тестов:
Тестовые сценарии автоматически синхронизируются с кодом проекта после завершения прогонов, обеспечивая актуальность кейсов:
Результаты тестового прогона автоматически отправляются в Telegram-чат, что позволяет оперативно отслеживать статус прогонов и быстро реагировать на падения тестов:
Для каждого UI-теста в отчёте прилагается видео прохождения, позволяя визуально проверить выполнение шагов и воспроизвести возможные ошибки:
Все названия продуктов, логотипы и изображения (включая обложки книг и материалы сайта azbooka.ru, которые используются в тестах) использованы исключительно в образовательных и демонстрационных целях. Все права принадлежат их законным владельцам.