Pull to refresh
8
5.6
Антон @Avvero

Software Developer

Send message

Тестирование сообщений в Kafka

Level of difficultyMedium
Reading time5 min
Views5.2K

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

Читать далее
Total votes 4: ↑2 and ↓2+3
Comments0

Цифровой сад

Level of difficultyEasy
Reading time5 min
Views1.7K

Тема ведения заметок остается актуальной и по сей день. Мы знаем, какую пользу это приносит автору. Знакомы с различными подходами к ведению заметок. Известны инструменты, которые можно использовать, и у нас есть выбор. Представьте, что вы нашли свой подход, инструмент, и база заметок растет и радует глаз. А что дальше? Об одном из путей развития этой темы я хочу рассказать.

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

Читать далее
Total votes 5: ↑5 and ↓0+7
Comments2

Methodcentipede

Level of difficultyEasy
Reading time4 min
Views1.8K

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

Читать далее
Total votes 8: ↑6 and ↓2+10
Comments30

Стенд для нагрузочного тестирования на Testcontainers

Level of difficultyMedium
Reading time11 min
Views2.3K

Использование Testcontainers кардинально улучшило процесс работы с тестовыми сценариями. Благодаря этому инструменту, создание окружений для интеграционных тестов стало проще (см. статью Изоляция в тестах с Кафкой). Хотя нагрузочное тестирование встречается реже, чем функциональное, оно может быть гораздо более увлекательным. Изучение графиков и анализ работы конкретного сервиса может доставить настоящее удовольствие. Такие задачи редки, но для меня они особенно захватывающие.

Цель данной статьи — продемонстрировать подход к созданию стенда для нагрузочного тестирования в том виде, в котором пишутся обычные интеграционные тесты: в форме spock-тестов с использованием Testcontainers в среде Gradle проекта. В качестве утилит нагрузочного тестирования используются Gatling, WRK и Yandex.Tank.

Читать далее
Total votes 1: ↑1 and ↓0+1
Comments0

Повышение наглядности интеграционных тестов

Level of difficultyEasy
Reading time9 min
Views2.4K

Данная статья предлагает практические рекомендации по написанию интеграционных тестов, демонстрируя, как сосредоточиться на спецификациях взаимодействия с внешними сервисами, делая тесты более читаемыми и легкими для поддержки. Представленный подход не только повышает эффективность тестирования, но и способствует лучшему пониманию интеграционных процессов в приложении. Через призму конкретных примеров будут исследованы различные стратегии и инструменты - DSL-обертки, JsonAssert и Pact, предлагая читателю комплексное руководство по улучшению качества и наглядности интеграционных тестов.

Статья представляет примеры интеграционных тестов, выполненных с использованием Spock Framework на языке Groovy для тестирования HTTP-взаимодействий в Spring-приложениях. В то же время, основные методики и подходы, предложенные в ней, могут быть эффективно применены к различным типам взаимодействий за пределами HTTP.

Читать далее
Total votes 3: ↑2 and ↓1+3
Comments0

Вариации программ и алгоритмов в условиях кодовой среды

Reading time2 min
Views640

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

Таким же образом и «мутации» в коде (отклонения от стандартов и спецификаций) служат движущей силой инноваций, адаптации и диверсификации в программном обеспечении.

Читать далее
Total votes 4: ↑1 and ↓30
Comments2

Изоляция в тестах с Kafka

Level of difficultyMedium
Reading time8 min
Views5.3K

Опыт запуска Kafka в тестовых сценариях достиг высокого уровня удобства благодаря использованию Testcontainers и улучшенной поддержке в Spring Boot 3.1 с помощью аннотации @ServiceConnection. Однако написание и поддержка интеграционных тестов с Kafka по-прежнему представляют собой вызов. В этой статье описывается подход, который значительно упрощает процесс тестирования, обеспечивая изоляцию тестов и предоставляя набор инструментов для достижения этой цели. При успешной реализации изоляции, тесты с Kafka могут быть организованы так, что на этапе проверки результатов обеспечивается полный доступ ко всем сообщениям, возникшим в ходе теста, избегая при этом необходимости в использовании методов принудительного ожидания, таких как Thread.sleep().

