Далеко не всегда необходимо создавать собственную среду автоматизации тестирования. В большинстве случаев гораздо проще рассмотреть один или несколько доступных вариантов с открытым исходным кодом.
В целом фреймворк представляет собой набор рекомендаций, предположений, общих инструментов и библиотек, которые вы можете использовать в разных командах. Он поможет адаптировать ваш код автоматизации тестирования для повторного использования, сделать его удобным в обслуживании и стабильным – и убережет ваш бизнес от дорогостоящих дефектов. Ведь даже незначительные ошибки могут привести к серьезным проблемам.
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
Существующие инструменты и библиотеки с открытым исходным кодом удовлетворяют большую часть потребностей без создания собственных фреймворков и, в большинстве случаев, с лучшими результатами.
Хотя использование таких инструментов считается весьма удобным, чем создание собственного фреймворка с нуля, иногда их бывает недостаточно. Как только вы поймете, как выбрать правильный инструмент автоматизации тестирования для каждой роли в вашей организации, вы можете в конечном итоге использовать сочетание коммерческих инструментов и инструментов с открытым исходным кодом.
Тестирование за пределами графического интерфейса
Важная область, которую большинство людей забывают учесть при поиске системы автоматизации тестирования, – это возможность тестирования API. Поскольку интеграционные/API тесты обходят пользовательский интерфейс, они, как правило, быстрее и намного надежнее, чем тесты GUI.
Вот почему так необходимо иметь набор тестов, который проверит несколько различных уровней вашего приложения. Для этого вам нужны инструменты, которые могут тестировать как UI, так и не-UI компоненты.
Поэтому перед тем, как создавать свой собственный фреймворк, обязательно ознакомьтесь с этими вариантами для автоматизации тестирования с открытым исходным кодом.
Serenity
Если вы ищите платформу на основе Java, который интегрируется с разработкой на основе поведения BDD, такими как Cucumber и JBehave, то Serenity BDD (ранее Thucydides) – именно то, что вам нужно. Он разработан специально для упрощения написания автоматизированных приемочных и регрессионных тестов.
Этот инструмент также позволяет поддерживать сценарии тестирования на высоком уровне, и в то же время вносит в отчеты детали реализации более низкого уровня.
Serenity действует как обертка поверх Selenium WebDriver и инструментов BDD. Она облегчает написание BDD- и Selenium-тестов, поскольку абстрагируется от большей части шаблонного кода, который иногда приходится писать для начала работы.
В Serenity также есть множество встроенных функций, таких как управление WebDriver, управление состоянием между шагами, создание скриншотов, параллельный запуск тестов, интеграция с Jira и многое другое – и все это без необходимости написания строчек кода.
Предоставление подробных отчетов
Serenity создает очень подробные отчеты. По умолчанию он создает живую документацию, которую вы можете использовать не только для просмотра результатов теста Selenium BDD, но и для документирования вашего приложения.
В нем также есть дополнительный метод аннотации “@Step”. При правильном использовании он дает вам дополнительный уровень абстракции, который делает ваши тесты более пригодными для повторного использования и обслуживания.
Недавно в Serenity добавили интеграцию с REST Assured, популярной Java-библиотекой с открытым исходным кодом для тестирования RESTful API. Она создает еще одну оболочку вокруг REST Assured, которая обеспечивает бесперебойную работу тестов Serenity Selenium. А потрясающая функция отчетов Serenity также включает информацию REST, что означает, что вы можете легко просматривать и проверять все детали запросов и ответов в своих отчетах о тестировании без необходимости явного добавления какого-либо дополнительного кода регистрации.
Serenity заботится о многих вещах, которые обычно приходится писать с нуля, если вы создаете свой собственный BDD-фреймворк. Это один из лучших инструментов с открытым исходным кодом, который многие используют для повседневной работы по автоматизации тестирования.
Serenity также создала версию на JavaScript под названием SerenityJS. Поскольку многие front-end разработчики также принимают участие в тестировании, JavaScript-версия инструмента автоматизации тестирования очень актуальна.
Cypress
По сравнению с большинством других инструментов в этом списке, Cypress – это более ориентированная на разработчиков система автоматизации тестирования, которая фокусируется на том, чтобы сделать разработку на основе тестирования (TDD) реальностью для разработчиков. Один из принципов его дизайна заключался в том, чтобы иметь возможность упаковать и связать все вместе, чтобы сделать сквозное тестирование простым и приятным.
Архитектура Cypress отличается от Selenium; в то время как Selenium WebDriver работает удаленно вне браузера, Cypress работает внутри него.
Такой подход обеспечивает более стабильные результаты, поскольку Cypress понимает все, что происходит в браузере и за его пределами. Кроме того, он предоставляет встроенный доступ к каждому объекту, не требуя от вас сериализации объектов или протоколов передачи данных. По сути, вы загружаете свое приложение в Cypress.
В результате этот инструмент может синхронно уведомлять вас обо всем происходящем внутри браузера, чтобы у вас был собственный доступ к каждому элементу распределенной объектной модели (DOM).
Cypress также позволяет легко добавить отладчик в ваше приложение, что, в свою очередь, упрощает использование инструментов разработчика во время разработки.
Robot Framework
Если вы хотите использовать Python для автоматизации тестирования, выбирайте Robot Framework. Этот продукт, созданный специально для тестировщиков, использует подход, основанный на ключевых словах, чтобы сделать тесты простыми и читабельными. Он включает в себя множество тестовых библиотек и других инструментов для использования.
Robot Framework основан на Python, но вы также можете использовать Jython (Java) или IronPython (.NET).
Хотя библиотека Selenium WebDriver может быть наиболее часто используемой внешней тестовой библиотекой, Robot Framework может тестировать и другие вещи, помимо веб-сайтов, такие как FTP, MongoDB, Android и Appium. В дополнение к этому у него есть множество API-интерфейсов, которые помогают сделать его максимально расширяемым.
Подход с использованием ключевых слов, применяемый в Robot Framework, отлично подходит для тестировщиков, которые уже знакомы с другими аналогичными инструментами тестирования, что значительно облегчает им переход на открытый исходный код.
Если ваша команда состоит в основном из тестировщиков, Robot Framework – отличный вариант для автоматизации.
TestProject.io
Вам нужен совершенно бесплатный инструмент автоматизации, который упростит тестирование мобильных и веб-приложений?
В таком случае вам определенно стоит обратить внимание на TestProject.
Платформа TestProject была создана, чтобы позволить большему количеству тестировщиков и организаций воспользоваться преимуществами двух основных инструментов автоматизации с открытым исходным кодом: Selenium и Appium.
Уникальность TestProject заключается в дополнениях, которые позволяют каждому человеку получать доступ к тестам, которые разработчики могут дополнять собственным кодом. Это своего рода строительные блоки автоматизации тестирования, которые могут оптимизируют процесс и могут быть повторно использованы другими.
В инструмент также входят другие функции, такие как умная записная книжка, которая переводит каждый ваш шаг в тест, редактор тестов, вывод экрана мобильного телефона, глобальная сетка автоматизации и многое другое.
Если ваши команды состоят в основном из тестировщиков без опыта программирования, TestProject.io – это то, что стоит попробовать.
Sahi
Разработанный для тестирования веб-приложений, Sahi предлагает как версию с открытым исходным кодом, так и профессиональную версию. Он работает как прокси-сервер, который можно использовать в браузере. На приборной панели Sahi можно выбрать и запустить браузер, который необходимо протестировать.
Контроллер Sahi поможет вам записать и зафиксировать взаимодействие, которое вы хотите выполнить с приложением. Например, когда вы наводите курсор на любой элемент в браузере Sahi, отображаются все действия, которые можно выполнить с этим элементом.
Вы также можете использовать контроллер для воспроизведения сценария. Функции записи и воспроизведения Sahi упрощают начало работы с автоматизацией тестирования простых HTML-приложений.
Однако не всегда стоит полагаться на запись и воспроизведение; этот подход оказался неудачной практикой для создания сопровождаемых, надежных автотестов. Он подходит для создания начального теста, но его нужно будет настроить, чтобы сделать надежным и поддерживаемым.
Galen Framework
Если ваши усилия по автоматизации сосредоточены на дизайне взаимодействия с пользователем (UX) или тестировании макетов, Galen Framework идеально подойдет для ваших задач.
Созданный специально для тестирования UX, Galen имеет специальный синтаксис и правила, которые вы можете использовать для описания и проверки макета вашего приложения. Он также позволяет указать разрешение браузера, а затем запустить тесты с приложением для проверки спецификаций макета. Тесты Galen генерируют подробные HTML-отчеты со снимками экрана, а сам инструмент включает в себя визуальное сравнение изображений с интересной функцией тепловой карты.
Вы можете писать тесты в простом текстовом файле, используя синтаксис Galen, JavaScript или Java.
Gauge
Gauge – один из новейших инструментов автоматизации тестирования с открытым исходным кодом для Mac, Windows и Linux, разработанный сотрудниками ThoughtWorks – той же компании, которая создала Selenium.
Те, кто выбирает TDD и BDD, по достоинству оценят фокус Gauge, направленный на создание живой и исполняемой документации.
Тесты автоматизации Gauge, называемые “спецификациями”, пишутся на простом синтаксисе языка markdown с использованием Java, Ruby и C# в таких IDE для разработчиков, как Eclipse и Visual Studio. Можно расширить функциональность Gauge за счет поддержки плагинов.
WebDriverIO
Ищете платформу автоматизации, который использует Selenium и позволяет программировать на JavaScript?
WebdriverIO – полноценный фреймворк из коробки. С ним вам не нужно реализовывать что-либо с нуля, как в случае с обычным Selenium.
Он поставляется со всем необходимым для создания масштабируемых и устойчивых тестовых наборов и содержит дополнительные возможности, которых нет в обычной версии Selenium. Если ваша команда состоит из разработчиков JavaScript и тестировщиков, которые разбираются в коде, этот фреймворк, определенно, вас порадует.
OpenTest
OpenTest – это фреймворк, который можно использовать для тестирования мобильных и веб-приложений и API.
В архитектуре OpenTest поддерживается большая часть сценариев автоматизации тестирования. Если устройство может работать на Java, оно может быть без проблем использовано как часть распределенного тестирования.
Одним из преимуществ OpenTest является то, что он не требует навыков программирования. Это достигается с помощью комбинации действий (ключевых слов), написанных на английском языке и хранящихся в файле YAML. Этот подход аналогичен тому, как работает Gauge.
Если кросс-платформенная автоматизация необходима для вашей команды, попробуйте OpenTest. Возможно, это именно тот инструмент, который вы так давно искали.
Citrus Framework
Citrus – это фреймворк с открытым исходным кодом, который поможет вам автоматизировать интеграционные тесты для практически любого протокола обмена сообщениями или формата данных. Если у вас в работе есть поток тестирования, который требует, чтобы ваше приложение взаимодействовало с другими службами, то API и другие компоненты, использующие инструменты функционального тестирования, такие как Selenium, не смогут помочь.
Citrus является наиболее подходящим фреймворком для тестирования интеграции обмена сообщениями, если вы используете любой вид транспорта обмена сообщениями, такой как HTTP, REST, SOAP или JMS,
Этот инструмент также интегрируется с Selenium. Это очень удобно в ситуациях, когда вам нужно взаимодействовать с пользовательским интерфейсом, а затем проверить внутренний процесс. Например, вам нужно нажать на кнопку “отправить электронное письмо” и проверить на бэкэнде факт получения письма. Citrus может получить это электронное письмо или сообщение JMS, инициированное пользовательским интерфейсом, и проверить внутренние результаты — и все это в одном тесте.
Таким образом, Citrus обеспечивает полное покрытие тестами, которое невозможно получить при помощи инструмента тестирования с графическим интерфейсом.
Karate-DSL
Если вы уже используете Cucumber и вам нужно протестировать REST API, Karate-DSL станет идеальным вариантом. Все больше и больше людей используют его для тестирования API.
Поскольку инструмент REST-тестирования Karate построен поверх Cucumber-JVM, вы можете запускать свои тесты, просматривать отчеты и использовать любую другую функциональность Cucumber, как и в любом стандартном проекте Java.
Время выбирать!
Прежде чем написать первую строчку кода для создания собственного фреймворка, убедитесь, что нет уже существующей библиотеки или фреймворка, который вы можете использовать. Для этого ознакомьтесь со всеми доступными инструментами с открытым исходным кодом, после чего сделайте выбор в пользу наиболее подходящего.
Перевод статьи Bas Dijkstra «11 top open-source test automation frameworks: How to choose».