В моей компании я пытаюсь обосновать, почему мы должны заниматься TDD. В настоящее время большинство разработчиков просто делают все возможное, чтобы выполнить проект, а затем добавляют добавочные тесты по факту, чтобы соответствовать показателям менеджера. Будем весьма благодарны за любые примеры от известных компаний, которые делают TDD и видят преимущества.
14
Ответы:
Изучение 4 проектов в IBM и Microsoft. Опубликовано в журнале Emperical Software Engineering .
Эмпирические исследования показывают, что разработка через тестирование улучшает качество
источник
В недавней книге «Создание программного обеспечения: что работает и почему мы в это верим» есть глава, посвященная TDD. Но вы можете быть разочарованы, поскольку, если я правильно помню, исследование не выявило каких-либо реальных преимуществ TDD. Тем не менее, тематическое исследование было интересным, и книга в целом является одной из лучших книг по программному обеспечению, которые я недавно читал. Он содержит множество примеров из практики таких вещей, как парное программирование, анализ кода и т. Д.
источник
Обязательно проверьте это: TDD Проверено Эффективно! Или это?
У автора есть много положительных моментов о том, что TDD не настолько эффективен (хотя, несмотря на то, что его раскрутили до смерти)
источник
посмотрите, сколько времени вы и клиент потратили на тестирование программного обеспечения вручную; сравните это с оценкой того, сколько времени потребовалось бы на автоматические тесты в стиле TDD. Карманная разница
По моему опыту, автоматизированные тесты TDD - это золото, потому что они обеспечивают страхование и устраняют огромное количество ручного тестирования
Как отметил Андрес Ф., эти преимущества можно получить только за счет автоматического тестирования, а не обязательно TDD, однако TDD требует автоматических тестов, а не запоздалой мысли или приятного для восприятия
Вынужденность сначала задуматься о тестировании также заставляет задуматься о проблемах, связанных с качеством, таких как модульность, дизайн интерфейса и т. Д., Прежде чем вы начнете писать код.
Лично я считаю, что одним из самых больших преимуществ TDD является то, что написание теста сначала сохраняет свежесть в памяти того, что на самом деле должен делать код, пока вы пишете код, а не своего рода выяснение этого. -по вы-код.
источник
Вы хотите обосновать это: предложить вам сделать это для следующего проекта, а затем учиться на нем. Если окажется, что он отлично работает для вас, то я надеюсь, что вы продолжите использовать его, и если вам потребовалось больше времени, чтобы выполнить проект и / или потратить все свое время на написание тестов вместо написания кода, то вы наверняка сбросите его как отказ.
Я думаю, что реальное решение - это (как и большинство вещей) промежуточное, вы хотите тесты, но не хотите, чтобы тесты были более важными, чем проект.
(лично я считаю, что TDD - это причуда, звучит хорошо в теории, но на практике ... не так хорошо. Я считаю, что интеграционное тестирование гораздо важнее, но это могут быть просто сложные проекты, над которыми я работаю).
источник
Я работаю с TDD в течение 2 лет, и там, где я работал в то время, мы все отказывались использовать, включая менеджеров. Однако вскоре это оказалось правильным решением. Преимущества, которые мы вскоре заметили, были
Менеджеры не будут знать, так как все они заинтересованы в одном: «Вы закончили». Но потом они жалуются, когда программное обеспечение продолжает ломаться, не осознавая. С хорошим охватом и разумными тестами. Это не количество, а качество, которое вы действительно можете увидеть, когда кто-то нарушает функциональность. Также, к сожалению, это сложно, если вы сами по себе. У меня была та же проблема, так как вам может потребоваться изменить код, например, базовые классы и т. Д., Чтобы вы могли сделать части программного обеспечения тестируемыми.
Я приведу вам пример. Я хотел издеваться над хранилищем, но не было интерфейса, и мне нужно внедрить хранилище в мой сервисный уровень и, следовательно, добавить / изменить конструктор по всему магазину, это оказалось большим делом, но в в конце у меня более 200 тестов, которые просто тестируют одну область системы, и они были впечатлены.
Я обычно делаю следующее:
Что касается тематических исследований, я боюсь, я не уверен, что видел их. Вы должны построить свой проект и стать вашими примерами. Они тоже могут быть впечатлены.
Я надеюсь, что это помогает
источник