Как стать автором
Обновить
114.13

Java *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Юнит-тесты: чек-лист методик проектирования

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 342

Привет, Хабр! Меня зовут Василий Косарев, я Java‑разработчик в CDEK. Много раз мы слышали о необходимости писать модульные тесты, о том, что весь код должен быть ими покрыт. При этом мне не встречалось списка: какие именно методики лучше использовать при тестировании кода.

Я задумался: есть ли чек‑лист/ руководство, который облегчил бы генерацию тестовых сценариев и помог выявлять серьёзные ошибки? Чтобы вдумчиво подходить к тестированию и не тратить ресурсы впустую, сводя к минимуму количество необходимых тестов.

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

Читать далее
Всего голосов 11: ↑11.5 и ↓-0.5 +12
Комментарии 0

Новости

Repeatable migrations в Flyway

Время на прочтение 2 мин
Количество просмотров 826
После статьи о логике в БД я много дискутирую в комментариях. Часто вижу заблуждение, что любая миграция при таком подходе — это новый файл, который невозможно сравнить со старым. Я покажу что это не так на примере Flyway.
Читать дальше →
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 1

Использование resilience4j со Spring Boot

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 2.9K

resilience4j библиотека, предоставляющая набор инструментов для повышения надежности и отказоустойчивости java приложений прежде всего в микросервисной архитектуре

Рассмотрим какие в ней есть инструменты, как их использовать в Spring Boot приложении с помощью аннотаций, как настраивать и есть ли в них подводные камни

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 0

Настройка CI/CD глазами разработчика

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 13K

Тема, которая будет сегодня освещена, рассказывается от лица backend разработчика. На нашем проекте нет devops'а, который бы мог подсказать, направить. Поэтому нам пришлось выходить из зоны комфорта.

Тут кое-что интересное...
Всего голосов 12: ↑10 и ↓2 +8
Комментарии 20

Истории

Отладка Spring-микросервиса в контейнере

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 3.9K

Когда речь заходит о микросервисах, на ум обычно приходят контейнеры. Разумеется, встречаются микросервисные архитектуры, в которых компоненты запускаются без контейнеров. На мой взгляд, сопровождение таких систем получается намного сложнее, так как требует более глубоких знаний в администрировании Linux, скриптинге и различных инструментах автоматизации. В то же время, порог вхождения (дисклеймер: подразумевается именно минимально необходимый набор знаний для начала работы с инструментом) для вещей вроде docker-compose существенно ниже, и работать с ними могут даже начинающие разработчики.

Иногда для оперативной локализации ошибки проще всего воспользоваться отладчиком. Я думаю, каждый разработчик так или иначе применял подход DDD (DDD - шут. Debug Driven Development) при локальной разработке или в поисках бага на удаленном стенде. Но что делать, если удаленное приложение в контейнере? В этой заметке я бы хотел поделиться Dockerfile-ом, к которому пришел в свое время, решая проблему отладки контейнеризированного приложения.

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 6

Spring MVC REST API: автономная конфигурация при написании модульных тестов

Время на прочтение 8 мин
Количество просмотров 1.4K

Создание и настройка необходимых компонентов без дублирования кода

Отправка HTTP-запросов в тестируемую систему без дублирования кода

Настройка Spring MVC Test framework, при написании модульных тестов для Spring MVC REST API с помощью JUnit 5.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 0

Что работодатели ожидают от джуниор Java-разработчиков

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 15K

Привет! Я Анастасия Рагозина, продакт-менеджер на курсе «Java-разработчик». Сейчас рынок труда в IT-сфере переживает не самый простой период, и новичкам на нём особенно тяжело. Поэтому мы с коллегами в конце 2023 года провели исследование и выяснили, какие навыки и инструменты нужны начинающим Java-разработчикам. А также — к чему стоит готовиться при устройстве на работу.

Читать далее
Всего голосов 12: ↑7 и ↓5 +2
Комментарии 24

Тестирование Spring Security

Время на прочтение 10 мин
Количество просмотров 2.3K

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

Spring Security хорошо интегрируется с фреймворками Spring Web MVC и Spring WebFlux. Он также имеет комплексную интеграцию с Spring MVC Test и Spring WebTestClient.

Читать далее
Всего голосов 3: ↑2 и ↓1 +1
Комментарии 1

Гексагональная Архитектура и Spring Boot

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 6.8K

Всем привет!

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

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 12

Вариантность обобщенных типов в картинках и простых примерах

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 2.3K

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

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 4

Java Spring Reactive WebSession на примере

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 1.5K

Рассмотрим простой пример создания сессии, её использования и инвалидации в реактивном стеке Spring'а.

Читать далее
Рейтинг 0
Комментарии 0

Автоматизируем проверку содержимого PDF-файлов с помощью pdf-test

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 1.9K

Многие сервисы в различных отраслях генерируют печатные формы счетов, отчётов и прочего в формате PDF. И, конечно, перед специалистами тестирования встаёт вопрос о проверке этих документов.

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

