В последние годы автоматизированное тестирование стало трендом в области разработки ПО, в некотором смысле, его внедрение стало «данью моде». Однако внедрение и поддержка автоматических тестов – очень ресурсоемкая, соответственно, недешевая процедура. Повсеместное использование этого инструмента чаще всего ведет к значительным финансовым потерям без какого-либо значимого результата.
Как можно при помощи достаточно простого инструмента оценить возможную эффективность автоматизированного тестирования ПО?
Что определяется как «эффективность» автоматизированного тестирования?
Наиболее распространенный способ оценки эффективности (прежде всего экономической) является расчет возврата инвестиций (ROI). Вычисляется он достаточно просто, являясь отношением прибыли к затратам. Как только значение ROI переходит единицу – решение возвращает вложенные в него средства и начинает приносить новые.
В случае автоматизации под прибылью понимается экономия на ручном тестировании. Кроме того, что прибыль в данном случае может быть и не явной – например, результаты нахождения дефектов в процессе ad-hoc тестирования инженерами, время которых высвободилось за счет автоматизации. Такую прибыль достаточно сложно рассчитать, поэтому можно либо делать допущение (например +10%) либо опускать.
Однако не всегда цель внедрения автоматизированного тестирования - это экономия. Один из примеров – скорость выполнения тестирования (как по скорости выполнения одного теста, так и по частоте проведения тестирования). По ряду причин скорость тестирования может быть критической для бизнеса – если вложения в автоматизацию окупаются полученной прибылью.
Другой пример – исключение «человеческого фактора» из процесса тестирования систем. Это важно, когда точность и корректность выполнения операций является критической для бизнеса. Цена такой ошибки может быть значительно выше стоимости разработки и поддержки автотеста.
Зачем измерять эффективность?
Измерение эффективности помогает ответить на вопросы: «стоит ли внедрять автоматизацию на проекте?», «когда внедрение автоматизации тестирования принесет нам значимый результат?», «сколько часов ручного тестирования мы заместим?», «можно ли заменить 3 инженеров ручного тестирования на 1 инженера автоматизированного тестирования?» и др.
Данные расчеты могут помочь сформулировать цели (или метрики) для команды автоматизированного тестирования. Например, экономия X часов в месяц ручного тестирования, сокращение расходов на команду тестирования на Y условных единиц.
Нужна помощь? Закажите консультацию специалистов компании «Точка качества» по автоматизации тестирования для вашего программного продукта.
Тестовое покрытие
Для того чтобы сформировать данные для оценки, необходимо определиться с автоматизируемым тестовым покрытием. Для его выделения стоит руководствоваться следующими двумя простыми правилами:
- покрываемая функциональность должна быть достаточно стабильной (чем стабильнее функциональность, тем меньше затраты на поддержку тестов);
- покрываемая функциональность должна тестироваться регулярно и часто (чем чаще выполняется тестирование функциональности, тем быстрее окупается ее автоматизация; редко и нерегулярно тестируемая функциональность не эффективна для автоматизации – ее выгоднее тестировать вручную);
- возможность тестирования при помощи автотестов.
Исходные данные
Для расчета эффективности автоматизации на проекте требуется набор входных данных, получить которые несложно.
- Во-первых, стоимость (в человеко-часах) ручного тестирования в рамках выбранного покрытия.
- Во-вторых, стоимость разработки автотестов (в человеко-часах) автотестов в рамках данного покрытия.
- В-третьих, данные по частоте проведения тестирования.
Выполнение оценки
Обычно интервал для анализа составляет месяц. Но его вполне можно адаптировать под конкретный проект – например, взять спринт или недельный интервал.
Для начала вычисляем затраты по ручному тестированию за каждый интервал. Обратите внимание, что затраты уменьшаются (автотесты это замещают). Затем вычисляем затраты на разработку тестов.
Необходимо учесть предполагаемый размер команды автоматизации на проекте – это покажет, насколько быстро мы сможем реализовать автотесты, заместив ручное тестирование.
Затем вычисляем сумму этих затрат. По сути – это суммарные затраты на тестирование. Добавляем для сравнения затраты на ручное тестирование (без автоматизации). Далее высчитываем накопленные затраты по тестированию с и без автоматизации.
Разница между этими значениями покажет нам эффективность процесса автоматизации (экономия трудозатрат) на данном отрезке времени.
Попробуем построить график по этим данным.
Очевидно, что автоматизация данных сценариев несет значительный экономический эффект, который наступает достаточно быстро и уверенно увеличивается со временем.
В целом данный график является практически каноническим для демонстрации эффекта автоматизации и отражает оценку трудозатрат на тестирование: быстрый рост трудозатрат на ручное тестирование при незначительном росте трудозатрат на
автоматизированное тестирование.