Имеет ли смысл модульное тестирование одноразового кода, работающего в производстве? - PullRequest
1 голос
/ 19 февраля 2010

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

ОБНОВЛЕНИЕ: одноразовый код на самом деле проверяется на работоспособность перед началом производства.Обычно для одноразового кода все же имеет смысл проводить модульные тесты, несмотря на то, что происходит функциональное тестирование.Вопрос здесь заключается в том, имеет ли смысл также проводить модульные тесты также в случае одноразового кода.

ОБНОВЛЕНИЕ 2: причина, по которой одноразовый код используется в первую очередь, заключается в том, чтобуквально используется для одного клиента, только один раз.Это никогда не подлежит пересмотру.Он используется один раз в течение нескольких дней.Это очень специфично для одного клиента.После этого он никогда не используется ни для каких других целей, в том числе для того же клиента.Есть ли еще смысл в написании модульных тестов в этом случае, несмотря на то, что выполняются функциональные тесты?

Ответы [ 5 ]

4 голосов
/ 19 февраля 2010

Я не уверен, как код может быть как рабочим, так и одноразовым кодом.Тот факт, что он используется в производстве, означает, что он не выбрасывается.Что делает вас настолько уверенным, что только потому, что вы не планируете изменить его сейчас, кто-то другой может не прийти и повторно использовать его или изменить его позже?

Несмотря на это, у юнит-тестирования есть много преимуществ, помимо защиты при рефакторинге.Модульные тесты (как и все тесты) помогают доказать, что код выполняет то, что должен делать.Чтобы доказать это, вам необходимо провести тестирование на каком-то уровне, а модульные тесты - это простой способ автоматизировать некоторые из них.

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

3 голосов
/ 19 февраля 2010

Я бы поспорил, что вы потратили время на то, чтобы задать вопрос и вернуться, чтобы прочитать ответы, и этого было бы более чем достаточно, чтобы написать несколько юнит-тестов. Какое было лучшее использование вашего времени?

Все просто: если вас волнует, правильный ли код или нет, вам нужно проверить его. Модульный тест, приемочный тест, сервисный тест, как бы вы это ни называли, должен быть так или иначе протестирован.

2 голосов
/ 19 февраля 2010

Тесты предоставляют преимущества тремя способами:

  1. Когда код написан вначале для теста, тесты помогают проектировать привод и обеспечивают написание тестируемого кода.Если это действительно одноразовый код, то это не имеет значения для вас.

  2. Тесты предоставляют страховочную сетку для рефакторинга .Опять же, в вашей ситуации вам может быть все равно.

  3. Тесты доказывают, что код выполняет то, что должен делать .Это относится к одноразовому коду, особенно если код написан в тестовом порядке.Я предпочел бы писать тесты по ходу дела и быть уверенным, что отправляю что-то солидное в QA, чем пропустить тесты и ждать, пока специалист по QA расскажет мне о дефектах.Что если сообщается о дефекте, и вам необходимо внести существенные изменения в код?С помощью автоматических тестов легко определить, что ваше «исправление» сломало что-то еще.Без автоматизированных тестов вы должны будете повторить полный набор ручных тестов, которые могут быть дорогими.

Подводя итог, если код действительно "одноразовый" И мал или очень прост, тоВы можете не получить много пользы.Если код сложный или относительно большой, то тесты могут чего-то стоить.(Хотя я бы сосредоточился только на написании тестов с высокой стоимостью, ориентируясь на функции, которые сложно или дорого тестировать вручную)

2 голосов
/ 19 февраля 2010

Вы должны как-то тестировать этот код, прежде чем запускать его в производство. Модульное тестирование может быть важной частью здесь, независимо от необходимости делать автоматические регрессионные тесты позже.

Модульное тестирование также можно использовать в разработке, управляемой тестами, где вы наметили, что должен делать код, прежде чем писать код. В этом сценарии модульные тесты помогают ускорить процесс разработки (именно потому, что вы выполняете автоматические тесты в то время, когда код все еще меняется).

1 голос
/ 19 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...