Test Automation from Scratch with Widgets [Selenium + Java, in Russian]

Test Automation from Scratch with Widgets [Selenium + Java, in Russian]

Regular price $99.00 $60.00 Sale

О Курсе

  • до 4 часов
  • в 43 видео уроках
  • построения автоматизации с нуля на Selenium + Java (а также Selenide, JUnit, Maven, Allure Reporting, Intellij Idea)
  • сложного приложения по типу эксель таблиц
  • с использованием 
    • шаблонов PageObject/ElementObject/Widget, Fluent PageObject
    • практик и подходов обьектно ориентированного программирования (ООП)
      • Инкапсуляция
      • Композиция, Аггрегация
      • техник DRY (Don't Repeat Yourself) и KISS (Keep It Simple Stupid)
    • Selenide как враппера вокруг Selenium для лаконичных и читабельных тестов, адаптированных под динамические веб приложения
  • покрывая вопросы
    • старта автоматизации на проекте, планирования и определения приоритетов
    • структуры проекта
    • построения удобных и эффективных локаторов (Css Selectors, XPath, Selenide)
    • структуры и стиля тестов (End to End vs Atomic tests)
    • стиля проверок в тестах (явные и неявные, точные и "слабые" проверки)
    • построения тест сьютов
    • особенностях работы с Selenide, рецептов по решению распространенных проблем при работе с Selenium WebDriver
    • эффективных практик написания простого, читабельного, само-документируемого, гибкого и поддерживаемого кода
  • с акцентом на читабельность и удобноство использования построенного тест фреймворка и тестовой модели (в виде обьектов страниц и сложных элементов (аля виджетов)) даже новичками в программировании и автоматизации
    • с BDD-стилистикой структуры JUnit-тестов
    • и красивыми детальными репортами (Allure)
  • в стиле "Менеджер будет счастлив"

Для кого?

  • для начинающих строить автоматизацию на своих проектах с нуля, и не знающих с чего и как лучше начать
  • для автоматизаторов с опытом написания тестов с помощью Selenium и желающих познакомиться с некоторыми лучшими практиками в области построения автоматизации, разобрать наболевшие вопросы, научиться писать чистый качественный код.
  • для новичков
    • с базовыми знаниями о Css Selectors, Selenium, OOP (классы, объекты, конструкторы, инкапсуляция)
    • за счет Top Down design, использования Selenide и доступного объяснения - этих базовых знаний должно быть достаточно для полного понимания всего остального

 

Пример кода с подходами описаными в курсе:

THEN("Adds one more column for data and fill its cell");
app.table().addColumnAfter(0, "login valid?");
app.table().row(0).cell(1).fill("true");
app.table().shouldHaveRows(
asList("1", "true")
);

THEN("Adds one more row with both connected data storage data and new expected result data");
menu = app.table().row(0).cell(0).menu();
menu.open();
menu.select("Insert row below");
app.table().row(1).fill("2", "false");

app.table().shouldHaveRows(
asList("1", "true"),
asList("2", "false")
);

 

или так:


WHEN().table().addColumnAfter(0, "login valid?");
AND().table().row(0).cell(1).fill("true");
THEN().table().shouldHaveRows(
asList("1", "true")
);

WHEN().table().row(0).cell(0).menu().open()
.select("Insert row below");
AND().table().row(1).fill("2", "false");
THEN().table().shouldHaveRows(
asList("1", "true"),
asList("2", "false")
);

Полная программа

Некоторые видео доступны для бесплатного предпросмотра. Со временем курс будет дополнятся и новыми полезными видео ;)


I - Start

01 - Analyze app under test and define main user scenarios
02 - New Project with dependencies overview and New Test template
03 - Back to the feature - Where are we going and why OOP widgets
04 - First test step and first test configuration
05 - Inheritance is Evil
06 - First widget usage for user language over tech details
07 - First simple widget implementation and eggs in their baskets
08 - Top down design as Holmes taught
09 - Tests project structure summary

II - Build

01 - Conciseness for Readability and scoped names
02 - Versatile Widgets
03 - Versatile Widgets - Widget container for scoped search and object state
04 - Q&A - Where to find selenide methods
05 - Versatile Widgets - Selenide inner element search and xpath usage
06 - Versatile Widgets - FluentObject or FluentWidget Pattern
07 - Versatile Widgets - More about versatile locators
08 - Versatile Widgets - More about scoped search
09 - Q&A - Explicit better than implicit - applied to this object reference
10 - Premature optimization as evil or prevention
11 - DRY vs KISS
12 - Unique Test Data Generation
13 - Versatile Widgets - Self-documenting code
14 - OOP Encapsulation
15 - Object constructor usage summary
16 - Filtering collections with Selenide - more readable alternative to xpath
17 - More about restricting widget element API for newcomers
18 - Test Model Entry Point
19 - Implicit vs Explicit assertions in E2E scenarios
20 - Fluent Widgets vs Test Model Entry Point for transitions between pages
21 - Back to the future - More examples of reusing versatile widgets
22 - Back to the future - Widgets with different initial state (remembering its container)
23 - Back to the future - Taming invisible clones of located element
24 - Back to the future - More about versatile widgets coolness and search by text
25 - Back to the future - Additional steps to provide enough test data
26 - Widgets vs PageObjects
27 - Complex widget example
28 - Short Summary and BDD tricks for Allure reports
29 - Example of widget with state remembering its url - OOP vs Modular for Test Automation

III - Grow

01 - More atomic tests with preconditions for solid coverage
02 - Customizing test execution with junit categories maven profiles and java properties

IV - Addendum

01 - Selenide Tips and Tricks - setValue via JavaScript as more efficient implementation or workaround
02 - Selenide Tips and Tricks - Custom Selenide element actions
03 - Selenide Tips and Tricks - SelenideDriver for complete object orientation

FAQ

Почему Selenide?

Цель этого курса в первую очередь - научиться использовать техники объектно ориентированного программирования, использовать эффективно шаблон Widget/ElementObject/PageObject, научиться правильно строить автоматизированный тестовый сценарий, не отвлекаясь на технические детали работы с чистым WebDriver, настройку ожиданий и так далее, не писать с нуля свою обертку вокруг Selenium Webdriver (об этом будет отдельный курс), без которой невозможно построить простые лаконичные пейдж обджекты и виджеты. Selenide - просто предоставляет удобный API для наших задач. Научившись всем вышеупомянутым техникам, которые никак не связаны именно с использованием Selenide - потом можно будет также их использовать и в связке с другими библиотеками. Конечно, в курс также входят и нюансы специфичные чисто с Selenide, когда полезно их упомянуть.

Более глубокий ответ на этот вопрос можно также получить из публично доступной записи доклада: Ликвидируем Безграмотность: Implicit & Explicit Waits, PageFactory . Хотя доклад о Selenium + C# - все очень похоже на Java. Затруднений с пониманием возникнуть не должно ;)