1. Что такое разработка через тестирование?
Разработка через тестирование (TDD) — это метод разработки программного обеспечения, основная идея которого заключается в том, чтобы сначала написать тестовые примеры, а затем писать реальный код. Основные этапы TDD следующие:
- Пишите тестовые случаи:первый,внимательный человек пишет один или несколько вариантов использования теста,Описывает желаемое поведение функции или возможности, которую необходимо реализовать. Эти варианты использования обычно охватывают различные входные ситуации и граничные условия.
- Запустите неудачные тесты:Поскольку реальный функциональный код еще не написан,Начальное время,Все тестовые варианты использования должны потерпеть неудачу. Это важный шаг,Потому что это гарантирует, что тест действителен,Проблемы в коде можно обнаружить.
- Напишите минимальное количество кода:Следующий,умные люди пишут достаточно кода,чтобы пройти тестовый вариант использования. Это означает, что люди, занимающиеся развитием, пишут достаточно кода только для удовлетворения текущего варианта использования теста.,а не слишком много функций.
- Запустить тестовый пример:После того, как вы написали код,развиватьперсонал Запустить тестовый пример,Убедитесь, что они проходят. если тест пройдет,Указывает, что текущая функциональность частично корректна.
- Рефакторинг и оптимизация:существоватьтест После того, как вариант использования принят,внимательный персонал может редактировать код Рефакторинг и оптимизация,для улучшения качества, читаемости и производительности кода.,Также убедитесь, что тест продолжает проходить.
- Итерировать:Повторите вышеуказанные шаги,Для других функций или потребностей,Напишите новый вариант использования теста, реализуйте код, запустите тест.,Пока разработка не будет завершена.
Основная цель TDD — стимулировать разработку программного обеспечения посредством автоматизированных тестовых примеров. Это помогает обеспечить качество, удобство сопровождения и стабильность кода, а также снизить затраты на исправление дефектов на более позднем этапе. TDD также призывает разработчиков лучше понимать требования, заранее продумывать дизайн и интерфейсы, а также практиковать непрерывную интеграцию и непрерывную доставку. Этот подход часто используется со средами модульного тестирования (такими как JUnit, NUnit, pytest) для автоматизации выполнения тестовых случаев. TDD — важная практика в гибкой разработке, экстремальном программировании (XP) и разработке программного обеспечения.
2. Этапы TDD
Разработка через тестирование (TDD) — это итеративный метод разработки программного обеспечения, который обычно включает следующие этапы:
- Пишите тестовые случаи(Red):
- Сотрудники компании сначала пишут новый сценарий использования теста,Описывает желаемое поведение функции или возможности, которую необходимо реализовать.
- Эти варианты использования обычно включают в себя различные входные ситуации, граничные условия и исключения.
- Начальное время,Поскольку код функции еще не написан,вариант использования теста должен завершиться неудачей,Это проваленный тест.
- Запустить тестовый пример(Red):
- внимательный человек запускает тестовый вариант использования, который он только что написал,подтвердить, что им это не удалось.
- Ожидается провал тестового варианта использования,Потому что функциональный код еще не написан.
- Напишите минимальный функциональный код (зеленый):
- умные люди пишут достаточно функциональный код,для удовлетворения требований текущего варианта использования теста,Пройти тест.
- Это означает, что интеллектуальные люди пишут достаточно кода только для реализации текущих потребностей.,а не слишком много функций.
- Цель кода — пройти тест,И не обязательно идеальная или эффективная реализация.
- Запустить тестовый пример(Green):
- Как только функциональный код написан, снова улучшаем персонал Запустить тестовый пример, чтобы убедиться, что они пройдут сейчас.
- если тест пройдет,Указывает, что код соответствует текущим требованиям.
- Рефакторинг кода:
- После прохождения теста,внимательный персонал может приступить к оптимизации и рефакторингу кода,для улучшения читаемости、производительность、Ремонтопригодность и т.д.
- Рефакторинг,Должен гарантировать, что тест продолжает проходить,На поведение проверочного кода это не влияет.
- Рефакторинг не предполагает функциональных изменений,Просто улучшения кода.
- Итерировать(Repeat):
- Повторите вышеуказанные шаги,Нацельтесь на следующую потребность или функцию,Написание новых сценариев использования тестов,Затем реализуйте функциональный код,Запустить тест,Опять рефакторинг.
- Каждый раз Итерировать - это небольшой прирост,Постепенно создавайте полноценную функцию или приложение.
Эти шаги лежат в основе подхода TDD, помогающего разработчикам создавать высококачественное, легко поддерживаемое и надежное программное обеспечение. С помощью TDD разработчики перед написанием кода создают набор автоматических тестов, которые могут постоянно проверять правильность кода на протяжении всего цикла разработки. Это помогает уменьшить количество ошибок и исправлений дефектов на более поздних этапах, повышает эффективность разработки, а также способствует лучшему проектированию кода и удобству сопровождения.
3. Преимущества и практика TDD
Тест-драйв Разработка (TDD) имеет ряд преимуществ, а также некоторые практические принципы, в том числе:
Преимущества:
- Более высокое качество программного обеспечения: TDD заставляет людей обучаться Пишите перед написанием функционального кода тестовые случаев, что помогает выявить и устранить потенциальные проблемы и дефекты. В результате получается более надежное и надежное программное обеспечение.
- Набор автоматизированных тестов: TDD поощряет создание наборов автоматизированных тестов,Может запускаться каждый раз при изменении кода,Убедитесь, что это не повлияет на поведение вашего кода. Это помогает быстро обнаружить и устранить проблемы.
- Улучшенная документация и примеры: Варианты использования выступают в качестве документации и примеров, описывающих ожидаемое поведение каждой функции. Это помогает новым людям понять код и функциональность.
- Поэтапное развитие: TDDмаленькими шагами Итерироватьразвивать,Создавайте функциональность постепенно,Уменьшает необходимость исправлять многочисленные проблемы на поздних стадиях цикла разработки.
- Улучшенный дизайн кода: TDD поощряет людей писать тесты, что часто приводит к улучшению архитектуры кода и снижению связанности.
- Улучшенная ремонтопригодность: TDDКод обычно легче поддерживать,Потому что развитый персонал знает код Рефакторинга,обеспечить его читабельность ипроизводительность。
Практические принципы:
- Начните с неудачного теста: Первый шаг в TDD — Пишите тестовые случаи,Вместо написания функционального кода. Убедитесь, что тест не пройден,Затем начните писать код.
- Напишите ровно столько кода, чтобы тест прошел: Развивающие люди должны сосредоточиться на удовлетворении потребностей текущего варианта использования теста, а не на написании слишком большого количества функций. Это помогает избежать ненужных сложностей.
- Непрерывный рефакторинг: один разтестпроходить,рассмотреть человек может Рефакторинг кода,улучшить качество кода,Но функциональность не должна меняться. Убедитесь, что тест продолжает проходить после Рефакторинга.
- Продолжайте тестировать просто и быстро: Варианты использования тестов должны быть простыми, автономными и быстро выполняться. Это помогает повысить эффективность TDD.
- Часто запускайте тесты: развиватьперсоналследует часто Запустить тест,чтобы гарантировать, что код ведет себя так, как ожидалось. Это помогает быстро выявить и устранить проблемы.
- Комплексное покрытие: TDDпоощрять Пишите тестовые Иногда для охвата различных ситуаций, включая нормальные ситуации, граничные условия и нештатные ситуации.
- Интеграция непрерывной интеграции (CI): TDD используется с непрерывной интеграцией (CI),автоматически Запустить тестнабор,И убедитесь, что интеграция нового кода не нарушает существующую функциональность.
- Сотрудничество и общение: TDD облегчает сотрудничество и общение между членами команды, гарантируя, что сценарии использования отражают потребности бизнеса.
4. Резюме
Разработка через тестирование (TDD) — это методология разработки программного обеспечения, в которой особое внимание уделяется написанию тестовых примеров перед написанием реального кода. Основные этапы включают в себя написание тестовых примеров, выполнение неудачных тестов, написание минимального функционального кода, выполнение тестовых примеров, рефакторинг кода и итерацию. Преимущества TDD включают более качественный код, наборы автоматизированных тестов, документированные примеры, поэтапную разработку, лучший дизайн и удобство сопровождения. Практические принципы включают в себя начало с неудачных тестов, написание достаточного количества кода, непрерывный рефакторинг, простое и быстрое тестирование, частое выполнение тестов, всесторонний охват, непрерывную интеграцию, сотрудничество и общение. TDD помогает повысить эффективность и качество разработки программного обеспечения.