Рубрики
Без рубрики

Разработка, Ориентированная На Бизнес, Путем Тестирования Selenium С Помощью Gherkin

Cucumber и Selenium являются широко используемыми фреймворками для BDD (разработки, основанной на поведении) и управления браузером… Помеченный как bdd, тестирование, java, cucumber.

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”