셀레늄과 오이를 사용한 자동화를 위한 COM 디자인 패턴

셀레늄과 오이를 사용한 자동화를 위한 COM 디자인 패턴

그만큼 COM(구성 요소 개체 모델) 테스트 자동화 프로젝트에서 테스트를 구조화할 수 있는 디자인 패턴입니다. 인기 있는 POM(페이지 개체 모델)에서 영감을 얻었습니다., COM은 전체 페이지를 처리하는 것 이상으로 버튼, 텍스트 필드, 드롭다운 메뉴 또는 기타 재사용 가능한 요소와 같은 특정 UI 구성 요소에 중점을 둡니다.

이 튜토리얼에서는 COM을 구현하여 웹 애플리케이션을 테스트하는 방법을 설명합니다. 셀레늄 웹드라이버 그리고 오이 그리고 이 접근 방식을 통해 테스트를 더욱 유연하고 모듈화하며 유지 관리하기 쉽게 만들 수 있는 방법을 알아보세요.

구성 요소 개체 모델이란 무엇입니까?

그만큼 COM(구성 요소 개체 모델) 의 진화이다 POM 모델. COM은 모든 페이지 요소와 상호 작용하는 메서드를 사용하여 전체 페이지를 개체로 모델링하는 대신 사용자 인터페이스를 다음과 같은 개별 구성 요소로 나눕니다.

  • 버튼
  • 텍스트 필드
  • 드롭다운 메뉴
  • 검색창
  • 테이블

각 구성 요소는 Java 클래스에 캡슐화되어 있으며 해당 상호 작용은 특정 방법으로 관리되므로 각 요소를 독립적으로 유지 관리하고 테스트할 수 있습니다. 이를 통해 테스트의 코드 재사용성, 유지 관리 및 유연성이 향상됩니다.

POM 대신 COM을 사용하는 이유는 무엇입니까?

1. 모듈성 향상

COM을 사용하면 각 구성 요소(예: 버튼이나 텍스트 필드)는 독립적인 엔터티입니다. 구성 요소가 변경되는 경우(예: 버튼의 텍스트 변경) 다른 구성 요소나 페이지에 영향을 주지 않고 구성 요소 클래스만 수정하면 됩니다. 이는 높은 모듈성을 허용하고 사소한 조정을 위해 전체 페이지를 수정할 필요를 방지합니다.

2. 재사용성과 유연성

구성 요소는 애플리케이션의 여러 페이지에서 재사용될 수 있으므로 코드 중복이 줄어듭니다. 예를 들어, ButtonComponent 버튼이 나타나는 모든 페이지에서 사용할 수 있으므로 중복이 줄어들고 테스트 유연성이 높아집니다.

3. 단순화된 유지관리

COM을 사용하면 유지 관리가 더 쉽습니다. 구성 요소가 변경되면(예: 버튼 또는 텍스트 필드) 해당 구성 요소를 나타내는 클래스만 수정하면 됩니다. 해당 구성 요소를 사용하는 모든 테스트는 각 테스트 시나리오를 다시 방문할 필요 없이 자동으로 업데이트됩니다.

4. 동적 인터페이스에 적응

최신 애플리케이션은 인터페이스가 자주 변경되는 동적인 경우가 많습니다. COM은 인터페이스와 독립적으로 구성 요소를 테스트할 수 있으므로 이러한 응용 프로그램에 이상적입니다. 애플리케이션의 다른 부분에 대한 테스트에 영향을 주지 않고 구성 요소를 수정하거나 추가할 수 있습니다.

5. 더욱 빨라진 테스트 자동화

COM은 테스트 자동화 속도를 높입니다. 구성 요소와의 상호 작용을 재사용 가능한 클래스로 중앙 집중화함으로써 테스터는 모든 페이지 또는 구성 요소에 대한 작업을 재정의할 필요가 없습니다. 예를 들어, 에이 한 단계 정의 “버튼 클릭” 작업의 경우 프로젝트의 모든 테스트에서 사용할 수 있으므로 테스트 자동화에 필요한 시간이 크게 단축됩니다.

6. 테스터 간 작업 반복 방지

COM을 사용하면 테스터는 더 이상 모든 테스트에 대해 동일한 작업을 반복할 필요가 없습니다. 중앙 집중식 단계 정의 “버튼 클릭” 또는 “텍스트 입력”과 같은 일반적인 작업의 경우 프로젝트의 모든 테스터가 사용할 수 있습니다. 이를 통해 불필요한 반복을 피하면서 테스트의 일관성을 보장하고 테스터 간의 효율성과 협업을 향상시킵니다.

COM 프로젝트 아키텍처

COM 기반 프로젝트의 아키텍처는 세 가지 주요 요소로 구성됩니다. 구성 요소, 단계 정의그리고 달리는 사람.

