Зачем запускать тесты автоматически?

Зачем запускать тесты автоматически?

Один из способов оценки необходимости автоматизации тестирования - это подсчёт ROI. Прежде чем колбасить тесты, оцени:

  • сколько времени нужно на проверку функциональности вручную (Tm)?
  • сколько времени нужно на автоматизацию тестирования этой функциональности (Ta)?
  • как часто эта функциональность проверяется?

Отношение Ta/Tm показывает, через сколько итераций тестирования автотесты окупятся (грубо считаем стоимость ручного тестирования и автоматизации одинаковой).

Например. Ручная регрессия некоторого приложения занимает 2 часа. Автоматизация тестирования этой регрессии займёт неделю (40 часов). Получается, что автотесты окупятся через 40/2 = 20 итераций тестирования.

Тут в дело вступает третья переменная - как часто проверяется функциональность, которую хотим автоматизировать? Если релиз раз в две недели, то срок окупаемости - 40 недель. Это почти 10 месяцев - не каждый аутсорс-проект столько длится. Если релиз раз в неделю, автотесты окупятся через 20 недель. Неделю пишем тесты, а пользу от них получим через полгода. Если к тому моменту они безнадежно не устареют.

Но кто сказал, что автотесты нужно запускать только во время тестирования релиза? Некоторые команды практикуют автоматическое тестирование ночных сборок. На наших входных данных, такая практика даст окупаемость в течении 4х недель. Уже неплохо, но можно лучше.

Следующий шаг - запускать автотесты на каждый коммит (пул-реквест) в мастер. Это потребует некоторой автоматизации помимо самих автотестов (сборка, выкладка в тестовое окружение), зато окупаемость приближается к времени разработки.

Это как с короткими итерациями в Agile - чем раньше фича дойдёт до потребителя, тем больше пользы бизнес от неё получит. Только “бизнес” в нашем случае - наш проект, а фича - автоматизация очередного куска функциональности.

Больше пользы за те же деньги. Круто? А всего-то надо запускать тесты автоматически.

comments powered by Disqus