ДИПЛОМНАЯ РАБОТА АВТОМАТИЧЕСКОЕ ТЕСТИРОВАНИЕ ВЕРСТКИ WEB-СТРАНИЦ ИННОКЕНТИЙ ШУВАЛОВ НАУЧНЫЙ РУКОВОДИТЕЛЬ – Е. В. ЛАРЧИК WEB-ВЕРСТКА WEB-ВЕРСТКА • Слабая формализация подходов • Форумы, книги, tutorial’ы • Множество специфичных задач и их решений • Отсутствуют • Перечни возможных ошибок • Разработанные критерии их выявления, их признаки • Частое появление ошибок • Множество различных факторов • Непредвиденные изменения в данных ПОСТАНОВКА ЗАДАЧИ ПОСТАНОВКА ЗАДАЧИ Формализация предметной области Сбор сведений о распространенных ошибках Разработка их формальных признаков и алгоритмов выявления Реализация инструмента Разработка практического алгоритма Доказательство эффективности ОШИБКИ ВЕРСТКИ ОШИБКИ ВЕРСТКИ parent child ОШИБКИ ВЕРСТКИ veryLongTextVeryLongTextVeryLongText ОШИБКИ ВЕРСТКИ body ОШИБКИ ВЕРСТКИ ОШИБКИ ВЕРСТКИ 1 2 3 4 5 6 1 2 3 4 5 6 7 7 ОШИБКИ ВЕРСТКИ ОШИБКИ ВЕРСТКИ MENU ITEM 1 MENU ITEM 2 MENU ITEM 3 Commercial banner MENU ITEM 4 РЕАЛИЗАЦИЯ АЛГОРИТМ URL Построение модели страницы Изменение размера окна браузера Извлечение свойств элементов Анализ дерева Дерево элементов Список ошибок Кластеризация Отчет Построение отчета Список кластеров ТЕХНОЛОГИИ • Межмодульное взаимодействие • • Java Загрузка страницы, изменение размера окна, снятие скриншотов • • Selenium Webdriver Создание модели страницы • • Selenium Webdriver • javascript Поиск ошибок, кластеризация • • Java Создание отчета • • XSLT Интерфейс отчета • html, javascript, CSS, jQuery, bootstrap АПРОБАЦИЯ 30 страниц с продуктовых версий сайтов yandex.ru market.yandex.ru auto.yandex.ru auto2.yandex.ru pogoda.yandex.ru slovari.yandex.ru kinopoisk.ru afisha.ru championat.ru sportbox.ru livetv.ru gismeteo.ru mail.ru rambler.ru wikipedia.org translate.google.ru youtube.com github.com mozilla.org twitter.com kommersant.ru rutracker.org livejournal.com 4chan.org АПРОБАЦИЯ • Запуск программы • found – количество срабатываний программы • real – количество найденных программой багов • false – количество ложных срабатываний • found = real + false • Ручное тестирование • all – количество всех багов на странице • Итого • Точность = real / found = 35% • Ложные срабатывания = 100% - точность = 65% • Полнота = real / all = 62% МАССОВЫЙ ЗАПУСК • Дан список похожих страниц • Тысячи записей • Запускаем программу на каждой • Распараллеливание • Группируем отчеты • По количеству ошибок • По типам ошибок • Просматриваем только один отчет из каждой группы • Время на 1000 web-страниц • Работа программы ~ 5-6 часов • Просмотр отчетов ~ 2 минуты ДРУГИЕ ИССЛЕДОВАНИЯ FIGHTING LAYOUT BUGS • https://code.google.com/p/fighting-layout-bugs/ • Michael Tamm • Несколько выступлений на конференциях • • Первое – октябрь 2009 • Последнее – ноябрь 2011 • Половина из них на немецком Последний коммит • Октябрь 2012 • Анализ скриншотов страниц • Типы ошибок • • • Текст рядом с видимыми границами блоков Трудноразличимый текст Элементы, на которые не реагируют на фокус • Валидность html, css, javascript и ссылок на внешние ресурсы ЗАКЛЮЧЕНИЕ РЕЗУЛЬТАТЫ • Собраны воедино знания об ошибках верстки • Продуманы формальные критерии и алгоритмы их обнаружения • Реализован готовый к применению инструмент • Проведена апробация • Доказана эффективность подхода