АВТОМАТИЧЕСКОЕ ТЕСТИРОВАНИЕ ВЕРСТКИ WEB-СТРАНИЦ

advertisement
ДИПЛОМНАЯ РАБОТА
АВТОМАТИЧЕСКОЕ
ТЕСТИРОВАНИЕ
ВЕРСТКИ
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 и ссылок на внешние ресурсы
ЗАКЛЮЧЕНИЕ
РЕЗУЛЬТАТЫ
• Собраны воедино знания об ошибках верстки
• Продуманы формальные критерии и алгоритмы их
обнаружения
• Реализован готовый к применению инструмент
• Проведена апробация
• Доказана эффективность подхода
Download