1. 구성품

각 구성 요소는 버튼, 텍스트 필드 또는 드롭다운 메뉴와 같은 UI 요소를 나타냅니다. 이러한 클래스는 요소와의 가능한 모든 상호 작용을 캡슐화합니다.

다음은 ButtonComponent 수업:

public class ButtonComponent {

      private WebDriver driver;
      public ButtonComponent(WebDriver driver) {
          this.driver = driver;
}
      public void clickButton(String buttonText) {
          WebElement button = driver.findElement(By.xpath("//button[text()='" + buttonText + "']"));
          button.click();
}
  }

2. 단계 정의

단계 정의 다음에 정의된 단계를 연결합니다. 작은 오이 파일을 구성 요소의 메서드에 추가합니다. 이들은 구성 요소와 상호 작용하고 테스트 시나리오에 지정된 작업을 구현하는 일을 담당합니다.

다음은 예입니다. ButtonStepDefinition:

public class ButtonStepDefinition {
      private ButtonComponent buttonComponent;

      public ButtonStepDefinition(WebDriver driver) {
          this.buttonComponent = new ButtonComponent(driver);
}

      @When("I click on the button {string}")
      public void iClickOnTheButton(String buttonText) {
          buttonComponent.clickButton(buttonText);
}
  }

3. 러너

그만큼 달리는 사람 클래스는 다음을 사용하여 테스트를 실행하는 일을 담당합니다. JUnit 또는 테스트NG. 구성합니다 오이 정의된 테스트 시나리오를 로드하려면 .feature 파일을 만들고 단계 정의를 사용하여 실행합니다.

다음은 예입니다. TestRunner:

@RunWith(Cucumber.class)
  @CucumberOptions(
          features = "src/test/resources/features",
          glue = "com.componentObjectModel.stepDefinitions",
          plugin = {"pretty", "html:target/cucumber-reports.html"}
)
  public class TestRunner {

  }

Gherkin 시나리오 작성 및 설명

자동화의 필수 요소 중 하나 오이 을 사용하고 있습니다 작은 오이 테스트 시나리오를 작성하는 언어. Gherkin을 사용하면 기술적인 지식이 없는 사람이라도 읽기 쉽고 이해하기 쉬운 방식으로 테스트를 설명할 수 있습니다.

다음을 사용하여 버튼과의 상호 작용을 테스트하려는 시나리오를 고려해 보겠습니다. ButtonComponent 우리는 앞서 정의했습니다. Gherkin으로 작성하는 방법은 다음과 같습니다.

Scenario: User clicks on the "Submit" button
   Given I am on the login page
   When I click on the button "Submit"
   Then I should be redirected to the homepage


시나리오 설명

대본

이 시나리오에서는 사용자가 로그인 페이지에서 ‘제출’ 버튼을 클릭하고 클릭 후 홈페이지로 리디렉션되는지 확인하는 작업을 설명합니다.

  • 내가 로그인 페이지에 있다고 가정하면: 테스트의 초기 상태는 사용자가 로그인 페이지에 있는 것입니다.
  • “제출” 버튼을 클릭하면: 테스트에서 수행되는 작업은 ‘제출’ 버튼을 클릭하는 것입니다.
  • 그러면 홈페이지로 리디렉션되어야 합니다.: 예상되는 검증은 사용자가 버튼을 클릭한 후 홈페이지로 리디렉션되는 것입니다.

COM과 연결

이 시나리오의 각 단계는 단계 정의 ~에 ButtonStepDefinition여기서 클릭 동작은 ButtonComponent테스트를 모듈화하고 유지 관리하기 쉽게 만듭니다.

추가 설명

단계는 다음과 같습니다. 표시된 텍스트 버튼(또는 입력 필드의 자리 표시자 등)에 매개변수로 사용됩니다. 이렇게 하면 시나리오가 더 많아집니다. 읽기 쉽고 일반적인. 예를 들어, 위의 시나리오에서 “제출” 버튼의 텍스트는 “버튼을 클릭할 때” 단계에서 직접 사용됩니다. ‘제출하다.’“이런 식으로, 같은 단계 정의 “와 같은 다른 버튼을 테스트하는 데 재사용할 수 있습니다.로그인,” Gherkin 시나리오의 텍스트를 간단히 변경하면 됩니다. 이렇게 하면 테스트 코드의 재사용성이 향상되는 동시에 시나리오가 더욱 직관적이고 유연해집니다.

COM을 사용한 단계 재사용성

의 주요 장점 중 하나는 COM 재사용 가능성은 단계 정의 다른 버튼의 경우. 예를 들어, 같은 단계 When I click on the button {string} 버튼에 표시된 텍스트에 관계없이 모든 버튼에 사용할 수 있습니다. 그만큼 COM 접근 방식을 사용하면 버튼 텍스트를 기반으로 클릭 동작을 동적으로 매개변수화할 수 있습니다.

