SlideShare ist ein Scribd-Unternehmen logo
1 von 28
EPAM JDI UI TEST
AUTOMATION FRAMEWORK
QA Conference
March 2016
Chief QA Automation
Работал руководителем отдела тестирования
Более 11 лет в тестировании из них 9 в
автоматизации
Роман Иовлев
•Новый проект (сверху)
•Новый проект (снизу)
•Долгий проект без автоматизации
Автоматизация
UI Автоматизация
Виды тестирования Виды UI тестирования
UI Web
Just Develop It together
UI OBJECTS
Шаблон UI Objects
• UI Objects (Epam)
• Пользовательские типизированные элементы для UI (Web, Mobile, Desktop…)
• Реализованные Page Objects (Page, Form, Search, Pagination, Login и т.д..)
• HTML Elements (Yandex)
• Пользовательские типизированные элементы (Button, Label, Table…) для Web
• Page Objects (Selenium)
• Список WebElement-ов (тегов в Html)
• Действия с WebElement-ами
@Test
public void menuTest() {
menu.select("Man");
sizes.check("M", "L");
searchButton.click();
Assert.areEquals(results.rows().count(), 4);
Assert.isNotEmpty(results.row("Best Jacket", column("Title")));
}
Пример теста
@JPage(url = "http://www.epam.com")
public class BuyPage extends WebPage {
@FindBy(css = “.menu") public Menu menu;
@FindBy(xpath = “//[@class=‘sizes’]") public CheckList sizes;
@FindBy(id = “button") public Button searchButton;
@FindBy(css = “.table") public Table results;
}
Пример UI Object
WebPage
Menu
CheckList
Button
Table
@Test
public void menuTest() {
selectInMenu("Man");
checkSizes("M", "L");
clickOnSearchButton();
Assert.areEquals(getResultRowsCount(), 4);
Assert.isEmpty(!getRowFromResults("Best Jacket", "Title"));
}
А как это выглядит на Selenium?
@FindBy(css = "") private List<WebElement> menuElements;
@FindBy(css = "") private WebElement menuIsSelected;
@FindBy(css = "") private List<WebElement> sizesElements;
@FindBy(css = "") private WebElement sizesIsChecked;
@FindBy(css = "") private List<WebElement> sizesLabels;
@FindBy(css = "") private WebElement searchButton;
@FindBy(css = "") private List<WebElement> resultsColHeaders;
@FindBy(css = "") private List<WebElement> resultsRowsHeaders;
@FindBy(css = "") private List<WebElement> resultsCellsHeaders;
@FindBy(css = "") private List<WebElement> resultsColumn;
@FindBy(css = "") private List<WebElement> resultsRow;
…
}
А как это выглядит на Selenium?
…
public void selectInMenu(string name) { … }
public void checkSizes(string… sizes) { … }
public void clickOnSearchButton() { … }
public int getResultRowsCount () { … }
public Map<string, string>
getRowFromResults(string expectedValue, string colName) { … }
…
public int getResultsCount() { … }
public boolean isResultPresent(String name) { … }
public WebElement getSomeAttributeForResult(String name)
{ … }
…
public List<WebElement> findAllResultsMatch(String name) {
… }
}
protected WebDriver driver;
public JacketPage(WebDriver driver) {
this.driver = driver
}
public class JacketPage {
Web, Mobile, Desktop…
C# .Net
Java
JDI.UITestFramework
Web-Selenium
<dependency>
<groupId>com.epam.jdi</groupId>
<artifactId>jdi-uitest-web</artifactId>
<version>1.0.2-SNAPSHOT </version>
</dependency>
Desktop-Sikuli
<dependency>
<groupId>com.epam.jdi</groupId>
<artifactId>jdi-uitest-gui</artifactId>
<version>1.0.2-SNAPSHOT </version>
</dependency>
Mobile-Appium
<dependency>
<groupId>com.epam.jdi</groupId>
<artifactId>jdi-uitest-mobile</artifactId>
<version>1.0.2-SNAPSHOT </version>
</dependency>
@JSite(domain = "https://www.epam.com")
public class EpamSite extends WebSite {
@JPage(url = "/")
public static HomePage homePage;
@JPage(url = "/careers", title = "Careers")
public static CareerPage careerPage;
@JPage(url = "/careers/job-listings", title = "Job Listings",
urlCheckType = CONTAIN, titleCheckType = CONTAIN)
public static JobPage jobPage;
...
}
Сайт и страницы
Epam site
Home page
• Navigation Menu : IMenu
• Search : ISearch
• Footer : Footer
• About : Ilink
• Contacts: IText
Career page
• JobFilter
• Keywords
• Category
• City
Job page
• …
WebSite.init(EpamSite.class);WebSite.init(EpamSite.class);
@JPage(url = "http://www.epam.com")
public class BuyPage extends WebPage {
@FindBy(css = “.menu") public Menu menu;
@FindBy(xpath = “//[@class=‘sizes’]") public CheckList sizes;
@FindBy(id = “button") public Button searchButton;
@FindBy(css = “.table") public Table results;
@Frame(css = “.store") public Store store;
}
Пример UI Object
public class AddCVForm extends Form<Attendee> {
@FindBy(css = “.first-name“) private ITextField name;
@FindBy(css = “.last-name“) private ITextField lastName;
@FindBy(css = “.email“) private ITextField email;
@FindBy(css = “.file-upload“) private RFileInput cv;
@FindBy(css = “.comment-input“) private ITextArea comment;
@FindBy(xpath = “//*[.='Submit']“) private IButton submit;
@FindBy(xpath = “//*[.='Cancel']“) private IButton cancel;
}
Формы
@Test(dataProvider = “attendees”)
public void menuTest(Attendee attendee) {
searchFilter.fill(attendee);
checkSuggestionsContains(attendee);
searchFilter.search(attendee);
assertEquals(results.rows().count(), 1);
results.row(attendee.name, column(“Name”))
addCVForm.submit(attendee.cv);
checkCVInDB(attendee.cv);
previewForm.verify(attendee);
}
EDT (Entities driven testing)
loginForm.login(user);
purchase.cancel(wear);
experiment.publish(experiment);
creditForm.save(order.data);
…
public class User {
public String name;
public String password;
public User(String name, String password) {
this.name = name;
this.password = password;
}
}
• JDI – фреймворк реализующий подход UI Objects
• Большое количество элементов (более 30) включая сложные (с 10-ками
действий)
• Иерархическая инициализация UI Objects
• Умеет работать с Фреймами
• Поддерживает EDT
UI Objects
ИНТЕГРАЦИЯ
КАСТОМИЗАЦИЯ
СТАБИЛИЗАЦИЯ
“Easy things should be easy, and hard things should be possible”
Larry Wall (c)
Концепция
Модульная структура
Наши друзья
Кастомизация
Конкретное действие
Новый тип элемента
Все действия всех элементов
Стабилизация
Уменьшить затрат (время/деньги) на написание тестов в целом и
создание модели сайта в частности в разы (если не на порядки)*
Уменьшение затрат на поддержку тестов
Читабельность тестов (UI Objects)
Уменьшение времени поиска багов
Читабельность тестов (UI Objects)
Логирование
Репортинг
PROFIT!!!
* Объектная модель экономия до 80% времени
Написание тестов около 50% времени
Затраты на поддержку тестов экономия до 70%
Поиск багов экономия 30-50%
Уменьшение числа false-positive/negative
Стабилизация
Читабельность тестов (UI Objects)
Любой UI (Web, Mobile, Desktop)
Поддержка Java и C#
Удовольствие от автоматизации
PROFIT!!!
Планы
No effort performance testing
Tests execution statistic
UI view testing module
Web plugin for fast PageObjects recording
Ожидания
Вопросы?
https://jdi.epam.com
https://github.com/epam/JDI
https://vk.com/jdi_framework
roman.Iovlev
roman_iovlev@epam.com

Weitere ähnliche Inhalte

Was ist angesagt?

Профилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаПрофилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаprivate_face
 
Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0matroskin1980
 
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаprivate_face
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Ontico
 
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...CodeFest
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4Technopark
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.Igor Shkulipa
 
Виталий Каторгин, Wamba
Виталий Каторгин, WambaВиталий Каторгин, Wamba
Виталий Каторгин, WambaOntico
 
Tequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONTequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONIvan Nemytchenko
 
тестирование защищенности веб приложений
тестирование защищенности веб приложенийтестирование защищенности веб приложений
тестирование защищенности веб приложенийZestranec
 
Приложения для Windows Phone: как мы это делаем #codefest
Приложения для Windows Phone: как мы это делаем #codefestПриложения для Windows Phone: как мы это делаем #codefest
Приложения для Windows Phone: как мы это делаем #codefestActis Wunderman
 
Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Paul Klimov
 

Was ist angesagt? (15)

Crazy owl yii1=> yii2
Crazy owl yii1=> yii2Crazy owl yii1=> yii2
Crazy owl yii1=> yii2
 
Профилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаПрофилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кода
 
Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0Alexander manuhin selenium_php_v2.0
Alexander manuhin selenium_php_v2.0
 
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кода
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
 
Laravel 4 fwdays
Laravel 4 fwdaysLaravel 4 fwdays
Laravel 4 fwdays
 
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
CodeFest 2013. Никонов Г. — Как мы разрабатываем приложения для Windows Phone...
 
Web осень 2013 лекция 4
Web осень 2013 лекция 4Web осень 2013 лекция 4
Web осень 2013 лекция 4
 
JS and files ver 1
JS and files ver 1JS and files ver 1
JS and files ver 1
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
Виталий Каторгин, Wamba
Виталий Каторгин, WambaВиталий Каторгин, Wamba
Виталий Каторгин, Wamba
 
Tequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSONTequila - язык для продвинутой генерации JSON
Tequila - язык для продвинутой генерации JSON
 
тестирование защищенности веб приложений
тестирование защищенности веб приложенийтестирование защищенности веб приложений
тестирование защищенности веб приложений
 
Приложения для Windows Phone: как мы это делаем #codefest
Приложения для Windows Phone: как мы это делаем #codefestПриложения для Windows Phone: как мы это делаем #codefest
Приложения для Windows Phone: как мы это делаем #codefest
 
Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2
 

Andere mochten auch

Roman iovlev. Test UI with JDI - Selenium camp
Roman iovlev. Test UI with JDI - Selenium campRoman iovlev. Test UI with JDI - Selenium camp
Roman iovlev. Test UI with JDI - Selenium campРоман Иовлев
 
SECON'2016. Лексунин Евгений, Как не запутаться в веб-разработке
SECON'2016. Лексунин Евгений, Как не запутаться в веб-разработкеSECON'2016. Лексунин Евгений, Как не запутаться в веб-разработке
SECON'2016. Лексунин Евгений, Как не запутаться в веб-разработкеSECON
 
SECON'2016. Кузнецов Вячеслав, Workflow одной Ops-команды
SECON'2016. Кузнецов Вячеслав, Workflow одной Ops-командыSECON'2016. Кузнецов Вячеслав, Workflow одной Ops-команды
SECON'2016. Кузнецов Вячеслав, Workflow одной Ops-командыSECON
 
SECON'2016. Мухаметов Андрей, RxSwift && Apple TV - так ли хорошо всё новое?
SECON'2016. Мухаметов Андрей, RxSwift && Apple TV - так ли хорошо всё новое?SECON'2016. Мухаметов Андрей, RxSwift && Apple TV - так ли хорошо всё новое?
SECON'2016. Мухаметов Андрей, RxSwift && Apple TV - так ли хорошо всё новое?SECON
 
Trishweb
TrishwebTrishweb
Trishwebgscoons
 
2 tema 4 estructuras organizativas del centro escolar-1
2 tema 4 estructuras organizativas del centro escolar-12 tema 4 estructuras organizativas del centro escolar-1
2 tema 4 estructuras organizativas del centro escolar-1Paco Pérez-Fernández
 
Future of UI Automation testing and JDI
Future of UI Automation testing and JDIFuture of UI Automation testing and JDI
Future of UI Automation testing and JDICOMAQA.BY
 
карта IT профессий
карта IT профессийкарта IT профессий
карта IT профессийCOMAQA.BY
 
Как перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьКак перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьSQALab
 
Implementing a testing strategy
Implementing a testing strategyImplementing a testing strategy
Implementing a testing strategyDaniel Giraldo
 
А давайте будем многопоточить и масштабировить! - записки сумасшедшего №0
А давайте будем многопоточить и масштабировить! - записки сумасшедшего №0А давайте будем многопоточить и масштабировить! - записки сумасшедшего №0
А давайте будем многопоточить и масштабировить! - записки сумасшедшего №0COMAQA.BY
 
Автоматизация тестирования API для начинающих
Автоматизация тестирования API для начинающихАвтоматизация тестирования API для начинающих
Автоматизация тестирования API для начинающихCOMAQA.BY
 
Practica virtual del agua
Practica virtual del agua Practica virtual del agua
Practica virtual del agua Liliana Vidal
 
В топку Postman - пишем API автотесты в привычном стеке
В топку Postman - пишем API автотесты в привычном стекеВ топку Postman - пишем API автотесты в привычном стеке
В топку Postman - пишем API автотесты в привычном стекеCOMAQA.BY
 
Career boost: как джуниору случайно стать лидом и не получить от этого удовол...
Career boost: как джуниору случайно стать лидом и не получить от этого удовол...Career boost: как джуниору случайно стать лидом и не получить от этого удовол...
Career boost: как джуниору случайно стать лидом и не получить от этого удовол...COMAQA.BY
 
тестовые стратегии
тестовые стратегиитестовые стратегии
тестовые стратегииCOMAQA.BY
 
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...COMAQA.BY
 
Casco para bomberos dräger hps 7000
Casco para bomberos   dräger hps 7000Casco para bomberos   dräger hps 7000
Casco para bomberos dräger hps 7000Jose M. Manero
 
Логические инструменты в арсенале тестировщика
Логические инструменты в арсенале тестировщикаЛогические инструменты в арсенале тестировщика
Логические инструменты в арсенале тестировщикаCOMAQA.BY
 
Процесс тестирования в условиях неявных требований
Процесс тестирования в условиях неявных требований Процесс тестирования в условиях неявных требований
Процесс тестирования в условиях неявных требований COMAQA.BY
 

Andere mochten auch (20)

Roman iovlev. Test UI with JDI - Selenium camp
Roman iovlev. Test UI with JDI - Selenium campRoman iovlev. Test UI with JDI - Selenium camp
Roman iovlev. Test UI with JDI - Selenium camp
 
SECON'2016. Лексунин Евгений, Как не запутаться в веб-разработке
SECON'2016. Лексунин Евгений, Как не запутаться в веб-разработкеSECON'2016. Лексунин Евгений, Как не запутаться в веб-разработке
SECON'2016. Лексунин Евгений, Как не запутаться в веб-разработке
 
SECON'2016. Кузнецов Вячеслав, Workflow одной Ops-команды
SECON'2016. Кузнецов Вячеслав, Workflow одной Ops-командыSECON'2016. Кузнецов Вячеслав, Workflow одной Ops-команды
SECON'2016. Кузнецов Вячеслав, Workflow одной Ops-команды
 
SECON'2016. Мухаметов Андрей, RxSwift && Apple TV - так ли хорошо всё новое?
SECON'2016. Мухаметов Андрей, RxSwift && Apple TV - так ли хорошо всё новое?SECON'2016. Мухаметов Андрей, RxSwift && Apple TV - так ли хорошо всё новое?
SECON'2016. Мухаметов Андрей, RxSwift && Apple TV - так ли хорошо всё новое?
 
Trishweb
TrishwebTrishweb
Trishweb
 
2 tema 4 estructuras organizativas del centro escolar-1
2 tema 4 estructuras organizativas del centro escolar-12 tema 4 estructuras organizativas del centro escolar-1
2 tema 4 estructuras organizativas del centro escolar-1
 
Future of UI Automation testing and JDI
Future of UI Automation testing and JDIFuture of UI Automation testing and JDI
Future of UI Automation testing and JDI
 
карта IT профессий
карта IT профессийкарта IT профессий
карта IT профессий
 
Как перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизироватьКак перестать бояться и начать автоматизировать
Как перестать бояться и начать автоматизировать
 
Implementing a testing strategy
Implementing a testing strategyImplementing a testing strategy
Implementing a testing strategy
 
А давайте будем многопоточить и масштабировить! - записки сумасшедшего №0
А давайте будем многопоточить и масштабировить! - записки сумасшедшего №0А давайте будем многопоточить и масштабировить! - записки сумасшедшего №0
А давайте будем многопоточить и масштабировить! - записки сумасшедшего №0
 
Автоматизация тестирования API для начинающих
Автоматизация тестирования API для начинающихАвтоматизация тестирования API для начинающих
Автоматизация тестирования API для начинающих
 
Practica virtual del agua
Practica virtual del agua Practica virtual del agua
Practica virtual del agua
 
В топку Postman - пишем API автотесты в привычном стеке
В топку Postman - пишем API автотесты в привычном стекеВ топку Postman - пишем API автотесты в привычном стеке
В топку Postman - пишем API автотесты в привычном стеке
 
Career boost: как джуниору случайно стать лидом и не получить от этого удовол...
Career boost: как джуниору случайно стать лидом и не получить от этого удовол...Career boost: как джуниору случайно стать лидом и не получить от этого удовол...
Career boost: как джуниору случайно стать лидом и не получить от этого удовол...
 
тестовые стратегии
тестовые стратегиитестовые стратегии
тестовые стратегии
 
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...
Тестирование мобильных приложений используя облачные сервисы. TestDroid, Test...
 
Casco para bomberos dräger hps 7000
Casco para bomberos   dräger hps 7000Casco para bomberos   dräger hps 7000
Casco para bomberos dräger hps 7000
 
Логические инструменты в арсенале тестировщика
Логические инструменты в арсенале тестировщикаЛогические инструменты в арсенале тестировщика
Логические инструменты в арсенале тестировщика
 
Процесс тестирования в условиях неявных требований
Процесс тестирования в условиях неявных требований Процесс тестирования в условиях неявных требований
Процесс тестирования в условиях неявных требований
 

Ähnlich wie SECON'2016. Иовлев Роман, JDI is UI Automation Future

Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationAndrii Dzynia
 
вебинар - функциональное тестирование с использованием Selenium 2 и TestNG
вебинар - функциональное тестирование с использованием Selenium 2 и TestNGвебинар - функциональное тестирование с использованием Selenium 2 и TestNG
вебинар - функциональное тестирование с использованием Selenium 2 и TestNGAndrey Rebrov
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
 
Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverIgor Khrol
 
Разработка крупного Standalone проекта на юнити: улучшаем производительность
Разработка крупного Standalone проекта на юнити: улучшаем производительностьРазработка крупного Standalone проекта на юнити: улучшаем производительность
Разработка крупного Standalone проекта на юнити: улучшаем производительностьВадим Воробьев
 
How IntelliJ IDEA plugin can help you in QA Automation
How IntelliJ IDEA plugin can help you in QA AutomationHow IntelliJ IDEA plugin can help you in QA Automation
How IntelliJ IDEA plugin can help you in QA AutomationDmitriy Gumeniuk
 
automation is iOS development
automation is iOS developmentautomation is iOS development
automation is iOS developmentIvan Trifonov
 
Плюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизниПлюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизниz-tech
 
Руководство по приготовлению бутербродов из Selenium
Руководство по приготовлению бутербродов из SeleniumРуководство по приготовлению бутербродов из Selenium
Руководство по приготовлению бутербродов из SeleniumUladzimir Kryvenka
 
Автоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneCodeFest
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
MyBatis на практике
MyBatis на практикеMyBatis на практике
MyBatis на практикеVitebsk Miniq
 
Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Dmitry Stropalov
 
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"Fwdays
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейPaul Stashevsky
 

Ähnlich wie SECON'2016. Иовлев Роман, JDI is UI Automation Future (20)

Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
вебинар - функциональное тестирование с использованием Selenium 2 и TestNG
вебинар - функциональное тестирование с использованием Selenium 2 и TestNGвебинар - функциональное тестирование с использованием Selenium 2 и TestNG
вебинар - функциональное тестирование с использованием Selenium 2 и TestNG
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
 
Типичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriver
 
Разработка крупного Standalone проекта на юнити: улучшаем производительность
Разработка крупного Standalone проекта на юнити: улучшаем производительностьРазработка крупного Standalone проекта на юнити: улучшаем производительность
Разработка крупного Standalone проекта на юнити: улучшаем производительность
 
How IntelliJ IDEA plugin can help you in QA Automation
How IntelliJ IDEA plugin can help you in QA AutomationHow IntelliJ IDEA plugin can help you in QA Automation
How IntelliJ IDEA plugin can help you in QA Automation
 
automation is iOS development
automation is iOS developmentautomation is iOS development
automation is iOS development
 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
Плюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизниПлюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизни
 
Руководство по приготовлению бутербродов из Selenium
Руководство по приготовлению бутербродов из SeleniumРуководство по приготовлению бутербродов из Selenium
Руководство по приготовлению бутербродов из Selenium
 
Автоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows Phone
 
Selenium vs AJAX
Selenium vs AJAXSelenium vs AJAX
Selenium vs AJAX
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
My batis
My batisMy batis
My batis
 
MyBatis на практике
MyBatis на практикеMyBatis на практике
MyBatis на практике
 
Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)
 
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
Анджей Гужовский "Riot.JS, или как приготовить современные Web Components"
 
BlueEyes russian
BlueEyes russianBlueEyes russian
BlueEyes russian
 
Selenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностейSelenium 2.0: обзор новых возможностей
Selenium 2.0: обзор новых возможностей
 

Mehr von SECON

SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем?
 SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем? SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем?
SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем?SECON
 
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя ВнедрятьSECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя ВнедрятьSECON
 
SECON'2017, Васильков Василий, Elm в production
SECON'2017, Васильков Василий, Elm в productionSECON'2017, Васильков Василий, Elm в production
SECON'2017, Васильков Василий, Elm в productionSECON
 
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.SECON
 
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступленийSECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступленийSECON
 
SECON'2017, Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
SECON'2017, 	Рожкова Надежда, Бухгалтерские лайфхаки для IT компанийSECON'2017, 	Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
SECON'2017, Рожкова Надежда, Бухгалтерские лайфхаки для IT компанийSECON
 
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...SECON
 
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленкеSECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленкеSECON
 
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигниSECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигниSECON
 
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?SECON
 
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...SECON
 
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...SECON
 
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...SECON
 
SECON'2017, Цаль-Цалко Иван, Go на практике
SECON'2017, Цаль-Цалко Иван, Go на практикеSECON'2017, Цаль-Цалко Иван, Go на практике
SECON'2017, Цаль-Цалко Иван, Go на практикеSECON
 
SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON
 
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проектаSECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проектаSECON
 
SECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
SECON'2017, Макарычев Костантин, Использование Spark для машинного обученияSECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
SECON'2017, Макарычев Костантин, Использование Spark для машинного обученияSECON
 
SECON'2017, Журавлев Денис, Маркетинг без маркетолога
SECON'2017, Журавлев Денис, Маркетинг без маркетологаSECON'2017, Журавлев Денис, Маркетинг без маркетолога
SECON'2017, Журавлев Денис, Маркетинг без маркетологаSECON
 
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателяSECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателяSECON
 
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.SECON
 

Mehr von SECON (20)

SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем?
 SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем? SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем?
SECON'2017, LAZADA Effartlrss Shopping, Как мы тестируем?
 
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя ВнедрятьSECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
SECON'2017, Куприенко Игорь, Университет 4.0: Ждать Нельзя Внедрять
 
SECON'2017, Васильков Василий, Elm в production
SECON'2017, Васильков Василий, Elm в productionSECON'2017, Васильков Василий, Elm в production
SECON'2017, Васильков Василий, Elm в production
 
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
SECON'2017, Емельянов Игорь, Я хочу стать программистом: первые шаги.
 
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступленийSECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
SECON'2017, Тыкушин Анатолий, Болдырев Михаил, Расследование кибер-преступлений
 
SECON'2017, Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
SECON'2017, 	Рожкова Надежда, Бухгалтерские лайфхаки для IT компанийSECON'2017, 	Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
SECON'2017, Рожкова Надежда, Бухгалтерские лайфхаки для IT компаний
 
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
SECON'2017, Янов Альберт, Управленческий учет в компании: для чего он нужен и...
 
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленкеSECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
SECON'2017, Емелина Елена, Управленческий учет в софтверной компании на коленке
 
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигниSECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
SECON'2017, Кузнецов Михаил, Самоуправляемая компания без бюрократии и фигни
 
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
SECON'2017, Коротков Анатолий, #noprojects #nomvp .. куда катится мир?
 
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
SECON'2017, Трошин Алексей, Выжить без менеджера: шаблоны правильных коммуник...
 
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
SECON'2017, Цветцих Денис, Как добавить работе по Agile предсказуемости, не п...
 
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
SECON'2017, Мартынов Антон, Опыт использования удаленных команд при реализаци...
 
SECON'2017, Цаль-Цалко Иван, Go на практике
SECON'2017, Цаль-Цалко Иван, Go на практикеSECON'2017, Цаль-Цалко Иван, Go на практике
SECON'2017, Цаль-Цалко Иван, Go на практике
 
SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#SECON'2017, Неволин Роман, Функциональный C#
SECON'2017, Неволин Роман, Функциональный C#
 
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проектаSECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
SECON'2017, Мелехова Анна, Архитектура как стихия. Обуздываем энтропию проекта
 
SECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
SECON'2017, Макарычев Костантин, Использование Spark для машинного обученияSECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
SECON'2017, Макарычев Костантин, Использование Spark для машинного обучения
 
SECON'2017, Журавлев Денис, Маркетинг без маркетолога
SECON'2017, Журавлев Денис, Маркетинг без маркетологаSECON'2017, Журавлев Денис, Маркетинг без маркетолога
SECON'2017, Журавлев Денис, Маркетинг без маркетолога
 
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателяSECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
SECON'2017, Шатров Михаил, Инструменты успешного предпринимателя
 
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
SECON'2017, Цымбал Дмитрий, Компания - Компания. Дружба на этом уровне.
 

SECON'2016. Иовлев Роман, JDI is UI Automation Future

  • 1. EPAM JDI UI TEST AUTOMATION FRAMEWORK QA Conference March 2016
  • 2. Chief QA Automation Работал руководителем отдела тестирования Более 11 лет в тестировании из них 9 в автоматизации Роман Иовлев
  • 3. •Новый проект (сверху) •Новый проект (снизу) •Долгий проект без автоматизации Автоматизация
  • 4. UI Автоматизация Виды тестирования Виды UI тестирования UI Web
  • 5. Just Develop It together
  • 7. Шаблон UI Objects • UI Objects (Epam) • Пользовательские типизированные элементы для UI (Web, Mobile, Desktop…) • Реализованные Page Objects (Page, Form, Search, Pagination, Login и т.д..) • HTML Elements (Yandex) • Пользовательские типизированные элементы (Button, Label, Table…) для Web • Page Objects (Selenium) • Список WebElement-ов (тегов в Html) • Действия с WebElement-ами
  • 8. @Test public void menuTest() { menu.select("Man"); sizes.check("M", "L"); searchButton.click(); Assert.areEquals(results.rows().count(), 4); Assert.isNotEmpty(results.row("Best Jacket", column("Title"))); } Пример теста
  • 9. @JPage(url = "http://www.epam.com") public class BuyPage extends WebPage { @FindBy(css = “.menu") public Menu menu; @FindBy(xpath = “//[@class=‘sizes’]") public CheckList sizes; @FindBy(id = “button") public Button searchButton; @FindBy(css = “.table") public Table results; } Пример UI Object WebPage Menu CheckList Button Table
  • 10. @Test public void menuTest() { selectInMenu("Man"); checkSizes("M", "L"); clickOnSearchButton(); Assert.areEquals(getResultRowsCount(), 4); Assert.isEmpty(!getRowFromResults("Best Jacket", "Title")); } А как это выглядит на Selenium?
  • 11. @FindBy(css = "") private List<WebElement> menuElements; @FindBy(css = "") private WebElement menuIsSelected; @FindBy(css = "") private List<WebElement> sizesElements; @FindBy(css = "") private WebElement sizesIsChecked; @FindBy(css = "") private List<WebElement> sizesLabels; @FindBy(css = "") private WebElement searchButton; @FindBy(css = "") private List<WebElement> resultsColHeaders; @FindBy(css = "") private List<WebElement> resultsRowsHeaders; @FindBy(css = "") private List<WebElement> resultsCellsHeaders; @FindBy(css = "") private List<WebElement> resultsColumn; @FindBy(css = "") private List<WebElement> resultsRow; … } А как это выглядит на Selenium? … public void selectInMenu(string name) { … } public void checkSizes(string… sizes) { … } public void clickOnSearchButton() { … } public int getResultRowsCount () { … } public Map<string, string> getRowFromResults(string expectedValue, string colName) { … } … public int getResultsCount() { … } public boolean isResultPresent(String name) { … } public WebElement getSomeAttributeForResult(String name) { … } … public List<WebElement> findAllResultsMatch(String name) { … } } protected WebDriver driver; public JacketPage(WebDriver driver) { this.driver = driver } public class JacketPage {
  • 12. Web, Mobile, Desktop… C# .Net Java JDI.UITestFramework Web-Selenium <dependency> <groupId>com.epam.jdi</groupId> <artifactId>jdi-uitest-web</artifactId> <version>1.0.2-SNAPSHOT </version> </dependency> Desktop-Sikuli <dependency> <groupId>com.epam.jdi</groupId> <artifactId>jdi-uitest-gui</artifactId> <version>1.0.2-SNAPSHOT </version> </dependency> Mobile-Appium <dependency> <groupId>com.epam.jdi</groupId> <artifactId>jdi-uitest-mobile</artifactId> <version>1.0.2-SNAPSHOT </version> </dependency>
  • 13. @JSite(domain = "https://www.epam.com") public class EpamSite extends WebSite { @JPage(url = "/") public static HomePage homePage; @JPage(url = "/careers", title = "Careers") public static CareerPage careerPage; @JPage(url = "/careers/job-listings", title = "Job Listings", urlCheckType = CONTAIN, titleCheckType = CONTAIN) public static JobPage jobPage; ... } Сайт и страницы Epam site Home page • Navigation Menu : IMenu • Search : ISearch • Footer : Footer • About : Ilink • Contacts: IText Career page • JobFilter • Keywords • Category • City Job page • … WebSite.init(EpamSite.class);WebSite.init(EpamSite.class);
  • 14. @JPage(url = "http://www.epam.com") public class BuyPage extends WebPage { @FindBy(css = “.menu") public Menu menu; @FindBy(xpath = “//[@class=‘sizes’]") public CheckList sizes; @FindBy(id = “button") public Button searchButton; @FindBy(css = “.table") public Table results; @Frame(css = “.store") public Store store; } Пример UI Object
  • 15. public class AddCVForm extends Form<Attendee> { @FindBy(css = “.first-name“) private ITextField name; @FindBy(css = “.last-name“) private ITextField lastName; @FindBy(css = “.email“) private ITextField email; @FindBy(css = “.file-upload“) private RFileInput cv; @FindBy(css = “.comment-input“) private ITextArea comment; @FindBy(xpath = “//*[.='Submit']“) private IButton submit; @FindBy(xpath = “//*[.='Cancel']“) private IButton cancel; } Формы
  • 16. @Test(dataProvider = “attendees”) public void menuTest(Attendee attendee) { searchFilter.fill(attendee); checkSuggestionsContains(attendee); searchFilter.search(attendee); assertEquals(results.rows().count(), 1); results.row(attendee.name, column(“Name”)) addCVForm.submit(attendee.cv); checkCVInDB(attendee.cv); previewForm.verify(attendee); } EDT (Entities driven testing) loginForm.login(user); purchase.cancel(wear); experiment.publish(experiment); creditForm.save(order.data); … public class User { public String name; public String password; public User(String name, String password) { this.name = name; this.password = password; } }
  • 17. • JDI – фреймворк реализующий подход UI Objects • Большое количество элементов (более 30) включая сложные (с 10-ками действий) • Иерархическая инициализация UI Objects • Умеет работать с Фреймами • Поддерживает EDT UI Objects
  • 19. “Easy things should be easy, and hard things should be possible” Larry Wall (c) Концепция
  • 22. Кастомизация Конкретное действие Новый тип элемента Все действия всех элементов
  • 24. Уменьшить затрат (время/деньги) на написание тестов в целом и создание модели сайта в частности в разы (если не на порядки)* Уменьшение затрат на поддержку тестов Читабельность тестов (UI Objects) Уменьшение времени поиска багов Читабельность тестов (UI Objects) Логирование Репортинг PROFIT!!! * Объектная модель экономия до 80% времени Написание тестов около 50% времени Затраты на поддержку тестов экономия до 70% Поиск багов экономия 30-50%
  • 25. Уменьшение числа false-positive/negative Стабилизация Читабельность тестов (UI Objects) Любой UI (Web, Mobile, Desktop) Поддержка Java и C# Удовольствие от автоматизации PROFIT!!!
  • 26. Планы No effort performance testing Tests execution statistic UI view testing module Web plugin for fast PageObjects recording

Hinweis der Redaktion

  1. Работаю в компании Epam в
  2. * К вам приходит босс и говорит: Саша, у нас тут начинается новый проект, мы хотим чтобы в нем была автоматизация вперед * Вы после долгих уговоров и объяснений зачем проекту нужна автоматизация получаете добро. С чего начать? (важно не подвести, сделать автоматизацию быстро и качественно) Долгий проект, ручное тестирование , большая регрессия: заказчик понял, что так больше нельзя и попросил вас наладить регрессию (и так большая загрузка - важно быстро начать получать пользу – уменьшить время регрессии) Epam – крупная компания в которой работает более 17 тысяч человек по всем миру. Только в Питере уже более чем 1200 и каждый год мы только растем У нас множество разных проектов от Биоинформатики и Генной инженерии до разработки магазинов, трейдинговых систем и банковских сервисов Задачи тоже разные от создания корпоративных сайтов до разработки высокопроизводительных кластеров и высоконагруенных систем Все это обилие проектов заставляет нас оптимизировать затраты на старт новых проектов (поскольку новые проекты стартуют довольно часто)
  3. Давайте работать вместе. Если вы начинающий тест инженер или у вас нет под рукой своего хорошего фреймворка для UI, то используя наш Фреймворк вы можете серьезно сократить затраты на начало тестирования. И сразу написать гораздо более качественные тесты Если вы сделали свой классный фреймворк, и считаете что он лучше наше и конечно стремитесь им поделится, или вы просто считает, что какие-то важные области не охвачены фреймворком. Мы будем рады сотрудничеству. Посмотреть на ваши идеи и внедрить их к себе либо реализовать ваши пожелания
  4. В компании Epam
  5. Встроенная поддержка работы с фреймами
  6. * К вам приходит босс и говорит: Саша, у нас тут начинается новый проект, мы хотим чтобы в нем была автоматизация вперед * Вы после долгих уговоров и объяснений зачем проекту нужна автоматизация получаете добро. С чего начать? (важно не подвести, сделать автоматизацию быстро и качественно) * Долгий проект, ручное тестирование , большая регрессия: заказчик понял, что так больше нельзя и попросил вас наладить регрессию (и так большая загрузка - важно быстро начать получать пользу – уменьшить время регрессии)