Окупаемость тестирования |
29.10.2020 00:00 |
Автор: Джеспер Оттосен (Jesper Ottosen) В классических тест-техниках и подходах тестирование – редкий ресурс. Из-за временных и финансовых ограничений всегда требовалось учитывать риски, чтобы свести концы с концами. Теперь у нас есть инструменты и подходы, увеличивающие доходность тестирования за счет большего количества тестов и их частого и более раннего прогона. Мы никогда не сможем протестировать все. Поэтому в контексте классических тест-техник и типов тестирования (я смотрю прямо на тебя, старикашка) нужно приоритезировать и комбинировать тесты, чтобы выжать максимум из доступного.
Подсчет тестов – это… Хорошая аналогия для тестирования всего на свете – это подсчет всех возможных десятичных дробей. За каждой из них прячется еще одна, и для любого числа можно выбрать любое количество чисел рядом. Так и с тестами – можно выбрать любое количество новых "вариаций" теста (браузер, время, пользователь, предварительные условия…). Тяжело подсчитать то, что перетекает друг в друга, так как два теста могут покрывать в целом одно и то же, но в итоге оказаться совершенно разными. …и камни тоже пересекаются. Классические вышеуказанные техники – это техники фильтрации, которые сначала сводят бесконечное количество возможных тестов к чему-то отдельному ("тест-кейсам"), где каждый тест отделен от другого (и поддается подсчету). Согласно аналогии Ааронса, это "камень". Затем они фильтруются и сводятся к какому-то конечному количеству, которое можно выполнить и ответить, "когда мы завершим тестирование".
Фильтрация от всех возможных чисел к исчисляемому и финальному набору. Старые издержки тестирования Вышеописанная фильтрация исходит из посылки, что каждый подсчитанный тест имеет высокую цену, и, аналогично, что подготовка и прогон каждого теста дорого стоят. Средняя стоимость создания формального тест-кейса может легко достигать 3 часов и 1 часа на прогон – возможно, с 50% шансом на повторный прогон или дефект. Итого при 100 кейсах простая модель издержек будет такова: как минимум 450 часов, или 3 часа на тест, включая необходимость повторного прогона в 50% случаев. Неудивительно, что менеджмент хочет снизить эти затраты и привести издержки к минимальному знаменателю. Задумайтесь также, что это в лучшем случае покрывает прогон всех тестов один раз, и их половины – дважды. Достаточно ли это безопасно, чтобы двигаться дальше? Новый взгляд на доходность Современные инструменты и подходы к тестированию ставят этот подход с ног на голову и фокусируются на том, чтобы сделать тестирование быстрее, чаще и дешевле (на единицу теста). См. статьи:
Теперь у каждого проекта будет свое соотношение автоматизированных тестов, но для простоты предположим, что 75% тестов могут быть автоматизированы или поддержаны инструментами так, что их прогон фактически ничего не стоит. К примеру, он прогоняется как часть непрерывного тестирования в CI/CD, и для этого не нужны ни руки, ни глаза. Подготовка тестов все еще занимает время – допустим, те же три часа. Итак, 25 тестов без автоматизации все равно требуют 112,5 часов – но автоматизация (оставшиеся 75 тестов), чей прогон бесплатен, требует только 225 часов подготовки. Даже в этой простой модели издержек они снижены на 25% (с 450 часов до 337), включая повторный прогон 50% тестов. Современный подход стремится сделать тесты изобильными и распространенными, а не редкостью (См. "Теорию ограничений" про узкие места). Если использовать выгоды CI/CD и полнокомандный подход к качеству, то согласно исследованию Accelerate будет наблюдаться корреляция с выгодой для бизнеса. Так как прогон автотестов дешев, их можно запускать "по запросу". Давайте прогонять 25% ежедневно – регресс ли это? Может быть, какая нам разница. Предположим, мы прогоняем 25% случайных тестов в день в течение двух недель – это 250 тестов. Мы повысили количество прогонов тест-набора и количество прогонов каждого теста. С этим подходом наши затраты в 225 часов на подготовку тестов использовались при 250 прогонах, и мы в итоге потратили на прогон меньше часа. Идея в том, чтобы переформатировать тест-усилия как нечто быстрое, повторяющееся на выборке из возможных значений, повторенное несколько раз. Чем чаще прогоняются тесты, тем лучше – и тем выше выгода от тестирования и, если хотите, производительность организации. |