102
Как научить робота тестировать Web-интерфейс Артем Ерошенко, Илья Кацев 1

Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Embed Size (px)

DESCRIPTION

Артем Ерошенко, Яндекс Закончил математико-механический факультет Санкт-Петербургского государственного университета, учится на 3 курсе аспирантуры по специальности «Теория управления». С 2008 года занимается автоматизацией тестирования выдачи поиска и околопоисковых сервисов в компании «Яндекс». С 2011 года координирует группу разработки инструментов тестирования. Илья Кацев, Яндекс Окончил математико-механический факультет Санкт-Петербургского государственного университета, защитил диссертацию по теории игр на степень PhD в VU University Amsterdam (Нидерланды). В Яндексе занимается автоматизацией тестирования (имитация действий пользователя и анализ результата). Тема доклада Как научить роботов тестировать веб-интерфейсы. Тезисы Речь пойдет об инструменте, который будет сам проверять веб-интерфейсы на наличие ошибок. Главное его качество – способность самостоятельно (автоматически) обнаруживать связанные элементы на странице, строить модели, которые потом можно будет тестировать автоматически. Мы не только предложим идеи, как использовать и развивать эту систему, но и покажем её прототип.

Citation preview

Page 1: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Как научить робота тестировать

Web-интерфейсАртем Ерошенко, Илья Кацев

1

Page 2: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

2

Page 3: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

2

Page 4: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

3

Page 5: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Проверки вне контекста

CсылкиКартинки JavaSriptВерсткаФормы

4

Page 6: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Проверки вне контекста

CсылкиКартинки JavaSriptВерсткаФормы

4

Page 7: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

5

Page 8: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Автоматизация

6

Page 9: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Эволюция

7

Page 10: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Эволюция

7

Page 11: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

spidy

8

Page 12: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

spidy

8

Page 13: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Обход

9

Page 14: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Ограничения обхода

10

Page 15: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Ограничения обхода

10

Page 16: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Проверки

11

Page 17: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Проверки вне контекста

CсылкиКартинки JavaSriptВерсткаФормы

12

Page 18: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Универсальные тесты

CсылкиКартинки JavaSriptВерстка

13

Page 19: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Извлечение ссылок

<a href=”...”>...</a>

<img src=”...” />

<script src=”...”></script>

<link rel=”...” src=”...”/>

background-image: url(path)14

Page 20: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Тестирование ссылок

status code

redirect

15

Page 21: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Тестирование ссылок

status codecontent-type

content-length

content-encodingredirect

15

Page 22: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Универсальные тесты

CсылкиКартинки JavaSriptВерстка

16

Page 23: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Извлечение картинок

<img src=”...” />

<style>...</style>

17

Page 24: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Тестирование картинок

x18

Page 25: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Универсальные тесты

CсылкиКартинки JavaSriptВерстка

19

Page 26: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Извлечение скриптов

<script src=”...”></script>

<script>...</script>

20

Page 27: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Тестирование скриптов

синтаксис

мертвый код

доступность

21

Page 28: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Универсальные тесты

CсылкиКартинки JavaSriptВерстка

22

Page 29: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Извлечение стилей

<link rel=”stylesheet” src=”...”/>

<style>...</style>

23

Page 30: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Тестирование стилей

синтаксис

мертвый код

доступность

24

Page 31: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Специфичные тесты

25

Page 32: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Специфичные тесты

favicon

25

Page 33: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Специфичные тесты

favicon 404

25

Page 34: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Специфичные тесты

favicon 404 robots.txt

25

Page 35: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Специфичные тесты

favicon 404 robots.txt title

и еще...25

Page 36: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Настройки системы

прокси

авторизация

26

Page 37: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Покрытие

27

Page 38: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Ограничения spidy

разбор статической html-страницы

нет поддержки разных браузеров

28

Page 39: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

spidy-man

29

Page 40: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

spidy-man

29

Page 41: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