Этот метод подходит как для использования с Testcontainers, так и для Embedded Kafka или других способов запуска сервиса Kafka (например, локального инстанса).

Читать далее
Total votes 1: ↑1 and ↓0+1
Comments0

Как сократить потребление памяти в интеграционных тестах с Kafka с помощью GraalVM

Level of difficultyMedium
Reading time7 min
Views2.3K

В данной статье я хочу поделиться своим опытом создания нативного образа для EmbeddedKafka с использованием GraalVM. Использование такого образа в интеграционных тестах позволяет увеличить скорость запуска тестовых сценариев и сократить объем потребляемой памяти. Интересно отметить, что в сравнении с использованием confluentinc/cp-kafka в Testcontainers, разница в скорости и потреблении памяти оказывается заметной — и не в пользу последнего.

Читать далее
Total votes 3: ↑2 and ↓1+3
Comments9

Разносим по полочкам этапы тестирования http запросов в Spring

Level of difficultyEasy
Reading time7 min
Views6.5K

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

Речь пойдет об использовании методологии Arrange-Act-Assert применительно к интеграционным тестам на Spring Framework с использованием мокирования (mock) HTTP-запросов к внешним ресурсам, к которым идет обращение по ходу выполнения тестируемого кода в рамках поведения системы. Предлагаемые к рассмотрению тесты написаны с использованием Spock Framework на языке Groovy (см. недавнюю статью по этой теме: Тестируем Spring Boot приложения через Spock Framework). В качестве механизма мокирования будет использоваться MockRestServiceServer. Будет пару слов и о WireMock.

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments5

Граф маршрутов для Apache Camel

Reading time6 min
Views13K


В данной статье я расскажу вам о том, каким образом можно построить граф маршрутов для приложений с Apache Camel, отслеживать состояния этих маршрутов и собирать для них метрики.
Мы используем Apache Camel в spring приложениях и в Apache ServiceMix. И если маршруты в отдельном сервисе — это штука понятная и легко обозримая, то в рамках шины данных, где таких маршрутов много, не все так просто.

Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments10

Использование cucumber в качестве движка бизнес правил

Reading time7 min
Views6.6K

В данной статье я бы хотел поделиться с Вами идеей использования cucumber в качестве движка бизнес-правил и подходом к проверке таких правил.


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


  • для клиента должна быть выбрана группа согласно установленным правилам распределения
  • для каждого клиента должна быть выбрана только одна группа

Клиенту могут быть присущи такие параметры: страна, идентификатор, язык и т.д.


Cucumber is a tool that supports Behaviour-Driven Development (BDD) — a software development process that aims to enhance software quality and reduce maintenance costs.
Gherkin is a Business Readable, Domain Specific Language that lets you describe software's behaviour without detailing how that behaviour is implemented.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments7

Мультипротокольный бот через Microsoft Bot Connector REST API v3.0

Reading time3 min
Views9.8K
В этой статье я хочу описать простой пример работы мультипротокольного бота через Microsoft Bot Connector API — v3.0. На тему skype подобных ботов уже есть статьи на Хабре: «Как создать своего бота для Skype. Что не написано в документации» от and7ey и «Hello, Bot! Чат-боты – следующее поколение приложений?» от shwars. Но в первой идёт речь про работу через apis.skype и описанный там вариант не мультипротокольный, а во второй описана реализация через C#, а я в него не умею.

Кому и зачем нужна эта статья


Во-первых, «тому парню», который хочет сделать своего бота, но не умеет в C#, а умеет в REST.
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments10

Information

Rating
913-th
Location
Барнаул, Алтайский край, Россия
Date of birth
Registered
Activity