АВТОМАТИЧЕСКОЕ ТЕСТИРОВАНИЕ ВЕРСТКИ WEB-СТРАНИЦ ИННОКЕНТИЙ ШУВАЛОВ ДИПЛОМНАЯ РАБОТА НАУЧНЫЙ РУКОВОДИТЕЛЬ – Е. В. ЛАРЧИК
WEB-ВЕРСТКА
Слабая формализация подходов Форумы, книги, tutorialы Множество специфичных задач и их решений Отсутствуют Перечни возможных ошибок Разработанные критерии их выявления, их признаки Частое появление ошибок Множество различных факторов Непредвиденные изменения в данных
ПОСТАНОВКА ЗАДАЧИ
Формализация предметной области Сбор сведений о распространенных ошибках Разработка их формальных признаков и алгоритмов выявления Реализация инструмента Разработка практического алгоритма Доказательство эффективности
ОШИБКИ ВЕРСТКИ
parent child
ОШИБКИ ВЕРСТКИ veryLongTextVeryLongTextVeryLongText
ОШИБКИ ВЕРСТКИ body
ОШИБКИ ВЕРСТКИ
Commercial banner ОШИБКИ ВЕРСТКИ MENU ITEM 1MENU ITEM 2 MENU ITEM 3 MENU ITEM 4
РЕАЛИЗАЦИЯ
АЛГОРИТМ Построение модели страницы Изменение размера окна браузера Извлечение свойств элементов Анализ дерева Дерево элементов Кластеризация Список ошибок Построение отчета Список кластеров Отчет URL
ТЕХНОЛОГИИ Межмодульное взаимодействие Java Загрузка страницы, изменение размера окна, снятие скриншотов Selenium Webdriver Создание модели страницы Selenium Webdriver javascript Поиск ошибок, кластеризация Java Создание отчета XSLT Интерфейс отчета html, javascript, CSS, jQuery, bootstrap
АПРОБАЦИЯ 30 страниц с продуктовых версий сайтов yandex.rumarket.yandex.ruauto.yandex.ruauto2.yandex.ru pogoda.yandex.ruslovari.yandex.rukinopoisk.ruafisha.ru championat.rusportbox.rulivetv.rugismeteo.ru mail.rurambler.ruwikipedia.orgtranslate.google.ru youtube.comgithub.commozilla.orgtwitter.com kommersant.rurutracker.orglivejournal.com4chan.org
АПРОБАЦИЯ Запуск программы found – количество срабатываний программы real – количество найденных программой багов false – количество ложных срабатываний found = real + false Ручное тестирование all – количество всех багов на странице Итого Точность = real / found = 35% Ложные срабатывания = 100% - точность = 65% Полнота = real / all = 62%
МАССОВЫЙ ЗАПУСК Дан список похожих страниц Тысячи записей Запускаем программу на каждой Распараллеливание Группируем отчеты По количеству ошибок По типам ошибок Просматриваем только один отчет из каждой группы Время на 1000 web-страниц Работа программы ~ 5-6 часов Просмотр отчетов ~ 2 минуты
ДРУГИЕ ИССЛЕДОВАНИЯ
FIGHTING LAYOUT BUGS Michael Tamm Несколько выступлений на конференциях Первое – октябрь 2009 Последнее – ноябрь 2011 Половина из них на немецком Последний коммит Октябрь 2012 Анализ скриншотов страниц Типы ошибок Текст рядом с видимыми границами блоков Трудноразличимый текст Элементы, на которые не реагируют на фокус Валидность html, css, javascript и ссылок на внешние ресурсы
ЗАКЛЮЧЕНИЕ
РЕЗУЛЬТАТЫ Собраны воедино знания об ошибках верстки Продуманы формальные критерии и алгоритмы их обнаружения Реализован готовый к применению инструмент Проведена апробация Доказана эффективность подхода