#%D1%8E%D0%BD%D0%B8%D1%82%D1%82%D0%B5%D1%81%D1%82%D1%8B

2025-09-17

Не LLM едиными: генерируем юнит-тесты из реального исполнения на лету

Представьте себе: вы отлаживаете новый баг в сложном многослойном приложении (например, на Spring). Чтобы воспроизвести проблему, приходится взаимодействовать со всей системой end-to-end: отправлять запрос на эндпоинт или что-то кликать в UI. Юнит-теста, который бы изолировал нежелательное поведение до уровня злополучного сервиса или утилиты, нет. А хотелось бы, чтобы он был: во-первых, воспроизводить баг было бы проще (особенно если UI кликает QA, а не вы), а во-вторых, его потом можно было бы легко превратить в регрессионный и улучшить стабильность системы. Тем временем все данные, нужные для воспроизведения бага в изоляции, есть. В окне отладчика видно, что приходит в метод, и в каком состоянии находится сервис перед тем, как все пойдёт не так. Мы в Explyt RnD решили, что нечего добру пропадать, и научились перехватывать это состояние, а потом генерировать юнит-тест, который в точности его воспроизводит. Сегодня расскажу о пройденном исследовательском пути, о том, как попробовать нашу экспериментальную фичу в плагине для IntelliJ IDEA, и о том, что у неё под капотом (спойлер: не только LLM).

habr.com/ru/companies/explyt/a

#автоматизация_тестирования #spring #java #юниттесты #интеграционные_тесты #llm #intellijidea #kotlin #explyt #тестирование_вебприложений

2025-09-02

[Перевод] Shift-Left тестирование с Testcontainers: ловим баги на ранних этапах локальными интеграционными тестами

Баги, пойманные на проде, всегда стоят слишком дорого — и времени, и нервов, и репутации. Юнит-тесты не видят проблем с реальными зависимостями, моки быстро устаревают, а интеграционные среды тормозят разработку. Выход ищут в подходе shift-left: проверять критичную бизнес-логику раньше, прямо в IDE, без ожидания CI. В этой статье разберём, как библиотека Testcontainers позволяет поднимать реальные сервисы в контейнерах, писать интеграционные тесты так же просто, как юнит-тесты, и что это даёт с точки зрения скорости и качества по метрикам DORA.

habr.com/ru/companies/otus/art

#интеграционные_тесты #Testcontainers #автоматизация_тестирования #фреймворки_тестирования #PostgreSQL #качество_кода #юниттесты

2025-08-19

Unit тесты в React разработке

Зачастую разработчики сталкиваются с двумя крайностями: либо пишут огромное количество бесполезных тестов, которые почти ничего не проверяют, либо вообще отказываются от тестирования, боясь сложностей. Здесь мы рассмотрим простой и эффективный подход к созданию правильных юнит-тестов в проектах на React.js.

habr.com/ru/articles/935742/

#react #reactjs #reactjs #unittesting #юниттесты #юниттестирование #юнит_тесты

2025-07-24

[Перевод] Тестируем веб приложение на Go

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

habr.com/ru/companies/otus/art

#go #qa_automation #qa #Тестирование #Юниттесты #Вебприложение #Модульное_тестирование #Сервисный_слой #Mock #Testify

2025-07-24

Тесты не лгут — прислушивайтесь к ним. Часть 1

(Статья - результат совместной работы с Максимом Степановым ) Когда начинаешь писать тесты к коду, иногда возникает ощущение, что пытаешься расчесать запутанные волосы, и чем больше дёргаешь, тем больше узлов находишь. Это полезный сигнал, к которому стоит прислушиваться: плохая тестируемость подсказывает, что у кода есть изъяны в архитектуре. Связанный код, который сложно поддерживать и расширять, сложно и тестировать. Как сказал Боб Мартин : «Тестируемый код — синоним разъединённого кода» А значит, тестируемость может быть маркером хорошей архитектуры. Именно это мы и попробуем здесь продемонстрировать. Мы напишем тесты для примитивного скрипта на Python, который проверяет IP пользователя, определяет их регион и сообщает текущую погоду в регионе. Нас будет интересовать, как эти тесты заставят нас изменить код. Они, как расчёска, помогут нам методично разобрать проблемные места, чтобы код (как и волосы) стал гладким и послушным. Полный пример доступен здесь , каждый основной шаг находится в отдельной ветке. В первой части статьи мы сделаем простейшее преобразование — разобъём скрипт на отдельные функции, а потом выясним, какие недостатки кода нам пока не удалось устранить. Во второй части мы от них избавимся с помощью разъединения зависимостей и модульной архитектуры. Поехали!

