Разделы портала

Онлайн-тренинги

.
Неправильный вопрос: Какой процент тестов вы автоматизировали?
02.02.2016 11:44

Автор: Дороти Грээм.

Оригинал статьи: http://dorothygraham.blogspot.ru/2015/11/the-wrong-question-what-percentage-of.html

Перевод: Ольга Алифанова

Посещая недавно прошедшие конференции, я осознала, что люди задают неправильные вопросы, когда речь заходит об автоматизации. Прошедший ISTQB-опрос звучал как "Как много (какой процент) тест-кейсов вы автоматизируете?". После своего доклада по автоматизации я беседовала с участницей конференции, которая сказала мне, что ее менеджер задавал ей тот же вопрос, и она не знала, что ему сказать. Она не одинока. Менеджеры часто задают этот вопрос. Ответить на него трудно, потому что это неверный вопрос.

Почему люди спрашивают об этом? Возможно, им нужна информация о прогрессе автоматизации, особенно если она только внедряется. Не то чтобы это необоснованный интерес, но это плохой вопрос - он основан на ряде неверных допущений:

Неверное допущение номер 1. Все ручные тест-кейсы должны быть автоматизированы.

Вопрос "какой процент кейсов" предполагает, что все существующие кейсы - кандидаты на автоматизацию, и, зная процент, можно измерить прогресс на пути к "идеальной" цели - 100%.

Предполагается, что есть некий единый набор кейсов - часть из них ручные, а часть автоматизирована. Обычно этот вопрос на самом деле значит "Какой процент наших имеющихся ручных кейсов автоматизирован?".

Постойте, но не все же ваши ручные кейсы подходят для автоматизации! Безусловно, часть из них можно и нужно автоматизировать, но не все же!

Примеры: если вы можете автоматизировать проверку на капчу, то ваша капча просто не работает - она же должна уметь определять разницу между человеком и машиной. "Как смотрятся эти цвета?". "Это именно то, что сделал бы настоящий пользователь?". Плюс к этому - кейсы, которые очень долго автоматизируются - например, те, которые проходятся редко, или слишком сложные для автоматизации.

Неверное допущение номер 2. Ручные тест-кейсы - единственные кандидаты на автоматизацию.

Вопрос "Какой процент кейсов" предполагает, что единственные кейсы, достойные автоматизации - это уже существующие ручные. Это неверно. Инструменты автоматизации позволяют проверки, которые невозможно или невыгодно проводить вручную.

Примеры: дополнительная верификация/валидация объектов на экране - находятся ли они в нужных состояниях? При ручной проверке вы увидите, что отображается на экране, но можете не знать, в каком состоянии объекты, или правильное ли это состояние.

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

Неверное допущение номер 3. Ручной тест-кейс - это то же самое, что и автоматизированный.

Вопрос "Какой процент тест-кейсов" также предполагает, что ручной и автоматизированный кейс - это одно и то же, но это не так. Ручной кейс состоит из набора указаний, которым должен следовать живой человек. Он может быть детализированным (используйте учетные данные Джонса) или расплывчатым (используйте данные существующего покупателя). Ручной кейс оптимизирован под живого человека. Когда тесты проводятся вручную, они могут слегка различаться при каждом прогоне, и это может быть как преимуществом (можно найти новые баги), так и недостатком (неполные тесты, которые не повторяются на 100% каждый раз).

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

Один ручной тест можно превратить в 3, 5, 10 или более автоматизированных тестов. К примеру, возьмем ручной кейс, который начинается в главном меню, перемещает пользователя на определенный экран и проводит там какие-либо проверки, а затем возвращается в главное меню. Предположим, у вас есть, скажем, 10 похожих кейсов для этого же экрана. Если у вас один сценарий на тест, каждый сделает три вещи - переместит в целевую зону, выполнит проверки, переместится назад. Если расположение экрана изменится, все эти тесты нужно будет переписывать - страшный сон для поддержки тестов (особенно если их не 10, а более). Каждый такой тест должен содержать как минимум три сценария - перемещение в целевую зону, один (или несколько) сценариев для выполнения проверок, и один - для перемещения в главное меню. Обратите внимание, что все кейсы будут использовать сценарии "перейти к экрану такому-то" и "вернуться в главное меню". Теперь, если экран переместился, вам нужно изменить всего пару сценариев, и все автотесты продолжат работать.

