2013-09-11 3 views
3

Я разрабатываю новый небольшой проект. Я понимаю важность внедрения автоматизированных тестов для повышения качества и ремонтопригодности. Но я блуждаю, если в небольших приложениях достаточно функциональных тестов. Действительно ли необходимо выполнять модульные тесты для всех моих функций? Не проверять функциональность тестов на качество небольших приложений?Могут быть функциональные тесты Заменить модульные тесты в небольших проектах

+1

Вы говорите о двух аспектах автоматизации и функциональных тестах. Функциональное тестирование может выполняться как вручную, так и при автоматизации. Идите с автоматизацией только в случае достаточной окупаемости инвестиций. –

+0

Не нужно ничего проверять. Если вы можете доказать, что код верен. Или вы не заботитесь о качестве. – Raedwald

+0

Для подтверждения исправления кода в большинстве случаев очень сложно и требует много времени. В настоящее время важно обеспечить качество программного обеспечения. Так что единственное, что отдых - это тестирование. Нет другого решения для успеха на рынке программного обеспечения. – miguelbgouveia

ответ

5

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

Я собирался дать аналогию с простой программной системой, но вместо этого я расскажу вам историю, которая может или не может произойти со мной. Без сомнения, я буду занижен в забвение за это, что я могу сказать. YOLO.

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

Не волнуйтесь. У меня есть адаптер для подключения питания. За исключением того, что шнур на триммере имеет длину всего 3 фута и не будет располагаться поперек комнаты. Но ждать! У меня есть удлинитель, да! Теперь я могу преуспевать перед зеркалом, как настоящий мужчина. **

Я включаю все и нажимаю кнопку «on». Триммер жужжит в жизни, а затем внезапно умирает, оставляя меня с явным беспорядком пуха на моем лице.

Quick: в чем проблема? ли:

  • Сокет
  • Мой адаптер путешествия
  • Предохранитель на триммер плагин
  • Расширение шнура
  • Триммер
  • Величественный обалденный/horrendousness моей бороды вызывает триммер умереть при первом контакте?

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

** эта история совершенно неправда, я обрезаю свою бороду своей бритвой для бритья. Черт возьми, да.

+0

Очень хорошая история, чтобы понять преимущества модульного тестирования. Моя проблема в этом проекте заключается в том, чтобы выбирать между стоимостью реинжиниринга программного обеспечения для проведения модульных тестов (с использованием макетных фреймворков и инфраструктур внедрения инъекций), а не изменять архитектуру и просто выполнять автоматизированные функциональные тесты. Мы используем модель MVC и инфраструктуру .Net Entity. Мы просто отправляем модели, созданные инфраструктурой сущности, в элементы управления. Нет моделей просмотра и бизнес-объектов. Чтобы использовать макеты классов и DI, мы должны много работать. Мой вопрос: эти изменения будут полезны или нет? – miguelbgouveia

+0

@miguelbgouveia - Ключевой вопрос: будет ли приложение меняться со временем? например, через 6 месяцев, возможно, вам придется добавить бизнес-уровень - тогда инвестиции в единичные тесты начнут окупаться, потому что это приведет к более модульному дизайну, который продвигает SRP и свободную муфту, что значительно облегчает слот в новых слоях если необходимо. Так что, если изменение - это возможность, то я бы сказал очень твердо «ДА», будет ощутимая экономическая выгода с точки зрения времени разработчика и отладки. Однако, если это вряд ли изменится в ближайшее время, вам, вероятно, удастся просто функциональное тестирование –

1

Функциональные испытания могут быть не такими small/unit достаточно, чтобы уловить реализацию нюансов на достаточно глубоком уровне.

Хотя это правда, они могли бы покрыть достаточно земли, чтобы дать вам приличное чувство уверенности в себе, вы все равно можете иметь модульные тесты для отслеживания ошибок, предотвратить регрессии и иметь дело с (проблемными/редкими) крайних случаями ,

Кроме того, я не вижу необходимости вводить такое различие - функционал vs unit vs integration vs what-not-else. Вы хотите автоматизированных тестов, и все. Вам все равно придется их реализовать, скорее всего, используя те же инструменты/рамки для каждого типа теста.

Смежные вопросы