Инструкция по автоматизация тестирования с помощью Geb

Geb — это платформа тестирования для браузеров, которая использует WebDriver на языке Groovy. Она идеально подойдёт для автоматизации тестов и кросс-браузерного тестирования.

Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ

Отличительной чертой Geb является то, что его синтаксис похож на jQuery. Более того, он имеет встроенную поддержку паттерна Page Object. Geb сочетает в себе лучшие возможности языка программирования Groovy, WebDriver и Page Object Modelling для обеспечения надёжного и быстрого взаимодействия с веб-контентом.

Geb предоставляет возможность интеграции с фреймворками для тестирования, включая Spock, Grails, JUnit, Cucumber-JVM, TestNG. Далее мы рассмотрим, как Geb может быть интегрирован с Grails.

Содержание:

Практическое применение

Преимущества

Предварительные условия

Начало работы

Обучение на примере

Тестирование валидности базы данных с помощью Geb-скрипта

Несколько полезных методов в Geb

Недостатки

Дополнительные ресурсы

Заключение

Практическое применение

Geb можно использовать:

  • В качестве инструмента тестирования на нескольких браузерах. Один и тот же тест может быть запущен на разных браузерах.
  • Для автоматизации функционального тестирования.
  • Для сквозного тестирования (end to end testing), включая проверку пользовательского интерфейса (UI) и проверку базы данных.
  • В качестве инструмента для автоматизации взаимодействия между браузером и веб-контентом.

Преимущества

Плюсы использования Geb:

  • Это бесплатный инструмент с открытым исходным кодом. Он имеет лицензию Apache License 2.0.
  • Легко автоматизировать процесс тестирования.
  • Форма Page Object и Groovy DSL делают тесты удобными для чтения, что они выглядят почти как обычный английский язык.
  • Быстро выполняет тесты и экономит время, затраченное на тестирование.
  • Совместим с различными браузерами, такими как IE, Firefox, Chrome и HTMLUnit.
  • Выполняет тесты в реальном браузере. Это похоже на тестирование в реальной среде — той, которую видит пользователь.
  • Упрощает регрессионное тестирование.
  • При использовании Geb требуется минимальное корректирование кода в случае изменения пользовательского интерфейса.

Предварительные условия

Прежде чем приступить к работе, нам необходимо загрузить и установить ПО. Geb доступен в репозитории Maven в виде одного jar-файла Geb-core. Щёлкните здесь, чтобы установить его на свой компьютер.

Для установки и запуска Geb воспользуйтесь руководством по его установке и использованию.

Начало работы

Geb может быть интегрирован с различными фреймворками для тестирования.

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

Например, Grails, вы можете установить соответствующий плагин grails-geb plugin.

Обучение на примере

Пример написания теста для автоматизации:

ID тестового сценарияSoftwaretestinghelp-1ID тест-кейсаSoftwaretestinghelp -1A
Описание тест-кейсаПроверка страницы Softwaretestinghelp.com через поисковую системуСтатус сценария В процессе выполнения
Предусловие1. Браузер
2. Поисковая система
3. Веб-сайт – Softwaretestinghelp.com должен существовать
Скрипт предусловияНе доступен

Этапы выполнения :

Запустите поисковую систему Google
Проверьте, успешно ли загрузилась поисковая система
Введите softwaretestinghelp.com в поисковую строку
Дождитесь загрузки результатов поиска
Проверьте, ведет ли первая ссылка в результатах на softwaretestinghelp.com.
Если да, откройте ссылку.
Подождите, пока откроется веб-сайт.
Выйдите с сайта .

Ниже приведен Gebскрипт для автоматизации описанного выше сценария:

import geb.Browser
Browser.drive {
go "http://google.com/"
 
//verify if we are on the correct page
assert title=="Google"
 
//enter softwaretestinghelp.com into the search field
$("input",name:"q").value("softwaretestinghelp.com")
 
//wait for the change to results page to happen
//(google updates the page dynamically without a new request)
waitFor{ title.endsWith("Google Serach")}
 
//is the first link to softwaretestinghelp.com?
def firstLink = $("li.g,0).find("a.l")
assert firstLink.text()= ="Software Testing Help - A Must Visit Software Testing Portal"
 
//click the link
firstLink.click()
 
//wait for Google's javascript
waitFor { title = ="Software Testing Help - A Must Visit Software Testing Portal" }

Тестирование валидности базы данных с помощью Geb-скрипта

Любое автоматизированное веб-тестирование делится на три части:

  • Валидация UI – проверка данных, отражённых в пользовательском интерфейсе (фронтенд) до и после выполнения тестирования.
  • Валидация БД – проверка данных, отражённых в базе данных (бэкенд) до и после выполнения тестирования.
  • Поток реальных тестов/сценариев.

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

Для любого теста на валидацию БД вы всегда можете использовать приведенный ниже шаблон в качестве черновика:

def validateDB(/*define all variables here*/) {
def errorMessages = ""
try {
Configuration conf = (new ConfigurationLoader()).getConf()
def sql = Sql.newInstance(conf.readValue("dbPath", ""), conf.readValue("dbUserName", ""), conf.readValue("dbPassword", ""), conf.readValue("dbDriverName", ""))
 
/* Populate any required variables */
}
 
/* Give print commands here to print required values */
def qry = /* select statement to pull all required values from database */
println "SQL=$qry"
sql.eachRow(qry) { row ->
 
/*  ‘if’ block to perform validation and returning error in case of any variations */
}
catch(Exception e) {
println "EEEE=$e"
}
return errorMessages
}

Несколько полезных методов в Geb

  • Когда выполнение вашего тест-кейса включает в себя несколько вкладок и окон: в такой ситуации вы можете использовать методы withWindow() и withNewWindow() для выполнения кода в других окнах и вкладках.
  • Drive-метод: drive() делает написание тестов в Geb более удобным. Все вызовы методов верхнего уровня и обращения к свойствам подразумеваются как обращения к браузеру.
  • Выполнение запросов: браузеры поддерживают свойство baseURL, которое используется для разрешения всех относительных ссылок. Предпочтительнее задавать базовые URL с косой чертой и не использовать косую черту в относительных URL.
  • Изменение страницы: с помощью метода page() можно изменить экземпляр страницы, не делая нового запроса.
  • Выход из браузера: объекты браузера предоставляют методы quit() и close(), которые передают задачу базовому драйверу.

Недостатки

Минусы использования Geb:

  • Geb использует WebDriver на языке Groovy. Таким образом, при использовании WebDriver будет поддерживаться только этот язык программирования.
  • Geb не подходит для небольших задач, но отлично работает для крупных проектов. Если ваше веб-приложение не содержит множество страниц и форм, через которые должна проходить информация, вы можете обнаружить, что Geb отнимает у вас слишком много времени.
  • Geb требователен к тому, какую среду использует ваше веб-приложение.

Дополнительные ресурсы:

Заключение

Geb — очень полезный инструмент для автоматизации тестов. С его помощью можно автоматизировать веб-тестирование, функциональное и приёмочное тестирование. Он поддерживает множество браузеров и может быть интегрирован с различными фреймворками. Также он обеспечивает лучшее тестовое покрытие, ускоряет процесс тестирования и делает его более эффективным.

Перевод статьи «Geb Tutorial – Browser Automation Testing Using Geb Tool».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *