Принцип FIRST в автоматизации
t.me/qa_chilloutПринцип FIRST впервые был озвучен Робертом С. Мартином (Uncle Bob) в одной из его статей, посвящённых юнит-тестам и TDD. Однако сам он не называл себя "автором" принципа, а скорее предложил удобную мнемоническую аббревиатуру, чтобы описать свой взгляд на качественные автоматизированные тесты.
FIRST — это не формальный стандарт, а популярная практика, которая не сразу получила признание в сообществе. Изначально он появился в кругах XP, Agile и сторонников Clean Code как часть философии "чистой архитектуры" и TDD. Со временем FIRST начали активно использовать как удобный чеклист для оценки качества автотестов: он помогал командам понять, насколько тест надёжный, полезный и поддерживаемый. Благодаря своей наглядности и практичности, принцип вошёл в стандарты команд, чеклисты качества и обучающие материалы для разработчиков и QA.
Название FIRST — это аббревиатура из первых букв пяти принципов:
F — Fast (Быстрые)
Тесты должны выполняться быстро, чтобы их можно было запускать часто — например, при каждом пуше или перед релизом. Медленные тесты тормозят разработку и демотивируют команду их запускать.
I — Independent (Независимые)
Каждый тест должен быть независим от других: не должен полагаться на их выполнение или данные, которые они создали. Это позволяет запускать тесты в любом порядке, параллельно и отдельно.
R — Repeatable (Повторяемые)
Тесты должны вести себя предсказуемо в разных окружениях и давать один и тот же результат. Если тест то проходит, то падает — это флакающий тест, и ему нельзя доверять.
S — Self-validating (Самопроверяющиеся)
В тестах должны быть явные проверки (assert). Если всё работает правильно — тест проходит. Если что-то пошло не так — сразу видно, какая ошибка произошла.
T — Timely (Своевременные)
Тесты нужно писать до или во время разработки фичи — иначе есть риск что их не напишет команда вовсе. Либо тесты могут быть слишком дорогими и сложными, чтобы их добавить позже.
Как внедрить принцип FIRST в автотесты:
- Проанализируйте текущие тесты — найдите медленные, флакующие, зависимые.
- Примените шаблон FIRST на ревью (проверьте, что каждый новый тест соответствует всем пяти критериям).
- TDD/BDD-подходы помогают соблюдать Timely.
- Используйте моки, фикстуры.
- Настройте CI/CD для параллельного прогона (Fast + Independent).
- В каждом тесте должны быть чёткие
assert. - Вносите принцип в командные договорённости и гайды по тестированию.
Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».