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

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

  • Upload
    devday

  • View
    785

  • Download
    2

Embed Size (px)

DESCRIPTION

 

Citation preview

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

Автоматизация UI-тестирования

следующего поколенияИноземцев Иван

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

Следующее? А что плохо предыдущим? Пожалуй, всё:

● Запустить

● Записать тест

● Допилить тест

● Понять почему упал

● Поддерживать

● Кроссплатформенность? Не слышал

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

Неутешительный итог

● UI-тесты не нужны

● Capture/replay does not work

O, rly? На самом деле нет

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

Качественный скачок

● Отказ от идеи черного ящика

● Высокоуровневый подход во всем

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

Как все начиналось

● Начало разработки – декабрь 2009

● Первый публичный релиз – август 2011

● Разработчиков – 1-5

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

Наши клиенты

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

Внутри Xored

● 3 QAs

● 4669 UI tests

● 10-30 tests/day/QA

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

Веселая история про шахматы

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

Запуск приложения

● Пользователь○ выбрать○ запустить

● Q7○ проанализировать состав приложения○ внедрить свой runtime○ проинстументировать байткод на этапе загрузки○ подписаться на все что можно○ слушать локальный порт

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

Запись тестов

● Пользователь○ начать запись○ выполнить действия○ окончить запись

● Q7○ Из тысяч UI-событий понять действия○ Пропустить неважные○ Записать важные

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

Пример хардкора

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

Eclipse Command Language

● inspired by TCL & PowerShell● команды с аргументами и in/out● соединяются pipe'ами

● в команду можно засунуть команду ({})

● в команду можно засунуть результат ([])

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

ECL – понятен всем

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

Управление состоянием

Test case – действия, переводящие систему из заданного состояния в ожидаемое

● Описание состояния декларативно

● Описание действий императивно

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

Imperative vs Declarative

● Imperative○ Если есть проекты в workspace'е, удалить их○ Если есть открытые редакторы, закрыть их○ Создать новый проект whatever○ Создать в нем класс Program○ Открыть его в редакторе○ ???○ P̶R̶O̶F̶I̶T̶!̶ Начать полезные действия

● Declarative○ Один проект whatever с классом Program○ Класс Program открыт

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

Управление состоянием в Q7

● Контекст описывает проекцию состояния○ Проекты в workspace'е

○ Открытые редакторы и вьюхи

○ Настройки

○ Файловая система

● Контексты переиспользуются

● Неважные части состояния не описываем

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

Воспроизведение

● Отслеживаем последствия действий○ listener'ы

○ data bindings

○ jobs

○ async execs

● Знаем когда операция завершилась

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

Пример хардкора

Внезапно зависание на модальных диалогахПричина: свистелка в Mac OS X – красиво переливающаяся кнопочка

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

Continuous integration

● Command-line Q7 Runner

● Q7 Maven Plugin

● JUnit XML для серверов

● HTML со скриншотами для людей

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

Q7 Server

● Тесты создавать легко => их число

быстро растет => исполняются все

дольше

● Тесты изолированы => их можно

параллелить

● 30 nodes

● 20 000 execs/day

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

Вопросы?