Свяжитесь с нами
Спасибо

Мы получили заявку и свяжемся с вами в ближайшее время

ВЕРНУТЬСЯ НА ГЛАВНУЮ
Свяжитесь с нами
Ошибка

Не удалось отправить заявку, повторите позже

ПОПРОБОВАТЬ ЕЩЁ РАЗ
Быстрый старт: как автоматизировать...
ВРЕМЯ ЧТЕНИЯ
~13 мин.
1252

Быстрый старт: как автоматизировать тестирование

Automation Lead департамент eCommerce
ГК «КОРУС Консалтинг»

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

Проверить, качественный ли продукт и соответствует ли он ожиданиям, можно вручную или с помощью автоматизации тестирования. В первом случае QA-инженер воспроизводит действия пользователя и фиксируют ошибки, если таковые имеются. 

Во втором случае запуск, анализ, выдача результата происходят автоматически, с использованием ПО. ИТ-специалист лишь обрабатывает собранную информацию. Поэтому автоматизация тестирования — это своего рода инструмент оптимизации процессов. 

Рассказываю подробнее про автоматизацию тестирования в статье. 

 

Как работает автоматизированное тестирование

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

 

Автоматизация тестирования имеет четкий алгоритм действий:

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

  2. Потом специалист собирает комбинации информации на «вход» и «выход», которые будут в идеальной ситуации. Эти данные нужны ему для автоматизированного тестирования.

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

  4. После того, как проверочные сведения готовы, разработчик «упаковывает» эти данные в код, пишет тест. Эта программа будет «наблюдать» за тем, как продукт реагирует на разную информацию.

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

Каким бывает автоматизированное тестирование

Автотесты можно условно разделить на три типа: интеграционные (API), модульные (Component+Unit) и системные (end-to-end, UI/API).

Цель модульных тестов – убедиться в исправности отдельно взятых функций в рамках одного модуля, из которых построено программное обеспечение. Как правило, такие проверки занимают считанные секунды. Системные тесты нужны для проверки приложения в целом. Их задача — убедиться, что модули решения соединены между собой правильно. Также с помощью системных тестов проверяют функции регистрации, биллинга и оформления заказа – части приложения, которые ни в коем случае не должны сломаться. Длительность таких тестов – от десятка секунд до нескольких минут. Нужно только запустить решение, загрузить его в эмулятор или веб-браузер и «пощёлкать» сценарии.

Интеграционные тесты нужны для проверки функциональности, которую невозможно сделать с помощью модульного теста, а использовать системный – излишне.

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

пирамида тестирования

Чтобы ИТ-решение имело быструю, гибкую тестовую базу, нужно, чтобы её преобладающую часть составляли модульные тесты, далее – интеграционные, и самая маленькая доля – системные.

Как это работает в действительности? Представьте, что вам нужно добавить функцию комментариев к изображениям. Если проверите всё только системными тестами, вы получите очень медленную тестовую базу: проверка любой правки в коде будет занимать минуты. И наоборот, если протестируете только модульными, увидите, что из-за ошибки на стыке модулей нужная вам функция не работает, хотя тесты проходят.

Плюсы автоматизированного тестирования

Плюсы автоматизированного тестирования


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

  • Идентификация ошибок в коде на первых этапах разработки. Команда может сразу устранить эти проблемы без чрезмерного расхода ресурсов.

  • Локализация ошибок. «Низкоуровневое» автоматизированное тестирование помогает как можно точнее указать на причину проблемы.

  • Высокая скорость разработки продуктов. Программист может написать код одного из компонентов приложения и проверить корректность его работы при отсутствии остальных элементов системы, например, UI.

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

Особенности автоматизированного тестирования

Ручное тестирование в некоторых компаниях и правда перестаёт существовать и остаётся только в тонкой прослойке исследовательского тестирования. Однако, при переходе на автоматизированное тестирование, нужно иметь ввиду некоторые моменты:

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

  • Ресурсы на разработку. Поскольку автоматизация тестирования — это ПО, на его написание тоже нужны специалисты и время. 

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

  • Наличие навыков программирования. Несмотря на то, что на рынке есть инструменты, которые упрощают работу тестировщика, без опыта в программировании обойтись по-прежнему сложно. 