Теперь возникает вопрос - а сколько кейсов вы автоматизировали? 10 ручных, с которых вы начали? Или нужно считать только скрипты? Тогда их минимум 12, а может, и все 20. Предположим, что вы обнаружили, что можете легко добавить в этот набор еще кейсов 5, которые тоже используют навигационные сценарии и еще 4 сценария предыдущих кейсов. Теперь у вас 15 тестов с 13 сценариями - так сколько вы автоматизировали? Ваши новые тесты никогда не были ручными, то есть автоматизировали ли вы 10 ручных кейсов, или все-таки 15?

Неверное допущение номер 4. Прогресс автоматизации так же линеен, как тестирование.

"Какой процент завершен" - неплохая метрика для оценки стабильной, монотонной деятельности, например, ручного прогона комплекта тестов. Когда вы автоматизируете тесты, особенно поначалу, вы вкладываете кучу усилий в создание хорошей структуры, и начальные автотесты не могут использовать предыдущие наработки за их отсутствием. Позднее в ходе автоматизации вы будете создавать автотесты гораздо быстрее, потому что у вас под рукой будет множество сценариев, которые можно использовать повторно, просто внедряя их в новые тесты. Таким образом, если ваша цель - автоматизировать 20 тестов за 2 недели, то если под конец первой недели вы автоматизировали только 5, вы легко автоматизируете оставшиеся 15 за вторую неделю. Итого под конец недели 1 вы автоматизировали только 25% кейсов, но выполнили 50% работы.

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

Хорошие метрики прогресса автоматизации

Если вышеперечисленное - причины НЕ использовать процент автоматизированных тестов как метрику, то что же можно использовать? Вот несколько предположений:

1) Процент поддающихся автоматизации кейсов, которые были автоматизированы. Решите, какие кейсы подходят для автоматизации и/или желательны для нее, и измеряйте процент тех, которые уже автоматизированы, по отношению к общему количеству. Не учитывайте кейсы, которые навсегда останутся ручными, и кейсы, которые вы не хотите автоматизировать прямо сейчас. Это может выполняться как в рамках спринта, так и на более длинных дистанциях (или и так, и так). Как говорит Алан Пейдж, "Автоматизируйте 100% тестов, которые требуют автоматизации".

2) Эквивалент усилий по ручному тестированию. Отследите, сколько времени занял бы комплект автотестов, если бы прогонялся вручную. Каждый раз при прогоне автотестов помечайте их эквивалент в ручном труде. Эта метрика показывает, что автоматизация позволяет прогонять кейсы, которые больше не проводятся вручную, и должна увеличиваться со временем, так как все больше и больше тестов будет автоматизировано.

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

Заключение

Если ваш менеджер задает вопрос "Какой процент тест-кейсов вы автоматизировали", спросите его, процент от чего именно имеется в виду? Процент от существующих тестов, которые поддаются автоматизации или выбраны для автоматизации? Что насчет дополнительных тестов, которые неплохо бы проводить автоматически, и которые вообще не проводятся сейчас? Вы хотите узнать о прогрессе нашей автоматизации, или исключительно тестах - это разные вещи, так как автотесты структурированы иначе и не похожи на ручные?

Неплохо также выяснить, почему он задает этот вопрос, что им движет? Менеджмент хочет прозрачности прогресса автоматизации - найдите консенсус, договоритесь о какой-нибудь полезной, понятной метрике, которую будет легко отслеживать. Удачи! И дайте мне знать, как вы оцениваете свой прогресс в автоматизации!