2. Следующее? А что плохо
предыдущим? Пожалуй, всё:
● Запустить
● Записать тест
● Допилить тест
● Понять почему упал
● Поддерживать
● Кроссплатформенность? Не слышал
9. Запуск приложения
● Пользователь
○ выбрать
○ запустить
● Q7
○ проанализировать состав приложения
○ внедрить свой runtime
○ проинстументировать байткод на этапе загрузки
○ подписаться на все что можно
○ слушать локальный порт
10. Запись тестов
● Пользователь
○ начать запись
○ выполнить действия
○ окончить запись
● Q7
○ Из тысяч UI-событий понять действия
○ Пропустить неважные
○ Записать важные
12. Eclipse Command Language
● inspired by TCL & PowerShell
● команды с аргументами и in/out
● соединяются pipe'ами
● в команду можно засунуть команду ({})
● в команду можно засунуть результат ([])
14. Управление состоянием
Test case – действия, переводящие систему
из заданного состояния в ожидаемое
● Описание состояния декларативно
● Описание действий императивно
15. Imperative vs Declarative
● Imperative
○ Если есть проекты в workspace'е, удалить их
○ Если есть открытые редакторы, закрыть их
○ Создать новый проект whatever
○ Создать в нем класс Program
○ Открыть его в редакторе
○ ???
○ P̶R̶O̶F̶I̶T̶!̶ Начать полезные действия
● Declarative
○ Один проект whatever с классом Program
○ Класс Program открыт
16. Управление состоянием в Q7
● Контекст описывает проекцию состояния
○ Проекты в workspace'е
○ Открытые редакторы и вьюхи
○ Настройки
○ Файловая система
● Контексты переиспользуются
● Неважные части состояния не описываем
20. Q7 Server
● Тесты создавать легко => их число
быстро растет => исполняются все
дольше
● Тесты изолированы => их можно
параллелить
● 30 nodes
● 20 000 execs/day