SlideShare une entreprise Scribd logo
1  sur  81
Télécharger pour lire hors ligne
Делаем кроссбраузерные тесты
поверх Webdriver
Павлов Игорь

2gis.ru

@rnd2gis
2

Обо мне
• В 2ГИС 1+ год
• Команда автоматизации тестрования
• Работал над инструменами тестирования для всех внешних webпроектов
3

О чем будет
• Откуда проблемы кроссбраузерности?
• Примеры проблем кроссбраузерности
• Решение - фреймворк
• Практические рекомендации
Откуда
проблемы?
5

Webdriver
6

Webdriver Local End

The WebDriver Wire Protocol (Json Wire Protocol)
https://code.google.com/p/selenium/wiki/JsonWireProtocol
7

Webdriver Remote End

WebDriver W3C Draft
http://www.w3.org/TR/webdriver
8

Интерфейс команды один
9

Реализация разная
10

О чем будет
• Откуда проблемы кроссбраузерности?
• Примеры проблем кроссбраузерности
• Решение - фреймворк
• Практические рекомендации
Примеры
12

Click
1. В центр элемента
2. Viewport содержит элемент
• MAY: scrollIntoView
3. Должен быть видим*

WebDriver W3C Clicking
http://www.w3.org/TR/webdriver/#clicking
13

Click: все хорошо?
Chrome
Firefox

OK

Opera

OK

Internet Explorer

клик в желтый div

OK

OK
14

Click: а так?
Chrome
Firefox

OK

Opera

OK

Internet Explorer

клик в желтый div

FAIL

NOTHING
15

Click: или даже так?
Chrome
Firefox

OK

Opera

OK

Internet Explorer

клик в желтый div

FAIL

NOTHING
16

Click: динамический контент
17

Click: другие проблемы
• прозрачность (opacity)?
• анимации?
• ...
18

onload
AJAX:

• проверить отсутствие элемента
19

resize
Опера не поддерживает
20

С Оперой все грустно. Пока...
Решения
примеров
22

Дождаться элемента
die.mlctywi()
rvripiil_at5

