Сегодня я познакомлю вас с драйвером поведенияразвиватьтестрамка:Cucumber
。
Cucumber — это инструмент разработки на основе поведения (BDD), который сочетает в себе текстовые описания и автоматизированные тестовые сценарии. Для описания поведения приложения он использует особый язык под названием Gherkin, который очень близок к естественному языку, что позволяет людям, не имеющим технических знаний, понимать и участвовать в тестировании.
Расширение знаний:
Язык Gherkin — это доменно-ориентированный язык (DSL), используемый для описания бизнес-поведения. Он позволяет пользователям описывать операции, которые должна выполнять программная система, не обращая внимания на конкретные детали реализации. Этот язык имеет читабельность, подобную естественному языку, что делает его идеальным для деловых людей и разработчиков при написании автоматизированных тестовых примеров. Gherkin особенно подходит для подхода Behavior Driven Development (BDD) из-за его способности преобразовывать бизнес-требования в четкие, простые для понимания и поддержки этапы тестирования.
Gherkin использует специальный набор ключевых слов для построения структурированных и содержательных этапов тестирования. Он предназначен для описания, а не для непосредственного выполнения, но в сочетании с инструментом Cucumber позволяет автоматизировать процесс тестирования. Он предназначен для того, чтобы позволить людям с разным опытом (например, деловым людям, разработчикам и тестировщикам) работать с одним и тем же документом. . Понимание требований и достижение консенсуса. Типичный тестовый сценарий Gherkin состоит из нескольких «шагов», каждый шаг представляет собой минимальный блок тестирования. Эти шаги можно объединить в «Сценарии», которые, в свою очередь, составляют «Особенности». Файлы функций обычно начинаются с «Feature:», и каждый шаг содержит ряд условных операторов (таких как «Дано», «Когда» и «Тогда») и, возможно, других ключевых слов.
В целом Cucumber — это мощный инструмент BDD, подходящий для проектов, требующих тесного сотрудничества с бизнес-персоналом. Он может способствовать совместной работе команды и снизить затраты на обслуживание тестовых сценариев. Однако необходимо взвесить стоимость обучения и скорость выполнения.
Применимые сценарии:
преимущество:
недостаток:
При использовании Cucumber для автоматического тестирования веб-приложений он обычно реализуется совместно с Selenium WebDriver. Ниже приведен простой пример, демонстрирующий, как писать автоматизированные тестовые примеры с использованием Cucumber и Selenium WebDriver.
Предположим, мы хотим протестировать простую страницу регистрации, включая ввод имени пользователя, пароля и подтверждения пароля, а затем нажатие кнопки регистрации для регистрации. Мы будем использовать Cucumber для написания тестовых примеров и Selenium WebDriver для моделирования действий пользователя в браузере.
Во-первых, нам нужно ввести в проект связанные зависимости Cucumber и Selenium WebDriver и создать файл .feature для написания тестовых примеров. Предположим, что наш файл .feature называется Registration.feature и имеет следующее содержимое:
Feature: User Registration
Scenario: User can register with valid credentials
Given User is on the registration page
When User enters "john_doe" as username
And User enters "password123" as password
And User enters "password123" as confirm password
And User clicks on register button
Then User should be registered successfully
Далее нам нужно создать определения шагов для реализации шагов, определенных в файле .feature. Предположим, мы определяем определения шагов в файле RegistrationStepDefs.java:
import io.cucumber.java.en.Given;
import io.cucumber.java.en.When;
import io.cucumber.java.en.Then;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class RegistrationStepDefs {
WebDriver driver;
@Given("User is on the registration page")
public void userIsOnRegistrationPage() {
System.setProperty("webdriver.chrome.driver", "path_to_chrome_driver");
driver = new ChromeDriver();
driver.get("url_of_registration_page");
}
@When("User enters {string} as username")
public void userEntersUsername(String username) {
driver.findElement(By.id("username")).sendKeys(username);
}
@When("User enters {string} as password")
public void userEntersPassword(String password) {
driver.findElement(By.id("password")).sendKeys(password);
}
@When("User enters {string} as confirm password")
public void userEntersConfirmPassword(String confirmPassword) {
driver.findElement(By.id("confirmPassword")).sendKeys(confirmPassword);
}
@When("User clicks on register button")
public void userClicksOnRegisterButton() {
driver.findElement(By.id("registerButton")).click();
}
@Then("User should be registered successfully")
public void userShouldBeRegisteredSuccessfully() {
// Add assertions to verify successful registration
driver.quit();
}
}
В этом примере мы используем аннотации Cucumber для определения шагов тестирования и Selenium WebDriver для имитации пользовательских операций в браузере.
Наконец, мы можем использовать JUnit или TestNG для запуска тестовых случаев Cucumber. В проекте Maven вы можете использовать плагин Maven Surefire для запуска тестов Cucumber.
Это всего лишь простой пример, в реальных проектах могут быть более сложные тестовые сценарии и операции. Однако на этом примере вы можете понять, как использовать Cucumber и Selenium WebDriver для реализации автоматического тестирования веб-приложений.
При использовании Cucumber и Python для автоматического тестирования веб-приложений мы обычно используем Behave в качестве платформы BDD в сочетании с Selenium WebDriver. Ниже приведен простой пример, демонстрирующий, как использовать Behave и Selenium WebDriver для написания автоматических тестовых случаев.
Для начала нам нужно установить необходимые библиотеки. В Python мы можем использовать pip для установки Behave и Selenium WebDriver:
pip install behave
pip install selenium
Затем мы создаем файл .feature для записи тестовых примеров. Предположим, что наш файл .feature называется Registration.feature и имеет следующее содержимое:
Feature: User Registration
Scenario: User can register with valid credentials
Given User is on the registration page
When User enters "john_doe" as username
And User enters "password123" as password
And User enters "password123" as confirm password
And User clicks on register button
Then User should be registered successfully
Затем нам нужно создать определения шагов для реализации шагов, определенных в файле .feature. Мы определяем определения шагов в файле с именем Registration_steps.py:
from behave import given, when, then
from selenium import webdriver
@given('User is on the registration page')
def user_is_on_registration_page(context):
context.driver = webdriver.Chrome()
context.driver.get('url_of_registration_page')
@when('User enters "{text}" as username')
def user_enters_username(context, text):
username_input = context.driver.find_element_by_id('username')
username_input.send_keys(text)
@when('User enters "{text}" as password')
def user_enters_password(context, text):
password_input = context.driver.find_element_by_id('password')
password_input.send_keys(text)
@when('User enters "{text}" as confirm password')
def user_enters_confirm_password(context, text):
confirm_password_input = context.driver.find_element_by_id('confirmPassword')
confirm_password_input.send_keys(text)
@when('User clicks on register button')
def user_clicks_on_register_button(context):
register_button = context.driver.find_element_by_id('registerButton')
register_button.click()
@then('User should be registered successfully')
def user_should_be_registered_successfully(context):
# Add assertions to verify successful registration
context.driver.quit()
В этом примере мы используем аннотации Behave для определения шагов тестирования и используем Selenium WebDriver для имитации действий пользователя в браузере.
Наконец, мы можем использовать командную строку для запуска теста поведения:
behave
Это выполнит написанный нами тестовый пример и выведет результаты теста.
При использовании Cucumber и Python для автоматического тестирования интерфейсов API мы обычно используем Behave в качестве BDD-фреймворка и объединяем его с библиотекой запросов. Ниже приведен простой пример, демонстрирующий, как использовать библиотеки поведения и запросов для написания автоматических тестовых случаев.
Для начала нам нужно установить необходимые библиотеки. В Python мы можем использовать pip для установки библиотек поведения и запросов:
pip install behave
pip install requests
Затем мы создаем файл .feature для записи тестовых примеров. Предположим, что наш файл .feature называется api_test.feature и его содержимое следующее:
Feature: API Test
Scenario: Verify API response
Given API endpoint is "https://api.example.com/users"
When User sends a GET request to the API
Then API should respond with status code 200
And API response should contain user data
Затем нам нужно создать определения шагов для реализации шагов, определенных в файле .feature. Мы определяем определения шагов в файле api_test_steps.py:
from behave import given, when, then
import requests
@given('API endpoint is "{url}"')
def set_api_endpoint(context, url):
context.api_url = url
@when('User sends a GET request to the API')
def send_get_request(context):
context.response = requests.get(context.api_url)
@then('API should respond with status code {status_code}')
def verify_status_code(context, status_code):
assert context.response.status_code == int(status_code)
@then('API response should contain user data')
def verify_user_data_in_response(context):
# Add assertions to verify user data in API response
# For example, check if certain fields are present in the response
pass
В этом примере мы используем аннотации Behave для определения шагов тестирования и используем библиотеку запросов для отправки запросов API и проверки ответов API.
Наконец, мы можем использовать командную строку для запуска теста поведения:
behave
Это выполнит написанный нами тестовый пример и выведет результаты теста.
Благодаря вышесказанному вы сможете понять, как использовать библиотеки поведения и запросов для реализации автоматического тестирования интерфейсов API. В реальных проектах могут быть более сложные сценарии тестирования и операции, и вы можете изучить их самостоятельно.
Если вы считаете это полезным, подписывайтесь, ставьте лайки, смотрите и делитесь с друзьями.