habr.com/ru/companies/testops_

#python #pytest #qa #тестирование #solid #юниттесты #автотесты #автоматизация

2025-07-02

Как тестировать хуки в React с @testing-library/react-hooks

Привет, Хабр! Сегодня рассмотрим, как тестировать React‑хуки с помощью @testing-library/react-hooks .

habr.com/ru/companies/otus/art

#react #React_Hooks #Тестирование_React #Юниттесты #Хуки #useState #useCallback

2025-06-25

Генерация юнит-тестов с LLM: если бы посуда мылась сама

Привет, Хабр. На связи Даниил Кобылкин ( @danilkkk ) и Тимофей Тимошевский ( @timhok17 ). Мы фронтенд-разработчики в Одноклассниках. Юнит‑тесты — важный этап проверки качества кода, позволяющий ловить ошибки на ранней стадии и удешевлять сопровождение проекта. Но давайте честно: писать их вручную — скучно, долго и не всегда хочется. Поэтому в Одноклассниках мы решили избавиться от этой рутины и автоматизировать процесс генерации юнит‑тестов. Рассказываем в статье, какие инструменты и подходы для генерации юнит‑тестов существуют, и как мы научились генерировать юнит‑тесты в своем проекте.

habr.com/ru/companies/vk/artic

#llm #юниттесты

2025-06-24

Генерация юнит-тестов с LLM: если бы посуда мылась сама

Привет, Хабр. На связи Даниил Кобылкин и Тимофей Тимошевский. Мы фронтенд-разработчики в Одноклассниках. Юнит‑тесты — важный этап проверки качества кода, позволяющий ловить ошибки на ранней стадии и удешевлять сопровождение проекта. Но давайте честно: писать их вручную — скучно, долго и не всегда хочется. Поэтому в Одноклассниках мы решили избавиться от этой рутины и автоматизировать процесс генерации юнит‑тестов. Рассказываем в статье, какие инструменты и подходы для генерации юнит‑тестов существуют, и как мы научились генерировать юнит‑тесты в своем проекте.

habr.com/ru/companies/vk/artic

#llm #юниттесты

2025-05-20

Мечтают ли андроиды о Robolectric? Разбираем фреймворк по косточкам

Я уверен, вы слышали про Robolectric, но использовали ли хоть раз для UI‑тестирования или screenshot-тестирования? Да, у библиотеки неоднозначная репутация в Android-комьюнити. Возможно, вы будете в восторге, когда её устройство перестанет быть для вас загадкой. В статье разберу: устройство Robolectric, возможности фреймворка, задачи, которые вы сможете решать, и нюансы совместимости, важные для вашего проекта . Я копнул глубже, упорядочил все свои знания о библиотеке и изложил их под катом.

habr.com/ru/companies/alfa/art

#robolectric #android #classloader #bytecode #юниттесты #uiтестирование #фреймворки_тестирования

2025-03-18

Тестирование БД в легаси-проекте: повышение качества кода и стабильности системы в «Цифровой карте магазина»

В этой статье я хотел бы поделиться с вами моим опытом написания юнит-тестов для базы данных (БД) в рамках легаси-проекта. Я выбрал формат ретроспективы, чтобы показать, как все начиналось, к чему мы пришли и какой путь был пройден в разработке юнит-тестов для проекта «Цифровая карта магазина». Возможно, статья будет полезна начинающим разработчикам баз данных или тем, кто хочет начать писать юнит-тесты для Oracle, но не знает, с чего начать.

