Saya membaca blog ini oleh Joel Spolsky tentang 12 langkah menuju kode yang lebih baik . Tidak adanya Pengembangan Berbasis Tes sangat mengejutkan saya. Jadi saya ingin mengajukan pertanyaan kepada para Guru. Apakah TDD tidak sepadan dengan usaha?
programming-practices
testing
code-quality
tdd
Kutu buku
sumber
sumber
Jawaban:
Perkembangan yang didorong oleh tes hampir tidak dikenal sebelum buku Kent Beck keluar pada tahun 2002, dua tahun setelah Joel menulis posting itu. Pertanyaannya kemudian menjadi mengapa Joel belum memperbarui tesnya, atau jika TDD lebih dikenal pada tahun 2000 akankah ia memasukkannya ke dalam kriteria?
Saya percaya dia tidak akan memiliki, karena alasan sederhana bahwa yang penting adalah Anda memiliki proses yang terdefinisi dengan baik, bukan detail spesifik dari proses itu. Itu alasan yang sama ia merekomendasikan kontrol versi tanpa menentukan sistem kontrol versi tertentu, atau merekomendasikan memiliki database bug tanpa merekomendasikan merek tertentu. Tim yang baik terus meningkatkan dan beradaptasi, dan menggunakan alat dan proses yang cocok untuk situasi khusus mereka pada waktu tertentu. Untuk beberapa tim, itu pasti berarti TDD. Untuk tim lain, tidak banyak. Jika Anda mengadopsi TDD, pastikan itu bukan dari mentalitas kultus kargo .
sumber
Joel sebenarnya telah membahas hal ini secara khusus di beberapa tempat.
Dia menjelaskan bahwa tes hal-hal tidak mampu menangkap banyak masalah penting, terutama yang subjektif seperti "apakah antarmuka pengguna perangkat lunak ini payah?" Menurutnya, ketergantungan yang berlebihan pada tes otomatis di Microsoft adalah bagaimana kami berakhir dengan Windows Vista.
Dia menulis bagaimana, dalam pengalamannya, jenis bug yang ditemukan pengguna cenderung terbagi dalam dua kategori: 1) bug yang muncul dalam penggunaan umum, yang akan ditemukan oleh para programmer jika mereka menjalankan kode mereka sendiri sebelum menggunakannya. , atau 2) tepi case sangat tidak jelas sehingga tidak ada yang akan berpikir untuk menulis tes untuk menutupi mereka di tempat pertama. Dia menyatakan bahwa hanya sebagian kecil dari bug yang dia dan timnya perbaiki di FogBugz adalah hal-hal yang akan ditangkap oleh unit test. (Saya tidak dapat menemukan artikel itu sekarang, tetapi jika ada yang tahu yang saya maksud, jangan ragu untuk mengedit tautan di sini.)
Dan dia menulis bagaimana ini bisa lebih merepotkan daripada nilainya, terutama ketika proyek Anda tumbuh menjadi proyek yang sangat besar dengan banyak tes unit, dan kemudian Anda mengubah sesuatu (secara sengaja) dan berakhir dengan sejumlah besar tes unit yang rusak. Dia secara khusus menggunakan masalah-masalah yang dapat ditimbulkan oleh pengujian unit sebagai alasan mengapa dia tidak menambahkannya sebagai poin ke-13 pada Tes Joel, bahkan ketika orang-orang menyarankan bahwa dia harus melakukannya.
sumber
Joel Spolsky sendiri menjawab pertanyaan ini pada tahun 2009 :
sumber
Tidak seorang pun kecuali Joel yang bisa menjawabnya dengan pasti. Tetapi kita dapat mencoba beberapa alasan / pengamatan.
Pertama-tama, pengujian tidak absen dari Tes Joel
Kedua, seluruh gagasan Tes Joel (seperti yang saya mengerti) adalah untuk memiliki pertanyaan cepat, ya-tidak. "Apakah kamu melakukan TDD?" tidak akan persis cocok (jawabannya bisa: "sebagian dari kita", "untuk bagian kode" atau "kami melakukan pengujian unit".
Ketiga, saya pikir tidak ada yang mengatakan bahwa (bahkan Joel) bahwa titik-titik di mana "satu-satunya yang bernilai waktu" (omong-omong, "apakah Anda memprogram" tidak ada di sana), hanya saja itu adalah pertanyaan cepat yang bagus untuk ditanyakan ketika datang berhubungan dengan tim perangkat lunak, baik sebagai anggota tim di masa depan atau bahkan sebagai pelanggan - ini adalah daftar yang saya berikan kepada beberapa orang non teknis di sekitar saya yang mencari petunjuk tentang seberapa baik / buruk departemen TI mereka sendiri. Ini bukan segalanya, tetapi sangat buruk untuk mengalahkan dalam tiga menit.
sumber