Какие методы могут использоваться для создания тестов записи более интересными?

Я должен признать, что часто борюсь с осуществлением Разработкой через тестирование. Несмотря на использование Ruby on Rails, который делает TDD супер легким, потому что это испекло - в, я нахожу, что тесты записи являются настолько скучными! Это похоже на зубное то, чтобы чистить зубной нитью; я знаю, что должен сделать это, но изо всех сил пытаться собрать много энтузиазма.

  • Какие методы Вы используете для создания тестов записи интересными? Например, одна подсказка, которую я видел, должна была изобрести немного истории вокруг тестовых данных приспособления вместо того, чтобы просто использовать бессмысленные, несвязанные данные.
7
задан John Topley 5 January 2010 в 14:54
поделиться

7 ответов

Если вы сначала пишете тесты, то они являются вашими спецификациями для кодирования.

При написании тестов нужно все продумать. "Что должно делать?" "Как я узнаю, что он это сделал?" "Какие у него интерфейсы, над которыми нужно будет насмехаться?"

Далее, если структурировать тесты, используя простое соглашение об именовании (используя "shoulds"), то легче определить, что должно происходить.

См. http://weblogs.asp.net/rosherove/archive/2005/04/03/TestNamingStandards.aspx для размышлений об этом.

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

*.
8
ответ дан 6 December 2019 в 14:04
поделиться

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

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

.
3
ответ дан 6 December 2019 в 14:04
поделиться
-

Если вам скучно при написании тестов, то вы тестируете не те вещи. Я пишу тесты, когда что-то не получилось, когда я чего-то не понял или когда появляется что-то новое. Таким образом, мои тесты никогда не бывают бесполезными или соответствуют политике "100% покрытие кода", и мне никогда не бывает скучно.

1
ответ дан 6 December 2019 в 14:04
поделиться

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

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

Сказать, что вы находите написание тестов скучным, все равно, что сказать: "Я нахожу написание ввода/вывода скучным"....могу ли я что-нибудь сделать, чтобы сделать его более интересным?" или "Я нахожу написание UI скучным..."

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

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

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

.
0
ответ дан 6 December 2019 в 14:04
поделиться

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

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

Также я часто запускаю тест; сообщение "все тесты пройдены" в конце заставляет меня чувствовать себя комфортно от того, что было написано до сих пор... и я также счастлив, когда нашел (и исправил) ошибку.

Иногда я развлекаюсь с именами и номерами, которые я использую для тестов (дата рождения, номер любимого плеера, номера телефонов...).

0
ответ дан 6 December 2019 в 14:04
поделиться

Меня беспокоит, что это звучит как запах кода .

Являются ли тесты скучными, потому что они очень повторяющиеся?

Являются ли тесты, охватывающие одни и те же вещи несколько раз? (т.е. тестовые случаи не просто проверяют одно и то же за раз, так что много повторных тестов одних и тех же вещей...?)

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

Звучит так, будто что-то нужно рефакторировать или хотя бы абстрагироваться, чтобы каждый тест выражал только то, что новое или отличное от остального кода.

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

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

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

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

2
ответ дан 6 December 2019 в 14:04
поделиться

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

Волнение приходит, когда ты не знаешь, что делает твой код, когда ты не доверяешь ему, когда каждый раз, когда ты его запускаешь - или выпускаешь, - этот маленький парень сидит у тебя на плече и кричит "Нет!". Когда ты проводишь много времени в отладчике; когда твой код слишком сложный, запутанный и грубый (не в хорошем смысле этого слова) и страшный.

Скука может быть противоположностью волнения, и при таком освещении скучно - это хорошо. Одна нога за другой, предсказуемый шаг за шагом, мы пишем хороший простой, надежный рабочий код. Красно-зелёный рефактор.

Хороший простой надежный рабочий код - это то, чем я могу увлечься.

1
ответ дан 6 December 2019 в 14:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: