21
Строим свой первый Фреймворк на Selenium + TestNG

Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

  • Upload
    dataart

  • View
    171

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Строим свой первый Фреймворк

на Selenium + TestNG

Page 2: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

2 года в IT

Из них 1,5 связаны с автоматизированным тестированием

Опыт работы в разного типа проектах, от стартапа до больших легаси проектов

Опыт автоматизации на базе Java и .NET

Несколько слов о себе

Page 3: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Жизнь слишком коротка, чтобы заниматься

ручным тестированием.

Page 4: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Жизнь слишком коротка, чтобы заниматься

только ручным тестированием.

Page 5: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Что такое автоматизированное тестирование?

Автоматизированное тестирование - это процесс проверки ПО, при котором

основные функции и шаги теста выполняются автоматически с использованием

специальных инструментов.

Page 6: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Преимущества автоматизированного тестирования:

Повторяемость

Быстрое выполнение тестов

Автономное выполнение тестов

Автоматическая генерация отчетов

Page 7: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Недостатки автоматизированного тестирования:

Повторяемость

Пропуск мелких ошибок

Затраты на разработку

Затраты на поддержку

Стоимость инструмента

Page 8: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

ActionsHTTP

Response

HTTP Request

Принцип работы Web-приложения

Page 9: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Actions

HTTP Response

HTTP Request

А где же Selenium WebDriver?

Assertion results

Page 10: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Selenium IDE

Page 11: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Запись тестов

Различные виды проверок (assertions, verifications)

Создание тестовых наборов

Автоматический запуск тестов по расписанию

Репорты с помощью Pretty Report add-on

И даже экспорт записанных тестов в виде кода

Возможности Selenium IDE

Page 12: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Прохождение pre-conditions для ручных тестов

Проверка валидации на стороне клиента

Приложения, ненагруженные Ajax запросами

Минусы:

Запись большого кол-ва ненужных действий

Тяжело поддерживаемые тесты

Экспортируемый код нужно переписывать почти полностью

Работает только в Firefox

Когда использовать?

Page 13: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Построение фреймворка на

Selenium WebDriver + TestNG

Page 14: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Что такое Selenium WebDriver?

“Selenium WebDriver представляет собой драйвер браузера, то есть

программную библиотеку, которая позволяет разрабатывать программы,

управляющие поведением браузера.”

Алексей Баранцев

Page 15: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

О WebDriver

Языки программирования:

Java

C#

Ruby

Python

и т.д.

Поддерживаемые браузеры:

Firefox 3.6+

Internet Explorer 6+

Safari 2+

Opera 8+

Google Chrome 12.0.712.0+

и т.д.

Page 16: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Необходимые инструменты

Required:

Java SDK (.NET for C#)

IntelliJ IDEA (Eclipse for Java, Visual Studio for C#)

WebDriver - библиотека для работы с браузером

TestNG - фреймворк тестирования (JUnit for Java, NUnit fro C#)

Maven - инструмент для сборки проекта (Ant for Java, MSBuild for C#)

Optional:

FireBug - add-on для Firefox, заменяющий Dev Tools

FirePath - add-on для Firefox, позволяющий писать локаторы в FireBug

Page 17: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Локаторы

1. По id driver.FindElement(By.Id(“id”));

2. По атрибуту name driver.FindElement(By.Name(“name”));

3. По имени класса driver.FindElement(By.ClassName(“className”));

4. По css селектору driver.FindElement(By.Css(“css”));

5. По xPath driver.FindElement(By.XPath(“xPath”));

6. По тексту ссылки driver.FindElement(By.LinkText(“linkText”));

PRIORITY

Page 18: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Page Object Pattern

Принципы:

Методы для взаимодействия с элементами страницы в классах страниц

(Например: HomePage.java)

Тестовые методы в классах тестов

(Например: HomePageTests.java)

Зачем?

Улучшение поддерживаемости кода

Снижение дупликации кода

Page 19: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Page Factory Pattern

Принципы:Элементы страницы описываются в рамках класса страницы

@FindBy (xpath = “//a”)WebElement signInLink;

Экземпляры элементов создаются в момент инициализации страницыPageFactory.initElements(driver, HomePage.class);

Поиск элемента осуществляется в момент взаимодействия с ним

driver.FindElement(By.XPath(“//a”)).click()

signInLink.click()

Зачем?Улучшение поддерживаемости кода Снижение дупликации кода

Page 20: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Что дальше?

Параметризация

Ожидания

Работа с JavaScript

Скриншотинг

Кроссбраузерность

Многопоточный прогон тестов

Повторный прогон тестов после фейла

Обработка known issues

Расширенние репортинга

Page 21: Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG

Вопросы?