27 апреля 2012

Суровая правда автоматизации тестирования

Вот тут коллега w_bf переводит книжку Lessons Learned in Software Testing и попутно делится умными мыслями.

Процитирую:

Неформальные исследования показали, что процент багов, найденных автоматизированными тестами удивительно низок. Проекты с серьезной, хорошо спроектированной автоматизацией говорят, что регрессионные тесты находят около 15% багов от общего количества (Marick, online). 
Автоматизированные регрессионные тесты, как правило, находят больше ошибок во время разработки тестов, чем во время их дальнейшего выполнения.

Со своей стороны не могу не прокомментировать - это именно так в большинстве случаев.
Причин на то несколько:

  1. автотесты требуют большей точности к деталям и часто определение нормального поведения системы сильно меняется в процессе тест-дизайна под автоматизацию
  2. то что человек будет считать нормальным робот зарубит - это для вас нет разницы за сколько миллисекунд отзывается сервер.
  3. если ваши разработчики не являются бригадой упырей и вурдалаков, то первый же сигнал от автотестов получит нормальную реакцию с их стороны и скорее всего эта лампочка никогда больше не станет красной (либо станет окончательно зеленой спустя некоторое время) - отчасти отсюда и вытекает то, что автотесты находят мало.
  4. автотесты становятся outdated - они отстают от того что из себя представляет система, и в том числе поэтому не могут отловить баги на этом промежутке времени - между тем моментом когда они были актуальны и тем моментом когда они станут актуальны. Угадайте когда этот интервал времени? Правильно, на релизе.
Не стоит понимать эти вещи превратно - 15% дефектов это тоже очень хорошо.