Как наша TMS отрастила щупальца. Вадим Шашин (Авито)

Как наша TMS отрастила щупальца. Вадим Шашин (Авито)

Жили мы себе, как все обычные компании — отдел тестировщиков писал тест-кейсы, отдел автоматизаторов их автоматизировал, тестировщики за ними проверяли… вот это вот всё. А затем случились кроссфункциональные команды, и мир содрогнулся. Расскажу о том, как наша тестохранилка перестала удовлетворять наши потребности и мы отрастили ей щупальца, чтобы упростить жизнь тестировщикам.

405cf5a7e7cad100e431fa3a2403e909?s=128

Zoya Chizhkova

August 01, 2019
Tweet

Transcript

  1. Как наша TMS отрастила щупальца Вадим Шашин

  2. Кто мы и что делаем • Юнит “Quality Assurance CoE”

    • Центр экспертизы по обеспечению качества • Распространяем практики тестирования • Помогаем настроить процесс тестирования • Разрабатываем инструменты для тестирования 2
  3. Наши инструменты • Генератор тестовых ресурсов • Запускатор сборок тестовых

    хостов • WebDriverGrid (jsonwire-grid) • Model Based Testing Framework • Система управления тест-кейсами (TMS) 3
  4. Наши инструменты • Генератор тестовых ресурсов • Запускатор сборок тестовых

    хостов • WebDriverGrid (jsonwire-grid) • Model Based Testing Framework • Система управления тест-кейсами (TMS) 4
  5. Что такое TMS • Хранение тест-кейсов • Управление тестовой моделью

    продукта • Регрессионное тестирование 5
  6. Наша TMS • Ктулху • Мы её очень любим ❤

    • Написали в 2015 году 6
  7. Преимущества своей TMS • Прикрепление багов к шагам • Метки

    автоматизированности тест-кейсов • Статус прохождения авто-теста в тест-плане • Прекондишен из других тест-кейсов • Покрытие фичей продукта тестами • Версионирование тест-кейсов • Удобное API ко всему этому 7
  8. Как выглядит наша TMS 8

  9. Казалось бы ОК, но… • Поменялась структура компании • Начали

    распиливать монолит • Стало появляться всё больше микросервисов • Тест-кейсы не всегда в TMS • Не все авто-тесты написаны по тест-кейсам • Непонятно что покрыто авто-тестами 9
  10. Непонятно, что и где проверяется в целом Казалось бы ОК,

    но… 10
  11. Чьи это проблемы • Тестировщиков • Продуктовых юнитов • И

    наши тоже 11
  12. Первая попытка их решения • Писать тест-кейсы на всё •

    Со строго типизированными датасетами • Составлять прекондишен из шагов других тест- кейсов • Автоматизировать отдельные шаги • Генерировать авто-тесты из тест-кейсов 12
  13. Первая попытка — не зашла • Сложно описывать тест-кейсы •

    Сложная связь параметров тест-кейса и авто- теста • Слишком сложно генерировать авто-тесты для кучи платформ • Не все авто-тесты можно генерировать • Сгенерированные авто-тесты требуют доработки 13
  14. Вторая попытка • Пошли обратным путем • Писать авто-тесты на

    все • Собрать все проверки отовсюду в одном месте • Генерировать тест-кейсы из авто-тестов • Визуализировать что и чем покрыто 14
  15. Цель: собрать все проверки в одном месте 15

  16. Что решили сделать Тестохранилка Ядро щупалец Внешний источник №1 Внешний

    источник №2 Внешний источник №3 Щупальце раз Щупальце два 16
  17. Что решили сделать Тестохранилка Ядро щупалец Внешний источник №1 Внешний

    источник №2 Внешний источник №3 Щупальце раз Щупальце два 17
  18. Внешний источник • Репозиторий или отчет авто-тестов • • Собираем

    авто-тесты 18
  19. Внешний источник • Репозиторий или отчет авто-тестов • • Собираем

    авто-тесты 19
  20. Какие авто-тесты собираем • Всем знакомый авто-тест обыкновенный • Тест-кейс

    в коде • MBT 20
  21. Какие авто-тесты собираем • Всем знакомый авто-тест обыкновенный • Тест-кейс

    в коде • MBT 21
  22. Авто-тесты обыкновенные • Юнит-тесты • Компонентные • Интеграционные • End

    to end 22
  23. Какие авто-тесты собираем • Всем знакомый авто-тест обыкновенный • Тест-кейс

    в коде • MBT 23
  24. Какие авто-тесты собираем • Всем знакомый авто-тест обыкновенный • Тест-кейс

    в коде • MBT 24
  25. Какие авто-тесты собираем • Всем знакомый авто-тест обыкновенный • Тест-кейс

    в коде • MBT 25
  26. MBT — Model Based Testing Graphwalker 26

  27. MBT — доклад https://youtu.be/GA6Az67N7kU 27

  28. Что решили сделать Тестохранилка Ядро щупалец Внешний источник №1 Внешний

    источник №2 Внешний источник №3 Щупальце раз Щупальце два 28
  29. Что решили сделать Тестохранилка Ядро щупалец Внешний источник №1 Внешний

    источник №2 Внешний источник №3 Щупальце раз Щупальце два 29
  30. Щупальца • Независимые модули • Парсят код авто-тестов • Некоторые

    разбирают отчеты авто-тестов 30
  31. Щупальца • Независимые модули • Парсят код авто-тестов • Некоторые

    разбирают отчеты авто-тестов 31
  32. Как парсим • Python • Регулярки 32

  33. Как парсим • Python • Регулярки 33

  34. Регулярки • Банально быстро писать 34

  35. Вот так выглядят def get_is_automated(self): return self._regx_check(r’assert\.’) 35

  36. Вот так выглядят def get_id(self): regx = re\ .compile(r’Tms\s*\([^)]*?id\s*:\s*\”([-\w]+)\"') res

    = re.search(regx, self.content) return res.group(1) if res else None 36
  37. И оно просто работает! 37

  38. Количество тест-кейсов • Avito.ru • Всего примерно 6500 • Из

    них собрано щупальцами примерно 2000 • Мобилки • Всего около 5000 • Собрано щупальцами несколько десятков 38
  39. Регулярки не всегда подходят • Сложно с Андроидом • Сложно

    с MBT • Не всё реально спарсить • Что-то генерируется в рантайме • Тест-кейсы генерируем из отчётов 39
  40. Что решили сделать Тестохранилка Ядро щупалец Внешний источник №1 Внешний

    источник №2 Внешний источник №3 Щупальце раз Щупальце два 40
  41. Что решили сделать Тестохранилка Ядро щупалец Внешний источник №1 Внешний

    источник №2 Внешний источник №3 Щупальце раз Щупальце два 41
  42. Ядро щупалец • Не требуется учитывать особенности тестовых фреймворков •

    Фиксированный формат входных данных Внешнее API Всякие валидаторы Управление тест-кейсами Остальная тестохранилка 42
  43. Ядро щупалец • Не требуется учитывать особенности тестовых фреймворков •

    Фиксированный формат входных данных Всякие валидаторы Управление тест-кейсами Остальная тестохранилка Внешнее API 43
  44. Ядро щупалец — API • Два режима • Для сильных

    • Для слабых 44
  45. Ядро щупалец — API • Два режима • Для сильных

    • Для слабых 45
  46. API для сильных Ядро Щупальце Создать или обновить переданные тест-кейсы

    Удалить указанные тест-кейсы Получить все
 тест-кейсы 46
  47. Ядро щупалец — API • Два режима • Для сильных

    • Для слабых 47
  48. Ядро щупалец — API • Два режима • Для сильных

    • Для слабых 48
  49. API для слабых Ядро Щупальце Разберись как-нибудь само 49

  50. Что решили сделать Тестохранилка Ядро щупалец Внешний источник №1 Внешний

    источник №2 Внешний источник №3 Щупальце раз Щупальце два 50
  51. Как запускаем Репозиторий Пулл-реквест Я смержился! Билд в TeamCity Скачивает

    весь репозиторий Натравливает нужное щупальце 51
  52. Nerve • Минимум телодвижений • Просто пиши авто-тесты • TaaS

    52
  53. BitBucket Server Nerve — подробности Э, там чёт смержилось! Nerve

    Репозиторий Пулл-реквест Репозиторий Пулл-реквест Репозиторий Пулл-реквест Репозиторий Пулл-реквест Скачивает репозиторий Натравливает щупальце Очередь событий Скачивает репозиторий Натравливает щупальце Скачивает репозиторий Натравливает щупальце Есть ли подходящее щупальце? 53
  54. Итоги • Наглядность тестовой модели • Можно не писать тест-кейсы

    54
  55. Задавайте ваши ответы! 55

  56. @test_tools_team Twitter 56

  57. @testing_tools_team Telegram 57