Автоматизация тестирования на проекте: что важно учесть


Автор
Фарит
Фарит
Руководитель направления SDET

Специалисты по автоматизации тестирования (SDET, то есть Software Development Engineer in Test) помогают ускорить проведение тестов, а значит, быстрее выпускать свежие релизы IT-продукта. Как правило, это наиболее необходимо в масштабных приложениях с большим количеством бизнес-функций.


Рассмотрим, как бизнесу понять потребность в автотестах, с чего начать и как оценить эффективность результатов.

Когда на проекте нужна автоматизация

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

При создании IT-продуктов для бизнеса обычно сочетают два подхода:

  • осуществляют проверки вручную, с помощью специалистов по обеспечению качества (QA);

  • комбинируют ручное тестирование и автоматизацию отдельных тест-кейсов, смоук- и регрессионных тестов.

Как правило, мы привлекаем экспертов SDET для решения следующих задач:

  • Автоматизация рутинных и частых проверок, снижение нагрузки на QA-специалистов.

  • Контроль основных функций приложения и отслеживание изменений в продукте.

  • Возможность проводить тестирование с большим количеством мобильных устройств, версий браузеров и операционных систем.

  • Тестирование производительности приложения в условиях одновременной работы с большим количеством данных и пользователей.

Критерии автоматизации тестирования

Существует ряд признаков, указывающих на то, что пора задуматься о подключении SDET-специалиста на проект. Наличие их является своеобразными маркерами необходимости этого процесса.


Работы на проекте будут продолжаться минимум полгода


Если разработка проекта рассчитана на полгода и более, чаще всего за это время у команды накапливается некоторая база стабильного и неизменного функционала, тестирование которого можно автоматизировать.


Наличие продолжительных регрессионных тестов


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


Большое количество багов выявляется на поздних этапах тестирования


Внедрение автоматизации не решит такого рода проблемы на 100%, поскольку многое зависит от проекта и процессов на нем. Однако в данном случае у автотестов есть существенное преимущество – они могут запускаться в любое время, в том числе на этапе разработки. Это позволит выявлять возможные проблемы и ошибки раньше, чем задача будет передана в тестирование.


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


В данном случае автоматизация тестирования решит проблему человеческого фактора. Автотест выполняет каждый раз одинаковую последовательность действий и проверяет один и тот же ожидаемый результат. Кроме того, заполнение и генерация данных в автоматическом режиме выполняется в разы быстрее, чем в ручном.


Тест-кейсы в основном проверяют функциональное поведение, а не интерфейс и юзабилити


Автоматизация тестирования может принести положительные результаты при проверке функциональности, тогда как визуальное тестирование эффективнее проводить вручную.


Если есть проблемы с производительностью и\или стабильностью работы систем


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

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

С чего начинается автоматизация тестирования

После того, как решение о внедрении автоматизации принято, следует определить цель внедрения автоматизации тестирования, а также объект тестирования, ресурсы и процессы.

Наиболее частые цели автоматизации тестирования:

Сокращение 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.

Почувствуйте наш подход и повторите
успех наших клиентов

Напишите нам
ЕЛЕНА ДОДОНОВА
ЕЛЕНА ДОДОНОВА
МАКСИМ БЕЛЯКОВ
МАКСИМ БЕЛЯКОВ