103
Проект «Роботестер» Илья Кацев

Проект Роботестер

  • Upload
    sqalab

  • View
    1.127

  • Download
    0

Embed Size (px)

DESCRIPTION

Доклад Ильи Кацева на конференции SQA Days-12, 30 ноября-1 декабря, Минск

Citation preview

Page 1: Проект Роботестер

Проект «Роботестер»

Илья Кацев

Page 2: Проект Роботестер

План доклада

Зачем?

Как?

Проект «Роботестер»

Page 3: Проект Роботестер

Вступление

Зачем нужны роботы?

Page 4: Проект Роботестер

Зачем?

Page 5: Проект Роботестер

Идеальное будущее

«Робот сам ходит по сайту и все проверяет»

Page 6: Проект Роботестер

Части робота

Краулер

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

Генерация тестов

Обнаружение ошибок

Page 7: Проект Роботестер

7

Краулеры

Wikipedia:Поисковый робот («веб-паук», краулер) — программа, являющаяся составной частью поисковой системы и предназначенная для перебора страниц Интернета с целью занесения информации о них в базу данных поисковика.

Page 8: Проект Роботестер

8

Краулеры

Можно:

1.Переходить не только со страницы на страницу

2.Не извлекать информацию, а проводить тесты

Page 9: Проект Роботестер

9

Краулеры

Извлечение информации:Надо обойти все страницы, на которых есть различная ценная информация.

Тестирование:Надо обойти все состояния всех страниц, на которых можно осуществить различные действия.

Page 10: Проект Роботестер

10

Формы

Page 11: Проект Роботестер

11

Формы

Page 12: Проект Роботестер

12

Формы

Page 13: Проект Роботестер

13

Cложные формы

Page 14: Проект Роботестер

14

Очень сложные формы

Page 15: Проект Роботестер

15

Очень сложные формы

Бесконечное количество состояний!

Page 16: Проект Роботестер

16

Очень сложные формы

RIA (Rich Internet Application)

Page 17: Проект Роботестер

17

Проблемы

1.Технологии

2.Поля текстового ввода

Page 18: Проект Роботестер

18

Проблемы

1.Технологии

2.Поля текстового ввода

Page 19: Проект Роботестер

19

Crawljax

Ali Mesbah (2009). Analysis and Testing of Ajax-based Single-Page Web Applications PhD Thesis, Delft University of Technology.

Принцип действия: полный перебор (в глубину).

Page 20: Проект Роботестер

20

Crawljax

Mesbah and Prasad (2011). Automated Cross-Browser Compatibility Testing. In Proceedings of the 33rd ACM/IEEE International Conference on Software Engineering (ICSE’11)

Page 21: Проект Роботестер

21

Проблемы

1.Технологии

2.Поля текстового ввода

Page 22: Проект Роботестер

22

Что вводить?

Page 23: Проект Роботестер

23

Используем текст

Page 24: Проект Роботестер

24

Используем текст

Page 25: Проект Роботестер

25

Используем текст

город город дата

Page 26: Проект Роботестер

26

Используем текст

Page 27: Проект Роботестер

27

Используем текст

форма

Page 28: Проект Роботестер

28

Используем текст

формаКлючевое слово «Найти»

Page 29: Проект Роботестер

29

Используем текст

формаКлючевое слово «Найти», тип поля = «поисковый запрос»

Page 30: Проект Роботестер

30

Используем текст

формаКлючевое слово «Найти», тип поля = «поисковый запрос»

Page 31: Проект Роботестер

31

Веб для незрячих

Page 32: Проект Роботестер

32

Веб для незрячих

Page 33: Проект Роботестер

33

Веб для незрячих

Page 34: Проект Роботестер

34

Стратегии краулинга

Page 35: Проект Роботестер

35

Стратегии краулинга

Page 36: Проект Роботестер

36

Стратегии краулинга

Page 37: Проект Роботестер

