Интеграция автоматизированного тестирования в процесс Continuous Integration (CI) — ключевой элемент современной DevOps-практики. Рассмотрим детали этого процесса.
stages:
- build
- test
- deploy
unit_tests:
stage: test
script:
- mvn test
api_tests:
stage: test
script:
- npm run api-tests
ui_tests:
stage: test
script:
- pytest ui_tests/
Уровень тестов | Частота выполнения | Пример инструментов |
---|---|---|
Юнит-тесты | При каждом коммите | JUnit, pytest, Mocha |
Интеграционные | При мердж-реквесте | TestNG, Jest |
API-тесты | Ночные сборки | Postman, RestAssured |
UI-тесты | Релизные кандидаты | Selenium, Cypress |
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn clean package'
}
}
stage('Unit Tests') {
steps {
sh 'mvn test'
}
}
stage('API Tests') {
steps {
sh 'newman run collection.json'
}
}
}
}
test:
stage: test
parallel:
- script: ./run_tests.sh --group=api
- script: ./run_tests.sh --group=ui
after_script:
- python3 report_generator.py
artifacts:
paths:
- test-reports/
expire_in: 1 week
# Пример кэширования в GitLab CI
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- .m2/repository
- node_modules/
# Отправка результатов в TestRail
after_script:
- python3 upload_results.py --report junit.xml --testrail
# Пример настройки перезапусков
retry:
max: 2
when:
- test_failure
Эффективная интеграция автотестов в CI требует правильной организации пайплайна, параллельного выполнения, обработки результатов и настройки уведомлений. Это позволяет получать быструю обратную связь о качестве кода и ускорять delivery.