Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Интеграционное тестирование: как приручить хаос

Lamoda Tech
September 24, 2024

Интеграционное тестирование: как приручить хаос

Lamoda Tech

September 24, 2024
Tweet

More Decks by Lamoda Tech

Other Decks in Programming

Transcript

  1. Обо мне • 5 лет в тестировании • начинала карьерный

    путь с МТС, доросла до QA Lead • сейчас отвечаю за качество в Customer Experience в Lamoda Tech • танцевала в эстрадном балете, теперь вся жизнь – карнавал
  2. • Contact Center — система, которая интегрируется с 15 сервисами,

    половина из них – legacy. Почему сегодня говорю про интеграционные тесты?
  3. • Contact Center — система, которая интегрируется с 15 сервисами,

    половина из них – legacy. • Что делает Contact Center? Почему сегодня говорю про интеграционные тесты? - Администрирование работы оператора: назначение звонка, показатели качества работы оператора, обработка нестандартных обращений и т.д. - Работа оператора с клиентом и его заказом: лояльность, клиент, доставка, оплата, товар и т.д.
  4. • Contact Center — система, которая интегрируется с 15 сервисами,

    половина из них – legacy. • Что делает Contact Center? Почему сегодня говорю про интеграционные тесты? Отсутствие документации Настройка окружения - Администрирование работы оператора: назначение звонка, показатели качества работы оператора, обработка нестандартных обращений и т.д. - Работа оператора с клиентом и его заказом: лояльность, клиент, доставка, оплата, товар и т.д.
  5. История одного if-чика деплой упал, миграции не накатываются запрос стал

    доходить до сервиса, но ответ все еще не является валидным нет тестовых данных – добавили
  6. История одного if-чика деплой упал, миграции не накатываются запрос стал

    доходить до сервиса, но ответ все еще не является валидным нет тестовых данных – добавили внезапный сервис
  7. История одного if-чика деплой упал, миграции не накатываются запрос стал

    доходить до сервиса, но ответ все еще не является валидным нет тестовых данных – добавили ставим мок на новое обращение сервиса внезапный сервис
  8. История одного if-чика деплой упал, миграции не накатываются запрос стал

    доходить до сервиса, но ответ все еще не является валидным нет тестовых данных – добавили ставим мок на новое обращение сервиса внезапный сервис проходим позитивный сценарий и катимся в прод …
  9. теперь никто не хочет катить в прод без проверки альтернативных

    сценариев … блокер на проде • пришлось откатываться, фиксить • две недели на настройку окружения
  10. ссылки на репозитории Подложить под руку: 1 2 3 ссылки

    на билд, деплой, права доступа креды от БД и права доступа
  11. необходимость в заглушках Проверить: 1 2 3 наличие миграций и

    тестовых данных наличие тест-кейсов, эпиков, задач 4 работоспособность инфраструктуры
  12. автотесты и тест-кейсы в актуальном состоянии То, что готовиться нужно

    заранее мы уже поняли, а как? 1 2 3 корректно настроенный CI/CD (тесты, билды) настроена трассировка 4 настроены алерты для метрик 5 ошибки валидируются корректно – Отладить процессы заранее
  13. Казалось бы, мы уже столько всего сделали, подготовились, все настроили,

    уже устали... но еще ничего не протестировали. это еще далеко не все!
  14. Казалось бы, мы уже столько всего сделали, подготовились, все настроили,

    уже устали... но еще ничего не протестировали. это еще далеко не все! А теперь давайте поговорим о тестировании, но не интеграционном, а технических требований — на какие моменты можно обратить внимание.
  15. В том числе: разные форматы передачи API, различия в кодировках

    и локализациях. Несовместимость форматов данных { "jsonrpc": "2.0", "method": "review.delete", "params": { "review_id": 123, "customer_id": 1 } } { "jsonrpc": "2.0", "method": "review.delete", "params": [ { "review_id": “123”, "customer_id": 1 } ] } Результат: Ошибки вида "Invalid Request Format"/"Type Mismatch" или Запрос вовсе не будет обработан
  16. Различия в протоколах взаимодействия Обмен данными о заказах: • Микросервис

    A использует HTTP/REST для передачи данных. • Микросервис B использует gRPC (основанный на протоколе HTTP/2 и protobuf) для обработки запросов. А отправляет запрос через HTTP/REST: HTTP/1.1 { “method”: process.order, "order_id": 12345, "customer_name": "Тест Тестович", "items": [ { "item_id": 1, "quantity": 2 }, { "item_id": 2, "quantity": 1 } ] } B ожидает gRPC-запрос: • В gRPC данные передаются в виде скомпилированных бинарных сообщений, а не в текстовом формате JSON. • gRPC работает поверх HTTP/2, а не HTTP/1.1.
  17. Различия в протоколах взаимодействия Обмен данными о заказах: • Микросервис

    A использует HTTP/REST для передачи данных. • Микросервис B использует gRPC (основанный на протоколе HTTP/2 и protobuf) для обработки запросов. А отправляет запрос через HTTP/REST: HTTP/1.1 B ожидает gRPC-запрос: Результат: B либо не распознает формат запроса, либо отклоняет его, потому что он не соответствует ожидаемому формату protobuf и протоколу HTTP/2. B может отправить ошибку, например, "Unsupported Media Type" или "Bad Request", либо вообще не отреагировать на запрос.
  18. Service A (text tasks) Service B (staff) can assign assigned

    released сетевой лаг Database A Database B Проблема с синхронизацией (race condition)
  19. Подстилаем соломку Используем Shift-left подход Мыслить творчески проще, когда ты

    к этому готов 1 2 3 Выводы Тестируем технические требования 4
  20. Подстилаем соломку Используем Shift-left подход Мыслить творчески проще, когда ты

    к этому готов 1 2 3 Выводы Тестируем технические требования 4 Вы прекрасны!
  21. Q&A