Вчера на работе была встреча с QA, на которой обсуждали терминологию и подходы к автоматизации тестирования. Руководитель QA поделился интересной статьей Shift testing left with unit tests от Microsoft.
Там описывается подход, с помощью которого команде огромного проекта удалось переработать свой набор тестов и сократить время от влития изменений в основную ветку до релиза с нескольких дней до 2 часов.
Авторы статьи предлагают разделить тесты на слои на основе количества зависимостей и времени выполнения. Лёгкие и быстрые тесты нужно выполнять как можно раньше и чаще, например, на машине разработчика или при изменениях в pull request. Тяжелые медленные тесты можно выполнять позже и реже, например, после мержа изменений в основную ветку и при релизах.
В статье выделены уровни автотестов:
L1 — модульные тесты, которые зависят только от кода
L2 — функциональные тесты, которые взаимодействуют с зависимостями вне кода (например, БД, файловая система)
L3 — тесты, проверяющие задеплоенный сервис (при обращении к соседним сервисам использовать заглушки)
L4 — тесты, максимально приближенные к контексту, в котором находится пользователь
Ключевые принципы:
- каждый тест должен быть написан на максимально простом уровне
- при проектировании продукта нужно сразу учитывать возможность тестирования
- код тестов настолько же важен, как и код продукта
- инфраструктура для тестирования должна быть общей
- за автотесты отвечают не только QA, но и разработка
Этот подход близок к тому, что мы делаем в своих проектах внутри Яндекс. Круто, что статья коротко, но при этом понятно объясняет ключевые идеи.
По ссылке вы можете прочитать полный текст статьи https://learn.microsoft.com/en-us/devops/develop/shift-left-make-testing-fast-reliable
Post #10
715