0 .s a t = t m . i e )
1 tr
ietm(
0 .w i e n t r s l a d t m . i e ) < s a t + t m o t
2 hl o eut n ietm(
tr
ieu:
0.
3
0.
4
0.
5
0.
6

ty
r:
rsl =die.ideeetb_d"d)
eut
rvrfn_lmn_yi(i"
ecp:
xet
ps
as
23

JS в помощь
24

Маркеры
25

JQuery click
0 .s r p = " r u e t [ ] c i k ) "
1 cit
agmns0.lc(;
0 .d i e . x c t _ c i t s r p , e e e t
2 rvreeuesrp(cit lmn)
26

Поднимаем нужный маркер
27

Поднимаем нужный маркер
28

Поднимаем нужный маркер
0 .s r p = " r u e t [ ] s y e z n e + ;
1 cit
agmns0.tl.Idx+"
0 .d i e . x c t _ c i t s r p , m r e )
2 rvreeuesrp(cit akr
0 .m r e . l c (
3 akrcik)
29

Итог
Расширяем свои возможности засчет:

1. Продуманных обработок ошибок
2. Инъекции JS

Проблема
Как не умереть от поддержки тестов с этим всем?
30

О чем будет
• Откуда проблемы кроссбраузерности?
• Примеры проблем кроссбраузерности
• Решение - фреймворк
• Практические рекомендации
Фреймворк
32

Цель фреймворка:
1. сделать тесты понятными и читаемыми
2. контролировать ньюансы кроссбраузерного запуска
33

Пять уровней
34

Уровень Driver
Уровень Driver
Цель: расширить возможности базового элемента
36

Driver inheritance
37

Driver inheritance
0. casTsDie(eoe:
1
ls etrvrRmt)
0.
2
0.
3
0.
4

df_ii_(ef *rs *kag)
e _nt_sl, ag, *wrs:
sprTsDie,sl)_ii_(ag,*kag)
ue(etrvr ef._nt_*rs *wrs
sl.bosr=Nn
ef_rwe
oe
38

WebElement inheritance
39

WebElement inheritance
0 .c a s T s W b l m n ( e E e e t :
1 ls eteEeetWblmn)
0.
2

df_ii_(ef die
e _ n t _ s l , r v r,w b e e e t)
e_lmn :

0.
3

sl._it_udt(e_lmn._it_
ef_dc_.paewbeeet_dc_)

0.
4

sl.rvr=die
efdie
rvr
40

find_element(s) override
41

find_element(s) override:
with onload solution
0 .d f f n _ l m n s l , * r s * k a g )
1 e
i d e e e t( e f a g , * w r s :
0.
2
0.
3
0.
4
0.
5
0.
6
0.
8
7

ty
r:
wi_o_lmn_per*rs *kag)
atfreeetapa(ag, *wrs
eeet=sl.rvrfn_lmn(ag,*kag)
lmn
efdie.ideeet*rs *wrs
ecp Tmotxeto:
xet ieuEcpin
rieEeetoFudkag[vle] kag[b")
as lmnNton(wrs"au", wrs"y]
rtr TsWblmn(efdie,eeet
eun eteEeetsl.rvr lmn)
42

TextWebElement extension
43

TextWebElement extension
0 .c a s T s W b l m n ( e E e e t :
1 ls eteEeetWblmn)
0.
2

**
*

0.
3
0.
4
0.
5

dffn_lmn_yszl(ef szl_eetr:
e ideeetb_izesl, izeslco)
ps
as

0.
6
0.
7
0.
8

dfjvsrp_lc(ef:
e aacitciksl)
ps
as
44

Итог

TestWebElement — "всему голова"
45

Уровень PageObject
Уровень
PageObject
Цель: описать приложение компонентами* и связать их
47

Page
48

Map
49

Markers
50

Page
51

Page
0 .c a s P g ( b e t :
1 ls aeojc)
0.
2

df_ii_(ef die)
e _nt_sl, rvr:

0.
3

sl.rvr=die
efdie
rvr

0.
4

sl.mp=Nn
ef_a
oe
52

Components
53

Components
0 .c a s M p T s W b l m n )
1 ls a(eteEeet:
0.
2

ps
as

0.
3
0 .c a s M r e ( e t e E e e t :
4 ls akrTsWblmn)
0.
5

ps
as
54

Связь page.map: map()
55

map()
0.
1
0.
2

@rpry
poet
dfmpsl)
e a(ef:

0.
3

slco = Mpslcos'ef]
eetr
a.eetr[sl'

0.
4

i sl.mpi Nn:
f ef_a s oe

0.
5
0.
6
0.
7
0.
8

eeet=sl.rvr ##прнс
lmn
efdie. # еео
fn_lmn_ycsslco(eetr
ideeetb_s_eetrslco)
sl.mp=Mpsl.rvr eeet
ef_a
a(efdie, lmn)
rtr sl.mp
eun ef_a
56

Изолируем взаимодействие с
локаторами
0 .c a s M p T s W b l m n )
1 ls a(eteEeet:
0.
2

slcos={ef:'mp}
eetr
sl' #a'

0.
3
0 .c a s M r e ( e t e E e e t :
4 ls akrTsWblmn)
0.
5

slcos={sl' 'mre'
eetr
'ef: .akr}
57

Связь map.markers: markers()
58

markers()
0 .c a s M p T s W b l m n )
1 ls a(eteEeet:
0 .. .
2 .
0.
3

dfgtmressl)
e e_akr(ef:

0.
4

slco = Mre.eetr[sl'
eetr
akrslcos'ef]

0.
5

eeet =sl.##прнс
lmns
ef # еео

0.
6
0.
7

fn_lmnsb_s_eetrslco)
ideeet_ycsslco(eetr
rtr [akree)free i eeet]
eun Mre(lm o lm n lmns
59

Итог
Получили удобные* методы доступа к карте и маркерам

*Удобно для нас, это:
1. Работа в контексте приложения,
2. Легче контролировать изменения локаторов.
60

Уровень Action
Уровень
Action
Цель: добавить компонентам действия (из бизнес-логики)
62

Определяем клик в маркер
0 .c a s M r e ( e t e E e e t :
1 ls akrTsWblmn)
0.
2
0.
3

df_rgnlciksl,*rs *kag)
e oiia_lc(ef ag, *wrs:
sprMre,sl)cik*rs *kag)
ue(akr ef.lc(ag, *wrs

0.
4
0.
5

dfciksl)
e lc(ef:

0.
6

sl.rn_ofot)
efbigt_rn(

0.
7

sl.oiia_lc(
ef_rgnlcik)
63

Итог
Описали какими функциональными действия обладают компоненты
64

Уровень Test
Уровень
Test
Цель: реализовывать тест кейсы понятно
66

Test Case
0 ." "
1 "
0 .- Д л е п и к
2
еам ос
0 .- Н к р е к и а м в м р е
3
а ат лке
акр
0 .- Н з а и ф р ы в к л а т и е в р з л т т х п и к
4
авне им
олуе щм
еуьаа оса
0.
5
0 .О : Н з а и ф р ы в к л у е е т в р з л т т х п и к
6 Р авне им
олт сь
еуьаа оса
0 ." "
7 "
67

Test
0 .d f t s _ i m a l u _ i l _ n f r c r s t t e ( e f :
1 e etfrclotttei_imad_ilssl)
0.
2

sl.aesacBrctlga.erh'ио)
efpg.erha.aaoTbsac(пв'

0.
3

sl.aempmres0.lc(
efpg.a.akr[]cik)

0.
4

tte=sl.aempfrClottte
il
efpg.a.imalu.il

0.
5

sl.setrettei sl.aesacRsls
efasrTu(il n efpg.erheut)
68

Уровень Framework
Уровень
Framework
Цель: предоставить все необходимое для организации и запуска тестов
70

Framework
Фреймворк для юнит-тестов:

• runner
• data providers
• ...
72

О чем будет
• Откуда проблемы кроссбраузерности?
• Примеры проблем кроссбраузерности
• Решение - фреймворк
• Практические рекомендации
Рекомендации
74

1. А нужно ли оно вам?
75

Статистика пользователей 2gis.ru
Chrome

37,58 %

Opera

23,49 %

Firefox

14,33 %

Internet Explorer

9,99 %

за период с 14 сентября по 14 октября 2013г
76

2gis.ru
• Одностраничное приложение
• И это очень много JS
• А JS в разных браузерах...нужно тестировать
77

2. Проверенные методы selenium
78

3. Проблемный* браузер - вперед
79

4. chrome -> ie -> firefox
80

О чем будет
• Откуда проблемы кроссбраузерности?
• Примеры проблем кроссбраузерности
• Решение - фреймворк
• Практические рекомендации
81

Вопросы?
Павлов Игорь

i.pavlov@2gis.ru

@nwlunatic

Contenu connexe

Tendances

20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
Computer Science Club
 
Одно постоянное соединение на все вкладки сайта (Глеб Арестов)
Одно постоянное соединение на все вкладки сайта (Глеб Арестов)Одно постоянное соединение на все вкладки сайта (Глеб Арестов)
Одно постоянное соединение на все вкладки сайта (Глеб Арестов)
Ontico
 
Stream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководовStream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководов
tvaleev
 

Tendances (20)

Григорий Демченко, Универсальный адаптер
Григорий Демченко, Универсальный адаптерГригорий Демченко, Универсальный адаптер
Григорий Демченко, Универсальный адаптер
 
Полный цикл тестирования React-приложений, Алексей Андросов и Наталья Стусь
Полный цикл тестирования React-приложений, Алексей Андросов и Наталья СтусьПолный цикл тестирования React-приложений, Алексей Андросов и Наталья Стусь
Полный цикл тестирования React-приложений, Алексей Андросов и Наталья Стусь
 
Java 8 puzzlers
Java 8 puzzlersJava 8 puzzlers
Java 8 puzzlers
 
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
"Истории из жизни опытного iOS разработчика"— Игорь Чертенков
 
Konstantin Krivlenia - "Continuous integration for frontend"
Konstantin Krivlenia - "Continuous integration for frontend"Konstantin Krivlenia - "Continuous integration for frontend"
Konstantin Krivlenia - "Continuous integration for frontend"
 
Zagursky
ZagurskyZagursky
Zagursky
 
ПВТ - весна 2015 - Лекция 0. Описание курса
ПВТ - весна 2015 - Лекция 0. Описание курсаПВТ - весна 2015 - Лекция 0. Описание курса
ПВТ - весна 2015 - Лекция 0. Описание курса
 
Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"Михаил Щербаков "WinDbg сотоварищи"
Михаил Щербаков "WinDbg сотоварищи"
 
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++.   Р...
ПВТ - осень 2014 - Лекция 5 - Многопоточное программирование в языке С++. Р...
 
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
 
RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
 
Сложности микробенчмаркинга
Сложности микробенчмаркингаСложности микробенчмаркинга
Сложности микробенчмаркинга
 
Роман Ермолов - Отладка приложений под iOS
Роман Ермолов - Отладка приложений под iOSРоман Ермолов - Отладка приложений под iOS
Роман Ермолов - Отладка приложений под iOS
 
Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017
Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017
Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017
 
Лекция 11. Тестирование.
Лекция 11. Тестирование.Лекция 11. Тестирование.
Лекция 11. Тестирование.
 
Одно постоянное соединение на все вкладки сайта (Глеб Арестов)
Одно постоянное соединение на все вкладки сайта (Глеб Арестов)Одно постоянное соединение на все вкладки сайта (Глеб Арестов)
Одно постоянное соединение на все вкладки сайта (Глеб Арестов)
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
 
Stream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководовStream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководов
 
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
ПВТ - весна 2015 - Лекция 5. Многопоточное программирование в С++. Синхрониза...
 

En vedette

En vedette (6)

Docker в автоматизации тестирования
Docker в автоматизации тестированияDocker в автоматизации тестирования
Docker в автоматизации тестирования
 
Docker. Основы
Docker. ОсновыDocker. Основы
Docker. Основы
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
 
Что такое Docker
Что такое DockerЧто такое Docker
Что такое Docker
 
Кратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русскиКратчайшее введение в docker по-русски
Кратчайшее введение в docker по-русски
 
A Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things ContainersA Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things Containers
 

Similaire à Делаем кроссбраузерные тесты поверх Webdriver

Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher SqlAlexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo
 
Adymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher SqlAdymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher Sql
Oleksandr Petrov
 
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOMYuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
OdessaJS Conf
 
Бинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективыБинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективы
d_olex
 
МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016
Anastasia Goryacheva
 
МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)
Ontico
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кода
Andrey Karpov
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU
 

Similaire à Делаем кроссбраузерные тесты поверх Webdriver (20)

Alexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher SqlAlexander Dymo - Barcamp 2009 - Faster Higher Sql
Alexander Dymo - Barcamp 2009 - Faster Higher Sql
 
Adymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher SqlAdymo Barcamp Presentation Faster Higher Sql
Adymo Barcamp Presentation Faster Higher Sql
 
WinDbg со товарищи
WinDbg со товарищиWinDbg со товарищи
WinDbg со товарищи
 
WinDbg в руках .NET разработчика
WinDbg в руках .NET разработчикаWinDbg в руках .NET разработчика
WinDbg в руках .NET разработчика
 
Инструментируй это
Инструментируй этоИнструментируй это
Инструментируй это
 
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOMYuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
 
Бинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективыБинарные уязвимости и эксплойты: технологии и перспективы
Бинарные уязвимости и эксплойты: технологии и перспективы
 
МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016МРТ для данных, Frontend Conf 2016
МРТ для данных, Frontend Conf 2016
 
МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)МРТ для данных / Анастасия Горячева (Avito)
МРТ для данных / Анастасия Горячева (Avito)
 
Алексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кодаАлексей Андросов - Debugger: Отладка кода
Алексей Андросов - Debugger: Отладка кода
 
Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...
Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...
Модульность и управляемая многопоточность встраиваемых С++ приложений - трудн...
 
Convert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at VizorConvert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at Vizor
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
 
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кода
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
 
Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)Тестируй это / Виктор Русакович (GP Solutions)
Тестируй это / Виктор Русакович (GP Solutions)
 
SAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в кодеSAST и Application Security: как бороться с уязвимостями в коде
SAST и Application Security: как бороться с уязвимостями в коде
 

Plus de SQALab

Plus de SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Делаем кроссбраузерные тесты поверх Webdriver