Pro Yearly is on sale from $80 to $50! »

CodeFest 2019. Дмитрий Химион (Avito) — Model Based Testing в связке с Agile development/testing

16b6c87229eaf58768d25ed7b2bbbf52?s=47 CodeFest
April 05, 2019

CodeFest 2019. Дмитрий Химион (Avito) — Model Based Testing в связке с Agile development/testing

Автоматизация тестирования в Авито проходит путь эволюционного развития и хочется поделиться текущими результатами в использовании MBT и наиболее успешными решениями, которые могут и другим помочь в развитии автоматизации тестирования. В ходе адаптации Agile-практик разработки в Авито стало очевидно, что классические подходы к автоматизации тестирования себя явно изживают, и ответом стало появление MBT. В докладе будет освещено, как мы получили полное отсутствие авто-тестов, возможность полуавтоматической генерацией модели работы приложения, как проводится регрессионное тестирование приложения и какие дополнения нужны для удобства использования MBT в рамках продуктовой разработки.

16b6c87229eaf58768d25ed7b2bbbf52?s=128

CodeFest

April 05, 2019
Tweet

Transcript

  1. Model Based Testing
 в связке с Agile testing & development

    Дмитрий Химион Avito !1
  2. Дмитрий Химион Head of Quality Assurance в Avito О себе

    !2
  3. План: • Что нас подтолкнуло к MBT? • Короткое интро

    • Базовый принцип работы MBT • Работа с командами – вызовы и решения • Наше решение • Факторы успеха для MBT • Итоги • Вопросы !3
  4. Что послужило толчком к движению в MBT? Кол-во релизов в

    день ⇧2X за год Появляются вопросы: • Всё ли тесты надо прогонять? • Какие надо или не надо прогонять? • Все ли важные бизнес-флоу учитываем? +40% !4
  5. Что послужило толчком к движению в MBT? Появляются вопросы: •

    Всё ли тесты надо прогонять? • Какие надо или не надо прогонять? • Все ли важные бизнес-флоу учитываем? Кол-во релизов в день ⇧2X за год +40% !5
  6. Model Based Testing intro a b c d e f

    g h !6
  7. Model Based Testing intro !7

  8. Model Based Testing intro !8

  9. Model Based Testing intro + O(|V||E|) = !9 граф с

    |V| вершинами и |E| ребрами
  10. Model Based Testing intro VS BDD best case MBT worst

    case ≲ !10
  11. Model Based Testing – как работает .graphml yEd !11

  12. Model Based Testing – как работает .graphml Framework + Generated

    code !12
  13. Model Based Testing – как работает .kt + Demo CODE

    O(|V||E|) Framework !13
  14. Model Based Testing – как работает !14

  15. • login • password !15 Команда №1. Первый боевой опыт

  16. • login • password !16 Команда №1. Первый боевой опыт

  17. !17 Команда №1. Первый боевой опыт

  18. Команда №1. Первый боевой опыт !18

  19. !19 Команда №1. Первый боевой опыт

  20. Search-team Monetization-team Billing-team !20 Команда №1. Первый боевой опыт

  21. Команда №3 Команда №2 Команда №1 !21 Команда №1. Первый

    боевой опыт
  22. Команда №3 Команда №2 Команда №1 !22 Команда №1. Первый

    боевой опыт
  23. Команда №2. Старые привычки !23

  24. Команда №2. Старые привычки Wikipedia O(n) — общее обозначение сложности

    алгоритма O(|V||E|) != Smoke test !24
  25. Базовые методы тестирования: 1. Smoke test 2. Regression test 3.

    Sanity test Команда №2. Старые привычки !25
  26. Базовые методы тестирования: 1. Smoke test 2. Regression test 3.

    Sanity test O(|V||E|) O(smoke-test) O(regression-test) O(sanity-test) Команда №2. Старые привычки !26
  27. Команда №2. Старые привычки !27

  28. Команда №2. Старые привычки Необходим переходный период для смены мышления

    !28 1. 2.
  29. Команда №3. Скорость и понятность !29

  30. !30 Команда №3. Скорость и понятность

  31. Report Viewer
 service ANTs - параллелилка Команда №3. Скорость и

    понятность !31
  32. ANTs - параллелилка Команда №3. Скорость и понятность !32

  33. Команда №3. Скорость и понятность !33 VS

  34. Команда №3. Скорость и понятность !34

  35. Команда №4. Масштаб XXL Привет! Наш контекст: 1. У нас

    есть функционал на ~11000 классов эквивалентностей 2. Есть большие бизнес процессы 3. Есть пара небольших бизнес процессов 4. Наш функционал между собой связан !35
  36. Команда №4. Масштаб XXL !36 Привет! Наш контекст: 1. У

    нас есть функционал на ~11000 классов эквивалентностей 2. Есть большие бизнес процессы 3. Есть пара небольших бизнес процессов 4. Наш функционал между собой связан
  37. + Coding skills = Graph generator !37 Команда №4. Масштаб

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

  39. Команда №4. Генерация модели - масштаб XXL !39 -40% трудозатрат

  40. dssd генерация простых действий пользователя
 -30% трудозатрат !40 Команда №4.

    Автоматизация автоматизации
  41. !41 Команда №4. Масштаб XXL

  42. !42 Команда №4. Масштаб XXL

  43. DX и боли пользователей MBT • Провели опрос • Собрали

    боли • Организовали интервью !43
  44. DX и боли «пользователей MBT» !44

  45. DX и боли «пользователей MBT» !45

  46. DX и боли «пользователей MBT» !46

  47. DX и боли «пользователей MBT» !47

  48. DX и боли «пользователей MBT» -60% кода !48 Без использования

    Asserts-lib C использованием Asserts-lib
  49. DX и боли «пользователей MBT» !49

  50. Как выглядит наше решение kotlin yEd graphwalker GA graph generator

    module !50
  51. Как выглядит наше решение kotlin yEd graphwalker GA graph generator

    module Test-case generator module !51
  52. Как выглядит наше решение kotlin yEd graphwalker GA graph generator

    module Graph coverage calculator module Test-case generator module !52
  53. Как выглядит наше решение kotlin yEd graphwalker Graph coverage calculator

    module Интеграция с TeamCity Test-case generator module !53 GA graph generator module
  54. Как выглядит наше решение kotlin yEd graphwalker Graph coverage calculator

    module Интеграция с TeamCity Graph-View BitBucket plugin Test-case generator module !54 GA graph generator module
  55. Как выглядит наше решение kotlin yEd graphwalker Graph coverage calculator

    module Интеграция с TeamCity Graph-View BitBucket plugin IDEA plugin Test-case generator module !55 GA graph generator module
  56. Как выглядит наше решение 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
  57. Как выглядит наше решение 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
  58. Подводные камни • Если «модель» похожа на «осьминога», MBT ≳

    BDD • Готовой «экосистемы» MBT нет - ее надо строить • Смена мышления в командах разработки – долгая история !58
  59. • Перестроить mind-set на мышление графами • Разбивать модель продукта

    на подграфы • Продумывать дизайн графа • Алгоритмы - «зеркало» методов тестирования • Удобный инструмент = Успевать за Agile разработкой Факторы успеха !59
  60. • Model based testing – комбинируется с Agile практиками •

    Алгоритмы открывают возможности для тестирования • MBT = небольшая Code-база • Поддержка и развитие не обременительны Итоги MBT !60
  61. Вопросы !61 Questions are

  62. Дмитрий Химион Head of Quality Assurance Всем спасибо! !62 dmitry.khimion