Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
CRAWLJAX Четвертый закон робототехники Высоцкий Сергей, ДатаВоркс
<ul><li>Crawljax . Что это? </li></ul><ul><li>Как работает  Crawljax? </li></ul><ul><li>Что можно делать при помощи  Crawl...
1. Crawljax . Что это?
Crawljax. WTF!?!?! AJAX Testing heuristics Crawler False positives Test Testing Oracles State-flow graph Events Invariants...
Crawljax.  Начало <ul><li>Ali Mesbah &   Arie van Deursen PhD reseach, 2007 </li></ul><ul><li>Позже присоединились:  Danny...
2.  Как работает  Crawljax?
Ливер/Фарш/Мясо : Java + WebDriver
Plugins: <ul><li>PreCrawlingPlugin </li></ul><ul><li>OnNewStatePlugin </li></ul><ul><li>OnRevisitStatePlugin </li></ul><ul...
Moar  опций <ul><li>Задать элементы, по которым кликать/не кликать </li></ul><ul><li>Задать  event’ ы, которые вызывать/не...
3.  Что можно делать при помощи  Crawljax?
Получить  State-flow  граф
Регресионные тесты <ul><li>Основная идея: </li></ul><ul><li>Получить модель веб-приложения </li></ul><ul><li>Сохранить мод...
Как получить модель? Запустить  Crawljax  с  SaveCrawlSessionPlugin На выходе:  state-flow graph  и все пути в виде  XML- ...
Как получить  test suite ? Запустить  Crawljax  с  RegressionTester  плагином. На вход подать полученный ранее  XML -файл....
Гибкие настройки <ul><li>TestFaultHandler  интерфейс: </li></ul><ul><li>onEventFailure() </li></ul><ul><li>onStateDifferen...
Зачистка  False Positives <ul><li>OracleComparator class. </li></ul><ul><li>Уже есть: </li></ul><ul><li>DateComparator </l...
Отчет об ошибках: ErrorReport  плагин:
Визуализация ошибок: ErrorReport  плагин:
DOM diff : ErrorReport  плагин:
Инварианты Wikipedia: “ Инвариант в математике — это свойство некоторого класса (множества) математических объектов остава...
Инварианты. Примеры: <ul><li>Никаких ошибок в  DOM  (404, 500, 400,  Session Timeout, MySQL error  и т.д.) </li></ul><ul><...
Инварианты. Как? <ul><li>InvarScope  плагины. </li></ul><ul><li>И для  DOM  и для  JavaScript  состоит из двух частей: </l...
X-Files
Уже есть плагины: <ul><li>Benchmark –  замеряет производительность самого  crawljax’ а. </li></ul><ul><li>CrawlOverview  –...
Итого: <ul><li>Props: </li></ul><ul><li>Готовое решение для регресионных тестов </li></ul><ul><li>Мощный аналитический инс...
Где взять? crawljax.com  - родной сайт проекта spci.st.ewi.tudelft.nl/demo/crawljax/  - старый сайт code.google.com/p/craw...
Вопросы? Высоцкий Сергей, ДатаВоркс [email_address]
Четвертый Закон Робототехники “ A robot must reproduce.” Harry Harrison, “The Fourth Law of Robotics”
Upcoming SlideShare
Loading in …5
×

CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники

1,446 views

Published on

  • Be the first to comment

CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники

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

×