Автотесты

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

Общий подход

Автотесты подразделяются на 3 группы:

End-to-end tests

Тестируют корректность совместной работы нескольких сервисов. Сама система при этом считается черным ящиком. В качестве входной точки используется GUI или публичное API. Тестовые сценарии максимально близки к реальным пользовательским действиям.

Component tests

Компонентные тесты работают с сервисом как с отдельной изолированной структурой. Тесты размещаются в том же репозитории что и код и пишутся бэкэнд-разработчиками. Запуск компонентных тестов встроен в CI/CD сервиса.

Unit and Integration tests

Тестирование пограничных случаев через компонентные тесты может становиться затруднительным и многословным или приводит к избыточному дублированию. В этом случае вместо компонентных тестов используются приходят unit and Integration tests, позволяющие протестировать более конкретный участок кода. В этих тестах мы тестируем уже конкретный класс или его публичный метод. Их запуск так же встроен в CI/CD.

Code Coverage

В расчёте code coverage (т.е процента строк кода покрытых хотя бы одним тестом) принимают участие component, integration и unit тесты.
Гнаться за 100% code coverage в большинстве случаев не прагматично. Чем ближе к 100% тем «дороже» в написании становится каждый новый процент и тем меньше от него реальной ценности.
В качестве ориентиров используем гайдлайны Google:
  • 60% — приемлемо;
  • 75% — похвально;
  • 90% — образцово.
Проверка на минимальный code coverage встроена в CI.

Покрытие сервисов Ensi тестами