Я использую PHPUnit 10.5 для тестирования своего проекта на PHP 8.1, который размещен на ГитЛаб. Проект развернут на множестве разных серверов, включая тестовый сервер и множество рабочих серверов.
Вопрос
При настройке файла YAML для автоматизировать тесты, мне в голову пришел вопрос:
Должен ли test_job запускать все тесты при каждом запуске конвейера? Существует ли какая-либо передовая практика или соглашение по этому поводу?
Контекст
Проект, над которым я работаю, огромен, и в нем нет ничего о непрерывная интеграция или непрерывное развертывание еще не реализованы. Я начинаю с нуля.
Я подумал, что лучший способ начать — это создать несколько тестовых файлов, настроить файл YAML и запустить несколько конвейеров, чтобы я мог изучить основы и что-то получить. для начала.
Тогда я понял, насколько велик проект и сколько времени потребуется, чтобы провести все тесты. Просто невозможно запускать их все каждый раз, когда разработчик добавляет в репозиторий.
Направления исследования
Могло бы быть разделение тестов на наборы тестов. решить эту проблему; однако как мне узнать, какой набор тестов запускать?
Я подумал о двух вариантах:
[*] Подход на основе сопоставления:
- Проверьте файлы, которые были изменены в результате коммитов, и используйте сопоставление, чтобы узнать, какие из них были изменены. набор тестов охватывает эти конкретные файлы.
- Проблема в том, что это решение вообще не является динамическим, и конвейер не сможет запуститься заново. добавленные файлы или тесты, если их нет в сопоставлении. Кроме того, жестко запрограммировать сопоставление в конфигурации — плохая практика.
- Проверьте файлы, которые были изменены, и используйте информацию о покрытии. каждого набора тестов, чтобы определить, какой набор тестов охватывает файлы из коммита.
- Проблема здесь в том, что у меня нет опыта покрытия кода. инструменты, и я не уверен, что усилия, затраченные на их изучение, решат проблему.
Мои нынешние подходы должны иметь больше возможностей и потенциально больше проблем. Я был бы рад, если бы вы рассказали мне о них.
Я считаю, что эта проблема характерна для крупных проектов, но мне не удалось найти ресурсы или рекомендации, которые могли бы мне помочь. Как бы вы это сделали?
Подробнее здесь: https://stackoverflow.com/questions/786 ... sh-is-made
Мобильная версия