Обновить
11.43

TDD *

Разработка через тестирование

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

Мультиагентная разработка в Cursor: как заставить субагентов работать на большие проекты

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

Как можно Cursor IDE превратить в полноценную мультиагентную среду разработки, где каждый AI‑агент выполняет роль члена команды: аналитика, архитектора, планировщика или разработчика?

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

Как добиться сходимости к стабильному результату в ходе длительной самостоятельной работы команды ИИ-агентов?

Рассказываю, как я пришёл к таким результатам с помощью команды агентов под управлением оркестратора и применения принципа разрабокти «сверху вниз», когда код рождается постепенно, но осмысленно: от общей идеи до рабочего решения.

Читать далее

Новости

Мой опыт парного программирования с Chat GPT-5

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели12K

Привет, Хабр! Про модели искусственного интеллекта сейчас не говорит только ленивый. Высказывается множество мнений и нередко они оказываются на противоположных полюсах: от полного скепсиса до убеждённости, что произошла новая научно-техническая революция. Жизненный опыт подсказывает, что истина где-то по-середине и инструмент будет полезным ровно настолько, насколько ты умеешь им пользоваться. В относительно недавнем интервью генеральный директор Microsoft Сатья Наделла заявил, что примерно 20-30 % кода в Microsoft уже сейчас генерируется ИИ и разработчикам надо будет адаптироваться. Мне тоже захотелось попробовать внедрить такого помощника в свои рабочие процессы и посмотреть, что из этого получится.

Читать далее

Documentation-Driven Development

Время на прочтение12 мин
Охват и читатели5.9K

Если вы пишете, потом переписываете, рефакторите, а снова переписываете – вы что-то делаете не так. Другая крайность – пытаться всё сделать идеально с первого раза, а так как это невозможно для сколь-нибудь нетривиальной задачи, то можно войти в ступор. Описанные ниже идеи могут помочь в этих случаях, дав некоторый критерий того, что уже можно писать код, так как понимания достаточно. Или того, что уже нужно писать код, так как понимания достаточно и дальнейшее промедление — это прокрастинация в чистом виде или саботаж.

Читать далее

BDD как клей между TDD и DDD

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели7.5K

Как превратить автотесты в живую документацию(как техническую, так и аналитическую).

Как сделать так, чтобы они рассказывали о предметной области.

И в конце концов, проверяли, что все это работает.

Читать далее

Стоицизм как база для TDD: страданиями код совершенствуется

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели6.2K

Когда тест проходит с первого раза — это пугает. Стоицизм в TDD — не методология, а форма выживания.

Читать далее

Реализация сервиса на C++: TDD, DDD и событийно-ориентированная архитектура

Уровень сложностиСредний
Время на прочтение33 мин
Охват и читатели9.2K

Статья о реализации сервиса на C++ с применением TDD, DDD и событийно-ориентированной архитектуры. Проект переносит идеи из книги «Паттерны разработки на Python: TDD, DDD и событийно-ориентированная архитектура» на C++.

Читать далее

Что должен знать и уметь Разработчик Автоматического Тестирования, чтобы называться Инженером

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели5.9K

В области автоматического тестирования я работаю уже 15 лет. За это время я работал как в крупных компаниях, так и в небольших стартапах. Использовал различные языки программирования и технологии. Был частью разных команд — от специализированных групп разработчиков автоматического тестирования до смешанных команд, где вместе работали и разработчики, и тестировщики. За время карьеры занимал различные позиции и дорос до Senior Automation Engineer.

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

Читать далее

Типы и тесты

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели4.6K

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

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

Читать далее

TDD и цикл обратной связи

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

Есть небольшая книжка написанная более 20 лет назад, переведенная на русский как «Экстремальное программирование». При обсуждении этой книжки с коллегами я часто встречал мнение, что она только про то, что надо сначала тесты писать, а потом код и больше в ней нет ничего полезного. Когда у самого добрались руки до нее, я понял, что видимо читают выжимки из статей на Хабре или просто статьи википедии, потому что там есть и паттерны проектирования, и правила написания тестов и практические примеры. А все запоминают только мантру «Утром тесты — вечером стулья код».

Читать далее

Вы не знаете TDD

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели9.9K

Кажется, про TDD давно всё известно: сперва тест — потом код — получаем покрытие. Но на деле его суть понимают неправильно — как критики, так и сторонники.

Эта статья — не инструкция и не религиозная проповедь. Это разбор заблуждений. Причём речь пойдёт не только о критиках TDD, но и о его сторонниках.

TDD часто воспринимают как способ добиться максимального покрытия или как дисциплину «писать тесты вперёд». Но настоящая цель — не в тестах, а в итеративном проектировании поведения и архитектуры.

Если вам кажется, что TDD — это занудно, медленно, не подходит к реальному коду или убивает гибкость — возможно, вы всё делали правильно.
Но с совершенно другими целями.
Именно поэтому вам не понравилось.

Разберёмся, что такое TDD на самом деле — и почему вы, скорее всего, не знаете TDD.

Читать далее

Альтернативный способ хранения скриншотов в Playwright и способ их обновления

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

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

Одним из инструментов, предоставляющих возможность автоматизации данного вида тестирования, является Playwright.

В этой статье я расскажу о работе с визуальным тестированием в рамках упомянутого инструмента, как мы справились со сложностями хранения эталонных скриншотов и автоматизировали их обновление.

Читать далее

TDD: разработка быстрее и качественнее

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели4.4K

Все мы стремимся создавать более качественное программное обеспечение и делать это быстрее. Я считаю, что разработка через тестирование предлагает нам путь к этой цели. Все еще боитесь использовать этот подход? Тогда я приглашаю вас обсудить советы и приемы помогающие раскрыть преимущества TDD!

