Slide 1

Slide 1 text

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. Наш функционал между собой связан

Slide 37

Slide 37 text

+ Coding skills = Graph generator !37 Команда №4. Масштаб XXL

Slide 38

Slide 38 text

Команда №4. Генерация модели - масштаб XXL !38

Slide 39

Slide 39 text

Команда №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