Які найкращі ресурси для вивчення TDD? [зачинено]


27

Я хочу вивчити (і освоїти) TDD. Які найкращі:

  • книги
  • веб-сайти
  • відео
  • список вправ
  • особисті слова мудрості

для навчання, оцінки та використання TDD?


1
Можливо, вас зацікавить моя сторінка ресурсів для вивчення TDD .
xpmatteo

9
Мені подобається це питання. Якщо ви не повинні задавати це питання тут, де можна задати питання щодо рекомендацій з книг програмування?
guettli

Відповіді:


18

Особисто я виявив, що прочитати твір JUnit чи два, підкресливши, що "ти пишеш тест перед кодом", було достатньо, щоб почати мене.

Найважливіша частина у вивченні цієї технології - це написання МНОГО тестового коду , тому що вам потрібно змінити деякі основні способи написання коду. Такі речі:

  • Написавши тест перед кодом, ви змушуєте заздалегідь придумати, як ви будете викликати свій код і отримати результат назад. Це означає, що ви спершу розробляєте API на основі того, як ви будете ним користуватися. Це часто призводить до кращого API.
  • Ваш стиль кодування зміниться, оскільки вам НЕОБХІДНО думати більш модульно, щоб мати можливість протестувати частини коду, а не просто всю справу.
  • Ви також дістанетесь до точки, коли зможете впевнено витягнути основний шматок і вставити новий шматок, а не поводитись так само, адже ваш тест пройшов. Це я нещодавно зробив з бібліотекою для розбору дат, оскільки оригінал був занадто м'яким.

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

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

Для Java jUnit версія 4 справді приємна.


8

На мою думку, TDD скоріше стосується того, щоб зробити код перевіряючим, ніж писати тести.

Впевнені, що ви можете написати тест перед кодуванням, але вся причина написання тесту полягає в тому, що ви можете кодувати - що не зупинить вас від написання коду, який важко перевірити.

Погляньте на це, щоб краще зрозуміти, що я маю на увазі: Моя єдина теорія помилок

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

ОНОВЛЕННЯ:

Як написати чистий, тестовий код

Miško Hevery Подання (До GoogleTechTalks ) В Google в Нью - Йорку і при підтримці компанії Google Engineering Productivity групи


Вперед та додайте презентаційне посилання Google. Я думаю, що представник Еріка ще не дозволяє коментувати.
ocodo

+1 @Slomojo: Правда, так проголосуйте питання ... щоб підштовхнути його до 15 повторень, якщо я правильно згадую. Я огляну відео.
промахи

1
@blunders ... Я отримав його до 11!
окудо

+1 @Slomojo: для голосування знайшов і додав посилання до Google Tech Talk у своїй відповіді. Ура!
промахи

8

Крім деяких згаданих книг, я можу порекомендувати вирощування об'єктно-орієнтованого програмного забезпечення, керованого тестами . Я ще не закінчив її читати, але це гідне прочитання, включаючи історію цілого, реалістичного проекту TDD, а не просто спрощених прикладів коду.


Я думаю, що це моя улюблена книга і та, яка вплинула на те, як я найбільше працюю, не тільки щодо TDD, але і про Software Dev взагалі. Я також повинен визнати, що я не читав багато TDD книг, тому, можливо, не дуже мені довіряю.
antonio.fornie

4

Я прочитав дві книги:

Тестова розробка: за прикладом Кент Бек і

Тестові рамки підрозділу Пола Хаміля

Книга Бека добре оцінена, але я не розпочав тестування одиниць, поки не прочитав "Рамкові тестові рамки". Я роблю деякі TDD, але я також додаю тести до більш старого коду, який я маю підтримувати (коли можу).

Редагувати: Також, як тільки ви отримаєте ручку, рекомендую одразу використовувати його в поточному проекті. Для мене саме тоді відбулося справжнє навчання, і я думаю, що книга «Тестові рамки» була кращою довідником для цієї мети. (Я використовував nunit з C #).


4

Хоча це не в першу чергу про TDD (хоча це стосується і тестування, а також проектування для перевірки), "Art of Unit Testing" - це книга, яку я б рекомендував, тому що вона вчить вас писати хороші тести.

Більш конкретно, він вчить, як створити надійні, ремонтопридатні та читабельні тести. Я думаю, що це найважливіший розділ книги, за межами, мабуть, основ про тестування блоків та рамки ізоляції. Очевидно, що якщо одиничні тести стануть больовою точкою або додадуть тертя в роботу розробника, то будь-який успіх чи користь від них будуть обмежені. Якщо хтось вкладає час і зусилля для створення тестів, тоді він (и) повинен мати можливість отримати максимальну віддачу від цієї інвестиції.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.