habr.com/ru/companies/sportmas

#юниттесты #oracle_sql #тестирование #автотесты #базы_данных #smlab #спортмастер

2024-12-09

[Перевод] Грязный код

Эдсгер Дейкстра: «Грязно и быстро — мне это не понравится» «Чтобы иметь право называть себя профессионалом, вы должны писать чистый код. Нет никаких разумных оправданий тому, чтобы не стремиться к лучшему». Clean Code В этом эссе я хочу рассказать о том, как пишу код. Я буду называть свою методику «грязным кодом», потому что часто нарушаю рекомендации «чистого кода» — популярной концепции написания кода. Вообще, я на самом деле не считаю свой код абсолютно грязным: местами он немного уродлив, но по большей части я им доволен, и он достаточно прост в поддержке, обеспечивая при этом разумные уровни качества. Кроме того, я не пытаюсь своим эссе убедить вас писать грязный код. Скорее, я хочу показать, что таким способом можно писать достаточно успешное ПО, и, надеюсь обеспечить некий баланс в обсуждениях методологий разработки ПО. Я программирую уже довольно давно и видел разнообразные подходы к обеспечению работоспособности ПО. Кто-то любит объектно-ориентированное программирование (я тоже), другие умные люди его ненавидят. Кому-то нравится выразительность динамических языков, кого-то она бесит. Кто-то успешно выпускает программы, строго следуя концепции Test Driven Development, другие добавляют в конце проекта несколько сквозных тестов, а многие остаются где-то посередине этих крайних точек. Я был свидетелем проектов, выпускавших и поддерживавших успешное ПО на основе всех этих разнообразных подходов. Поэтому повторюсь, что моя цель не убедить вас, что мой способ кодинга единственно возможный, а показать вам (и в особенности начинающим разработчикам, которых легко запугать терминами наподобие «чистого кода»), что можно иметь успешную карьеру программиста, пользуясь множеством различных подходов, и что мой — один из них.

habr.com/ru/companies/ruvds/ar

#htmx #чистый_код #принцип_единой_ответственности #test_driven_development #юниттесты #интеграционные_тесты #ruvds_переводы

2024-12-08

[Перевод] Как писать чистый код — советы для разработчиков с примерами

Представьте комнату, где повсюду разбросана одежда, книги и другие вещи. Найти что-то в такой комнате было бы сложно, не так ли? Теперь представьте, что вы пишете беспорядочный код – это не менее запутанно, если не хуже! С другой стороны, чистый код похож на аккуратную комнату: вы легко находите то, что нужно, понимаете, что происходит, и быстрее выполняете задачи. Давайте взглянем на этот график. Он показывает два разных подхода к написанию кода и их влияние на время, необходимое для добавления новых строк:

habr.com/ru/articles/864758/

#чистый_код #юниттесты #архитектура_ПО #разработка_ПО #javascript #разработчик #код #вебразработка #singleresponsibility_principle

2024-11-05

Поиск ошибок в юнит-тестах

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

habr.com/ru/companies/pvs-stud

#юниттесты #unittesting #unitтестирование #тестирование #TDD #DPDK #c #c++ #ошибки #ошибки_в_программе #статический_анализ_кода #pvsstudio #sast #си #open_source

2024-10-11

Приключение на 20 минут. Часть 1: автоматизируем запуск проектов в SoapUI

Всем привет, меня зовут Вероника Дюкарева. Я работаю старшим инженером-программистом в компании Bercut . В статье разберем, что такое SoapUI, что полезного можно найти в его системных файлах, рассмотрим работу с ним через командную строку, Docker и Python. Вошли и вышли!

habr.com/ru/companies/bercut/a

#bercut #беркут #soap #soapui #xml #автоматизация #юниттесты

2024-09-26

Образы БД для юнит-тестирования, опять

