Slide 1

Slide 1 text

Катя Назмеева Старший инженер по тестированию Интеграционное тестирование: как приручить хаос Лайфхаки на каждый день

Slide 2

Slide 2 text

Обо мне ● 5 лет в тестировании ● начинала карьерный путь с МТС, доросла до QA Lead ● сейчас отвечаю за качество в Customer Experience в Lamoda Tech ● танцевала в эстрадном балете, теперь вся жизнь – карнавал

Slide 3

Slide 3 text

Почему сегодня говорю про интеграционные тесты?

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

История одного if-чика нет тестировщика сервис на поддержке минимальный набор сценариев спецификация устарела

Slide 8

Slide 8 text

История одного if-чика деплой упал, миграции не накатываются

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

… блокер на проде ● пришлось откатываться, фиксить ● две недели на настройку окружения

Slide 15

Slide 15 text

теперь никто не хочет катить в прод без проверки альтернативных сценариев … блокер на проде ● пришлось откатываться, фиксить ● две недели на настройку окружения

Slide 16

Slide 16 text

Подготовка к интеграционному тестированию с самого начала у меня была какая-то тактика, и я ее придерживался

Slide 17

Slide 17 text

список интегрируемых сервисов Определить заранее: 1 2 3 критерии завершения тестирования риски и план их смягчения

Slide 18

Slide 18 text

ссылки на репозитории Подложить под руку: 1 2 3 ссылки на билд, деплой, права доступа креды от БД и права доступа

Slide 19

Slide 19 text

необходимость в заглушках Проверить: 1 2 3 наличие миграций и тестовых данных наличие тест-кейсов, эпиков, задач 4 работоспособность инфраструктуры

Slide 20

Slide 20 text

То, что готовиться нужно заранее мы уже поняли, а как? – Отладить процессы заранее

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

В том числе: разные форматы передачи 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" или Запрос вовсе не будет обработан

Slide 25

Slide 25 text

Различия в протоколах взаимодействия Обмен данными о заказах: ● Микросервис 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.

Slide 26

Slide 26 text

Различия в протоколах взаимодействия Обмен данными о заказах: ● Микросервис 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", либо вообще не отреагировать на запрос.

Slide 27

Slide 27 text

Service A (text tasks) Service B (staff) can assign assigned released сетевой лаг Database A Database B Проблема с синхронизацией (race condition)

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

Q&A