Читать далее

Скриншот-тестирование фронтенда: руководство по применению в 2025 году

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

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

Часто приходилось видеть тесты опосредовано проверяющие визуальное отображение html-элемента, что-то в стиле expect(elem.classList.contains("visible")).toBe(true). Говорить о надежности таких тестов конечно-же не приходится, так как изменив содержимое css-селектора стилизующий данный класс, данный тест все еще будет зелёным, несмотря на то что по факту элемент будет скрыт.

Результат от подобных тестов вполне ожидаемый. Обновили версию UI-библиотеки и на всем проекте поехала верстка? Тесты зелёные. Случайно переопределили CSS-переменную и теперь вместо приятной тщательно подобранной дизайнером гаммы цветов вы видите лишь кислотно-вырвиглазную солянку? “Бывает, надо было ручками протестировать” - скажет менеджер.

Решить данную проблему нам поможет добавление скриншот-тестирования на проект.

Используя данный вид тестирования вкупе с классическими юнит- и е2е-тестами мы практически полностью избавляемся от необходимости ручного тестирования наших фронтенд-приложений.

Читать далее

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

Агентное кодирование. Инструция по созданию надёжного программного продукта (LLMDD)

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

Эта статья — пошаговое руководство о том, как настроить процесс разработки, где исполнителем выступает LLM-модель. Я делюсь опытом составления понятных и чётких инструкций для моделей, а также описываю, как от начальной идеи дойти до готового продукта. Рассказываю, как выбирать подходящие технологии, структурировать задачи специально под LLM, выстраивать многоуровневую систему тестов и контролировать качество, не погружаясь постоянно в код. Также делюсь инструментами и шаблонами, которые помогают управлять поведением моделей и избегать типичных ошибок и проблем.

Читать далее

Как запустить LTE TDD, когда инфраструктуры нет, но очень хочется?

Время на прочтение46 мин
Охват и читатели2.9K

Всем привет! Меня зовут я сам прихожу Денис Вдовин, я системный архитектор в отделе мультисервисных (пакетных) сетей компании РТК-Сервис, и мне бы хотелось рассказать одну историю, которая началась с салата еще в зимние каникулы. В ней в разных пропорциях смешались ISIS, QoS, загадочный PTPv2, распределение Пуассона, теория массового обслуживания и LTE TDD, отчего она показалась мне крайне интересна и достойна публикации отдельной статьей.

Сей трактат, направленный на решение конкретной прикладной проблемы, будет довольно длинным и с каждым листом А4 сложность для понимания будет нарастать. Затрагиваются, казалось бы, совсем далекие друг от друга галактики, поэтому если вы где-то не смогли уследить за руками факира — это норма. Главное, что в конце вас ждет награда - мы научимся вычислять джиттер на обычном калькуляторе по графикам из Заббикса. Поехали!

Поехали

AI-driven TDD — используем Code-LLM на максимум

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

С момента своего появления и по сей день подход Test-Driven Development (TDD) вызывает оживленные дискуссии в сообществе разработчиков, и до сих пор нет единого мнения о ее эффективности.

Но что будет, если совместить TDD и AI-генерацию кода? В статье я покажу:

Как соединить TDD и AI;

Как AI-driven TDD улучшает процесс разработки;

Как TDD влияет на качество сгенерированного AI кода.

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

Читать далее

Книга: «Тестирование программного обеспечения: контекстно ориентированный подход»

Время на прочтение16 мин
Охват и читатели3.2K
image Привет, Хаброжители!

Хорошими тестировщиками не рождаются — ими становятся благодаря упорному труду и постоянному общению. На этом пути таится множество ловушек, способных сорвать самые смелые планы и привести к отставанию проектов от графика.

Кем Кейнер, Джеймс Бах и Брет Петтикорд очень хорошо об этом знают. За их плечами более 50 лет опыта, и они понимают, что необходимо для достижения успеха в тестировании. Они собрали 293 проверенных совета, которые вы можете использовать в своих проектах. Каждый урок начинается с утверждения, относящегося к тестированию программного обеспечения, за которым следует объяснение или пример, показывающий, как, когда и почему применяется этот урок.
Читать дальше →

TDD: да или нет?

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

Эта статья, в формате небольших тезисов, нацелена на открытие дискуссии на тему "Test Driven Development" – методологии разработки через тестирование. На моем текущем месте работы существует несколько мнений: начиная от полного принятия и стремления(к tdd), как к идеальному инструменту написания рабочего и лаконичного кода, вплоть до полного отвержения: TDD не работает, убивает время разработчиков, увеличивая при этом time-to-market.

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

Итак, поехали

Читать далее

Что такое TDD. Создаем валидатор паролей на регулярках

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

Приветствую всех, в данной статье я кратко расскажу и покажу, что такое TDD на очень простом примере.

Итак, представим себя разработчиком в вымышленной ИТ компании, перед которым стоит задача: написать валидатор пользовательских паролей, при этом стараясь следовать принципам TDD.

Начнем разработку нашей программы с ознакомления с требованиями службы безопасности:

Читать далее

Инверсия управления Контейнеров и паттерн Инъекции Зависимостей — перевод

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

В основе сборки любых компонентов лежит общий шаблон того, как они выполняют прокидывание зависимостей, это концепция, которую разработчики называют очень общим именем Inversion of Control (IoC: инверсия контроля). В этой статье я углублюсь в то, как работает этот паттерн под более конкретным названием «Dependency Injection» (Инъекция зависимостей), и сравню его с альтернативой - Service Locator

Читать далее
1
23 ...