codefest 2011. Высоцкий С. — crawljax. Четвертый закон...
TRANSCRIPT
![Page 1: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/1.jpg)
CRAWLJAX
Четвертый закон робототехники
Высоцкий Сергей,ДатаВоркс
![Page 2: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/2.jpg)
1. Crawljax. Что это?
2. Как работает Crawljax?
3. Что можно делать при помощи Crawljax?
![Page 3: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/3.jpg)
1. Crawljax. Что это?
![Page 4: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/4.jpg)
Crawljax. WTF!?!?!
AJAX
Testing heuristics
Crawler
False positives
TestTesting Oracles
State-flow graph Events
Invariants
False negatives
![Page 5: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/5.jpg)
Crawljax. Начало
• Ali Mesbah & Arie van Deursen PhD reseach, 2007
• Позже присоединились: Danny Roest, Stefan Lenselink, Frank Groeneveld, Cor-Paul Bezemer
![Page 6: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/6.jpg)
2. Как работает Crawljax?
![Page 7: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/7.jpg)
Ливер/Фарш/Мясо:
Java
+
WebDriver
![Page 8: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/8.jpg)
Plugins:
• PreCrawlingPlugin
• OnNewStatePlugin
• OnRevisitStatePlugin
• OnUrlLoadPlugin
• OnInvariantViolationPlugin
• PreStateCrawlingPlugin
• PostCrawlingPlugin
• ProxyServerPlugin
+ Несколько отсутствующих в документации
![Page 9: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/9.jpg)
Moar опций
1. Задать элементы, по которым кликать/не кликать
2. Задать event’ы, которые вызывать/не вызывать
3. Задать данные для input’ов
4. Ограничить глубину обхода
5. Запуск в разных браузерах
6. ...
![Page 10: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/10.jpg)
3. Что можно делать при помощи Crawljax?
![Page 11: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/11.jpg)
Получить State-flow граф
![Page 12: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/12.jpg)
Регресионные тесты
Основная идея:
1.Получить модель веб-приложения
2.Сохранить модель
3.Создать test suite по этой модели
4.Прогонять тесты из test suite по веб-приложению
5.Повторять шаги 3 и 4 для разных версий приложения
Если приложение сильно меняется, то можно повторить с шага #1
![Page 13: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/13.jpg)
Как получить модель?
Запустить Crawljax с SaveCrawlSessionPlugin
На выходе: state-flow graph и все пути в виде XML-файла.
![Page 14: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/14.jpg)
Как получить test suite?
Запустить Crawljax с RegressionTester плагином. На вход подать полученный ранее XML-файл.
На выходе: JUnit TestSuite
![Page 15: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/15.jpg)
Гибкие настройки
TestFaultHandler интерфейс:
1. onEventFailure()
2. onStateDifference()
3. onStateLoadTimeout()
4. onInvariantViolation()
Бонус: WaitStrategy
![Page 16: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/16.jpg)
Зачистка False Positives
OracleComparator class.
Уже есть:
• DateComparator
• StyleComparator
• AttributeComparator
• PlainStructureComparator
• ScriptComparator
• RegexComparator
• XPathComparator
![Page 17: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/17.jpg)
Отчет об ошибках:
ErrorReport плагин:
![Page 18: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/18.jpg)
Визуализация ошибок:
ErrorReport плагин:
![Page 19: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/19.jpg)
DOM diff:
ErrorReport плагин:
![Page 20: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/20.jpg)
Инварианты
Wikipedia:
“Инвариант в математике — это свойство некоторого класса (множества) математических объектов оставаться неизменными при преобразованиях определённого типа.”
![Page 21: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/21.jpg)
Инварианты. Примеры:
1. Никаких ошибок в DOM (404, 500, 400, Session Timeout, MySQL error и т.д.)
2. Валидный код страницы
3. No dead links
4. Консистентное поведение Back-button
5. Валидное отображение текущей позиции в меню
![Page 22: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/22.jpg)
Инварианты. Как?
InvarScope плагины.
И для DOM и для JavaScript состоит из двух частей:
1. Плагин для поиска инвариант
2. Плагин для тестирования по заданным инвариантам
Для регрессионных тестов. Например вот так:
crawler.addInvariant("No error messages", new NotRegexCondition("Error [0-9]+");
![Page 23: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/23.jpg)
X-Files
![Page 24: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/24.jpg)
Уже есть плагины:
1. Benchmark – замеряет производительность самого crawljax’а.
2. CrawlOverview – генерит HTML страничку с результатами crawl’а
3. ErrorReport - сабж
4. Cross-browser Tester – сабж
5. InvarScope – автоматический поиск инвариантов (DOM/JavaScript)
6. Mirror generator – сабж
7. SFGExporter – для красивых графов
![Page 25: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/25.jpg)
Итого:
Props:
• Готовое решение для регресионных тестов
• Мощный аналитический инструмент
• Open Source
Slops:
• Мало документации (не очень User Friendly)
• Не покрывает workflow-specific тестовые случаи
• Часть плагинов «Available on request»
![Page 26: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/26.jpg)
Где взять?
crawljax.com - родной сайт проекта
spci.st.ewi.tudelft.nl/demo/crawljax/ - старый сайт
code.google.com/p/crawljax-plugins/ - плагины
![Page 28: CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники](https://reader035.vdocuments.mx/reader035/viewer/2022062300/557ffa8cd8b42aa4628b5117/html5/thumbnails/28.jpg)
Четвертый Закон Робототехники
“A robot must reproduce.”Harry Harrison, “The Fourth Law of Robotics”