Принцип FIRST в автоматизации

Принцип FIRST в автоматизации

t.me/qa_chillout

Принцип FIRST впервые был озвучен Робертом С. Мартином (Uncle Bob) в одной из его статей, посвящённых юнит-тестам и TDD. Однако сам он не называл себя "автором" принципа, а скорее предложил удобную мнемоническую аббревиатуру, чтобы описать свой взгляд на качественные автоматизированные тесты.

FIRST — это не формальный стандарт, а популярная практика, которая не сразу получила признание в сообществе. Изначально он появился в кругах XP, Agile и сторонников Clean Code как часть философии "чистой архитектуры" и TDD. Со временем FIRST начали активно использовать как удобный чеклист для оценки качества автотестов: он помогал командам понять, насколько тест надёжный, полезный и поддерживаемый. Благодаря своей наглядности и практичности, принцип вошёл в стандарты команд, чеклисты качества и обучающие материалы для разработчиков и QA.


Название FIRST — это аббревиатура из первых букв пяти принципов:


FFast (Быстрые)

Тесты должны выполняться быстро, чтобы их можно было запускать часто — например, при каждом пуше или перед релизом. Медленные тесты тормозят разработку и демотивируют команду их запускать.


IIndependent (Независимые)

Каждый тест должен быть независим от других: не должен полагаться на их выполнение или данные, которые они создали. Это позволяет запускать тесты в любом порядке, параллельно и отдельно.


RRepeatable (Повторяемые)

Тесты должны вести себя предсказуемо в разных окружениях и давать один и тот же результат. Если тест то проходит, то падает — это флакающий тест, и ему нельзя доверять.


SSelf-validating (Самопроверяющиеся)

В тестах должны быть явные проверки (assert). Если всё работает правильно — тест проходит. Если что-то пошло не так — сразу видно, какая ошибка произошла.


TTimely (Своевременные)

Тесты нужно писать до или во время разработки фичи — иначе есть риск что их не напишет команда вовсе. Либо тесты могут быть слишком дорогими и сложными, чтобы их добавить позже.


Как внедрить принцип FIRST в автотесты:

  1. Проанализируйте текущие тесты — найдите медленные, флакующие, зависимые.
  2. Примените шаблон FIRST на ревью (проверьте, что каждый новый тест соответствует всем пяти критериям).
  3. TDD/BDD-подходы помогают соблюдать Timely.
  4. Используйте моки, фикстуры.
  5. Настройте CI/CD для параллельного прогона (Fast + Independent).
  6. В каждом тесте должны быть чёткие assert.
  7. Вносите принцип в командные договорённости и гайды по тестированию.


Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».


Report Page