Что такое хороший пример класса для демонстрации TDD? - PullRequest
46 голосов
/ 24 апреля 2009

Мне нужно сделать короткую презентацию (2-4 часа) по разработке через тестирование, и мне нужен небольшой класс, который я могу построить, используя методологию TDD. Класс должен быть относительно небольшим, но «продавать» концепцию TDD.

Если кто-то читал книгу Джеймса Ньюкирка «Разработка через тестирование» в Microsoft.Net, пример стека - это прекрасно. Это небольшой класс, с управляемым списком тестов / требований, и процесс создания продает TDD (IMHO).

Я не хочу использовать пример стека или аналогичные структуры данных (очереди, списки и т. Д.) Из-за страха повлиять на работу Ньюкирка.

Итак, я ищу несколько хороших идей для учебного класса.

Спасибо.

Ответы [ 14 ]

25 голосов
/ 24 апреля 2009

Как насчет использования 1-го раздела примера с деньгами Кента Бека . Все начинается очень просто, но когда вы прибавляете к добавлению двух разных валют, TDD внезапно показывает вам ложность первоначального дизайна, или YAGNI (вам это не понадобится).

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

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

Настоящий момент WTF для меня с TDD был, когда Бек удалил два подкласса Money, и тесты сработали. Это не тривиальное действие; Человек удалил два класса! Уверенность в том, чтобы сделать что-то подобное, может быть найдена только двумя способами.

1) сбор всех старших игроков в базе кода и проработка сценариев с последующим подробным выполнением, чтобы подтвердить, что это работает

2) TDD

= D

8 голосов
/ 24 апреля 2009

Если у вас есть время, я бы выбрал пример с некоторой внешней зависимостью, которая будет абстрагирована в тесте. Либо база данных, звонки в GUI, звонки в удаленную систему и т. Д.

Причина в том, что один из блоков TDD заключается в том, что пример кажется слишком самодостаточным. «Конечно, когда все является автономным модулем, вы можете выполнить модульное тестирование, но когда у меня 15 интегрируемых систем, какой смысл?» такие вещи.

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

7 голосов
/ 24 апреля 2009

Проблемы с TDD содержит список проблем, от простых до менее простых.

У некоторых есть список тестов, которые еще не начались.

3 голосов
/ 24 апреля 2009

Три мне нравятся, в порядке возрастания сложности:

Если бы у меня было полчаса, я бы сделал Range; 90 минут, вероятно, Натуральная сортировка; больше: Змея. Хотя зависит от аудитории.

3 голосов
/ 24 апреля 2009

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

Кроме того, я посетил презентацию TDD несколько лет назад, где примером был простой калькулятор, и он прекрасно работал.

2 голосов
/ 24 апреля 2009

Я бы попытался найти что-то маленькое в известной области. Недавно я выступил с докладом о BDD / TDD на основе ASPNET.MVC. Это включало один контроллер, одно действие и модель представления. Это также дало мне возможность представить контейнер зависимостей и среду для насмешек.

1 голос
/ 27 февраля 2014

Основные навыки для гибкой разработки - Ка Иок Тонг. Эта книга об Agile, но содержит несколько глав о тестировании, особенно TDD. Автор объясняет TDD кодированием по требованию, а также записывает свою мысль о том, как решить проблему в TDD. Вы можете найти эту книгу здесь . Чтобы узнать больше о концепции и современных инструментах, вы можете перейти здесь

1 голос
/ 24 апреля 2009

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

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

И я предполагаю, что вы собираетесь использовать додзе кодирования в качестве формы презентации, не так ли? Нет фантазии PowerPoint. Если публика не программисты, используйте образец Excel

1 голос
/ 24 апреля 2009

Выйти на конечности и принимать запросы от зрителей. :)

1 голос
/ 24 апреля 2009

Другим классическим примером из сообщества TDD / Extreme / Agile является пример игры в боулинг; Кажется, я помню, что он использовался как в Беке, так и в Мартине, а также несколько раз на xprogramming.com для примеров и исследований различных методов в TDD.

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