# Тестирование

Лучше тестовая среда - предпрод среда - прод среда

Виды тестирования

<table border="1" id="bkmrk-e2e-%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BE%D1%81%D0%BD" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 27.065%;"></col><col style="width: 72.935%;"></col></colgroup><tbody><tr><td>E2E</td><td>Тестирование основного бизнес функционала. Объединенная работа нескольких сервисов</td></tr><tr><td>Системное тестирование</td><td>Тестирование одного сервиса. Обычно ручное. Варианты:

- На базе требований: тесты на основании требований к ПО
- На базе действий: тесты на основании использовании ПО

</td></tr><tr><td>Интеграционное тестирование</td><td>Тестирование взаимодействий сервисов</td></tr><tr><td>Unit тестирование</td><td>Проверка корректности отдельных модулей</td></tr><tr><td>Mock тестирование</td><td>Фиктивная реализация интерфейса для тестирования</td></tr></tbody></table>

Quality gate - модуль тестирования

Выполнение скрипта с кодом возврата:

```yaml
tasks:
  - script: test_script_1
  - script: test_script_2 --parameter1 value1 --parameter2 value2
```

Проверка наличия файлов модулем stat

```yaml
tasks:
  - stat:
      path: /path/to/something
      register: p
  - assert:
      that: 
      - p.stat.exist and p.stat.isdir
```

Использование модуля assert

```yaml
tasks:
  - shell: /usr/bin/some_command --some_parameter value
    register: cmd_result
  - assert:
    that:
    - "'not ready' not in cmd_result.stderr"
    - "'gizmo enabled' in cmd_result.stdout"
```

**Жизненный цикл тестирования:**

- Использовать один и тот же playbook при тестировании всех сред, включая production
- Запускайте тестирование каждый раз
- Использовайте тесты, написанные командой обеспечения качества
- Используйте те же самые тесты при деплое в production

Достижение непрерывного развертывания

- Использовать автоматизацию при развертывании виртуальных машин (развертывание по кнопке)
- При помощи CI системы развертывайте на тестовой среде
- Одна из задач при деплое вызывает тестирующий скрипт со статусом Прошел/ не прошел перед каждым деплоем
- Если деплой прошел успешно, то сборка повторяется на production контуре

**Пример схемы CI/CD**

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2026-06/scaled-1680-/image.png)](http://bobrobotirk.ru/uploads/images/gallery/2026-06/image.png)

**Molecule**

Поддерживает текущую версию и -1 промежуточной (второй цифры). Установка:

```
pipx install molecule
```

**Инициализация molecule**

В директории с папкой roles выполнить

```
molecule init scenario name_of_role
```

При инициализации создается несколько файлов в molecule/name\_of\_role/

**Назначения файлов**

<table border="1" id="bkmrk-molecule.yml-%D0%9A%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83" style="border-collapse: collapse; width: 100%; height: 297.969px;"><colgroup><col style="width: 17.0545%;"></col><col style="width: 82.9455%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">molecule.yml</td><td style="height: 29.7969px;">Конфигурация запуска фреймворка. Основной файл.

Блоки настройки:

dependency: управление зависимостями.

driver: управление сервером тестирования. По умолчанию docker. Устанавливаются отдельно.

platforms: конкретный элемент для запуска

provisioner: инструмент запуска converge.yml

verifier: инструмент запуска verify.yml для проверки перехода в нужное состояние.

lint: инструмент поиска синтаксических ошибок.

scenario: жизненный цикл тестов. Может быть несколько.

</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">converge.yml</td><td style="height: 29.7969px;">Playbook для накатывания роли</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">verify.yml</td><td style="height: 29.7969px;">Тестирование того, что роль успешно применилась</td></tr></tbody></table>

В сценариях используются еще блоки, их называют программами.

molecule test запускает test\_sequence

**Karate**

OpenSource инструмент для тестирования, удобно тестировать API

[![image.png](http://bobrobotirk.ru/uploads/images/gallery/2026-06/scaled-1680-/QzHimage.png)](http://bobrobotirk.ru/uploads/images/gallery/2026-06/QzHimage.png)

Формирует отчеты.