В прошлой статье был предложен вариант для создания docker образов БД для последующего использования в разработке и тестирования приложений в пайплайнах гитлаба. Из-за перехода на новую инфрастуктуру k8s 1.30 (restricted psp) и новый гитлаб 17.3 все это ломается. Поэтому придется исправлять ситуацию! Запускай

habr.com/ru/articles/846172/

#базы_данных #юниттесты #springboot #jib

2024-09-24

[Перевод] С 80-х по 2024-й: как создавались и оптимизировались CI-тесты

Современные команды разработки тестируют каждое изменение кода перед мержем. Это не просто общепринятая традиция: наряду с ревью кода, это стандарт по умолчанию, применяемый практически во всех кодовых базах компаний. Мы называем его тестами CI (непрерывной интеграции). В результате их внедрения среднестатистическая организация запускает сотни наборов тестов в день. В прошлом непрерывное интеграционное тестирование было с нами не всегда, в отличие от обычного тестирования. По моим наблюдениям, CI — это результат того, что тестирование всё больше ускоряется. Разберёмся, как это произошло и как тестирование будет ускоряться дальше.

habr.com/ru/companies/netology

#CI_тесты #тестирование #ci #jenkins #CIсистемы #ускорить_по #пакетирование #интеграционное_тестирование #интеграционные_тесты #юниттесты

2024-08-02

Шаблон unit-тестов на Go

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

habr.com/ru/articles/833448/

#go #golang #unittesting #benchmark #test #pattern #тестирование #юниттесты #бенчмарк #шаблон

2024-05-14

Начинать тестирование раньше и уйти от релизов

Раньше нагрузочное тестирование проводилось сервисной командой на последнем этапе. Это дорого и долго: дорогой стенд, который надо собрать, продлайк, много железа, много интеграций, дорогие и редкие на рынке инженеры с уникальными знаниями вроде JMeter, LoadRunner, Gatling и так далее. Как обычно выглядит схема нагрузочного тестирования: Спроектировали. Разработали. Протестировали. Начинаем проверять работающий продукт на перформанс. Традиционный итог — перформанса не хватает, надо всё переделывать. Классический водопад — это долго, дорого, и вообще он морально устарел. Сейчас нам важно минимизировать время от идеи до реализации и выхода на рынок, и для этого подходит концепция shift-left. То есть мы смещаемся влево по таймлайну и начинаем тестирование АСАП. Мы решили поменять процессы, например, уйти от релизов и дать командам независимо внедряться. Для этого должны быть весь набор практик и экспертиза.

habr.com/ru/companies/gazpromb

#нагрузочное_тестирование #юниттесты #исследования #тесты

2024-04-26

Кратко про юнит-тесты в Rust

Привет! Юнит-тесты позволяют предотвратить ошибки и значительно упростить процессы рефакторинга и поддержки кода. Их реализация существует во всех языках программирования и Rust - не исключение. Юнит-тесты в Rust обычно располагаются в том же файле, что и тестируемый код, в специальном модуле с именем tests , аннотированном #[cfg(test)] . Внутри этого модуля размещаются функции тестирования, каждая из которых также аннотируется как #[test] .

habr.com/ru/companies/otus/art

#тестирование #юниттесты #rust #программирование

2024-03-28

5 способов писать эффективный код на Go: от названий переменных до архитектуры

Если вы задумывались, какие практики использовать, чтобы писать код на Go быстро и качественно, этот материал для вас. Руководитель группы разработки подсистем Геннадий Ковалев и эксперт по разработке ПО Даниил Подольский обсуждают пять способов повысить эффективность разработки в команде Go-программистов: они расскажут, как называть переменные, составлять документацию и продумывать архитектуру так, чтобы специалистам в команде и смежных отделах было легко работать с написанным кодом. Статья будет полезна начинающим специалистам и командам, которые недавно работают вместе. Опытных разработчиков приглашаем в комментарии — расскажите, какие практики для повышения эффективности кода используете вы.

habr.com/ru/companies/yadro/ar

#работа_в_команде #go #эффективность #архитектура #нейминг #синтаксис #юниттесты #swagger #чистая_архитектура

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst