[Юнит-тест] — Разработка через тестирование (TDD)
[Юнит-тест] — Разработка через тестирование (TDD)
1. Что такое разработка через тестирование?

Разработка через тестирование (TDD) — это метод разработки программного обеспечения, основная идея которого заключается в том, чтобы сначала написать тестовые примеры, а затем писать реальный код. Основные этапы TDD следующие:

  1. Пишите тестовые случаи:первый,внимательный человек пишет один или несколько вариантов использования теста,Описывает желаемое поведение функции или возможности, которую необходимо реализовать. Эти варианты использования обычно охватывают различные входные ситуации и граничные условия.
  2. Запустите неудачные тесты:Поскольку реальный функциональный код еще не написан,Начальное время,Все тестовые варианты использования должны потерпеть неудачу. Это важный шаг,Потому что это гарантирует, что тест действителен,Проблемы в коде можно обнаружить.
  3. Напишите минимальное количество кода:Следующий,умные люди пишут достаточно кода,чтобы пройти тестовый вариант использования. Это означает, что люди, занимающиеся развитием, пишут достаточно кода только для удовлетворения текущего варианта использования теста.,а не слишком много функций.
  4. Запустить тестовый пример:После того, как вы написали код,развиватьперсонал Запустить тестовый пример,Убедитесь, что они проходят. если тест пройдет,Указывает, что текущая функциональность частично корректна.
  5. Рефакторинг и оптимизация:существоватьтест После того, как вариант использования принят,внимательный персонал может редактировать код Рефакторинг и оптимизация,для улучшения качества, читаемости и производительности кода.,Также убедитесь, что тест продолжает проходить.
  6. Итерировать:Повторите вышеуказанные шаги,Для других функций или потребностей,Напишите новый вариант использования теста, реализуйте код, запустите тест.,Пока разработка не будет завершена.

Основная цель TDD — стимулировать разработку программного обеспечения посредством автоматизированных тестовых примеров. Это помогает обеспечить качество, удобство сопровождения и стабильность кода, а также снизить затраты на исправление дефектов на более позднем этапе. TDD также призывает разработчиков лучше понимать требования, заранее продумывать дизайн и интерфейсы, а также практиковать непрерывную интеграцию и непрерывную доставку. Этот подход часто используется со средами модульного тестирования (такими как JUnit, NUnit, pytest) для автоматизации выполнения тестовых случаев. TDD — важная практика в гибкой разработке, экстремальном программировании (XP) и разработке программного обеспечения.

2. Этапы TDD

Разработка через тестирование (TDD) — это итеративный метод разработки программного обеспечения, который обычно включает следующие этапы:

  1. Пишите тестовые случаи(Red)
    • Сотрудники компании сначала пишут новый сценарий использования теста,Описывает желаемое поведение функции или возможности, которую необходимо реализовать.
    • Эти варианты использования обычно включают в себя различные входные ситуации, граничные условия и исключения.
    • Начальное время,Поскольку код функции еще не написан,вариант использования теста должен завершиться неудачей,Это проваленный тест.
  2. Запустить тестовый пример(Red)
    • внимательный человек запускает тестовый вариант использования, который он только что написал,подтвердить, что им это не удалось.
    • Ожидается провал тестового варианта использования,Потому что функциональный код еще не написан.
  3. Напишите минимальный функциональный код (зеленый)
    • умные люди пишут достаточно функциональный код,для удовлетворения требований текущего варианта использования теста,Пройти тест.
    • Это означает, что интеллектуальные люди пишут достаточно кода только для реализации текущих потребностей.,а не слишком много функций.
    • Цель кода — пройти тест,И не обязательно идеальная или эффективная реализация.
  4. Запустить тестовый пример(Green)
    • Как только функциональный код написан, снова улучшаем персонал Запустить тестовый пример, чтобы убедиться, что они пройдут сейчас.
    • если тест пройдет,Указывает, что код соответствует текущим требованиям.
  5. Рефакторинг кода
    • После прохождения теста,внимательный персонал может приступить к оптимизации и рефакторингу кода,для улучшения читаемости、производительность、Ремонтопригодность и т.д.
    • Рефакторинг,Должен гарантировать, что тест продолжает проходить,На поведение проверочного кода это не влияет.
    • Рефакторинг не предполагает функциональных изменений,Просто улучшения кода.
  6. Итерировать(Repeat)
    • Повторите вышеуказанные шаги,Нацельтесь на следующую потребность или функцию,Написание новых сценариев использования тестов,Затем реализуйте функциональный код,Запустить тест,Опять рефакторинг.
    • Каждый раз Итерировать - это небольшой прирост,Постепенно создавайте полноценную функцию или приложение.

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