37

Стратегии краулинга

M. Dincturk, S. Choudhary, G. von Bochmann, G.-V. Jourdan and I. Viorel Onut (2012). A Statistical Approach for Efficient Crawling of Rich Internet Applications. Web Engineering

Page 38: Проект Роботестер

38

Наша стратегия

До глубины k идем всеми способами

Глубже, чем на уровне k, идем одним способомПо умолчанию k = 2

Page 39: Проект Роботестер

39

Наша стратегия

Page 40: Проект Роботестер

40

Наша стратегия

Page 41: Проект Роботестер

41

Наша стратегия

Page 42: Проект Роботестер

42

Наша стратегия

Page 43: Проект Роботестер

43

Наша стратегия

Page 44: Проект Роботестер

44

Наша стратегия

Page 45: Проект Роботестер

45

Наша стратегия

Page 46: Проект Роботестер

46

Наша стратегия

Page 47: Проект Роботестер

47

Наша стратегия

Page 48: Проект Роботестер

48

Наша стратегия

Page 49: Проект Роботестер

49

70 состояний:

Page 50: Проект Роботестер

Проект «Роботестер»

Page 51: Проект Роботестер

51

Общие принципы

Ходим «на один шаг»

Имитируем корректные действия пользователя

Ожидаем корректный ответ

Page 52: Проект Роботестер

52

Ходим на один шаг

Page 53: Проект Роботестер

53

Входные данные

Page 54: Проект Роботестер

54

Реализация

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

2. Выполняем тест-кейсы

3. Проверки

Page 55: Проект Роботестер

55

Реализация

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

2. Выполняем тест-кейсы

3. Проверки

Page 56: Проект Роботестер

56

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

1. Распознаем элементы (Webdriver)

2. Анализ текстовых полей

3. Строим граф состояний

4. Формируем тест-кейсы (Jenny)

Page 57: Проект Роботестер

57

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

1. Распознаем элементы (Webdriver)

2. Анализ текстовых полей

3. Строим граф состояний

4. Формируем тест-кейсы (Jenny)

Page 58: Проект Роботестер

58

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

1. Распознаем элементы (Webdriver)

2. Анализ текстовых полей

3. Строим граф состояний

4. Формируем тест-кейсы (Jenny)

Page 59: Проект Роботестер

59

Типы значенийkorpus,inn,bik,kpp,address,lastname,country,captcha,email,

flat,house,icq,patronymic,phone,street,password,

submitButton,search,

range,date,price,name,login,

anyNumbers,website,city

Page 60: Проект Роботестер

60

Город"type":

"city","keyWords":

[{"word":"найти","weight":0.1},{"word":"search","weight":0.1},{"word":"city","weight":2},{"word":"город","weight":0.99},{"word":"место","weight":0.7},{"word":"местоположение","weight":0.7},{"word":"станци","weight":0.725},{"word":"до","weight":0.558},{"word":"to","weight":0.558},{"word":"from","weight":0.333},{"word":"откуда","weight":0.8},{"word":"name","weight":0.1},{"word":"куда","weight":0.8},{"word":"поиск","weight":0.333},{"word":"маршрут","weight":0.925},{"word":"точк","weight":0.5}],

Page 61: Проект Роботестер

61

Цена

"type":"price",

"keyWords":[{"word":"price","weight":1},{"word":"цена","weight":1},

{"word":"от","weight":0.5},{"word":"до","weight":0.5},{"word":"взнос","weight":1}],

Page 62: Проект Роботестер

62

"type":"price",

"keyWords":[{"word":"price","weight":1},{"word":"цена","weight":1},

{"word":"от","weight":0.5},{"word":"до","weight":0.5},{"word":"взнос","weight":1}],

argmax(Σj wijlj)

Цена

Page 63: Проект Роботестер

63

Интерфейс обучения

Page 64: Проект Роботестер

64

