Автоматизация тестирования на проекте: что важно учесть
Специалисты по автоматизации тестирования (SDET, то есть Software Development Engineer in Test) помогают ускорить проведение тестов, а значит, быстрее выпускать свежие релизы IT-продукта. Как правило, это наиболее необходимо в масштабных приложениях с большим количеством бизнес-функций.
Рассмотрим, как бизнесу понять потребность в автотестах, с чего начать и как оценить эффективность результатов.
Когда на проекте нужна автоматизация
При работе с масштабными IT-решениями, например, системами дистанционного банковского обслуживания (ДБО), важно постоянно тестировать не только работу отдельных функциональностей, но и их взаимодействие. В условиях сжатых сроков, когда ведущие банки каждый месяц обновляют свои приложения, проверить все вручную невозможно – на это как минимум не хватит времени.
При создании IT-продуктов для бизнеса обычно сочетают два подхода:
-
осуществляют проверки вручную, с помощью специалистов по обеспечению качества (QA);
-
комбинируют ручное тестирование и автоматизацию отдельных тест-кейсов, смоук- и регрессионных тестов.
Как правило, мы привлекаем экспертов SDET для решения следующих задач:
-
Автоматизация рутинных и частых проверок, снижение нагрузки на QA-специалистов.
-
Контроль основных функций приложения и отслеживание изменений в продукте.
-
Возможность проводить тестирование с большим количеством мобильных устройств, версий браузеров и операционных систем.
-
Тестирование производительности приложения в условиях одновременной работы с большим количеством данных и пользователей.
Критерии автоматизации тестирования
Существует ряд признаков, указывающих на то, что пора задуматься о подключении SDET-специалиста на проект. Наличие их является своеобразными маркерами необходимости этого процесса.
Работы на проекте будут продолжаться минимум полгода
Если разработка проекта рассчитана на полгода и более, чаще всего за это время у команды накапливается некоторая база стабильного и неизменного функционала, тестирование которого можно автоматизировать.
Наличие продолжительных регрессионных тестов
Если повторные проверки (регрессионные тесты) занимают 3-4 дня и более, то автотесты помогут ускорить этот процесс за счет параллельного запуска, ночных прогонов и автоматической генерации отчетов.
Большое количество багов выявляется на поздних этапах тестирования
Внедрение автоматизации не решит такого рода проблемы на 100%, поскольку многое зависит от проекта и процессов на нем. Однако в данном случае у автотестов есть существенное преимущество – они могут запускаться в любое время, в том числе на этапе разработки. Это позволит выявлять возможные проблемы и ошибки раньше, чем задача будет передана в тестирование.
Тест-кейсы требуют создания большого количества тестовых данных или заполнения больших форм
В данном случае автоматизация тестирования решит проблему человеческого фактора. Автотест выполняет каждый раз одинаковую последовательность действий и проверяет один и тот же ожидаемый результат. Кроме того, заполнение и генерация данных в автоматическом режиме выполняется в разы быстрее, чем в ручном.
Тест-кейсы в основном проверяют функциональное поведение, а не интерфейс и юзабилити
Автоматизация тестирования может принести положительные результаты при проверке функциональности, тогда как визуальное тестирование эффективнее проводить вручную.
Если есть проблемы с производительностью и\или стабильностью работы систем
Проверить работу приложения или отдельных сервисов, используя тысячи одновременно работающих пользователей вручную – это очень трудно или даже невозможно. Автоматизированные сценарии, запущенные в тысячи потоков, создадут условия, необходимые для оценки работоспособности и производительности приложения.
На основании выполнения большинства из перечисленных условий, может быть принято решение о внедрении автоматизации тестирования на проекте.
C чего начинается автоматизация тестирования
После того, как решение о внедрении автоматизации принято, следует определить цель внедрения автоматизации тестирования, а также объект тестирования, ресурсы и процессы.
Наиболее частые цели автоматизации тестирования:
Сокращение time-to-market
Уменьшение времени от постановки задачи до выпуска приложения на production. SDET-специалисты помогают сократить время на тестирование устоявшейся функциональности приложения. Вместо того, чтобы проходить регрессионные кейсы руками, они автоматизируются. Прогон автотестов занимает в разы меньше времени, чем ручная работа. Кроме того, его можно запланировать на ночное время и запустить в несколько потоков, в зависимости от ваших аппаратных ресурсов.
Улучшение качества продукта и оптимизация затрат на тестирование
За счет автоматизации регрессионных кейсов отпадает необходимость в найме специалистов по ручному тестированию для прохождения постоянно увеличивающегося на развивающемся проекте регресса.
Проведение тестирования нагрузки и исследование производительности
Автоматизация позволяет эмулировать действия реального пользователя в системе в нужном количестве и нужного типа для проведения исследований нагрузки. Это позволяет моделировать различные ситуации повышенной нагрузки на систему и предугадать её поведение в таких ситуациях.
Какие ресурсы необходимы
Прежде чем приступать непосредственно к автоматизации, следует проанализировать условия, в которых предстоит работать, и уточнить, готовы ли необходимые ресурсы для ее старта:
- Сроки
Нужно выяснить, насколько вписываются ожидания клиента о времени запуска автоматизации в предполагаемые затраты на эти работы. Практика показывает, что затраты на SDET начинают окупаться в среднем спустя полгода после старта. Поэтому уточнение масштабов долгосрочности проекта является одним из ключевых факторов в принятии решении о необходимости автоматизации тестирования.
- Команда
Следует выяснить, каков будет состав команды SDET. Возможны два варианта:
- у заказчика уже есть свои специалисты по автоматизации тестирования и им нужны просто дополнительные руки. Здесь имеет место вариант подключения к уже существующей команде “на усиление”.
- заказчик начинает автоматизацию “с нуля” без имеющихся собственных специалистов в этой области. В этом случае условия работы представляются совершенно иными, нежели в первом варианте.
- Стенды
Необходимо сразу определиться, выстроен ли на проекте процесс CI/CD, кто займется настройкой окружения для тестирования (SDET или DevOps), стенды для тестирования и доступ к ним у участников команды.
Инструменты для разработки и тестирования
До старта процесса разработки тестового фреймворка нужно определиться с используемыми технологиями и языками.
Следует произвести анализ проекта и в зависимости от его особенностей и требований к автоматизации выбрать наиболее оптимальный стек. При этом нужно учесть и навык работы специалистов, которые будут поддерживать и развивать проект автоматизации с этим стеком.
Как оценить эффективность автоматизации
При реализации проекта можно собрать метрики эффективности автоматизации, чтобы впоследствии проанализировать их и рассчитать процент эффективности.
Собираемые метрики можно разделить на две ключевые группы. Это:
-
Количество часов, затраченных QA на прохождение тест-кейса.
-
Количество часов, затраченных SDET на автоматизацию (актуализацию) тест-кейса.
Упрощенная формула расчета выглядит как Кол. ч. QA / Кол. ч. SDET * 100%
Пример: если на проекте впервые внедрена автоматизация тестирования, то ожидаемая экономия времени и других ресурсов за год в среднем составляет 140-150%. При этом эффективность автоматизации нарастает пропорционально времени ее использования, в частности, до 240% к концу второго года.
Если показатель экономии ресурсов со временем начинает снижаться, мы рекомендуем провести аудит тестирования и автоматизации тестирования для выявления возможных проблем, ошибок и узких мест.
Для расчета эффективности автоматизации важно иметь источник достоверной информации о временных затратах на автоматизацию тестирования. В частности, источником данных может быть система таск-трекинга на проекте, такая как Jira.
Из практики
Рассмотрим пример одного из наших проектов, в котором было порядка 700 тест-кейсов, каждый из них проходили от 70 до 100 раз в год. У нас была возможность автоматизировать 75% кейсов, а остальные требовали проверки вручную.
Затраты времени:
- 30 часов при ручной проверке всех кейсов.
- 8 часов после автоматизации (ночной прогон тестов без участия человека).
Помимо ночного прогона, нам требовалось около 8 часов на проверку тех кейсов, которые невозможно было покрыть автотестами, и 6 часов – на анализ результатов автотестов и проверку отказов в случае необходимости. Таким образом, автоматизация тестирования позволила снизить затраты времени специалистов с 30 до 14 часов. В среднем, этот подход позволяет экономить как минимум от 30 до 50% времени и уделить больше внимания развитию и улучшению продукта.
Выводы
Сочетая ручное тестирование и автотесты, мы контролируем качество ПО. SDET-специалисты, как правило, необходимы при реализации крупных IT-проектов, в которых задействованы несколько команд, со сложными алгоритмами и бизнес-логикой. За счет автоматизации мы снижаем риски ошибок, недопустимые в условиях жесткого расписания релизов.
В разработке автотестов используем наиболее востребованные языки программирования – Java, Python, Kotlin и др. В числе технологий и инструментов, с которыми мы работаем, Appium, TestNG, JUnit, RobotFramework, Pytest, Selenium, Selenide, Allure Report, TeamCity, Jenkins, JMeter.