В этой статье мы познакомим вас с инструментом, который достаточно просто может закрыть потребность в проверке содержания PDF-файлов. Это инструмент с открытым исходным кодом — pdf-test. Он по сути является обёрткой pdfbox и позволяет из коробки использовать основные мэтчеры, не задумываясь о том, чтобы писать свои или о том, как именно парсить документ. Рассмотрим далее его применение на языке Java.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Задачи от Tinkoff для Junior Java developers

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 21K

Отличная тренировка для начинающих разработчиков на знание Java core. В статье будет представлено описание 5 задач с разным уровнем сложности.

Надеюсь, эти задачи будут хорошей тренировкой для тебя и ты сможешь закрепить свои знания на практике. Позже появится мое решение на GitHub.

Читать далее
Всего голосов 12: ↑4 и ↓8 -4
Комментарии 32

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Spring Boot. Реактивный асинхронный неблокирующий REST vs традиционный синхронный блокирующий

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 8.4K

В статье простым языком рассказываю об особенностях работы реактивного веб-сервиса в сравнении с традиционным REST. Для комфортного чтения пригодятся базовые знания Java, Spring Boot.

Читать далее
Всего голосов 8: ↑5 и ↓3 +2
Комментарии 10

Сборка в Gitlab как маркер здоровья архитектуры

Уровень сложности Простой
Время на прочтение 2 мин
Количество просмотров 7.2K

Не так давно мне довелось настраивать СI/CD для среднего по размеру проекта, состоящего из +-20 микросервисов и 5 переиспользуемых библиотек. Изначально все микросервисы и библиотеки жили в собственных репозиториях и я настроил CI/CD индивидуально для каждой репы, вынеся общие скрипты и настройки в отдельный проект. Так мы пожили какое-то время, после чего пришла идея объединить все в монорепу, для удобства сопровождения и большей прозрачности при разработке.

Читать далее
Всего голосов 15: ↑8 и ↓7 +1
Комментарии 19

Введение в коллекции Java

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 6.4K

Собственно говоря, зачем эта статья и для кого? Для тех, кто только начинают свой путь в изучении Java. В этой статье я не буду сильно углубляться в детали каждой коллекции в отдельности, ведь чтобы начать ими пользоваться достаточно хотя бы на базовом уровне понять, что это такое и с чем это «едят».

Читать далее
Всего голосов 16: ↑8 и ↓8 0
Комментарии 9

С нуля до плагина JMeter: пишем свой продукт без опыта

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 2.3K

От проблемы к практике: как привязать JMeter к Allure Report если нет опыта программирования, но очень хочется

Читать далее
Всего голосов 11: ↑8 и ↓3 +5
Комментарии 6

Применение ООП на практике

Уровень сложности Средний
Время на прочтение 13 мин
Количество просмотров 15K

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

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 17

Использование Postgres и JSONB для хранения товаров, характеристик и цен

Уровень сложности Средний
Время на прочтение 17 мин
Количество просмотров 9.6K

Всем привет! Меня зовут Александр, в данное время я на фрилансе занимаюсь проектом по созданию очередного маркетплейса. В процессе работы мы столкнулись с далеко не новой проблемой организации хранения информации о товарах, имеющих различные характеристики и цену, зависящую от характеристик. На нашем проекте применяется принцип CQRS: запись осуществляется в Postgres, чтение происходит из OpenSearch, а данные между ними перемещаются по шине, реализованной на Kafka. Такой подход обусловил использование реляционной БД для решения несвойственной ей задачи.

Чтобы увидеть, почему эта задача не нак проста, как кажется с первого взгляда, представим, что в нашем каталоге есть футболки мужские всего с двумя атрибутами: цвет и размер. Мы хотим хранить товар с названием "Футболка Junior Developer", она представлена в синем, красном и зеленом цветах, и каждый цвет доступен в нескольких размерах. Добавляя немного сложности, представим, что цена конкретной футболки также варьируется в зависимости от цвета и размера. Как представить эту сущность в реляционной базе данных, с учетом того, что продавец футболки может в какой-то момент добавить новые атрибуты для своего товара, например, габариты упаковки для отправки (длина, ширина, высота)?

С одной стороны, можно использовать подход: Entity-Attribute-Value. Он позволяет гибко настраивать связи между сущностями, их атрибутами и значениями, сохраняя возможность динамического добавления новых атрибутов сущности. Однако у такого подхода есть свои недостатки. На них останавливаться не буду - в статье: "Замена EAV на JSONB в PostgreSQL" они приведены, также там есть сравнение по производительности и памяти EAV и JSONB.

Читать далее
Всего голосов 15: ↑12 и ↓3 +9
Комментарии 14

PECS и WildCards на пальцах

Уровень сложности Средний
Время на прочтение 3 мин
Количество просмотров 1.1K

Данная статья не научный труд. Это простое объяснение, зачем введены понятия PECS и WildCards, что бы понять и запомнить.

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Комментарии 3

Вклад авторов

Работа

Java разработчик
384 вакансии