Автоматизация UI-    тестированияследующего поколения     Иноземцев Иван
Следующее? А что плохо     предыдущим? Пожалуй, всё:● Запустить● Записать тест● Допилить тест● Понять почему упал● Поддерж...
Неутешительный итог● UI-тесты не нужны● Capture/replay does not work      O, rly? На самом деле нет
Качественный скачок● Отказ от идеи черного ящика● Высокоуровневый подход во всем
Как все начиналось● Начало разработки – декабрь 2009● Первый публичный релиз – август 2011● Разработчиков – 1-5
Наши клиенты
Внутри Xored● 3 QAs● 4669 UI tests● 10-30 tests/day/QA
Веселая история про     шахматы
Запуск приложения● Пользователь  ○ выбрать  ○ запустить● Q7  ○   проанализировать состав приложения  ○   внедрить свой run...
Запись тестов● Пользователь  ○ начать запись  ○ выполнить действия  ○ окончить запись● Q7  ○ Из тысяч UI-событий понять де...
Пример хардкора
Eclipse Command Language● inspired by TCL & PowerShell● команды с аргументами и in/out● соединяются pipeами● в команду мож...
ECL – понятен всем
Управление состояниемTest case – действия, переводящие системуиз заданного состояния в ожидаемое● Описание состояния декла...
Imperative vs Declarative● Imperative  ○   Если есть проекты в workspaceе, удалить их  ○   Если есть открытые редакторы, з...
Управление состоянием в Q7● Контекст описывает проекцию состояния  ○ Проекты в workspaceе  ○ Открытые редакторы и вьюхи  ○...
Воспроизведение● Отслеживаем последствия действий  ○ listenerы  ○ data bindings  ○ jobs  ○ async execs● Знаем когда операц...
Пример хардкораВнезапно зависание на модальных диалогахПричина: свистелка в Mac OS X – красивопереливающаяся кнопочка
Continuous integration● Command-line Q7 Runner● Q7 Maven Plugin● JUnit XML для серверов● HTML со скриншотами для людей
Q7 Server● Тесты создавать легко => их число  быстро растет => исполняются все  дольше● Тесты изолированы => их можно  пар...
Вопросы?
Upcoming SlideShare
Loading in …5
×

Автоматизация UI-тестирования следующего поколения

632 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
632
On SlideShare
0
From Embeds
0
Number of Embeds
215
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Автоматизация UI-тестирования следующего поколения

  1. 1. Автоматизация UI- тестированияследующего поколения Иноземцев Иван
  2. 2. Следующее? А что плохо предыдущим? Пожалуй, всё:● Запустить● Записать тест● Допилить тест● Понять почему упал● Поддерживать● Кроссплатформенность? Не слышал
  3. 3. Неутешительный итог● UI-тесты не нужны● Capture/replay does not work O, rly? На самом деле нет
  4. 4. Качественный скачок● Отказ от идеи черного ящика● Высокоуровневый подход во всем
  5. 5. Как все начиналось● Начало разработки – декабрь 2009● Первый публичный релиз – август 2011● Разработчиков – 1-5
  6. 6. Наши клиенты
  7. 7. Внутри Xored● 3 QAs● 4669 UI tests● 10-30 tests/day/QA
  8. 8. Веселая история про шахматы
  9. 9. Запуск приложения● Пользователь ○ выбрать ○ запустить● Q7 ○ проанализировать состав приложения ○ внедрить свой runtime ○ проинстументировать байткод на этапе загрузки ○ подписаться на все что можно ○ слушать локальный порт
  10. 10. Запись тестов● Пользователь ○ начать запись ○ выполнить действия ○ окончить запись● Q7 ○ Из тысяч UI-событий понять действия ○ Пропустить неважные ○ Записать важные
  11. 11. Пример хардкора
  12. 12. Eclipse Command Language● inspired by TCL & PowerShell● команды с аргументами и in/out● соединяются pipeами● в команду можно засунуть команду ({})● в команду можно засунуть результат ([])
  13. 13. ECL – понятен всем
  14. 14. Управление состояниемTest case – действия, переводящие системуиз заданного состояния в ожидаемое● Описание состояния декларативно● Описание действий императивно
  15. 15. Imperative vs Declarative● Imperative ○ Если есть проекты в workspaceе, удалить их ○ Если есть открытые редакторы, закрыть их ○ Создать новый проект whatever ○ Создать в нем класс Program ○ Открыть его в редакторе ○ ??? ○ P̶R̶O̶F̶I̶T̶!̶ Начать полезные действия● Declarative ○ Один проект whatever с классом Program ○ Класс Program открыт
  16. 16. Управление состоянием в Q7● Контекст описывает проекцию состояния ○ Проекты в workspaceе ○ Открытые редакторы и вьюхи ○ Настройки ○ Файловая система● Контексты переиспользуются● Неважные части состояния не описываем
  17. 17. Воспроизведение● Отслеживаем последствия действий ○ listenerы ○ data bindings ○ jobs ○ async execs● Знаем когда операция завершилась
  18. 18. Пример хардкораВнезапно зависание на модальных диалогахПричина: свистелка в Mac OS X – красивопереливающаяся кнопочка
  19. 19. Continuous integration● Command-line Q7 Runner● Q7 Maven Plugin● JUnit XML для серверов● HTML со скриншотами для людей
  20. 20. Q7 Server● Тесты создавать легко => их число быстро растет => исполняются все дольше● Тесты изолированы => их можно параллелить● 30 nodes● 20 000 execs/day
  21. 21. Вопросы?

×