Model Based Testing
в связке с Agile testing &
development
Дмитрий
Химион
Avito
!1
Slide 2
Slide 2 text
Дмитрий Химион
Head of Quality Assurance в
Avito
О себе
!2
Slide 3
Slide 3 text
План:
• Что нас подтолкнуло к MBT?
• Короткое интро
• Базовый принцип работы MBT
• Работа с командами – вызовы и решения
• Наше решение
• Факторы успеха для MBT
• Итоги
• Вопросы
!3
Slide 4
Slide 4 text
Что послужило толчком к движению в MBT?
Кол-во релизов в день ⇧2X за год
Появляются вопросы:
• Всё ли тесты надо прогонять?
• Какие надо или не надо прогонять?
• Все ли важные бизнес-флоу учитываем?
+40%
!4
Slide 5
Slide 5 text
Что послужило толчком к движению в MBT?
Появляются вопросы:
• Всё ли тесты надо прогонять?
• Какие надо или не надо прогонять?
• Все ли важные бизнес-флоу учитываем?
Кол-во релизов в день ⇧2X за год
+40%
!5
Slide 6
Slide 6 text
Model Based Testing intro
a
b
c d
e
f
g
h
!6
Slide 7
Slide 7 text
Model Based Testing intro
!7
Slide 8
Slide 8 text
Model Based Testing intro
!8
Slide 9
Slide 9 text
Model Based Testing intro
+ O(|V||E|) =
!9
граф с |V| вершинами и |E| ребрами
Slide 10
Slide 10 text
Model Based Testing intro
VS
BDD best case MBT worst case
≲
!10
Slide 11
Slide 11 text
Model Based Testing – как работает
.graphml
yEd
!11
Slide 12
Slide 12 text
Model Based Testing – как работает
.graphml
Framework
+
Generated code
!12
Slide 13
Slide 13 text
Model Based Testing – как работает
.kt
+
Demo
CODE
O(|V||E|)
Framework
!13
Slide 14
Slide 14 text
Model Based Testing – как работает
!14
Slide 15
Slide 15 text
• login
• password
!15
Команда №1. Первый боевой опыт
Slide 16
Slide 16 text
• login
• password
!16
Команда №1. Первый боевой опыт
Slide 17
Slide 17 text
!17
Команда №1. Первый боевой опыт
Slide 18
Slide 18 text
Команда №1. Первый боевой опыт
!18
Slide 19
Slide 19 text
!19
Команда №1. Первый боевой опыт
Slide 20
Slide 20 text
Search-team
Monetization-team
Billing-team
!20
Команда №1. Первый боевой опыт
Slide 21
Slide 21 text
Команда №3 Команда №2
Команда №1
!21
Команда №1. Первый боевой опыт
Slide 22
Slide 22 text
Команда №3 Команда №2
Команда №1
!22
Команда №1. Первый боевой опыт
Slide 23
Slide 23 text
Команда №2. Старые привычки
!23
Slide 24
Slide 24 text
Команда №2. Старые привычки
Wikipedia O(n) — общее обозначение сложности алгоритма
O(|V||E|) != Smoke test
!24
Slide 25
Slide 25 text
Базовые методы тестирования:
1. Smoke test
2. Regression test
3. Sanity test
Команда №2. Старые привычки
!25
Slide 26
Slide 26 text
Базовые методы тестирования:
1. Smoke test
2. Regression test
3. Sanity test
O(|V||E|)
O(smoke-test)
O(regression-test)
O(sanity-test)
Команда №2. Старые привычки
!26
Slide 27
Slide 27 text
Команда №2. Старые привычки
!27
Slide 28
Slide 28 text
Команда №2. Старые привычки
Необходим переходный период для смены мышления
!28
1.
2.
Slide 29
Slide 29 text
Команда №3. Скорость и понятность
!29
Slide 30
Slide 30 text
!30
Команда №3. Скорость и понятность
Slide 31
Slide 31 text
Report Viewer
service
ANTs - параллелилка
Команда №3. Скорость и понятность
!31
Slide 32
Slide 32 text
ANTs - параллелилка
Команда №3. Скорость и понятность
!32
Slide 33
Slide 33 text
Команда №3. Скорость и понятность
!33
VS
Slide 34
Slide 34 text
Команда №3. Скорость и понятность
!34
Slide 35
Slide 35 text
Команда №4. Масштаб XXL
Привет!
Наш контекст:
1. У нас есть функционал на ~11000 классов эквивалентностей
2. Есть большие бизнес процессы
3. Есть пара небольших бизнес процессов
4. Наш функционал между собой связан
!35
Slide 36
Slide 36 text
Команда №4. Масштаб XXL
!36
Привет!
Наш контекст:
1. У нас есть функционал на ~11000 классов эквивалентностей
2. Есть большие бизнес процессы
3. Есть пара небольших бизнес процессов
4. Наш функционал между собой связан
Команда №4. Генерация модели - масштаб XXL
!39
-40% трудозатрат
Slide 40
Slide 40 text
dssd
генерация простых действий пользователя
-30% трудозатрат
!40
Команда №4. Автоматизация автоматизации
Slide 41
Slide 41 text
!41
Команда №4. Масштаб XXL
Slide 42
Slide 42 text
!42
Команда №4. Масштаб XXL
Slide 43
Slide 43 text
DX и боли пользователей MBT
• Провели опрос
• Собрали боли
• Организовали интервью
!43
Slide 44
Slide 44 text
DX и боли «пользователей MBT»
!44
Slide 45
Slide 45 text
DX и боли «пользователей MBT»
!45
Slide 46
Slide 46 text
DX и боли «пользователей MBT»
!46
Slide 47
Slide 47 text
DX и боли «пользователей MBT»
!47
Slide 48
Slide 48 text
DX и боли «пользователей MBT»
-60% кода
!48
Без использования Asserts-lib C использованием Asserts-lib
Slide 49
Slide 49 text
DX и боли «пользователей MBT»
!49
Slide 50
Slide 50 text
Как выглядит наше решение
kotlin yEd
graphwalker
GA graph generator module
!50
Slide 51
Slide 51 text
Как выглядит наше решение
kotlin yEd
graphwalker
GA graph generator module
Test-case generator module
!51
Slide 52
Slide 52 text
Как выглядит наше решение
kotlin yEd
graphwalker
GA graph generator module
Graph coverage calculator module
Test-case generator module
!52
Slide 53
Slide 53 text
Как выглядит наше решение
kotlin yEd
graphwalker
Graph coverage calculator module
Интеграция с TeamCity
Test-case generator module
!53
GA graph generator module
Slide 54
Slide 54 text
Как выглядит наше решение
kotlin yEd
graphwalker
Graph coverage calculator module
Интеграция с TeamCity
Graph-View BitBucket plugin
Test-case generator module
!54
GA graph generator module
Slide 55
Slide 55 text
Как выглядит наше решение
kotlin yEd
graphwalker
Graph coverage calculator module
Интеграция с TeamCity
Graph-View BitBucket plugin
IDEA plugin
Test-case generator module
!55
GA graph generator module
Slide 56
Slide 56 text
Как выглядит наше решение
kotlin yEd
graphwalker
Graph coverage calculator module
Report Viewer service
Интеграция с TeamCity
Graph-View BitBucket plugin
IDEA plugin
Test-case generator module
!56
GA graph generator module
Slide 57
Slide 57 text
Как выглядит наше решение
kotlin yEd
graphwalker
Graph coverage calculator module
Report Viewer service
Интеграция с TeamCity
Graph-View BitBucket plugin
IDEA plugin
Test-case generator module
Parallel test runner service
!57
GA graph generator module
Slide 58
Slide 58 text
Подводные камни
• Если «модель» похожа на «осьминога», MBT ≳ BDD
• Готовой «экосистемы» MBT нет - ее надо строить
• Смена мышления в командах разработки – долгая история
!58
Slide 59
Slide 59 text
• Перестроить mind-set на мышление графами
• Разбивать модель продукта на подграфы
• Продумывать дизайн графа
• Алгоритмы - «зеркало» методов тестирования
• Удобный инструмент = Успевать за Agile разработкой
Факторы успеха
!59
Slide 60
Slide 60 text
• Model based testing – комбинируется с Agile практиками
• Алгоритмы открывают возможности для тестирования
• MBT = небольшая Code-база
• Поддержка и развитие не обременительны
Итоги
MBT
!60
Slide 61
Slide 61 text
Вопросы
!61
Questions are
Slide 62
Slide 62 text
Дмитрий Химион Head of Quality Assurance
Всем спасибо!
!62
dmitry.khimion