Экономия за счет тестирования

Экономия за счет тестирования

По отчету NIST недостаточное тестирование программного обеспечения приносит экономике США около 50 млрд убытков в год (данные на 2002 г. (https://www.stickyminds.com/article/real-money-poor-software-testing-practices-cost-us-companies-59-billion)). На сегодняшний день, я думаю, цифра выросла еще более значительно. И многие компании и команды понимают это. Большая часть компаний уже внедрили практики тестирования программного обеспечения перед релизом. В некоторых сформированы целые отделы QA (Quality Assurance, обеспечение качества).

Как растет стоимость исправления дефекта

Одно из свойств разработки программного обеспечения — чем позже найден дефект, тем больше сил и времени уходит на его исправление. Это подтвержденный исследованиями факт, что исправление ошибок на этапе сопровождения существенно, иногда даже в несколько порядков увеличивает затраты по сравнению с более ранними этапами разработки. К тому же, помимо затрат на исправление ошибок, очень часто компании несут репутационные, материальные потери, а иногда и человеческие жизни (ошибка в ПО Boeing 737 Max стоила 346 человеческих жизней).

Около 30% ошибок рождаются в требованиях

Исследования показывают, что около трети всех ошибок допускаются в требованиях. Если такие ошибки будут найдены на этапе сопровождения, то их исправление будет стоить колоссальных усилий. Поэтому стоит находить ошибки еще до того, как они пойдут в разработку.

Shift Left

Многие компании внедряют у себя shift-left подход к тестированию. Суть этого подхода — тестирование на более ранних этапах жизненного цикла разработки. Вместо тестирования после написания кода, его начинают уже на этапе требований и проектирования. Этот подход позволяет значительно снизить затраты, связанные с исправлением дефектов.

Как экономить:

  • Внедрение тестирования требований — QA инженеры проверяют требования на полноту, непротиворечивость и тестируемость.
  • Внедрение практики 3 Amigos, что снизит недопонимание между требованиями и реализацией, что в конечном итоге приводит к уменьшению числа ошибок.
  • Автоматизация тестирования — писать модульные и интеграционные тесты параллельно с кодом и/или внедрить практику TDD. Здесь важно гнаться не за процентом покрытия кода тестами, а за их качеством.
  • Привлечение QA к ревью кода и тестов и к написанию модульных/автотестов.
  • Внедрение статического анализа кода.
  • Внедрение прогона тестов на этапе CI, это позволит сразу же выявлять проблемы.
  • Обучение всей команды, не только QA инженеров, пониманию принципов качественного тестирования.

Чем раньше обнаруживается и исправляется дефект, тем дешевле он обходится компании.

Подпишиcь на мой telegram-канал

2 комментария