Pull to refresh

Comments 2

Для чего нужен cucumber, если page object передает весь смысл шага и теста: loginPage.click(signInButton) - довольно очевидно, что происходит. Складывается ощущение, что добавление cucumber тут просто оверхэд, который ещё и нужно будет сложнее поддерживать. Может быть тут кейсы не достаточно показательные, но так и не понятно зачем?

Приветствую amarkina17.

На самом деле в ваших словах есть доля правды, cucumber уже давно не является популярным инструментом для тестирования. Но все же попробую донести мысль на следующем примере.

Существует некое веб приложение. Оно имеет множество схожих страниц с различными данными. Существуют таблицы с различными колонками и одинаковыми типом данных Стоит задача покрыть тестами данную часть приложения используя некую методику и использовать множество вариаций тестовых данных.

Пример веб приложения
Пример веб приложения

Достаточно создать основу с 1 тестом для 1 страницы одному опытному QA.

    @test1
Scenario: Test 1 - Section 1 Page 1 - Verify table values and manufacturer filter 
    Given DB service insert data "Section_one_page_one.json"
    When PageOne open page
    Then PageOne verify table values
        | Model        | Type        | Color        |
        | Test model 1 | Test type 1 | Test color 1 |    
    When PageOne select  filter "Manufacturer" value
        | Test manufacturer 1  |    
    Then PageOne verify table values
        | Model        | Type        | Color        |
        | Test model 2 | Test type 2 | Test color 2 |  

Далее задача покрыть все страницы тестами может быть передана менее опытному тестировщику. Который в последующем к примеру исходя из базы тест кейсов напишет тесты для имеющейся страницы используя определенный набор тестовых данных - просто копируя имеющиеся шаги в файле .feature и изменяя вводные данные

Scenario: Test 2 
    ...        
    When PageOne select  filter "Manufacturer" value
        | Test manufacturer 2 |    
    Then PageOne verify table values
        | Model        | Type        | Color        |
        | Test model 3 | Test type 3 | Test color 3 |  

          
Scenario: Test 20 
    ...        
    When PageOne select  filter "Date" value
        | 09-09-2024 |    
    Then PageOne verify table values
        | Model         | Type         | Color         |
        | Test model 50 | Test type 50 | Test color 50 |  

Для тестирования следующих, практически идентичных по строению страниц, но с немного другими элементами, достаточно создать новые файлы в step_definitions и page_objects которые будут почти идентичны имеющимся созданным для первой страницы
К примеру изменения будут выглядеть:


let PageOne: Page_One -> let PageTwo: Page_Two
await PageOne.openPage(); - > await PageTwo.openPage();

Продолжить писать тесты по аналогии в .feature

Scenario: Test 100 
    ...        
    When PageTwo select  filter "Side" value
        | Test side 10 |    
    Then PageTwo verify table values
        | Box        | Type        | Date       |
        | Test box 3 | Test type 3 | 01-01-2001 |  

          
Scenario: Test 501 
    ...        
    When PageSix select  filter "Color" value
        | Red |    
    Then PageOne verify table values
        | User          | Date       | Work |
        | Test user 5   | 01-01-2001 | Done |  

Надеюсь в данном примере мысль более детально раскрыта.

Sign up to leave a comment.

Articles