Что выбрать: ручное или автоматизированное тестирование

ручное или автоматизированное тестирование

Ручное тестирование будет лучшим решением, если вы:

  • еще в процессе осознания функциональности вашего продукта;

  • нуждаетесь в проверке юзабилити и верстки; 

  • хотите локализовать и описывать возникающие проблемы; 

  • быстро проводите ручные тесты, а их количество совсем небольшое; 

  • не обладаете нужными бюджетом и временем на автоматизацию тестирования. 

Автоматизированное тестирование рекомендуется к внедрению в случаях, когда у вас:

  • много ручных тестов и нет времени на постоянную проверку всего регресса; 

  • проходит много времени между обнаружением ошибки и ее исправлением; 

  • подготовка к тестированию – формирование данных и настройка конфигурации – требует много времени; 

  • требуется поддержка старых версий софта – нужно проверять новые сервис-паки и патчи;

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

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

Как автоматизировать тестирование

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

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

2. Рассчитывайте окупаемость вложений в автоматизацию тестирования, фиксируйте метрики и старайтесь делать это регулярно. Цель – определить, действительно ли вам нужна автоматизация этого процесса, и необходимость в этом отпала, корректировать план работ.

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

4. Пропишите, что вы ожидаете получать в логах. Это поможет сформировать у вас и вашей команды доверие к инструменту и понимание его полезности в конкретном проекте.

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

6. Позаботьтесь, чтобы вся проектная команда понимала, как работает автоматизация тестирования. Это важно в случае, если автотест “упадет” и нужно будет перепроверить вручную. Для таких случаях пропишите четкую инструкцию, а если работаете с командой на аутсорсинге, запросите такой пошаговый алгоритм действий. 

7. Автоматизированное тестирование – это такой же софт, как и прочие ИТ-продукты. Поэтому нанимайте разработчиков, в чьей квалификации вы уверены – от их профессионализма зависит эффективность приложения, его архитектура и то, насколько легко его можно будет поддерживать в актуальном состоянии.

8. И самое главное – придерживайтесь пирамиды тестирования. Разработайте побольше низкоуровневых автотестов и буквально считанное количество UI.

Как выбрать инструмент автоматизации

Рынок решений для автоматизированного тестирования очень широк, и у каждого своя направленность. От правильности выбранного инструмента зависит результат: он может быть провальным или, наоборот, может стать прорывом. Вот несколько важных рекомендаций, которые помогут  определиться с ИТ-решением.

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

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

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

  • Скорость. Продукты становятся сложнее, а значит, командам важна скорость проведения автоматизированного тестирования. 

  • Бесшовная интеграция CI/CD. Этот пункт приобрел особую важность с ростом популярности гибких процессов разработки (например, Devops). Поэтому , чтобы убедиться в работоспособности критически важных функций ИТ-продукта, программисты проводят автоматизированное тестирование при каждом изменении кода. И интеграция помогает это обеспечить.

Популярные инструменты автоматизированного тестирования

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

Selenium

selenium

  • Подходит для QA-инженеров c продвинутыми навыками программирования и написания скриптов.

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

  • Можно писать скрипты на нескольких языках: Java, PHP, C#, RubyPython, Groovy, Python, Ruby, Perl.

  • Работает в самых известных операционных системах (Windows, Linux, Mac) и браузерах.

  • Основной недостаток системы – необходимость тратить много времени на создание фреймворков и библиотек. 

SoapUI

SoapUI
  • Не подходит для автоматизированного тестирования мобильных или веб-приложений – идеален для API и сервисов.

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

Postman

