Непрерывная доставка

Взять, к примеру, gitlab ci.

Например, я очень просто могу проверить компиляцию программы - make. Или скомпилировалось или нет. Или npm run build (создаст файлы из исходного кода).

А как проверить те программы, что запускаются и работают. Например, npm run start. Или запуск nginx. То есть те программы, что работают, пока не будут остановлены.


Ответы (1 шт):

Автор решения: KoVadim

в линуксе есть команда timeout - она позволяет прибить приложение через какое то время. А в gitlab в пайплайнах есть подобное - https://docs.gitlab.com/ee/ci/pipelines/settings.html#timeout

И соответственно, в данном случае тест может быть такой - запускаем приложение и даем поработать 10 секунд (или другое время). Если за это время приложение не упало - уже хорошо. Потом можно глянуть в лог и проверить, прошла ли начальная инициализация, вышли ли в рабочий режим (автору приложение лучше знать этапы старта своего приложения). Этот подход очень часто применяется в игровой индустрии - если игра запускается и за условленное время доходит до заданного экрана/состояния - очень хорошо. Как минимум оно запускается и не падает. А что бы тестирующая утилита поняла это, на экране иногда рисуют условный прямоугольник/круг нужного цвета.

Второй способ заключается в том, что программе передаются специальные ключи и она прогоняет внутренние тесты. Тот же nginx может проверить свои конфиги. Если он их смог прочитать и не упал - супер. А конфиги можно разные подсовывать.

Но я знаю разных программистов, которые считают, что если программа знает, что ее тестируют (то есть, передается специальный ключ), то это плохое тестирование и такого нельзя допускать.

→ Ссылка