Как построить модульную структуру селена + огурцы в Java

Как построить модульную структуру селена + огурцы в Java

2 июля 2025 г.

Современный QA требует больше, чем просто написание тестовых примеров - это требует масштабируемого, масштабируемого, обслуживания и модульной программы автоматизации. Если вы используетеСелен с Java, интегрировать его сОгурецПриносит структуру и ясность в ваш тестовый дизайн. Но как вы создаете модульную структуру, которая может масштабироваться по проектам и командам?


Это руководство проходит через то, как разработать надежную структуру автоматизации селена + огурца с использованием Java, следуя лучшим практикам в области архитектуры, повторного использования и интеграции CI/CD.


Почему модульный дизайн?


Модульная структура автоматизации:

  • ПродвигаетПовторное использование кодаиразделение проблем
  • Облегчает техническое обслуживание тестирования, когда произойдут изменения пользовательского интерфейса
  • Позволяет выполнять параллельное и CI-тестовое выполнение
  • Поощряет чистое сотрудничество между QA, DEV и Business Teams


Вот логическая структура, чтобы сохранить кодовую базу чистой и масштабируемой:

lua
CopyEdit
src/test/java
├── base            --> Base classes (WebDriver setup, Hooks)
├── pages           --> Page Object classes
├── stepdefinitions--> Step definitions for Gherkin steps
├── runners         --> Test runners (Cucumber options)
├── utils           --> Utilities like config reader, wait, logs
├── features        --> Gherkin (.feature) files


Технический стек

ComponentToolui AutomationsElenium webdriverbddcucumber + gherkinlanguagejavabuild toolmaven

Gradletest Reportingallure

ExtentReportSci/Cdjenkins

Действия GitHub


Настройка Webdriver & Hooks

Базовый класс: Централизованная настройка WebDriver

java
CopyEdit
public class BaseTest {
    public static WebDriver driver;

    public void initializeDriver() {
        driver = new ChromeDriver();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.manage().window().maximize();
    }

    public void tearDown() {
        driver.quit();
    }
}

Крюк класс: Бежать до и после каждого сценария

java
CopyEdit
public class Hooks {
    BaseTest base = new BaseTest();

    @Before
    public void setup() {
        base.initializeDriver();
    }

    @After
    public void cleanUp() {
        base.tearDown();
    }
}

Модель объекта страницы (POM)

Помогает инкапсулировать локаторы и действия элемента:

java
CopyEdit
public class LoginPage {
    WebDriver driver;

    @FindBy(id = "username") WebElement username;
    @FindBy(id = "password") WebElement password;
    @FindBy(id = "login") WebElement loginBtn;

    public LoginPage(WebDriver driver) {
        this.driver = driver;
        PageFactory.initElements(driver, this);
    }

    public void login(String user, String pass) {
        username.sendKeys(user);
        password.sendKeys(pass);
        loginBtn.click();
    }
}

Файл функций (сценарий BDD)

gherkin
CopyEdit
Feature: Login functionality

  Scenario: Successful login with valid credentials
    Given User is on login page
    When User enters valid credentials
    Then User is navigated to the homepage

Шаг Определения

java
CopyEdit
public class LoginSteps {
    WebDriver driver = BaseTest.driver;
    LoginPage login = new LoginPage(driver);

    @Given("User is on login page")
    public void userIsOnLoginPage() {
        driver.get("https://example.com/login");
    }

    @When("User enters valid credentials")
    public void userEntersValidCredentials() {
        login.login("testuser", "testpass");
    }

    @Then("User is navigated to the homepage")
    public void userIsOnHomePage() {
        Assert.assertTrue(driver.getTitle().contains("Dashboard"));
    }
}

Интеграция отчетности

Добавить Allure Maven зависимостей:

xml
CopyEdit
<dependency>
    <groupId>io.qameta.allure</groupId>
    <artifactId>allure-cucumber6-jvm</artifactId>
    <version>2.13.0</version>
</dependency>

Используйте аннотации, как@StepВ@AttachmentДля улучшения тестовой прослеживаемости в отчетах.


CI/CD с Дженкинсом

Создайте работу Jenkins, связанную с вашим хранилищем GIT.

Добавьте шаг Maven Build:clean test

Шаг после строительства: опубликовать результаты Allure

Настройте триггеры для ночных или вытягивания.


Лучшие практики

Использовать@BeforeStepи@AfterStepДля мелкозернистых бревна или скриншотов.

Избегайте твердших данных тестовых данных; Встречать в.propertiesили файлы Excel.

ОсуществлятьRetryAnalyzerк автоматическим тщательным тестам.

Запустить тесты впараллельс использованиемTestNGилиПлагин огурцадля потоков.


Последние мысли

Модульная структура селена + огурцы - это не только более чистый код, а также тестустойчивостьВмасштабируемость, иКоманда сотрудничестваПолем С правильной структурой и интеграциями CI это может стать мощным активом для любой команды автоматизации.


Если вы начинаете, начните с малого и масштабируйте свой фреймворк по частям. Со временем этот структурированный подход сэкономит вам сотни часов при техническом обслуживании и адаптировании тестирования.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE