惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
量子位
Y
Y Combinator Blog
IT之家
IT之家
博客园 - 聂微东
L
LangChain Blog
爱范儿
爱范儿
H
Help Net Security
GbyAI
GbyAI
F
Fortinet All Blogs
B
Blog
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
C
Check Point Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
D
DataBreaches.Net
Last Week in AI
Last Week in AI
WordPress大学
WordPress大学
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Тестирование интеграций через Kafka: проверка сценариев с...
Настоящий инженер · 2026-06-17 · via Все публикации подряд на Хабре

4 мин

296

Сервисы, в которых данные собираются и обрабатываются на основе других сервисов, очень чувствительны к интеграциям. Технические решения часто реализованы на брокерах, например, Kafka. У нашей команды была задача с финансовой отчетностью и десятками вариантов состояния документов.

В чем особенность: при ручной проверке тестировщику нужно самостоятельно формировать сообщения для Kafka, заполнять их корректными данными и согласовывать значения полей между сообщениями. Это особенно важно в сценариях, где один документ собирается из нескольких событий. Дополнительно, через один и тот же топик могут приходить сообщения, с индивидуальными правилами обработки, в зависимости от значений полей.

Чтобы регулярно проверять такие сценарии и не зависеть от ручной подготовки данных, есть вариант включить их в автотесты и добавить в регрессионные прогоны.

Немного о проекте

С точки зрения тестирования у проекта есть две ключевые особенности:

  • Бэкенд построен вокруг интеграций через Kafka.

  • Фронтенд содержит большое количество однотипных форм документов.

Формы в интерфейсе похожи по структуре, но различаются набором полей. Конкретный набор зависит от источника данных, типа и статуса документа, а также от роли пользователя. В системе несколько ролей, и у каждой — свой уровень доступа к данным и допустимым действиям.

Такая архитектура порождает два типа задач в тестировании:

  1. На уровне интерфейса — нужно проверять множество вариантов отображения документов.

  2. На уровне интеграций — проверять обработку входящих сообщений через Kafka и корректное создание документов на их основе.

Почему выбрали автотесты

Обе задачи плохо масштабируются при ручном тестировании. В интерфейсе количество комбинаций полей и ролей растет лавинообразно. В интеграциях — нужно готовить тестовые сообщения и контролировать прохождение данных через всю цепочку.

Поэтому мы выбрали подход с единым сценарием проверки и разными наборами входных данных. Сам тест остается неизменным — меняются только входные данные и ожидаемый результат. Это позволило покрыть разные варианты отображения документов без дублирования кода.

Для автоматизации мы использовали Cypress и расширили существующие сценарии проверками интеграций через Kafka.

Пример теста

Пример теста

Пример параметров теста

Пример параметров теста

 Бизнес-задача: обработка разных типов сообщений в одном потоке данных

После того как покрыли проверки интерфейса, в регрессе осталась важная часть - создание документов через интеграции. Каждый документ формируется на огромном объеме динамически меняющихся данных, которые включают разную механику обработки.

Прием данных реализован через Kafka, в которую приходят сообщения, на основе которых создаются документы.

Сложность:

  • в одном топике приходят данные разных типов 

  • тип будущего документа определяется значением поля типа документа 

  • логика обработки зависит от дополнительных параметров сообщения. 

В рамках одного сценария система должна:

  • отфильтровать часть сообщений 

  • определить тип создаваемого документа 

  • разобрать поля по разным правилам в зависимости от типа 

  • собрать один документ из нескольких сообщений с одинаковыми идентификаторами 

Каждое сообщение добавляет строку расхода, а ожидаемое количество строк также приходит в данных. Ошибка на любом из этих этапов критична.

Решение

Задачу не стали решать отдельно от существующих автотестов. Вместо этого расширили уже готовые сценарии проверки документов.

В тесты добавили шаг отправки сообщений в Kafka. Для этого использовали API тестового контура и формировали сообщения с нужными параметрами, включая DocType, идентификаторы и данные строк расходов.

После отправки данных тест выполняет те же действия, что и раньше:

  • авторизация под нужной ролью,

  • поиск документа по номеру,

  • проверка полей, строк учета и статуса,

Таким образом, один сценарий покрывает весь путь от входящего сообщения до отображения документа в интерфейсе.

Расширенный сценарий проверки документов

Расширенный сценарий проверки документов

С какими проблемами мы столкнулись

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

Чтобы избежать нестабильности, добавили паузу после отправки сообщений и повторные попытки проверки. Тест несколько раз ищет документ по номеру и продолжает выполнение, как только он появляется.

Вторая сложность связана с поиском документа. При создании через интерфейс документ сразу открыт на экране. При создании через интеграцию он появляется в системе после обработки сообщений и не открывается автоматически. Поэтому перед проверкой его нужно сначала найти по номеру.

Результат

После внедрения подхода интеграционные сценарии стали частью регресса и выполняются вместе с остальными тестами. Это дало не только удобство, но и заметный эффект в процессе тестирования.

Во-первых, сократилось время проверки интеграций. Ручная smoke-проверка сценариев с несколькими типами документов сократилась в 5 раз.

Во-вторых, интеграционные проверки стали регулярными. Ранее, если изменения не затрагивали обработку сообщений, эти сценарии могли пропускаться, чтобы сократить время time to market. После автоматизации их стали выполнять в каждом релизе.

Это напрямую повлияло на уверенность в системе. Данные, которые поступают в Kafka, формируются пользователями в других системах и могут содержать ошибки. При сбоях было сложно понять, проблема в данных или в обработке. Регулярные проверки позволили быстрее локализовать причину и сократить время разбора инцидентов.

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

Интеграционные сценарии удалось включить в регрессионные проверки без усложнения существующих тестов.

Проверки стали регулярными и не зависят от ручной подготовки данных.