Илья Кацев: Анализ данных для поиска ошибок

49
Анализ данных для поиска ошибок Илья Кацев Тестовая среда, 30.11.2013

description

Речь пойдет об инструменте, который умеет создавать автотесты для проверки вёрстки. Принцип действия инструмента таков: он анализирует большое количество схожих страниц и находит правила, которым все они (или почти все) подчиняются. Если на аналогичной странице нарушается какое-то из правил, значит, она содержит ошибку. Этот инструмент, в частности, очень удобен для сравнения вёрстки двух версий сервиса. Я расскажу вам историю создания инструмента, покажу, как он работает и какие баги находит.

Transcript of Илья Кацев: Анализ данных для поиска ошибок

Page 1: Илья Кацев: Анализ данных для поиска ошибок

Анализ данных для поиска ошибок

Илья Кацев Тестовая среда, 30.11.2013

Page 2: Илья Кацев: Анализ данных для поиска ошибок

План доклада

Какие бывают ошибки? Принцип работы МТ

Описание Примеры

Page 3: Илья Кацев: Анализ данных для поиска ошибок

Проект Роботестер http://habrahabr.ru/company/yandex/blog/182976/

Page 4: Илья Кацев: Анализ данных для поиска ошибок

Какие бывают ошибки?

Page 5: Илья Кацев: Анализ данных для поиска ошибок

Какие бывают ошибки?

Page 6: Илья Кацев: Анализ данных для поиска ошибок

Какие бывают ошибки?

Page 7: Илья Кацев: Анализ данных для поиска ошибок

Почему это ошибка?

Page 8: Илья Кацев: Анализ данных для поиска ошибок
Page 9: Илья Кацев: Анализ данных для поиска ошибок

Общая схема

Однотипные страницы

Page 10: Илья Кацев: Анализ данных для поиска ошибок

Общая схема

Однотипные страницы ê

условие

Page 11: Илья Кацев: Анализ данных для поиска ошибок

Общая схема

Однотипные страницы ê

условие (которое выполняется для 99.8% страниц)

Page 12: Илья Кацев: Анализ данных для поиска ошибок

Все строки разные

Page 13: Илья Кацев: Анализ данных для поиска ошибок

Цены – есть в продаже

Page 14: Илья Кацев: Анализ данных для поиска ошибок

Есть хоть что-то

Page 15: Илья Кацев: Анализ данных для поиска ошибок

Общая схема работы

1.  Строим правила на основе страниц из production

2.  Проверяем правила на странице в testing

Page 16: Илья Кацев: Анализ данных для поиска ошибок

Блоки

Page 17: Илья Кацев: Анализ данных для поиска ошибок

Блоки

Page 18: Илья Кацев: Анализ данных для поиска ошибок

Блоки

Page 19: Илья Кацев: Анализ данных для поиска ошибок

Блоки

Page 20: Илья Кацев: Анализ данных для поиска ошибок

Блоки

Page 21: Илья Кацев: Анализ данных для поиска ошибок

Блоки

Page 22: Илья Кацев: Анализ данных для поиска ошибок

Блоки

Page 23: Илья Кацев: Анализ данных для поиска ошибок

Блоки

Page 24: Илья Кацев: Анализ данных для поиска ошибок

Непостоянный xpath

/html/body/div[1]/table[2]/tbody/tr/td[2]/div[2]/ul/li[5]/span/a

Page 25: Илья Кацев: Анализ данных для поиска ошибок

Непостоянный xpath

/html/body/div[1]/table[2]/tbody/tr/td[2]/div[2]/ul/li[3]/span/a

Page 26: Илья Кацев: Анализ данных для поиска ошибок

Упрощенный xpath

/html/body/div[1]/table[2]/tbody/tr/td[2]/div[2]/ul/li[3]/span/a

Page 27: Илья Кацев: Анализ данных для поиска ошибок

Упрощенный xpath

/html/body/div/table/tbody/tr/td/ div/ul/li/span/a

Page 28: Илья Кацев: Анализ данных для поиска ошибок

Упрощенный xpath

/html/body/div/table/tbody/tr/td/ div/ul/li/span/a

Page 29: Илья Кацев: Анализ данных для поиска ошибок

ipath <body> <div class="b-max-width"> <table class="l-head"> <tbody> <tr> <td class="l-head__c"> <div class="b-head-search" onclick="return {name:'b-head-search'}"> <div class="b-head-search__wrap b-head-search__arrow"> <form class="b-search"> <table class="b-search__table"> <tbody> <tr> <td class="b-search__input"> <span class="b-form-input b-form-input_is-bem_yes b-form-input_size_16 i-bem" onclick="return {'b-form-input':{name:'b-form-input'}}"> <span class="b-form-input__box"> <input class="b-form-input__input" maxlength="400" tabindex="1" type="text"

Page 30: Илья Кацев: Анализ данных для поиска ошибок

Убираем атрибуты

id,name,href,for,retpath,action,src

Page 31: Илья Кацев: Анализ данных для поиска ошибок

Похожие блоки

/html/body/div/table/tbody/tr/td/ div/ul/li/span/a

Page 32: Илья Кацев: Анализ данных для поиска ошибок

Очень похожие блоки

Page 33: Илья Кацев: Анализ данных для поиска ошибок

Модель

Page 34: Илья Кацев: Анализ данных для поиска ошибок

Модель = набор правил

1.  Блок А всегда есть 2.  Если есть блок А, то есть и блок Б 3.  Блок А всегда содержит нечто 4.  Текст удовлетворяет условию

Page 35: Илья Кацев: Анализ данных для поиска ошибок

Условия на текст

Тексты ê

Регулярка

Page 36: Илья Кацев: Анализ данных для поиска ошибок

Условия на текст

Page 37: Илья Кацев: Анализ данных для поиска ошибок

Условия на текст

Page 38: Илья Кацев: Анализ данных для поиска ошибок

Пример отчета

Page 39: Илья Кацев: Анализ данных для поиска ошибок

Общая схема работы

1.  Строим модели на основе страниц из production

2.  Сравниваем страницу (testing) с подходящей моделью

Page 40: Илья Кацев: Анализ данных для поиска ошибок

Общая схема работы

1.  Роботестер попадает на страницу 2.  Html-код страницы посылается МТ 3.  Подбираем подходящую модель 4.  Сравниваем

Page 41: Илья Кацев: Анализ данных для поиска ошибок

Найденные ошибки

Page 42: Илья Кацев: Анализ данных для поиска ошибок

Найденные ошибки

Page 43: Илья Кацев: Анализ данных для поиска ошибок

Найденные ошибки

Page 44: Илья Кацев: Анализ данных для поиска ошибок

Найденные ошибки

Page 45: Илья Кацев: Анализ данных для поиска ошибок

Турецкий Маркет

Page 46: Илья Кацев: Анализ данных для поиска ошибок

Турецкий Маркет

0 автотестов написано людьми Автоматически найдено 10 багов, из них 5 блокеров

Page 47: Илья Кацев: Анализ данных для поиска ошибок

Будущее

1.  Оценка моделей

2.  Отчет о результатах

3.  «Контентные блоки»

Page 48: Илья Кацев: Анализ данных для поиска ошибок

Контентные блоки

Page 49: Илья Кацев: Анализ данных для поиска ошибок

49

Вопросы!