codefest 2011. Высоцкий С. — crawljax. Четвертый закон...

Post on 16-Jun-2015

995 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CRAWLJAX

Четвертый закон робототехники

Высоцкий Сергей,ДатаВоркс

1. Crawljax. Что это?

2. Как работает Crawljax?

3. Что можно делать при помощи Crawljax?

1. Crawljax. Что это?

Crawljax. WTF!?!?!

AJAX

Testing heuristics

Crawler

False positives

TestTesting Oracles

State-flow graph Events

Invariants

False negatives

Crawljax. Начало

• Ali Mesbah & Arie van Deursen PhD reseach, 2007

• Позже присоединились: Danny Roest, Stefan Lenselink, Frank Groeneveld, Cor-Paul Bezemer

2. Как работает Crawljax?

Ливер/Фарш/Мясо:

Java

+

WebDriver

Plugins:

• PreCrawlingPlugin

• OnNewStatePlugin

• OnRevisitStatePlugin

• OnUrlLoadPlugin

• OnInvariantViolationPlugin

• PreStateCrawlingPlugin

• PostCrawlingPlugin

• ProxyServerPlugin

+ Несколько отсутствующих в документации

Moar опций

1. Задать элементы, по которым кликать/не кликать

2. Задать event’ы, которые вызывать/не вызывать

3. Задать данные для input’ов

4. Ограничить глубину обхода

5. Запуск в разных браузерах

6. ...

3. Что можно делать при помощи Crawljax?

Получить State-flow граф

Регресионные тесты

Основная идея:

1.Получить модель веб-приложения

2.Сохранить модель

3.Создать test suite по этой модели

4.Прогонять тесты из test suite по веб-приложению

5.Повторять шаги 3 и 4 для разных версий приложения

Если приложение сильно меняется, то можно повторить с шага #1

Как получить модель?

Запустить Crawljax с SaveCrawlSessionPlugin

На выходе: state-flow graph и все пути в виде XML-файла.

Как получить test suite?

Запустить Crawljax с RegressionTester плагином. На вход подать полученный ранее XML-файл.

На выходе: JUnit TestSuite

Гибкие настройки

TestFaultHandler интерфейс:

1. onEventFailure()

2. onStateDifference()

3. onStateLoadTimeout()

4. onInvariantViolation()

Бонус: WaitStrategy

Зачистка False Positives

OracleComparator class.

Уже есть:

• DateComparator

• StyleComparator

• AttributeComparator

• PlainStructureComparator

• ScriptComparator

• RegexComparator

• XPathComparator

Отчет об ошибках:

ErrorReport плагин:

Визуализация ошибок:

ErrorReport плагин:

DOM diff:

ErrorReport плагин:

Инварианты

Wikipedia:

“Инвариант в математике — это свойство некоторого класса (множества) математических объектов оставаться неизменными при преобразованиях определённого типа.”

Инварианты. Примеры:

1. Никаких ошибок в DOM (404, 500, 400, Session Timeout, MySQL error и т.д.)

2. Валидный код страницы

3. No dead links

4. Консистентное поведение Back-button

5. Валидное отображение текущей позиции в меню

Инварианты. Как?

InvarScope плагины.

И для DOM и для JavaScript состоит из двух частей:

1. Плагин для поиска инвариант

2. Плагин для тестирования по заданным инвариантам

Для регрессионных тестов. Например вот так:

crawler.addInvariant("No error messages", new NotRegexCondition("Error [0-9]+");

X-Files

Уже есть плагины:

1. Benchmark – замеряет производительность самого crawljax’а.

2. CrawlOverview – генерит HTML страничку с результатами crawl’а

3. ErrorReport - сабж

4. Cross-browser Tester – сабж

5. InvarScope – автоматический поиск инвариантов (DOM/JavaScript)

6. Mirror generator – сабж

7. SFGExporter – для красивых графов

Итого:

Props:

• Готовое решение для регресионных тестов

• Мощный аналитический инструмент

• Open Source

Slops:

• Мало документации (не очень User Friendly)

• Не покрывает workflow-specific тестовые случаи

• Часть плагинов «Available on request»

Где взять?

crawljax.com - родной сайт проекта

spci.st.ewi.tudelft.nl/demo/crawljax/ - старый сайт

code.google.com/p/crawljax-plugins/ - плагины

Вопросы?

Высоцкий Сергей,ДатаВоркс

sergey.vyssotski@gmail.com

Четвертый Закон Робототехники

“A robot must reproduce.”Harry Harrison, “The Fourth Law of Robotics”

top related