Вы знали, что команда Amazon Web Services еще в 2015-м выпускала 50 миллионов релизов в год? Это чаще, чем один в секунду! Как у них так получалось? Свою продуктивность в Amazon объясняют использованием принципов DevOps и эффективной автоматизацией тестирования.
В свою очередь компания QASymphony опрашивала экспертов, среди которых, например, Энджи Джонс, ведущий инженер по тестированию Twitter. И все они согласны с тем, что рынок предъявляет все более жесткие требования к качеству программных продуктов и скорости их обновления. Поэтому одним из трендов эксперты называют сдвиг акцента с ручного тестирования на автоматизированное.
Но в своей оценке эффективности и применимости автоматизированного тестирования эксперты часто разделяются во мнениях где, как и в каких объемах его применять. Почему так происходит? Объясняем в этой статье.
Почему автоматизация не панацея: плюсы и минусы автотестов
Начнем с плюсов:
1. Неутомимость: автотесты работают даже когда вы спите. Роботы запускаются автоматически, дистанционно, по расписанию. Они не отвлекаются, не забывают, и делают проверку столько раз, сколько нужно.
2. Скорость: робот в 99% случаев пройдет тест быстрее ручного тестировщика. В оставшемся 1% случаев не забывайте, что человек может устать, а робот нет.
3. Многофункциональность: это не просто перебор значений в формах. Автотесты могут быстро проверить функционал в разном окружении и при разных настройках тестируемого ПО.
4. Масштаб: автоматизация позволяет имитировать действия большого количества пользователей.
5. Экономия сил: автотесты освобождают ручных тестировщиков от рутины. Часто с помощью автотестов проверяется базовый функционал, а тестировщик сосредотачивается на тестировании новинок.
6. Экономия средств: основная задача автотестов в бизнесе — сокращение затрат на тестирование. И они отлично справляются с этой задачей, если были внедрены с умом и в нужном месте.
Теперь переходим к минусам:
1. Поломки: автотесты ломаются, иногда даже из-за незначительного изменения кода. На актуализацию нужно время.
2. Близорукость: Автотест проверяет только то, на что запрограммирован. Он не заметит ошибку, которую ему не поручали искать.
3. Трудно поддерживать: с ростом количества автотестов, время на их актуализацию и анализ старых, превышает время на разработку новых.
4. Не везде применимы: есть области тестирования, которые не поддаются автоматизации. Это юзабилити, проверка верстки и переводов, инсталляционное тестирование и другие подобные сферы.
5. Затратность: автотест это как промышленное оборудование, в него нужно сначала инвестировать, а потом смотреть на окупаемость. А если “станок” постоянно чинится и перепрошивается — он может и не окупиться.
Есть и спорные моменты
1. Выгода от автоматизации. С одной стороны – почти всегда время на разработку автотеста будет больше, чем время прохождения тестов «руками». Еще и специалист нужен более квалифицированный/высокооплачиваемый. С другой – если автотест не нуждается в реанимации и постоянной актуализации, то он работает практически бесплатно. Поэтому очень важно рассчитывать ROI автоматизации. И делать это регулярно! Мы в «Лаборатории Качества» рекомендуем проводить анализ окупаемости автоматизации тестирования еще до старта проекта.
2. Сложность анализа результатов. С одной стороны разработчик автотестов действительно может сделать так, что отчеты будут понятны только ему. С другой стороны, если грамотно подойти к стратегии логирования результатов, то даже новый тестировщик сможет понять на каком шаге упал автотест. Специалисты «Лаборатории Качества» всегда составляют четкие инструкции по своим автотестам и по желанию заказчика полностью передают их штатным специалистам.
Когда лучше ручное тестирование, а когда процесс требует автоматизации?
Ручное тестирование подойдет больше, если у вас:
- молодой проект с нестабильным функционалом;
- ручных тестов мало и они проходят быстро;
- нужно проверять верстку, переводы, юзабилити;
- нужно локализовать и описывать ошибки;
- нет времени на разработку автотестов.
О необходимости автоматизации тестирования говорят такие факторы:
- большое количество ручных тестов и не хватает времени на регулярное проведение полного регресса;
- большой процент пропуска ошибок по вине человеческого фактора;
- большой промежуток времени между внесением ошибки, ее обнаружением и исправлением;
- подготовка к тестированию (настройка конфигурации, генерация тестовых данных) занимает много времени;
- большие команды, в которых нужна уверенность, что новый код не сломает код других разработчиков;
- поддержка старых версий ПО, в которых нужно тестировать новые патчи и сервис-паки.
Как автоматизировать тестирование
Вот наши рекомендации по автоматизации, которые мы сформировали исходя из практики 155+ проектов.
1. Определите, чего вы хотите от автотестов. Кто-то ищет оптимизации расходов, кто-то хочет разгрузить ручных тестировщиков, кто-то хочет увеличить охват тестов. Регулярно проверяйте способствует ли автоматизация достижению вашей цели. Также цель позволяет определить что именно автоматизировать и что делать в первую очередь.
2. Регулярно рассчитывайте ROI автотестов и собирайте соответствующие метрики. Это позволяет узнать действительно ли вам нужны автотесты и при необходимости корректировать план автоматизации.
3. Проанализируйте сколько автотестов вам требуется. И как часто понадобится писать новые и актуализировать старые. Возможно, вам выгоднее сразу отдать автоматизацию на аутсорс и платить только за выполненные работы. В то время как наемный сотрудник будет сидеть без дела после выполнения основного объема работ на старте проекта.
4. Определите, что вы хотите видеть в отчетах. От этого зависит их полезность и ваша степень доверия к этому инструменту. Рекомендуем найти баланс между минимумом и максимумом данных, так чтобы автотесты приносили пользу, но не съедали ваши ресурсы. Собранная информация должна приносить пользу. Опытные автоматизаторы на аутсорсе могут посоветовать вам, что должно быть в отчете.
5. Позаботьтесь, чтобы тестировщики понимали что именно делает автотест. Только так после падения сценарий можно перепроверить вручную. Создайте четкие пошаговые инструкции. В случае, если вы отдали эту задачу на аутсорс компании, в которой есть и ручные тестировщики и автоматизаторы, попросите у них такие инструкции – на всякий случай, вдруг придется проверять самим.
6. Не стоит доверять начальный этап автоматизации программисту-джуну. Не забывайте, что автотесты – такой же программный продукт, как и все остальные. От классификации разработчика зависит эффективность, правильно выстроенная архитектура и легкость актуализации.
7. Последняя в списке, но не последняя по значению рекомендация – придерживайтесь пирамиды автоматизированного тестирования. Создавайте большое количество низкоуровневых автотестов (например, API) и меньшее количество высокоуровневых UI тестов. Просто поверьте нашему опыту, или напишите нам в комментариях, чтобы мы написали отдельную статью по этой теме. Поверьте, для этого хватит материала, с красочными примерами.
Выводы
Многим QA-специалистам очевидно, что вопрос «автоматизировать или тестировать руками?» звучит, как минимум, некорректно. Нельзя раз и навсегда выбрать что-то одно, а от чего-то отказаться.
Все тесты автоматизировать нерентабельно, а порой и вовсе невозможно. Пока AIOps не достигли нужного уровня, ручное тестирование будет востребовано на проектах. Потому, квалификация руководителя проекта тут определяется скорее умением найти точный баланс между этими двумя подходами. Определить, где автотесты будут максимально эффективны и внедрять их именно в этой сфере.
Что касается вопроса отдавать ли автоматизацию на аутсорс или заниматься самому, то все нужно просчитывать применительно к своему бизнесу. Для того, чтобы делать автотесты самостоятельно, должно сойтись много факторов.
- Как минимум, вы должны быть уверены, что автоматизация окупится и уметь правильно считать ROI.
- Плюс найти квалифицированного автоматизатора, что трудно с учётом их востребованности на рынке труда.
- А ещё вы должны загрузить его работой не только на старте проекта, но и на постоянной основе.
- Ну и убедиться, что автотесты будут работать без этого специалиста. Иначе — начинай всё сначала.
Сильные QA-компании, предлагая свои услуги — всегда инициируют процесс автоматизации с просчета его ROI и выбора наиболее прибыльной стратегии тестирования.
Сама автоматизация должна строиться на имеющихся у QA-компании наработках и готовых библиотеках фреймворков, что экономит время и средства заказчика.
В конце проекта заказчику должны быть переданы гибкие автотесты, которые легко актуализировать и поддерживать своими силами.
Не удалось до конца определиться — внедрять автоматизацию у себя на проекте или продолжать кормить армию ручников. Свяжитесь с нами. Посчитаем все за и против вместе.
Мы предлагаем быстрый старт в рамках пилотного проекта со скидкой 50%. Мы выполним часть работ и покажем себя, вы сэкономите половину бюджета и время на раздумья.