Postman
  • Прекрасно подходит для разработки и тестирования API. Имеет широкую функциональность для документирования, отладки, публикации.
  • Можно пользоваться в формате расширения для браузера или как самостоятельным приложением на наиболее популярных ОС.
  • Имеет простой и удобный интерфейс.
  • Поддерживает исследовательское и автоматизированное тестирования.

Apache JMeter

Apache JMeter
  • Имеет открытый исходный код.

  • Позволят протестировать нагрузку и производительность приложений. Подходит для тестирования API и сервисов.

  • Поддерживает CSV-файлы, которые нужны для установки значений для параметров API.

  • Легко интегрируется с инструментами CI. Поэтому часто используется программистами в качестве компонента цепочки решений DevOps и CI.

  • Есть функция перезаписи результатов автоматизированного тестирования.

Cypress

Cypress
  • Относительно новый инструмент тестирования, но уже так сильно любимый многими QA-инженерами и разработчиками.

  • Имеет открытый исходный код.

  • С его помощью можно протестировать все, что работает в браузере. 

  • Хоть тесты системы созданы на JavaScript, работа с командами интуитивно понятна любому программисту.

  • Удобно использовать для всех видов тестирования.

Protractor

Protractor

  • Это фреймворк, который создан с учетом требований к ИТ-продуктам с поддержкой Angular JS. При этом он прекрасно работает и с non-Angular JS приложениями, что дает ему значительные преимущества перед конкурентными инструментами.

  • Подходит для проверки веб-приложений, которые сочетают в себе технологии Node.js, Selenium Webdriver, Jasmine и многие другие.


Puppeteer


Puppeteer

  • Это библиотека Node.js с открытым исходным кодом. Разработка Google, поэтому инструмент поддерживает любые действия в Google Chrome. 

  • А для тех, кто не работает с Chrome stalwarts, есть хорошие новости: Mozilla тоже использует Puppeteer в Firefox.

Appium


Appium
  • Инструмент с открытым исходным кодом.

  • Предназначен для тестирования мобильных приложений для iOS и Android.

  • Универсален: автоматизирует приложение с любого языка и фреймворка.

  • Не требует SDK или перекомпиляции приложения.

WebdriverIO


WebdriverIO

  • Имеет собственный подход в использовании возможностей Selenium WebDriver. 

  • Обладает читаемым и очень простым синтаксисом.

  • Имеет гибкую и легко расширяемую библиотеку для Node.js.

  • У решения есть активное сообщество разработчиков, которые пишут расширения и плагины.


Robot Framework

  • Keyword-driven фреймворк

  • Можно загрузить различные библиотеки, например, SeleniumLibrary.

  • Поддерживает веб и мобайл: работает с большинством известных браузеров и устройствами на Android и iOS.

  • Есть возможность задавать тэги автоматизированным тестам.

  • Автоматическое создание отчетов, без дополнительной команды. Более того, можно объединить результаты нескольких прогонов.

***

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


А если вы ещё не до конца определились, автоматизировать ли тестирование у себя, напишите нам на адрес omni@korusconsulting.ru или заполните форму ниже, и мы посчитаем для вас все за и против.

Закажите бесплатную консультацию эксперта



Подпишитесь на наши обновления

Раз в месяц присылаем полезные материалы и новые статьи из блога.

Некорректно заполнен e-mail

Читайте также

Как продать Agile заказчику и избежать очевидных проблем ~ 5 мин. 13 июля 2021
E-COMMERCEТРЕНДЫ
Анастасия Гусакова
От монолита к микросервисам: как перейти без рисков ~ 13 мин. 24 июня 2021
E-COMMERCEТЕХНОЛОГИИТРЕНДЫ
Сергей Рабинович
Шире круг: кто и зачем создаёт цифровые экосистемы ~ 7 мин. 29 апреля 2021
OMNICHANNELСТРАТЕГИЯCUSTOMER EXPERIENCE
Ульяна Кутаёва
Подпишитесь на наши обновления

Раз в месяц присылаем полезные материалы и новые статьи из блога.

Некорректно заполнен e-mail


наверх