Cucumber и Selenium являются широко используемыми фреймворками для BDD (разработки, основанной на поведении) и автоматизации браузера соответственно. Хотя на бумаге это кажется хорошей парой, но когда дело доходит до реальности, многие тестировщики уклоняются от нее. Основной причиной этого является корнишон, поскольку большинство тестировщиков не решаются использовать его, поскольку он воспринимается как дополнительная задача, поскольку тестовые сценарии все еще должны быть написаны отдельно.
Но это относится не ко всем. Использование Gherkin действительно может помочь в тестировании, поскольку оно служит хорошим документом для всех функций и может быть написано любым человеком, даже с почти нулевыми знаниями в области программирования.
Клиенты говорят: “Cucumber помогает нам понимать код приложения, поскольку он использует язык Gherkin, который написан простым текстом”.
Будучи написанным на корнишоне, он действует как мост между различными уровнями, PMS – разработчиками – Тестировщиками – Клиентами. Давайте перейдем к пониманию BDD с помощью Gherkin и того, как это может улучшить Selenium testing .
В этой статье я подробнее рассмотрю эту тему о том, как вести бизнес-разработку с помощью тестирования Selenium с помощью Gherkin. Прежде чем я начну с Корнишона, я хотел бы дать вам небольшую краткую информацию о BDD (Разработка, ориентированная на поведение, не путать с разработкой, ориентированной на бизнес.
Итак, Что Же Такое BDD?
Разработка, основанная на поведении, или широко известная как BDD, – это широко используемый подход к разработке в индустрии программного обеспечения, поскольку он позволяет пользователям писать кейсы на простом английском языке. Это помогает членам команды, даже не имеющим технических знаний, понять, что происходит в проекте, который сокращает разрыв между деловыми людьми и техническими специалистами
В дополнение к низкой технической сложности и более легкому для понимания подходу, главное преимущество BDD заключается в том, что оно вытекает из TDD ie. Разработка на основе тестирования, которая поддерживает автоматическое тестирование с использованием нескольких тестовых данных с минимальным вмешательством в код.
Cucumber – Инструмент BDD Framework: BDD реализован с помощью Cucumber framework, который помогает автоматизировать кейсы в хорошо отформатированной и читаемой форме.
Файлы функций Cucumber: Эти файлы, написанные на языке корнишонов, заканчивающиеся на .расширение функций является неотъемлемой частью Cucumber и используется для спецификаций приложений.
Начало Работы С Корнишоном Для Тестирования Селена
Теперь, когда вы знаете, что такое BDD, давайте начнем с Gherkin для тестирования Selenium.
Gherkin – это понятный для бизнеса, специфичный для конкретной предметной области язык, который дает своим пользователям право писать эффективные тесты хорошо документированным способом, требующим наименьшего количества рассуждений и сложных логических деталей.
Давайте разберемся в этом на примере корнишона.
“Покупатели не должны иметь возможности вводить неверные данные кредитной карты”. По сравнению с “На странице оплаты, если покупатель вводит номер кредитной карты, длина которого не превышает 16 цифр, то при попытке продолжить должно появиться сообщение об ошибке, в котором указывается, что введенный номер неверен”.
Первый пример с корнишонами неясен и расплывчат по сравнению со вторым. Неопределенность приводит к ошибкам и затрудняет понимание тестировщиком требований и реализацию тестовых примеров.
Синтаксис Корнишона Для Тестирования Selenium
Структура файла в Gherkin определяется тем, как разные строки кода имеют отступы в файле объектов. Почти все строки в Gherkin для тестирования Selenium начинаются со специального ключевого слова, а окончания строк завершают инструкции, которые вызываются как шаги.
Файл функций Gherkin – это комбинация функций, сценариев и шагов, которая обычно выглядит следующим образом:
Feature: Some terse yet descriptive text of what is desired Background:Some common prerequisite setup applicable to all situations Scenario: Some determinable business situation Given some precondition And some other precondition When some action by the actor And some other action And yet another action Then some testable outcome is achieved And something else we can check happens too Scenario: A different situation
При выполнении функции конечная часть каждого шага (после ключевых слов, таких как Given, And, When и т.д.) сопоставляется регулярному выражению, обычно называемому кодом клея, и может быть написана на любом языке. В этом руководстве для того же самого будет использоваться JAVA.
Давайте теперь пройдемся по приведенному выше примеру, чтобы понять все ключевые слова
Особенность
Ключевые слова функций используются для предоставления функции программного обеспечения. Обычно он содержит список сценариев, связанных с этой функцией. Основными элементами функции являются:
- Ключевое слово – Функция.
- Ключевое слово, за которым следует имя, которое пользователь хочет присвоить функции.
- Необязательное описание, которое может занимать несколько строк, т.е. весь текст между строкой, содержащей ключевое слово Feature, и строкой, начинающейся со сценария или фона, который является необязательным
Хорошее название функции должно выглядеть примерно так:
В порядке к достичь какой-то цели как тип пользователя Я хочу особенность
В качестве хорошего соглашения о кодировании корнишона настоятельно рекомендуется, чтобы одна функция составляла один файл *.feature, который в терминах именуется путем замены пробелов подчеркиванием и преобразования имени функции в нижний регистр. Давайте возьмем пример с корнишонами,
Особенность: Для того, чтобы выучить корнишон как новичок, я хочу изучить это учебное пособие Имя файла функции: in_order_to_learn_gherkin_as_a_beginner_i_want_to_study_this_tutorial.feature
Фон
Обычно он используется для добавления некоторых контекстных шагов, которые являются общими для всех сценариев и должны выполняться перед каждым сценарием в одном файле функций. Это похоже на необязательный сценарий без названия
Background : Given a customer named John When clicks on buy now button Then he should be redirected to payment page
Сценарий
Сценарий составляет ядро структуры корнишона. В нем описывается функциональность, которая находится в стадии тестирования. Основная цель сценария – дать зрителю возможность понять, что и как тестируется. За ключевым словом scenary следует необязательный заголовок.
Один или несколько сценариев создают файл функций в зависимости от тестируемой функции, а один или несколько шагов создают файл функций.
По соглашению хороший сценарий следует следующей схеме
- Опишите начальный контекст, используя ключевое слово Дано
- Опишите событие, используя ключевое слово Когда
- Опишите ожидаемый результат, используя ключевое слово, затем
Scenario : John wants to automate Selenium with Gherkin Given John wants to learn Gherkin When He starts reading this tutorial Then he is able to write feature file
Шаги
Шаги в основном составляют часть сценария с помощью данных, когда, тогда.
Дано
Единственная цель данного оператора – предоставить контекст для установления известного состояния до того, как пользователь начнет взаимодействовать с тестируемым функциональным сценарием.
Когда
Это используется для описания события, вызванного действиями пользователя в данном состоянии.
Затем
Цель этого этапа состоит в том, чтобы описать и проанализировать результаты. Этот анализ направлен на то, чтобы повысить эффективность функций путем проверки результата, который связан или не связан с заданной и Когда или может быть связан с какой-либо внешней системой.
Но
Эти ключевые слова используются для объединения нескольких заданных, Когда или Тогда утверждений, помогающих сделать сценарий более читаемым и презентабельным.
Scenario : Understanding the steps Given I establish a context And I add another context When I discuss them both And I ask questions Then I have no more doubts But I have a better understanding
Как Запускать Тестовые Скрипты Selenium С Помощью Cucumber?
Чтобы создать проект gherkin для тестирования Selenium, самый простой способ – создать новый проект maven в любой среде разработки, такой как Eclipse. Также зависимости для Cucumber, Selenium и Junit runners для выполнения файлов функций.
для использования огурца с Ява
info.cukes Cucumber-java 1.0.2 test
для селена
org.Seleniumhq.Selenium Selenium-java 2.47.1
Для junit runner для запуска функций Cucumber
junit junit 4.10 test
Зачем Использовать Корнишон С Тестированием На Селен?
Selenium – широко используемый инструмент для функционального тестирования в ведущих организациях, поскольку он легко интегрируется с Gherkin и упрощает понимание и автоматизацию процесса одновременно.
Таким образом, можно упростить ведение тестовых примеров, которые также служат надлежащей документацией для всех заинтересованных сторон и аналитиков. Простота интеграции Selenium и широко распространенный инструмент автоматизации дополняют использование Cucumber. Вместе они составляют структуру, которая очень проста в настройке и имеет низкие затраты на техническое обслуживание.
Кроме того, еще одним преимуществом является возможность параллельного показа художественных фильмов. Кроме того, как Gherkin, так и Selenium могут быть закодированы на Java для написания кода клея для шагов и автоматизации браузера соответственно.
Преимущества Корнишона При Тестировании На Селен На Примере
Здесь я объясню использование Gherkin для тестирования Selenium с некоторыми примерами и фреймворком вместе с файловой структурой с помощью следующего примера.
Давайте возьмем тестовый сценарий с разработкой веб-приложения для организации, скажем ‘Shopping.com “, и команда обсуждает процесс размещения заказа клиентом.
Первый шаг, чтобы клиент мог разместить заказ, он/она должен перейти на веб-сайт и войти в систему.
Given Customer navigates to the website And Customer login to his account
После этого клиент ищет товар и нажимает на кнопку добавить в корзину
when customer searches for laptop And clicks on add to cart button
Клиент переходит на страницу корзины и может нажать кнопку оформить заказ
Then Customer is redirected to cart page And Customer is able to click the place order button.
После того, как поток передается тестировщику автоматизации, он использует его для написания сценариев автоматизации. Кроме того, он добавляет шаги кода автоматизации для файла обсуждения, преобразуя его в файл функций.
Feature : Place new order As a customer, I want to place an order for searched item Scenario : Place an order for the required product Given Customer navigates to the website And Customer login to his account When customer searches for laptop And clicks on add to cart button Then Customer is redirected to cart page And Customer is able to click the place order button
Теперь, чтобы заставить эти шаги работать, я напишу код определения шага
package Cucumber.stepDefinitions; public class PlaceOrderStepDefs { @Given("Customer navigates to the website") public void navigateToWebsite(){ } @And("Customer login to his account") public void customerLogin(){ } @When("customer searches for laptop") public void searchForLaptop(){ } @And("clicks on add to cart button") public void clickAddToCart(){ } @Then("Customer is redirected to cart page") public void redirectionToCartPage(){ } @And("Customer is able to click the place order button") public void clickPlaceOrderButton(){ } }
Теперь здесь следует отметить, что будут некоторые данные, относящиеся к клиентам, которые требуются и могут также использоваться другими функциональными файлами и сценариями. Поэтому имеет смысл создать отдельный файл для таких данных, называемый файлом свойств. Кроме того, также необходимо выполнить такие действия, как загрузка этого файла свойств, инициализация драйвера, закрытие браузера после каждого сценария, и это будет общим для всех тестов. Поэтому имеет смысл создать файл базовых шагов и наследовать его для всех файлов определения шагов.
# APP url=http://www.shopping.com/ # Selenium webdriver.chrome.driver=resources/chromedriver # CUSTOMER customerId=12345 customerUsername=steven customerPassword=password123
public class BaseTests { public static WebDriver driver; @BeforeClass public static void initialiseDriverAndProperties() { loadTestProperties(); driver = new ChromeDriver(); driver.manage().window().maximize(); } @AfterClass public static void closeBrowser() { driver.quit(); } private static void loadTestProperties(){ Properties properties = System.getProperties(); try { properties.load( new FileInputStream(new File("resources/test.properties"))); } catch(Exception ex) { ex.printStackTrace(); System.exit(-1); } } }
Написав BaseSteps.java и файл test.properties теперь давайте завершим файл определения шага
package Cucumber.stepDefinitions; public class PlaceOrderStepDefs extends BaseSteps{ @Given("Customer navigates to the website") public void navigateToWebsite(){ driver.get(System.getProperty("url")); } @And("Customer login to his account") public void customerLogin(){ driver.findElement(By.id("username")).enterData("username"); driver.findElement(By.id("password")).enterData("password"); driver.findElement(By.id("login")).click(); } @When("customer searches for laptop") public void searchForLaptop(){ driver.findElement(By.id("searchBox")).enterData("Laptop"); driver.findElement(By.id("searchButton")).click(); } @And("clicks on add to cart button") public void clickAddToCart(){ driver.findElement(By.id("addToCart")).click(); } @Then("Customer is redirected to cart page") public void redirectionToCartPage(){ Assert.assertTrue(driver.findElement(By.id("cartPageHeader")).isDisplayed()); } @And("Customer is able to click the place order button") public void clickPlaceOrderButton(){ Assert.assertTrue(driver.findElement(By.id("placeOrderButton")).isClickable()); } }
Наконец, шагом будет переход к файлу runner для запуска этой функции.
package Cucumber; @RunWith(Cucumber.class) @CucumberOptions( plugin = {"pretty"}, glue = {"Cucumber.stepDefinitions"}, features = {"src/test/java/Cucumber/features"}) public class CucumberTestRunner { }
Итак, на этом примере совершенно очевидно, насколько легко использовать Gherkin для тестирования Selenium, чтобы улучшить автоматизацию.
Использование Корнишона Для BDD В Онлайн-Сетке Selenium
Чтобы выполнить автоматизацию Selenium через сетку Selenium Онлайн, вам просто нужно обновить BaseSteps.java чтобы иметь имя пользователя учетной записи LambdaTest и токен доступа, а также несколько изменений кода, чтобы система знала, что это будет RemoteWebDriver, работающий по URL-адресу LambdaTest grid с этими возможностями.
Вот что обновлено BaseSteps.java будет выглядеть как
public class BaseTests { public static RemoteWebDriver driver; @BeforeClass public static void initialiseDriverAndProperties() { loadTestProperties(); DesiredCapabilities capabilities = new DesiredCapabilities(); String username = ""; String accesskey = " "; String lambdaTestGridURL = "@hub.lambdatest.com/wd/hub"; capabilities.setCapability("build", "Selenium_Gherkin_Project"); capabilities.setCapability("name", "Placing order for a product"); capabilities.setCapability("platform", "Windows 10"); capabilities.setCapability("browserName", "chrome"); capabilities.setCapability("version", "73.0"); capabilities.setCapability("visual",false); capabilities.setCapability("network",false); capabilities.setCapability("console",false); capabilities.setCapability("tunnel",false); try { driver = new RemoteWebDriver(new URL("http://" + username + ":" + accesskey + lambdaTestGridURL), capabilities); } catch (MalformedURLException e) { System.out.println("Invalid grid URL"); } } private static void loadTestProperties(){ Properties properties = System.getProperties(); try { properties.load( new FileInputStream(new File("resources/test.properties"))); } catch(Exception ex) { ex.printStackTrace(); } } }
Выполните тест так же, как и ранее, используя файл TestRunner, и вы сможете воспользоваться дополнительными преимуществами использования Selenium grid и получить больше информации о выполнении в более презентабельной форме.
Отслеживание Результатов Тестирования С Помощью Панели Мониторинга Лямбда-Тестов
После завершения тестов вы можете дополнительно отслеживать все свои сценарии автоматизации с помощью панели мониторинга Lambda Test dashboard. Здесь, на вкладке Автоматизация, вы можете просмотреть временные рамки, аналитику и журнал автоматизации всех выполненных вами тестов, а также различные сборки, использованные в тестах.
Вы можете просмотреть все свои тесты в журнале автоматизации, здесь вы можете просмотреть сводку ваших тестов, любые обнаруженные исключения, команды отслеживания, сеть и метаданные. Вы также можете создавать проблемы и делиться ими со своей командой с помощью предпочтительного инструмента управления проектами.
Использование Тестовой Платформы Lambda Для Кроссбраузерного Тестирования
Вы даже можете использовать тестовую платформу Lambda для выполнения кросс-браузерного тестирования более чем 2000 реальных браузеров и версий браузеров. На панели мониторинга Lambda Test вы получаете обзор всех тестов и действий, выполненных на данный момент, а также доступных интеграций. Вы можете увидеть количество тестов, выполненных с помощью автоматизации, используя утилиту браузера в режиме реального времени, одновременные сеансы, дату выполнения и многое другое.
Используя панель Кроссбраузерное тестирование в режиме реального времени, вы можете выполнять тесты в более чем 2000+ реальных браузерах и версиях браузеров, просто выбрав из доступного списка.
При визуальном тестировании пользовательского интерфейса пользователи могут сравнивать скриншоты в нескольких комбинациях ОС и браузеров.
Он также предоставляет функции для тестирования различных пользовательских интерфейсов на отзывчивость в зависимости от различных размеров экрана и разрешений.
Вы даже можете добавлять проблемы или ошибки одновременно, когда сталкиваетесь с ними, и отслеживать их в системе отслеживания проблем.
Благодаря интеграции с более чем 30 инструментами отслеживания ошибок, CI/CD, управления проектами вы можете делиться ошибками со своей командой на ходу.
Завершая Это
В этом руководстве я объяснил, как использование фреймворка BDD, такого как Cucumber с Gherkin, может помочь улучшить сотрудничество между всеми заинтересованными сторонами, а также основы языка Gherkin и как использовать его синтаксис. Затем я продолжил разработку нашего первого скрипта автоматизации тестирования Selenium, используя Gherkin для тестирования Selenium.
Теперь вы знаете, почему вам не следует уклоняться от корнишона для тестирования селена. Кроме того, как это может помочь всем заинтересованным сторонам в вашей команде получить четкое представление о проекте. Тем самым помогая проекту быстрее достичь своих бизнес-целей.
Счастливого Тестирования!!
Оригинал: “https://dev.to/nategrey/business-driven-development-by-selenium-testing-with-gherkin-3a2c”