Apa sumber daya terbaik untuk belajar TDD? [Tutup]

27

Saya ingin belajar (dan menguasai) TDD. Apa yang terbaik:

  • buku
  • situs web
  • video
  • daftar latihan
  • kata-kata bijak pribadi

untuk belajar, menghargai, dan menggunakan TDD?

Eric
sumber
1
Anda mungkin tertarik pada halaman sumber saya untuk mempelajari TDD .
xpmatteo
9
Saya suka pertanyaan ini. Jika Anda tidak boleh menanyakan hal ini di sini, di mana Anda dapat mengajukan pertanyaan tentang rekomendasi buku pemrograman?
guettli

Jawaban:

18

Secara pribadi saya menemukan bahwa membaca satu atau dua esai JUnit yang menekankan bahwa "Anda menulis tes sebelum kode" cukup untuk membuat saya memulai.

Bagian terpenting dalam mempelajari teknologi ini adalah menulis BANYAK kode berbasis tes , karena Anda perlu mengubah beberapa cara paling dasar untuk berpikir tentang menulis kode. Hal-hal seperti:

  • Menulis tes sebelum kode, membuat Anda berpikir di depan tentang bagaimana Anda akan memanggil kode Anda dan mendapatkan hasilnya kembali. Ini berarti Anda merancang API terlebih dahulu berdasarkan cara Anda menggunakannya. Ini sering menghasilkan API yang lebih baik.
  • Gaya pengkodean Anda akan berubah karena Anda PERLU untuk berpikir lebih modular, untuk dapat menguji bagian dari kode, bukan hanya semuanya.
  • Anda juga akan sampai pada titik di mana Anda akan dapat dengan percaya diri menarik sebagian besar dan memasukkan potongan baru sebagai gantinya berperilaku sama, karena tes Anda lulus. Saya melakukan itu baru-baru ini dengan perpustakaan parsing tanggal, karena aslinya terlalu lunak.

Tempat terbaik untuk memulai dari yang kecil, adalah dengan rutinitas utilitas Anda. Lain kali Anda membutuhkannya maka rancang saja dengan tes terlebih dahulu, tulis banyak tes yang mencakup semua usecases resmi Anda (termasuk apa yang seharusnya terjadi dengan nilai nol yang diteruskan dll), dan ketika semua use-case diimplementasikan Anda harus dapat menggunakan langsung di kode Anda, dan yakin itu berfungsi seperti yang diharapkan.

Ini juga pengalaman saya bahwa tes yang baik dapat melakukan pekerjaan tambahan sebagai dokumentasi, karena Anda memiliki banyak kode yang sangat ringkas yang mengatakan dengan tepat bagaimana kode berperilaku dalam berbagai situasi, yang dapat dengan mudah terbukti benar (bilah hijau). Dengan komentar yang hati-hati Anda tidak mendapatkannya lebih baik dari itu.

Untuk Java, versi jUnit benar-benar bagus.


sumber
8

Menurut pendapat saya, TDD lebih tentang membuat kode dapat diuji, daripada menulis tes.

Tentu saja Anda dapat menulis tes sebelum melakukan pengkodean, tetapi seluruh alasan tes ini ditulis adalah agar Anda dapat membuat kode - yang tidak akan menghentikan Anda dari menulis kode yang sulit untuk diuji.

Lihatlah ini untuk mendapatkan pemahaman yang lebih baik tentang apa yang saya maksud: My Unified Theory of Bugs

Jika Anda tertarik dengan konsep ini, dan ingin mempelajari lebih lanjut, cukup komentar - dan saya akan mengarahkan Anda ke arah presentasi yang direkam tentang topik tersebut dari Google.

MEMPERBARUI:

Cara Menulis Kode yang Bersih dan Dapat Diuji

Miško Hevery Presenting (Oleh GoogleTechTalks ) Di Google di NYC dan disponsori oleh grup Rekayasa Produktivitas Google

kesalahan besar
sumber
Silakan dan tambahkan tautan presentasi Google. Saya pikir perwakilan Eric belum mengizinkan berkomentar.
ocodo
+1 @Slomojo: Benar, jadi pilih pertanyaan ... untuk mendorongnya lebih dari 15-rep jika saya mengingat dengan benar. Saya akan melihat-lihat videonya.
kesalahan
1
@ blunders ... Saya mendapatkannya 11!
ocodo
+1 @Slomojo: Untuk memilih, menemukan dan menambahkan tautan ke Google Tech Talk dalam jawaban saya. Tepuk tangan!
kesalahan
8

Terlepas dari beberapa buku yang telah disebutkan, saya dapat merekomendasikan Growing Object-Oriented Software yang Dipandu oleh Tes . Saya belum selesai membacanya, tetapi itu adalah bacaan yang layak, termasuk kisah keseluruhan, proyek TDD yang hidup, bukan hanya contoh kode yang disederhanakan.

Péter Török
sumber
Saya pikir ini adalah buku favorit saya dan salah satu yang paling mempengaruhi cara saya bekerja, tidak hanya tentang TDD tetapi tentang Software Dev pada umumnya. Saya juga harus mengakui bahwa saya tidak membaca banyak buku TDD jadi mungkin tidak terlalu mempercayai saya.
antonio.fornie
4

Saya sudah membaca dua buku:

Pengembangan Test Driven: Dengan Contoh oleh Kent Beck dan

Kerangka Uji Unit oleh Paul Hamil

Buku Beck dianggap baik, tetapi saya tidak memulai dengan pengujian unit sampai saya membaca "Kerangka Tes Unit". Saya melakukan beberapa TDD, tetapi saya juga menambahkan tes ke kode lama yang harus saya pertahankan (ketika saya bisa).

Sunting: Juga, setelah Anda menguasainya, saya sarankan menggunakannya pada proyek saat ini segera. Bagi saya saat itulah pembelajaran yang sebenarnya terjadi, dan saya pikir buku "Unit Test Framework" adalah buku referensi yang lebih baik untuk tujuan ini. (Saya menggunakan nunit dengan C #).

vjones
sumber
4

Meskipun tidak terutama tentang TDD (meskipun itu menyentuh, serta merancang untuk testability), The Art of Unit Testing adalah buku yang saya akan merekomendasikan karena mengajarkan Anda cara menulis tes yang baik.

Lebih khusus, ini mengajarkan cara membuat tes yang dapat dipercaya, dipelihara, dan dapat dibaca. Saya pikir ini adalah bagian paling penting dari buku ini, di luar mungkin dasar-dasar tentang pengujian unit dan kerangka kerja isolasi. Sudah jelas bahwa jika tes unit menjadi titik nyeri atau menambah gesekan pada pekerjaan pengembang, maka setiap keberhasilan atau manfaat darinya akan terbatas. Jika seseorang menginvestasikan waktu dan upaya untuk membuat tes, maka dia harus bisa mendapatkan hasil maksimal dari investasi itu.

Mat
sumber