![](https://habrastorage.org/getpro/habr/upload_files/45f/121/04c/45f12104c19118b68f48c186f4ff9bdc.jpg)
Максим Зоткин
Специалист отдела контроля качества в IT-компании Intelsy
Меня зовут Максим, и я cпециалист отдела контроля качества в компании Intelsy. Поскольку наша компания специализируется на разработке сайтов, сервисов, приложений, ПО узкой направленности, то задач у отдела QA много, и для каждой из них подбирается свой набор инструментов. Об этом и расскажу.
![](https://habrastorage.org/getpro/habr/upload_files/d9d/78d/b75/d9d78db75551d7aeab64a61fedc0396d.jpg)
Особенности автотестов, и чем они отличаются от обычного кода
Автотесты — это тесты, которые выполняет компьютер, а не человек. Внутри автотест — это тоже программа, цель которой — протестировать работу другой программы. По своей сути это скрипт, имитирующий поведение пользователя при эксплуатации программного продукта
Однозначным плюсом внедрения автотестов на проекте является сокращение времени на тестирование и сокращение возможности ошибки при тестировании человеком.
Из очевидных плюсов можно выделить главные:
-
скорость тестирования в разы выше по сравнению с ручной проверкой,
-
сокращение количества QA‑специалистов, необходимых для тестирования регрессов/релизов,
-
более точная проверка функционала, исключающая возможность ошибки,
-
исключение возможности «забыть» что‑то протестировать в регрессе,
-
возможность в нужное время запустить тестирование (в том числе и ночью),
-
информативный и понятный отчет о тестировании для всех отделов команды проекта.
В то же время у автотестов имеется и немало минусов, таких как:
-
время разработки самих автотестов,
-
необходимость поддержки уже написанных,
-
стоимость их разработки,
-
невозможность полностью покрыть все тестовые сценарии автотестами.
Для начала стоит определиться, какие тестовые сценарии стоит автоматизировать, а какие лучше оставить мануальным тестировщикам.
Автоматические тесты: когда стоит использовать, а когда — нет
![](https://habrastorage.org/getpro/habr/upload_files/6b0/53e/fd6/6b053efd689b6616e8a29d36971ef21b.jpg)
Стоит автоматизировать, если:
-
имеются высокие риски, и сбои недопустимы — крайне актуально для банковской сферы,
-
тестовые сценарии регулярно повторяются,
-
тестовые сценарии очень сложны и утомительны для выполнения вручную,
-
тестовые примеры отнимают много времени.
Не стоит автоматизировать, если:
-
это новые тестовые примеры, которые не выполнялись вручную ни разу,
-
требования к сценариям тестирования часто меняются,
-
тестовые примеры выполняются на разовой основе,
-
длительность выполнения тестовых сценариев слишком большая (например, долгое ожидание ответа на api‑запрос (от 2-х минут и более)).
Выбор инструмента для автоматизации тестирования
На рынке доступно множество инструментов для функционального и регрессионного тестирования. Выбор инструмента для тестирования обычно обсуждается на начальных стадиях проекта, при составления тест-плана и выборе подхода к будущему тестированию.
Можно выделить несколько самых часто встречающихся на рынке инструментов.
Ranorex Studio
Ranorex Studio — это бесценный инструмент для автоматизации тестирования функций пользовательского интерфейса, регрессий, тестов, управляемых данными, и многого другого. Этот комплексный пакет имеет удобный интерфейс для автоматизации тестирования веб-, настольных и мобильных приложений.
Testim
Testim позволяет обеспечить отказоустойчивость сквозных тестов двумя способами: без кодирования и/или с кодированием. Вы можете создавать стабильные тесты без кода с помощью искусственного интеллекта или экспортировать их в виде кода. Такие компании, как Microsoft, NetApp, Wix и JFrog, используют Testim при проведении миллионов тестов ежемесячно.
21 Labs
Это сложная самообучающаяся платформа автоматизации тестирования и аналитики для приложений iOS и Android.
QTP (MicroFocus UFT)
Широко используется для функционального и регрессионного тестирования, касается всех основных программных приложений и сред. Чтобы упростить создание и обслуживание тестов, в нем используется концепция тестирования, управляемого ключевыми словами. Это позволяет тестировщику создавать тестовые примеры прямо из приложения.
Rational Functional Tester
Этот инструмент широко используется для функциональной и регрессионной оценки и подходит для всех основных программных пакетов и настроек. Для упрощения формирования и сопровождения тестов в нем применяется концепция тестирования по ключевым словам. Это позволяет тестировщику создавать тестовые случаи непосредственно из программы.
Watir
Это программное обеспечение с открытым исходным кодом для регрессионного тестирования, которое делает написание, чтение и поддержание тестов простым и понятным. В Windows он работает только с Internet Explorer, однако веб-драйвер Watir может работать с Chrome, Firefox, IE, Opera и т. д.
Selenium
Это инструмент, используемый для регрессионного тестирования, с открытым исходным кодом, который предоставляет возможность записи и воспроизведения.
Особенности:
-
обеспечивает возможность экспорта записанного скрипта на другие языки, такие как Java, Ruby, RSpec, Python, C# и т. д.,
-
можно использовать с такими фреймворками, как JUnit и TestNG,
-
может выполнять несколько тестов одновременно,
-
работает автозаполнение для общих команд Selenium,
-
выполняет пошаговые тесты,
-
идентифицирует элемент с помощью идентификатора, имени, X‑пути и т. д.
-
хранение тестов как Ruby Script, HTML и в любом другом формате,
-
предоставляет возможность утверждать заголовок для каждой страницы,
-
поддерживает файл selenium user‑extensions.js,
-
позволяет вставлять комментарии в середину скрипта для лучшего понимания и отладки.
Исходя из открытой статистики на большинстве ресурсов, Selenium используют около 70% опрошенных инженеров по автоматизированному QA.
Разберем Selenium подробнее
Selenium — это бесплатный пакет с открытым исходным кодом для организации тестирования с поддержкой основных языков программирования. Он используется в разных браузерах и операционных системах, включая мобильные платформы.
Преимущества
-
WebDriver: гибкий инструмент тестирования, удобно сочетающийся с различными тестовыми фреймворками и другими программами тестирования ПО.
-
Расширенный инструментарий тестирования.
-
Проект и приложения могут быть использованы для узкого спектра задач, таких как web crawling и тестирование производительности.
-
Широкое распространение. Появившись в 2004 году, Selenium получил широкое применение в крупных организациях, таких как Google.
-
Гибкость в использовании и выборе языка, платформы, браузера.
-
Selenium Webdriver построен на утвержденном веб‑стандарте W3C WebDriver.
-
Большая поддержка сообщества.
-
Selenium, будучи продуктом со стажем, уже успел решить многие проблемы. Каждые три месяца выходят минорные обновления, а разработчики активно предлагают свою помощь.
-
Поддержка параллельного запуска тестов (Selenium Grid).
-
Поддержка различных плагинов (Selenium IDE — один из самых популярных, используется для записи мануальных тестов с целью создания автоматических).
-
Поддержка мобильных устройств.
Недостатки
Они у проекта тоже имеются. Пример: Selenium не поддерживает функции тестирования сетевых и десктопных приложений по умолчанию. Можно «проверять» только веб-программы. А для того чтобы полноценно работать с Selenium, потребуется разобраться с навыками программирования и написания скриптов. Новичкам данный продукт не подойдет: он слишком сложный и требует углубленных знаний.
![По сути писать можно на чем угодно (хоть на Ruby), так почему же Java? По сути писать можно на чем угодно (хоть на Ruby), так почему же Java?](https://habrastorage.org/getpro/habr/upload_files/ae2/3f9/282/ae23f9282e6aba1cc260157365cf40e7.jpg)
Почему Java выбрало большинство?
Язык программирования Java занимает большую часть рынка и предоставляет больше 30 тысяч рабочих мест для разработчиков. Поскольку Java является широко используемым языком в IТ-индустрии, существует огромное сообщество, поддерживающее его. Крупные компании, такие как Amazon, Ebay, PayPal и другие высоко ценят Java. Еще немного фактов в пользу Java.
Вот еще несколько преимуществ, которые дает Java:
-
Более 75% QA-инженеров Selenium используют Java.
-
Java — язык, работающий на виртуальной машине Java (JVM). Это означает, что он не зависит от платформы: независимо от того, какую операционную систему вы используете, ваш код будет работать при условии, что JVM установлена.
-
Java также является статически типизированным языком, а это значит, что интегрированная среда разработки (IDE) окажет вам большую помощь в поиске и исправлении ошибок в вашем коде. Это большое преимущество для начинающих тестировщиков.
Идеальное сочетание Java Unit с Selenium WebDriver может расширить возможности автоматического тестирования. Существует множество важных для тестирования фреймворков, разработанных с использованием Java, поэтому это один из наиболее подходящих тестовых скриптовых языков. Здесь нельзя не отметить Amazon Web Services (AWS). Java-приложения на AWS имеют следующие преимущества: библиотеки создают благоприятную среду для пользователей и разработчиков своей надежностью, Java хорошо сочетается с Eclipse, IntelliJ IDEA и т.д.
Java имеет уникальные характеристики, такие как многопоточность, независимость платформы, безопасность и ориентация объектов. Эти преимущества помогают запускать веб-приложения на основе Java на различных сервисах AWS. В общем, написание тестов или сценариев будет проще, если вы знаете Java.
В дальнейшем, с развитием в автоматизации, можно перейти с Java на другой язык программирования. Имея базу Java, сделать это будет гораздо проще.
Язык Java используется для поддержки массивных корпоративных систем. Около 3 миллиардов устройств по всему миру функционируют именно на работах данного языка. Процедуру автоматизированного тестирования можно выполнять на основе JUnit с Selenium Web Driver.
Естественно, язык имеет как положительные, так и негативные моменты. Из положительного можно отметить наличие PageFactory, который упрощает программный код для автоматизированных тестов. Java обладает внушительным сообществом, а значит, найти ответы на вопросы не представляет большой сложности. Из негативных моментов можно отметить только тот факт, что такой программный код читается немного сложнее, чем на Python.
Какие плюсы можно выделить у Python?
Этот язык кода отлично подходит для автоматизации тестирования ПО. Обладает открытым кодом, подходит для машинного обучения. Он может стать отличной отправной точкой для новичков в области автоматизации тестирования, поскольку является высокоуровневым и динамичным.
Преимущества
-
Является языком общего предназначения.
-
Наличие внушительной внутрисистемной библиотеки позволяет выполнять как сложные, так и простые задачи. PyUnit and Pytest является наиболее востребованным ПО для процесса автоматизации на Python.
-
Данный язык программирования по праву считается наиболее лаконичным, а значит, дает возможность добиться поставленной цели с минимальным количеством строк.
-
Содержит внушительное сообщество и открытый исходный код.
Язык программирования Python является базовым в большинстве университетов наравне с Pascal. Соответственно, даже человек, не являющийся разработчиком, скорее всего, уже с ним знаком в той или иной мере.
Немного о JavaScript и C#
Согласно исследованиям Stack Overflow Developer, именно JavaScript занял почетное первое место в категории «Наиболее популярная виртуальная технология». JS по праву считается наиболее качественным языком современного программирования под цели автоматизации тестирования ПО, который в большей степени используется front-end разработчиками.
Можно задаться вопросом, что же особенного в этом языке? Ответ прост: он использует методологию поэтапного тестирования (англ. shift-left testing), при которой программисты непосредственно участвуют в создании тестового кода.
Такая методика позволяет выстраивать тесное сотрудничество между отделами тестирования и разработки, что обеспечивает качественное автоматизированное тестирование текущих проектов.
Дополнительно стоит отметить массу полезных фреймворков, которые поддерживает язык JS и которые помогают создавать практичные юнит-тесты под любые цели:
-
Jest,
-
Mocha,
-
Jasmine,
-
Nightwatch.js.
C# — ещё один подходящий язык для начала карьеры в автотестировании. Начиная с 2016 года благодаря платформе .NET Core, основанной на концепции “create once, run anywhere”, С# является кроссплатформенным языком программирования, что позволяет применять его для ОС Windows, Linux, MacOS, Android, iOS и других систем.
Используя C# как основной язык программирования, можно с легкостью написать автоматизированные тесты для любого приложения, для UI отлично подойдет Selenium WebDriver и Playwright, для API — RestSharp, а для мобильной автоматизации — Appium.
Если нужно создать тестовые сценарии на понятном для бизнеса языке C#, можно использовать Gherkin-синтаксис и SpecFlow как основную библиотеку для автоматизации тестовых сценариев, таким образом следуя поведенческому подходу в тестировании приложений.
Так какой же выбрать язык для разработки автотестов на своём проекте?
Однозначно правильным выбором станет Java. И вот почему:
-
количество созданных под Java фреймворков на порядок больше, чем у других;
-
большое количество новых разработок для данного языка;
-
простота написания и чтения автотестов;
-
строгая типизация языка не позволяет написать код неправильно и непонятно для других разработчиков;
-
для компании намного проще будет найти специалиста, причем любого грейда (специалистов на Java буквально больше остальных);
-
возможность выбирать из большого количества специалистов на рынке того самого, который будет подходить компании, а не выбирать первого попавшегося от безысходности;
-
переучить специалиста с Python/JS/C# на Java не займет много времени, язык прост в понимании;
-
большая база знаний по практически любой ситуации и проблеме, с которой может столкнуться разработчик при написании автотестов, есть как на официальном сайте, так и на различных тематических;
-
можно привлечь, при необходимости, к написанию небольшого количества автотестов Java-разработчика;
-
можно использовать CUCUMBER, делающий автотесты понятными буквально любому члену команды, даже не знакомому ни с каким языком программирования.
При написании достаточно большого количества автотестов на непопулярном языке можно столкнуться со следующими проблемами:
-
переписать на популярный язык будет очень сложно, дорого, трудозатратно;
-
найти новых специалистов на проект будет довольно сложно;
-
время на написание и поддержку существующих автотестов значительно выше.
Ссылки на ресурсы со статистикой, используемой в статье (данные усреднены из всей выборки):
ссылка на оригинал статьи https://habr.com/ru/articles/749322/
Добавить комментарий