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

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

  • Upload
    yandex

  • View
    1.013

  • Download
    4

Embed Size (px)

DESCRIPTION

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

Citation preview

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

Вопросы!