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-1 | ID тест-кейса | 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 с Grails.
Заключение
Geb — очень полезеный инструмент для автоматизации тестов. С его помощью можно автоматизировать веб-тестирование, функциональное и приёмочное тестирование. Он поддерживает множество браузеров и может быть интегрирован с различными фреймворками. Также он обеспечивает лучшее тестовое покрытие, ускоряет процесс тестирования и делает его более эффективным. очень полезный инструмент для автоматизации тестов. С его помощью можно автоматизировать веб-тестирование, функциональное и приемочное тестирование. Он поддерживает множество браузеров и может быть интегрирован с различными фреймворками. Также он обеспечивает лучшее тестовое покрытие, ускоряет процесс тестирования и делает его более эффективным.
Перевод статьи «Geb Tutorial – Browser Automation Testing Using Geb Tool».