30

Page 42: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

30

Prototype

Page 43: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

30

Prototype

Keeneyesight

Page 44: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

30

Prototype

Activeactions

Keeneyesight

Page 45: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

30

Prototype

Activeactions

Keeneyesight

Tester’sHeart

Page 46: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Поведение человека

31

Page 47: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Новые возможности

ФормыВерсткаJavaScript

32

Page 48: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Анализ Генерация Тесты

Contoller

link

form

js

link link

form form

js js

33

Page 49: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

34

Contollerанализ

адресстраницы

схемаданных

Анализ

Page 50: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

35

Contoller генерация

схема данных

ограничения data

Генерация

Page 51: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

36

dataтесты

это обычные тестыа это делают люди

Тестирование

генерация

Page 52: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Новые возможности

ФормыВерсткаJavaScript

37

Page 53: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Сложность

38

Page 54: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Сложностьbla-bla-bla

bla-bla-blabla-bla-blaclick!

38

Page 55: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Результат?

44,800,000сценариев!

39

Page 56: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Действия человека

40

Page 57: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Действия человека

40

Page 58: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Человек эффективнее

2800сценариев

в 16,000 раз

41

Page 59: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Человек эффективнее

2800сценариев

в 16,000 раз

41

Page 60: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Человек эффективнее

2800сценариев

в 16,000 раз

41

Page 61: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Анализстраницы

Генерацияданных

Проведениетестов

42

Page 62: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Определение формы

43

Page 63: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Определение формы

form

43

Page 64: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Определение формы

js:ajax

43

Page 65: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Определение формы

js:dynamic43

Page 66: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Анализстраницы

Генерацияданных

Проведениетестов

44

Page 67: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Оптимальная генерация

45

Page 68: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Ограничение по ресурсам

46

Page 69: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Количество вариантовВыпад.  список       Фиксированное

Чекбокс количество

Радио  кнопка вариантов

Text  input Количество  вариантов

Выбор  даты задается  тестером

47

Page 70: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Анализстраницы

Генерацияданных

Проведениетестов

48

Page 71: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Универсальные проверки

49

Page 72: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Универсальные проверки

49

Page 73: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Универсальные проверки

49

Page 74: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Универсальные проверки

49

Page 75: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Универсальные проверки

49

Page 76: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Специфичные формы

50

Page 77: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Специфичные формы

51

Page 78: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Новые возможности

ФормыВерсткаJavaScript

52

Page 79: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Действия человека

53

Page 80: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Действия человека

53

Page 81: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Анализстраницы

Генерацияданных

Проведениетестов

54

Page 82: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Координаты блоков

position.x

position.y

width

height

55

Page 83: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Анализстраницы

Генерацияданных

Проведениетестов

56

Page 84: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Типы отношений

границы блока относительное расположение

выравнивание

57

Page 85: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Типы отношений

границы блока относительное расположение

выравнивание

57

Page 86: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Полнота проверок

бинарные отношения

гибкие проверки

58

Page 87: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Анализстраницы

Генерацияданных

Проведениетестов

59

Page 88: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Изменение размера

60

Page 89: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Изменение размера

60

Page 90: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Разные браузеры

61

Page 91: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Разные браузеры

61

Page 92: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Новые возможности

ФормыВерсткаJavaScript

62

Page 93: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Анализ JavaScript

обнаружени форм

анализа зависимых элементов

63

Page 94: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Тестирование JavaScript

64

Page 95: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Подкрутить

65

Page 96: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

66

Окончание загрузкистраници

Page 97: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

67

Множество элементовна странице

Page 98: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

68

Page 99: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

mr. Spider

69

Page 100: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

mr. Spider

69

Page 101: Как научить роботов тестировать веб-интерфейсы. Артем Ерошенко, Илья Кацев, Яндекс

Интеллектище!

Статистика и обучение

Проверки flash, html5

Глубокий анализ JavaScript

70