Я разрабатываю новый небольшой проект. Я понимаю важность внедрения автоматизированных тестов для повышения качества и ремонтопригодности. Но я блуждаю, если в небольших приложениях достаточно функциональных тестов. Действительно ли необходимо выполнять модульные тесты для всех моих функций? Не проверять функциональность тестов на качество небольших приложений?Могут быть функциональные тесты Заменить модульные тесты в небольших проектах
ответ
Это действительно зависит от размера проекта и количества задействованных движущихся частей; но, вообще говоря, я бы сказал, что модульные тесты - это, по крайней мере, не более важные, чем функциональные тесты.
Я собирался дать аналогию с простой программной системой, но вместо этого я расскажу вам историю, которая может или не может произойти со мной. Без сомнения, я буду занижен в забвение за это, что я могу сказать. YOLO.
Во всяком случае, я в отпуске, в гостинице, и я хочу обрезать свою роскошную и совершенно неирную бородку, используя действительно красивый триммер для бороды, который я привез с собой. За исключением того, что маппет, который проектировал ванную, положил единственное гнездо на противоположной стороне комнаты к зеркалу! И чтобы все ухудшилось, розетка неправильной формы, потому что я в какой-то странной зарубежной стране, где они едут по неправильной стороне дороги ...
Не волнуйтесь. У меня есть адаптер для подключения питания. За исключением того, что шнур на триммере имеет длину всего 3 фута и не будет располагаться поперек комнаты. Но ждать! У меня есть удлинитель, да! Теперь я могу преуспевать перед зеркалом, как настоящий мужчина. **
Я включаю все и нажимаю кнопку «on». Триммер жужжит в жизни, а затем внезапно умирает, оставляя меня с явным беспорядком пуха на моем лице.
Quick: в чем проблема? ли:
- Сокет
- Мой адаптер путешествия
- Предохранитель на триммер плагин
- Расширение шнура
- Триммер
- Величественный обалденный/horrendousness моей бороды вызывает триммер умереть при первом контакте?
Эта проблема является проблемой при проведении функциональных испытаний. Разумеется, вырвавшись и переключившись, я в конце концов обнаруживаю, что триммер работает нормально, а удлинительный шнур - проблема, но не было бы замечательно, если бы я смог проверить все бит и бобы, участвующие в этом операция first от Unit Тестирование их, чтобы еще до того, как я попытался включить триммер, я знал, что шнур был изворотливым?
** эта история совершенно неправда, я обрезаю свою бороду своей бритвой для бритья. Черт возьми, да.
Очень хорошая история, чтобы понять преимущества модульного тестирования. Моя проблема в этом проекте заключается в том, чтобы выбирать между стоимостью реинжиниринга программного обеспечения для проведения модульных тестов (с использованием макетных фреймворков и инфраструктур внедрения инъекций), а не изменять архитектуру и просто выполнять автоматизированные функциональные тесты. Мы используем модель MVC и инфраструктуру .Net Entity. Мы просто отправляем модели, созданные инфраструктурой сущности, в элементы управления. Нет моделей просмотра и бизнес-объектов. Чтобы использовать макеты классов и DI, мы должны много работать. Мой вопрос: эти изменения будут полезны или нет? – miguelbgouveia
@miguelbgouveia - Ключевой вопрос: будет ли приложение меняться со временем? например, через 6 месяцев, возможно, вам придется добавить бизнес-уровень - тогда инвестиции в единичные тесты начнут окупаться, потому что это приведет к более модульному дизайну, который продвигает SRP и свободную муфту, что значительно облегчает слот в новых слоях если необходимо. Так что, если изменение - это возможность, то я бы сказал очень твердо «ДА», будет ощутимая экономическая выгода с точки зрения времени разработчика и отладки. Однако, если это вряд ли изменится в ближайшее время, вам, вероятно, удастся просто функциональное тестирование –
Функциональные испытания могут быть не такими small/unit достаточно, чтобы уловить реализацию нюансов на достаточно глубоком уровне.
Хотя это правда, они могли бы покрыть достаточно земли, чтобы дать вам приличное чувство уверенности в себе, вы все равно можете иметь модульные тесты для отслеживания ошибок, предотвратить регрессии и иметь дело с (проблемными/редкими) крайних случаями ,
Кроме того, я не вижу необходимости вводить такое различие - функционал vs unit vs integration vs what-not-else. Вы хотите автоматизированных тестов, и все. Вам все равно придется их реализовать, скорее всего, используя те же инструменты/рамки для каждого типа теста.
- 1. Модульные тесты и функциональные тесты в CodeIgniter
- 2. Модульные тесты Cocoapods
- 3. PrestaShop Модульные модульные тесты
- 4. Как модульные тесты могут использовать классы SmartGWT?
- 5. BDD и функциональные тесты
- 6. Когда запускать модульные тесты?
- 7. функциональные тесты = Интеграционные тесты? В django
- 8. Функциональные тесты в Redmine?
- 9. Модульные тесты в TDD
- 10. Модульные тесты в golang
- 11. Модульные тесты в java
- 12. Модульные тесты в Python
- 13. Должны ли модульные тесты быть объявлены встроенными?
- 14. EntityFunctions.TruncateTime и модульные тесты
- 15. Функциональные тесты и файлы?
- 16. Условные модульные тесты
- 17. Модульные тесты Django mock
- 18. Модульные тесты классов связи
- 19. Silex PHPUnit Функциональные тесты
- 20. Как запустить тесты/функциональные тесты Android-модуля?
- 21. xcode 4.3 модульные тесты
- 22. Как организовать интеграционные тесты и модульные тесты
- 23. Модульные тесты экспресс-маршрутизаторов
- 24. Как писать модульные тесты, тесты параллелизма инварианты
- 25. Функциональные тесты с использованием PHPUnit
- 26. Могут быть объединены тесты и тесты эспрессо в одном пакете
- 27. Модульные тесты Контроллеры MVC
- 28. Зависимые модульные тесты
- 29. Модульные тесты Python: TestCaseSource
- 30. Модульные тесты сервлета
Вы говорите о двух аспектах автоматизации и функциональных тестах. Функциональное тестирование может выполняться как вручную, так и при автоматизации. Идите с автоматизацией только в случае достаточной окупаемости инвестиций. –
Не нужно ничего проверять. Если вы можете доказать, что код верен. Или вы не заботитесь о качестве. – Raedwald
Для подтверждения исправления кода в большинстве случаев очень сложно и требует много времени. В настоящее время важно обеспечить качество программного обеспечения. Так что единственное, что отдых - это тестирование. Нет другого решения для успеха на рынке программного обеспечения. – miguelbgouveia