3. Преимущества и практика TDD

Тест-драйв Разработка (TDD) имеет ряд преимуществ, а также некоторые практические принципы, в том числе: Преимущества:

  1. Более высокое качество программного обеспечения: TDD заставляет людей обучаться Пишите перед написанием функционального кода тестовые случаев, что помогает выявить и устранить потенциальные проблемы и дефекты. В результате получается более надежное и надежное программное обеспечение.
  2. Набор автоматизированных тестов: TDD поощряет создание наборов автоматизированных тестов,Может запускаться каждый раз при изменении кода,Убедитесь, что это не повлияет на поведение вашего кода. Это помогает быстро обнаружить и устранить проблемы.
  3. Улучшенная документация и примеры: Варианты использования выступают в качестве документации и примеров, описывающих ожидаемое поведение каждой функции. Это помогает новым людям понять код и функциональность.
  4. Поэтапное развитие: TDDмаленькими шагами Итерироватьразвивать,Создавайте функциональность постепенно,Уменьшает необходимость исправлять многочисленные проблемы на поздних стадиях цикла разработки.
  5. Улучшенный дизайн кода: TDD поощряет людей писать тесты, что часто приводит к улучшению архитектуры кода и снижению связанности.
  6. Улучшенная ремонтопригодность: TDDКод обычно легче поддерживать,Потому что развитый персонал знает код Рефакторинга,обеспечить его читабельность ипроизводительность。

Практические принципы:

  1. Начните с неудачного теста: Первый шаг в TDD — Пишите тестовые случаи,Вместо написания функционального кода. Убедитесь, что тест не пройден,Затем начните писать код.
  2. Напишите ровно столько кода, чтобы тест прошел: Развивающие люди должны сосредоточиться на удовлетворении потребностей текущего варианта использования теста, а не на написании слишком большого количества функций. Это помогает избежать ненужных сложностей.
  3. Непрерывный рефакторинг: один разтестпроходить,рассмотреть человек может Рефакторинг кода,улучшить качество кода,Но функциональность не должна меняться. Убедитесь, что тест продолжает проходить после Рефакторинга.
  4. Продолжайте тестировать просто и быстро: Варианты использования тестов должны быть простыми, автономными и быстро выполняться. Это помогает повысить эффективность TDD.
  5. Часто запускайте тесты: развиватьперсоналследует часто Запустить тест,чтобы гарантировать, что код ведет себя так, как ожидалось. Это помогает быстро выявить и устранить проблемы.
  6. Комплексное покрытие: TDDпоощрять Пишите тестовые Иногда для охвата различных ситуаций, включая нормальные ситуации, граничные условия и нештатные ситуации.
  7. Интеграция непрерывной интеграции (CI): TDD используется с непрерывной интеграцией (CI),автоматически Запустить тестнабор,И убедитесь, что интеграция нового кода не нарушает существующую функциональность.
  8. Сотрудничество и общение: TDD облегчает сотрудничество и общение между членами команды, гарантируя, что сценарии использования отражают потребности бизнеса.
4. Резюме

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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose