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

Preview:

DESCRIPTION

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

Citation preview

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

Илья Кацев

План доклада

Зачем?

Как?

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

Вступление

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

Зачем?

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

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

Части робота

Краулер

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

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

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

7

Краулеры

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

8

Краулеры

Можно:

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

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

9

Краулеры

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

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

10

Формы

11

Формы

12

Формы

13

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

14

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

15

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

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

16

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

RIA (Rich Internet Application)

17

Проблемы

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

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

18

Проблемы

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

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

19

Crawljax

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

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

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)

21

Проблемы

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

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

22

Что вводить?

23

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

24

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

25

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

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

26

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

27

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

форма

28

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

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

29

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

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

30

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

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

31

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

32

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

33

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

34

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

35

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

36

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

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

38

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

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

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

39

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

40

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

41

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

42

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

43

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

44

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

45

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

46

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

47

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

48

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

49

70 состояний:

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

51

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

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

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

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

52

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

53

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

54

Реализация

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

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

3. Проверки

55

Реализация

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

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

3. Проверки

56

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

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

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

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

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

57

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

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

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

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

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

58

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

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

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

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

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

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

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}],

61

Цена

"type":"price",

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

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

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)

Цена

63

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

64

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

65

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

66

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

67

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

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

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

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

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

68

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

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

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

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

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

69

Реализация

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

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

3. Проверки

70

Реализация

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

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

71

Реализация

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

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

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

72

Проверки

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

73

Пример

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

74

Пример

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

75

Пример

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

76

Проверки

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

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

77

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

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

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

failedunavailable a, b, c, d,…

78

Все равно:

79

Все равно:

80

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

81

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

82

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

83

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

84

Проверки

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

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

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

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

5.SpellChecker

85

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

86

User-friendly interface

87

Сначала было

88

Баг:

89

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

90

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

91

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

92

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

93

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

94

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

95

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

96

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

97

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

http://yandex.ru/

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

98

И наконец

99

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

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

100

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

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

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

101

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

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

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

102

Еще

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

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

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

103

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

Илья Кацевkatsev@yandex.ru

Recommended