Средства тестирования#
В состав Astra Automation входят следующие средства для тестирования контента Ansible:
Сравнительные характеристики#
Сравнительные характеристики утилит представлены в таблице:
Название |
Назначение |
Тестовая среда |
Интеграция с другими утилитами тестирования |
Другие особенности |
---|---|---|---|---|
Ansible Lint |
|
Статический анализ кода без развертывания тестовых окружений |
Интеграция с рабочими процессами CI/CD и редакторами, но без возможности запуска тестовых сценариев |
|
Ansible Molecule |
|
Изолированные тестовые среды (контейнеры, виртуальные машины) с использованием драйверов Docker, Vagrant, Podman и т. д. |
|
|
Ansible Pytest |
|
Тестовое окружение |
|
|
Tox Ansible |
|
Изолированные виртуальные окружения (venv), создаваемые Tox для тестирования с разными версиями Python и Ansible |
|
|
Рабочий процесс#
Рабочий процесс может включать как все указанные средства, так и только часть из них.
Ansible Lint, Ansilbe Pytest, Molecule#
Рабочий процесс с использованием Ansible Lint, Ansible Pytest и Molecule показан на схеме:
Здесь показана следующая последовательность использования средств тестирования кода Ansible:
Разработчик использует Ansible Lint на этапе написания кода. Это позволяет выявить часть ошибок до попадания кода в репозиторий проекта.
Разработчик публикует код в репозиторий проекта. Это приводит к срабатыванию триггера SCM и запуску процесса CI/CD.
Проверка кода проекта с помощью Ansible Lint. Повторная проверка позволяет предотвратить ситуацию, когда разработчик не использует Ansible Lint на своей рабочей станции.
Запуск тестов Pytest Ansible.
Запуск тестов Molecule для проверки работоспособности ролей:
Molecule создает необходимую для тестов инфраструктуру.
Pytest Ansible проверяет корректность развертывания инфраструктуры.
Molecule применяет роли.
Pytest Ansible или Testinfra проверяет результат применения ролей.
Molecule уничтожает созданную ранее инфраструктуру для тестов.
Если все этапы завершены без ошибок, тестирование считается выполненным успешно. Если хотя бы на одном из этапов возникнут ошибки, тестирование будет остановлено и отмечено как неуспешное, а сведения об ошибках переданы разработчику.
Ansible Lint, Molecule#
Рабочий процесс с использованием Ansible Lint и Molecule показан на схеме:
Здесь показана следующая последовательность использования средств тестирования кода Ansible:
Разработчик использует Ansible Lint на этапе написания кода. Это позволяет выявить часть ошибок до попадания кода в репозиторий проекта.
Разработчик публикует код в репозиторий проекта. Это приводит к срабатыванию триггера SCM и запуску процесса CI/CD.
Проверка кода проекта с помощью Ansible Lint. Повторная проверка позволяет предотвратить ситуацию, когда разработчик не использует Ansible Lint на своей рабочей станции.
Запуск тестов Molecule для проверки работоспособности ролей:
Molecule создает необходимую для тестов инфраструктуру.
Pytest Ansible проверяет корректность развертывания инфраструктуры.
Molecule применяет роли.
Pytest Ansible или Testinfra проверяет результат применения ролей.
Molecule уничтожает созданную ранее инфраструктуру для тестов.
Если все этапы завершены без ошибок, тестирование считается выполненным успешно. Если хотя бы на одном из этапов возникнут ошибки, тестирование будет остановлено и отмечено как неуспешное, а сведения об ошибках переданы разработчику.