$30 off During Our Annual Pro Sale. View Details »

Фёдор Жирков – «Как устроено тестирование склада (WMS) в Ozon»

Ozon Tech
September 22, 2023

Фёдор Жирков – «Как устроено тестирование склада (WMS) в Ozon»

Ozon Tech

September 22, 2023
Tweet

More Decks by Ozon Tech

Other Decks in Technology

Transcript

  1. Ozon Tech 2023
    Как устроено тестирование
    склада (WMS) в Ozon
    Фёдор Жирков, руководитель группы тестирования

    View Slide

  2. Введение
    2
    WMS управляет операциями и процессами складов
    (Warehouse Management System) —

    View Slide

  3. Топология команды
    Мобильная разработка
    3
    Домен 1
    Разработка
    Backend
    Домен 2
    Разработка
    Backend
    Домен 3
    Разработка
    Backend
    Разработка
    Frontend
    Разработка
    Frontend
    Разработка
    Frontend
    Аналитики Аналитики Аналитики
    QA QA QA
    Мобильная
    разработка
    Разработка
    QA

    View Slide

  4. Backend-тестирование
    1
    4

    View Slide

  5. Backend-разработка
    5
    K8s
    Мониторинг
    1. HTTP


    2. gRPC Kafka

    View Slide

  6. Backend-тестирование
    6
    Ручные тесты
    • Их нет
    Автотесты
    • Python 3.10
    • PyTest
    • Максимум автоматизации
    • Свои собственные
    микросервисы и утилиты
    • Allure TestOps
    • GitLab CI

    View Slide

  7. Backend-тестирование
    7
    Процесс
    Команда
    получает
    задачу
    Груминг
    Тест-


    дизайн
    Разработка
    Написание
    автотестов
    Запуск
    автотестов

    View Slide

  8. Фреймворк
    Backend-тестирование
    8

    View Slide

  9. 9

    View Slide

  10. 10

    View Slide

  11. Пирамида тестирования
    Backend-тестирование
    • Целиком флоу процесса


    • Фокус на проверке фронтовой части
    • Целиком флоу процесса (happy path + если есть
    отдельный негативный флоу)


    • Фокус на проверке взаимодействия с внешними
    сервисами
    • Все основные бизнес-сценарии процесса


    • Тестируются все слои сервиса, начиная клиента, на
    моках внешних сервисов
    • Интеграция с БД, Redis и пр.


    • Все методы репозитория, query handlers


    • По необходимости command handlers
    • Обязательно вся доменная логика


    • Любой нетривиальный код (command handlers,


    providers и т.д.)
    Юниты
    Интеграционные
    BDD сценарии


    (компонентные)
    UI
    E2E

    View Slide

  12. Разработчики тоже пишут тесты
    Backend-тестирование
    12

    View Slide

  13. Наши микросервисы
    Backend-тестирование
    13
    • Генерирует
    необходимые товары
    • Сделан на FastAPI
    • Есть графана для
    мониторинга
    • Есть логи
    2. Билдер товаров
    • Создает любые
    процессы и сущности
    • Сделан на Flask
    • Пользуются мобильные
    и фронт QA
    • Пользуются
    сторонние отделы
    3. QA API
    • Создает виртуальные
    склады
    • Сделан на Flask
    • Есть графана для
    мониторинга
    • Есть логи
    1. Билдер топологии

    View Slide

  14. Билдер топологии
    Backend-тестирование
    14

    View Slide

  15. Билдер топологии
    Backend-тестирование
    15

    View Slide

  16. Моки
    Backend-тестирование
    16
    • gRPC мок
    • Сделан на Python
    2. Marotte
    • Сделан
    разработчиками
    • .NET
    3. Kafka мок
    • HTTP мок
    • Сделан JS
    • Open Source
    1. Mountebank

    View Slide

  17. Генерация gRPC-клиентов
    Backend-тестирование
    17
    • Генерирует gRPC-
    клиенты
    • Написан на Python
    • Об этом следующий
    доклад
    1. Monro

    View Slide

  18. Запуски тестов
    Backend-тестиование
    18
    • Каждую ночь • В ручном режиме
    • При MR в мастер у
    разработчиков • Все через Gitlab CI

    View Slide

  19. Тестовый контур
    Backend-тестирование
    19
    Каждые
    выходные
    Prod2stg
    Каждый
    понедельник
    Restore-


    скрипт
    Каждый день
    Дежурства

    View Slide

  20. Тестовый контур. Меши
    Backend-тестирование
    20
    V2
    Master
    V2

    View Slide

  21. Merge request’s
    Backend-тестирование
    21

    View Slide

  22. Frontend-тестирование
    2
    22

    View Slide

  23. Frontend-разработка
    23
    TypeScript
    React

    View Slide

  24. Frontend-тестирование
    24
    Ручные тесты
    • Только на новые фичи
    Автотесты
    • Typescript
    • Playwright
    • Подготовка данных через Flasger
    • Data-test атрибуты
    • Allure TestOps

    View Slide

  25. Локатор


    по data-test
    25

    View Slide

  26. 26
    Иерархия для Allure

    View Slide

  27. 27
    Тестовый набор
    Тест-кейс из предыдущего примера
    Для того, чтобы автотесты попадали
    в Allure, мы явно указываем в коде,
    где мы хотим их видеть

    View Slide

  28. 28

    View Slide

  29. Отображение прогонов тестов в задаче
    29

    View Slide

  30. Отслеживание посещения ручек во время сценариев
    30

    View Slide

  31. Отслеживание посещения ручек во время сценариев
    31 Ручка не использовалась

    View Slide

  32. Мобильное тестирование
    3
    32

    View Slide

  33. Мобильное тестирование
    33
    Android-приложение
    • RxJava
    • Retro
    fi
    t
    • Clean Architecture
    Железо
    • Сканер штрихкодов
    • Принтер штихкодов

    View Slide

  34. Мобильное тестирование
    34
    Ручные тесты
    • Эмулятор
    Автотесты
    • Реальное устройство
    • Подготовка данных
    через Flasger
    • Kotlin
    • UIAutomator
    • Kaspresso
    • Marathon Test Runner
    • Allure TestOps

    View Slide

  35. Мобильное тестирование
    35

    View Slide

  36. Нагрузочное тестирование
    4
    36

    View Slide

  37. Стреляем


    по production
    37

    View Slide

  38. Виды нагрузки
    38
    Читающая


    • GET-методы


    • Чтение данных
    Пишущая


    • POST-методы


    • Создание/изменение данных

    View Slide

  39. Тестовый контур
    Backend-тестирование
    39
    Python
    Генерация


    данных
    Pandora gun
    Сценарий


    нагрузки
    Yandex.Tank
    Запуск

    View Slide

  40. Пишущая нагрузка
    Виды нагрузки
    40
    Генерация


    данных
    Backend
    API-запросы
    Хранилище

    View Slide

  41. Пишущая нагрузка
    Виды нагрузки
    41
    Запуск стрельбы Tank-Service
    Yandex.Tank

    View Slide

  42. Пишущая нагрузка
    Виды нагрузки
    42

    View Slide

  43. 43

    View Slide

  44. 44
    Пишущая нагрузка
    Виды нагрузки

    View Slide

  45. Результаты нагрузочного теста
    45

    View Slide

  46. Пишущая нагрузка
    Виды нагрузки
    46
    Очистка


    данных Backend
    API-запросы

    View Slide

  47. 47

    View Slide

  48. Топология команды нагрузочного тестирования
    48
    Кто пишет сценарии


    • Выделенный Load QA


    • Backend QA
    Кто следит за результатами


    • Выделенный Load QA


    • Backend QA


    • Команды Backend-разработки

    View Slide

  49. t.me/Fedyazh
    Спасибо за внимание
    Фёдор Жирков, руководитель
    группы тестирования

    View Slide