Блог

Все статьи

Автоматизируем тестирование: когда, зачем и кому это нужно

Автоматизированное тестирование, в отличие от ручного, упрощает процесс выявления багов с помощью специальных программ, чем сокращает затраты и время на цикл тестирования.

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

Задачи автоматизации

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

Автоматизация нужна для того, чтобы:

  • Заменить трудоемкое ручное тестирование рабочих процессов и множества сценариев
  • Исключить ошибки вследствие «человеческого фактора»
  • Обеспечить прозрачный контроль над процессом тестирования
  • Сократить затраты при повторно используемых скриптах
  • Получить точные и надежные результаты испытаний
  • Сократить время выхода готового продукта на рынок
  • Улучшить процесс разработки (Continues Integration)

Когда нужно автоматизировать

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

Если проект большой, растет, в его составе несколько подсистем и «ручные» тест-кейсы уже насчитывают несколько сотен, автоматизация позволит повысить продуктивность тестировщика, который не будет затрачивать недели на проверку тест-кейсов.

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

Автоматизация процессов тестирования будет особенно актуальной, если продукт соответствует следующим критериям:

  • Сценарии регулярно повторяются
  • Сценарии трудоемки, сложны и не подходят для ручной проверки
  • Проверка тест-кейсов занимает много времени
  • Сценарии для высоконагруженных приложений (High-load applications)

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

Что автоматизировать

Конечный продукт состоит из большого количества функционала и процессов, которые обеспечивают его работу. Чаще всего автоматизируют:

  • Back-end процессы и сервисы
  • API
  • Запись логов
  • Работу баз данных
  • Часто используемые опции и инструменты сайта, приложения, ресурса: формы регистрации, системы онлайн-оплат и т.п.
  • Автоматизацию заполнения полей, сохранение и проверку
  • Валидацию вводимых данных
  • Хранение и целостность данных

Какие типы тестирования можно автоматизировать

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

Рассмотрим типы тестирования, которые рекомендуется автоматизировать.

Тестирование производительности (нагрузочное, стрессовое, объемное) проводится с целью проверки работоспособности продукта в условиях, максимально приближенных к реальным, с ожидаемыми нагрузками и объемом данных. Например, нужно проверить работу сайта при большом трафике пользователей, который может повлиять на скорость загрузки и работу отдельных модулей. ТП автоматизируется в первую очередь, так как мануальные тестировщики не могут искусственно создать условия, которые будут имитировать реальные ситуации для выявления дефектов кода.

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

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

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

Интеграционное тестирование применяется для групповых тестов, которые объединяют программные модули, созданные несколькими программистами. Например, нужно проверить как взаимодействует модуль корзины в интернет-магазине и платежный модуль. Кроме этого, ИТ проверяет работу системы в сочетании с внепроцессными зависимостями (управляемыми и неуправляемыми). Результат автоматизации интеграционных тестов — надежная защита от сбоев и отсутствие необходимости переработки кода.

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

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

Если АТ уже было настроено, была проведена предварительная работа, есть результаты в виде тест-планов и кейсов, подобраны инструменты — тогда стратегия базируется на поэтапном движении вперед, автоматизируя модуль за модулем и обновляя цели на каждой новой стадии.

Как проходит процесс автоматизации тестов

Рассмотрим работы поэтапно:

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

Второй этап. Определяем объем автоматизации. Объемы зависят от того, какая выработана стратегия продукта. Если это основной продукт, то лучше обеспечить максимальное покрытие автоматическими тестами. Если это прототип, то здесь большую роль играют сроки, а не качество продукта.

Третий этап. Разрабатываем стратегию и план автоматизации. Для этого проектируется инфраструктура для автоматизации (подготавливаются необходимые стенды), утверждается график запуска сценариев. Перед запуском автоматических тестов идет подготовка тестовых данных. После выполнения тестов, анализа отчета испытаний и фиксации ошибок идет отслеживание, исправление и повторное тестирование.

Четвертый этап. Обслуживаем тесты для проверки качества автоматизации. Это необходимо для повышения эффективности уже существующих сценариев и при разработке новых.

Инструменты для автоматизации

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

При их выборе важную роль играет наличие таких функций:

  • Простота использования и интуитивно понятный интерфейс
  • Встроенная поддержка основных типов тестирования – производственное, регрессионное, функциональное и т.п.
  • Легкость в отладке и поддержке сценариев
  • Формирование информативных отчетов о тестировании

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

Selenium

Selenium предназначен для тестирования сайтов и веб-приложений на разных операционных системах и браузерах. Его преимущество в том, что тестировщики могут выбирать свой язык программирования для написания тестов. Среди основных: Python, Perl, PHP, Java, C# и др.

TestingWhiz

Данный инструмент позволяет наладить автоматизированное тестирование для веб-продуктов и мобильных приложений, ПО, баз данных, программных интерфейсов приложений (API). Среди тестов поддерживается регрессионное и кроссбраузерное тестирование.

HPE UFT

Лицензированный инструмент от Hewlett Packard. Предназначен для функционального тестирования программных приложений. Имеет встроенный механизм обработки багов, распознает смарт-объекты, контролирует создаваемый текст скрипта непосредственно во время действий пользователя.

JMeter

Создавался для тестирования веб-приложений, но сегодня его функционал позволяет проводить нагрузочное тестирование для таких соединений как FTP, HTTP, JDBC, POP3, LDAP и др. С его помощью можно создать группу запросов сразу с нескольких ПК. Результаты тестов оформляются с использованием инфографики.

TestComplete

Платформа от компании SmartBear Software, в которой настроена автоматизация десктопных и мобильных продуктов с поддержкой таких языков: C ++ Script, Python, C# Script, JavaScript, DelphiScript, JScript, VBScript.

TestNG

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

Sahi

Инструмент для автоматизированных тестов мобильных приложений, написанный на Java и JavaScript. В платформу встроена поддержка таких фреймворков как Dojo, ExtJS, YUI и др. Одной из функций является кроссбраузерное тестирование.

Ranorex

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

Webload

Платформа для автоматизации тестирования с широким функционалом с возможностью нагрузки от Amazon EC2 в случае облачного тестирования. Формирует более 80 вариантов (на выбор) отчетов с использованием инфографики.

Postman

Программа предназначена для создания и тестирования работы программных интерфейсов приложений (API) и веб-сайтов, а также для отправки запросов на сервер. Благодаря графическому интерфейсу можно легко настраивать все необходимые данные для проведения тестов.

Резюме

Подводя итоги, отметим, что не все проекты нуждаются в полной автоматизации. Некоторым компаниям эффективнее и экономически выгоднее работать с «ручным» тестированием, ускорив его написанием дополнительных скриптов. Автоматизация во многих проектах сочетается с налаженной работой QA специалистов.

Когда нужна автоматизация:

  • При разработке масштабного приложения, ПО или сайта с большим набором функций
  • Для долгосрочных проектов
  • При внедрении CI/CD, выпуске регулярных релизов

Преимущества автоматизации:

  • Оптимизация затрат
  • Ускорение процесса тестирования
  • Повышение качества ПО
  • Сокращение времени и ресурсов на проведение тест-кейсов
  • Повышение эффективности работы команды
  • Широкое тестовое покрытие
  • Поддержка и обновление автотестов

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