Что такое хороший образец класса для демонстрации TDD? - программирование
Подтвердить что ты не робот

Что такое хороший образец класса для демонстрации TDD?

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

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

Я не хочу использовать пример Stack или аналогичные структуры данных (очередь, списки и т.д.) из-за страха при воздействии на работу Newkirks.

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

Спасибо.

4b9b3361

Ответ 1

Как насчет использования 1-й раздел примера Kent Beck Money. Это начинается очень просто, но когда вы приходите к добавлению двух разных валют, TDD внезапно показывает вам фальсификацию переднего дизайна, или YAGNI (вам это не понадобится).

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

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

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

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

2) TDD

= D

Ответ 2

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

Причина в том, что один из блоков TDD состоит в том, что пример кажется слишком автономным. "Конечно, когда все это автономный блок, вы можете unit test, но когда у меня есть 15 систем для интеграции, в чем смысл?" вид вещи.

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

Мне нравится, в грубо возрастающем порядке сложности:

  • Диапазон (целых чисел; реализация isEmpty(), содержит(), пересекает(), длина())
  • Natural Sort
  • Snake

Если бы у меня было полчаса, я бы сделал Range; 90 минут, вероятно, Natural Sort; больше: Снейк. Тем не менее, зависит от аудитории.

Ответ 6

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

Ответ 7

Как насчет простого математического класса с добавлением, вычитанием, умножением и т.д.

Ответ 8

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

Ответ 9

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

Ответ 10

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

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

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

Ответ 11

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

Ответ 12

Я бы посоветовал вам купить себе книгу Тестируемый дизайн на примере от Kent Beck.

В книге почти полностью сосредоточено внимание на построении одного класса через TDD.

Ответ 13

Римские цифры. Подсчитайте строки, отличные от комментариев исходного кода. Башни Ханоя. Там много идей.

Ответ 14

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