30 апреля 2021

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

Специалисты по автоматизации тестирования (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.

Понравилась статья?
Подпишитесь на рассылку SimbirSoft! Пришлём письма о лайфхаках в разработке, поделимся опытом управления командами и компанией, а также расскажем о новых ивентах SimbirSoft.

Другие статьи

Тендеры в IT: чек-лист по подготовке
21 октября 2022
Как интегрировать внутренние системы банка с 1С
23 сентября 2022
Как на самом деле должна работать политика в области качества
09 сентября 2022
Написать нам
Оставьте контакты, чтобы обсудить проект и условия
сотрудничества, или позвоните: 8 800 200-99-24
Оставьте свои контакты
SimbirSoft регулярно расширяет штат сотрудников.
Отправьте контакты, чтобы обсудить условия сотрудничества.
Порекомендуйте друга — получите вознаграждение!
  • Python-разработчик
  • Java-разработчик
  • Верстальщик
  • Full-stack developer (Node.js-React)
  • Системный аналитик
  • iOS-разработчик
  • Android-разработчик
  • DevOps Engineer
  • Менеджер по привлечению клиентов
  • Консультант 1С
  • Data Engineer
  • C++-разработчик
  • Middle Mobile QA Engineer
  • 1С-разработчик
  • DBA-разработчик
  • Архитектор Java
  • Архитектор 1С
  • SDET
Прикрепить резюме, до 10Мб
Файл выбран