다른 버튼을 사용하는 또 다른 시나리오를 고려해 보겠습니다.

대본

User clicks on the "Login" button
    Given I am on the login page
    When I click on the button "Login"
    Then, I should be redirected to the dashboard

~ 안에 두 경우 모두같은 clickButton 의 방법 ButtonComponent 사용되지만 버튼 텍스트는 시나리오에 따라 변경됩니다. 이는 방법을 보여줍니다. COM 동일한 구성요소와 단계 정의를 재사용할 수 있어 테스트를 유연하고 모듈화할 수 있습니다.

COM이 테스트 자동화를 개선하는 방법

COM은 여러 가지 방법으로 테스트 자동화를 개선합니다.

  • 코드 중복 감소: 재사용 가능한 구성 요소를 사용하면 테스트에서 코드 중복을 줄일 수 있습니다. 예를 들어, ButtonComponent 애플리케이션의 여러 페이지에 사용되므로 반복적인 테스트를 작성할 필요가 없습니다.
  • 더 읽기 쉽고 수정 가능한 테스트: 테스트는 페이지별 구현 세부 사항과 분리되어 있으므로 더 명확하고 이해하기 쉽습니다. 기본 페이지 구조에 대해 걱정하지 않고 구성 요소와의 상호 작용에 집중할 수 있습니다.
  • 유지관리 용이성: 구성 요소 수정(예: 버튼 텍스트 변경)은 구성 요소 클래스에만 영향을 미치며 테스트에는 영향을 미치지 않습니다. 이를 통해 유지 관리가 훨씬 간단하고 빨라집니다.
  • 더욱 유연한 테스트: 구성 요소가 서로 독립적이므로 테스트는 UI 변경에 쉽게 적용할 수 있습니다. 다른 테스트에 영향을 주지 않고 새 구성요소를 테스트하거나 기존 구성요소를 교체할 수 있습니다.

COM 디자인 패턴은 언제 권장됩니까?

테스트 중인 웹 애플리케이션이 모든 구성 요소에 대해 통합 디자인 시스템을 사용하는 경우 이 디자인 패턴이 권장됩니다. 예를 들어, 모든 버튼이 모든 UI 요소에 대해 일관된 구조를 사용하여 동일한 방식으로 선언된 경우입니다. 이러한 경우 COM을 사용하면 각 구성 요소 유형(예: 버튼, 텍스트 필드 등)과의 상호 작용을 중앙 집중화하여 테스트를 더욱 모듈화하고 재사용 가능하며 유지 관리하기 쉽게 만들 수 있습니다.

여러 제품에서 단계 정의 재사용

동일한 디자인 시스템을 사용하는 여러 제품을 개발하고 테스트하는 경우 각 구성 요소에 대한 모든 단계 정의 및 작업(또는 거의 모두)을 포함하는 라이브러리를 생성할 수 있습니다. 이를 통해 테스터는 Gherkin 시나리오 작성에만 집중할 수 있으며 테스트는 자동화됩니다. 모든 웹 요소는 동일한 방식(HTML)으로 작성되므로 버튼, 텍스트 필드 및 기타 UI 요소와 같은 구성 요소는 모든 프로젝트에서 일관되게 작동합니다.

결과적으로 테스터는 더 이상 여러 프로젝트에서 동일한 구성 요소에 대한 단계 정의 및 작업을 정의하는 동일한 작업을 반복할 필요가 없습니다. 이 접근 방식은 시간을 절약하고 유지 관리성을 향상시킵니다. 웹 요소가 수정된 경우(예: XPath가 변경된 경우) 공유 라이브러리에서 해당 요소만 업데이트하면 되며 수정 사항은 모든 자동화 프로젝트에 자동으로 적용됩니다. 이렇게 하면 오류 위험이 줄어들고 다양한 제품에 걸쳐 업데이트가 더욱 효율적으로 이루어집니다.

결론

그만큼 COM(구성 요소 개체 모델)은 테스트 자동화를 구성하기 위한 강력한 디자인 패턴입니다. 재사용 가능한 구성 요소에 중점을 두어 COM을 사용하면 보다 모듈화되고 유지 관리 및 확장 가능한 테스트를 만들 수 있습니다. 이 패턴은 사용자 인터페이스가 빠르게 변경되고 독립 구성 요소와의 상호 작용이 필수적인 최신 애플리케이션에 특히 유용합니다.

재사용 가능한 테스트, 단순화된 유지 관리 및 유연한 아키텍처를 통해 COM 테스트 자동화를 위한 이상적인 솔루션입니다. 셀렌 그리고 오이 프로젝트.

출처 참조

Post Comment