Входные данные

Page 65: Проект Роботестер

65

Город (2358 значений)

Page 66: Проект Роботестер

66

E-mail (7520 значений)

Page 67: Проект Роботестер

67

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

1. Распознаем элементы (Webdriver)

2. Анализ текстовых полей

3. Строим граф состояний

4. Формируем тест-кейсы (Jenny)

Page 68: Проект Роботестер

68

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

1. Распознаем элементы (Webdriver)

2. Анализ текстовых полей

3. Строим граф состояний

4. Формируем тест-кейсы (Jenny)

Page 69: Проект Роботестер

69

Реализация

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

2. Выполняем тест-кейсы

3. Проверки

Page 70: Проект Роботестер

70

Реализация

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

2. Выполняем тест-кейсы

Page 71: Проект Роботестер

71

Реализация

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

2. Выполняем тест-кейсы

3. Проверки (JUnit)

Page 72: Проект Роботестер

72

Проверки

1.Пингуем ссылки.

Page 73: Проект Роботестер

73

Пример

Сценарий: ищем в поиске «Susan Boyle»

Page 74: Проект Роботестер

74

Пример

Сценарий: ищем в поиске «Susan Boyle»

Page 75: Проект Роботестер

75

Пример

Сценарий: ищем в поиске «Susan Boyle»

Page 76: Проект Роботестер

76

Проверки

1.Пингуем ссылки.

2.Изучаем текст на странице.

Page 77: Проект Роботестер

77

Запрещенные «слова»

errorошибка . , 404 503404@не отвечаетUndefined

генствNaNошибкане удалосьне доступеннедоступенerrorproblemexception

failedunavailable a, b, c, d,…

Page 78: Проект Роботестер

78

Все равно:

Page 79: Проект Роботестер

79

Все равно:

Page 80: Проект Роботестер

80

Пример ошибки

Page 81: Проект Роботестер

81

Пример ошибки

Page 82: Проект Роботестер

82

Пример ошибки

Page 83: Проект Роботестер

83

Пример ошибки

Page 84: Проект Роботестер

84

Проверки

1.Пингуем ссылки.

2.Изучаем текст на странице.

3.Смотрим на алерты.

4.Ищем текст красного цвета

5.SpellChecker

Page 85: Проект Роботестер

85

Как пользоваться?

Page 86: Проект Роботестер

86

User-friendly interface

Page 87: Проект Роботестер

87

Сначала было

Page 88: Проект Роботестер

88

Баг:

Page 89: Проект Роботестер

89

Добавили галочку

Page 90: Проект Роботестер

90

Текстовые поля

Page 91: Проект Роботестер

91

Добавили поле

Page 92: Проект Роботестер

92

2000 тест-кейсов!

Page 93: Проект Роботестер

93

2000 тест-кейсов!

Page 94: Проект Роботестер

94

2000 тест-кейсов!

Page 95: Проект Роботестер

95

Добавили еще поле

Page 96: Проект Роботестер

96

Переход на другой сервис

Page 97: Проект Роботестер

97

http://tune.yandex.ru/region/?reg_from=&retpath=http://www.yandex.ru

http://yandex.ru/

Переход на другой сервис

Page 98: Проект Роботестер

98

И наконец

Page 99: Проект Роботестер

99

Менеджерское

Робот нашел сотни тысячи багов, но как понять, что он действительно сэкономил время?

Page 100: Проект Роботестер

100

Будущее: отчеты

Стандартные не подходят, так как

1. Много похожих сообщений2. Много сообщений о неисправленном

Page 101: Проект Роботестер

101

Будущее: обучение

1.Обнаружение ошибок

2.Распознавание полей

Page 102: Проект Роботестер

102

Еще

1.Обратная связь

2.Исправление верстки

3.Пользовательские логи

Page 103: Проект Роботестер

103

Спасибо за внимание!

Илья Кацев[email protected]