Seperti yang saya pahami, Test-Driven Development adalah tentang menulis tes untuk menentukan spesifikasi program (Anda dapat memperbaiki saya jika saya salah).
Jika ada seseorang yang bertanggung jawab untuk menulis spesifikasi (termasuk API publik) untuk perangkat lunak (sebut saja Arsitek Perangkat Lunak), apakah itu berarti Arsitek Perangkat Lunak harus menulis semua tes?
Atau apakah Arsitek Perangkat Lunak menulis spesifikasi, dan kemudian menyerahkannya kepada pengembang untuk menulis pengujian?
Atau apakah Anda membiarkan spesifikasi tumbuh secara organik dengan mengizinkan semua pengembang untuk menulis tes mereka sendiri, dan lupa memiliki Arsitek Perangkat Lunak?
architecture
tdd
Robert Harvey
sumber
sumber
Jawaban:
Anda tidak menulis tes untuk menentukan spesifikasi, deskripsi tes, cerita pengguna, dan deskripsi fitur adalah spesifikasi, dalam arti 'pohon mati'.
Untuk meninjau, proses TDD secara singkat adalah:
berapa banyak desain, arsitektur, dokumentasi pendukung, dan lain-lain yang Anda pilih bukan bagian dari TDD. Ada beberapa 'praktik terbaik' praktis yang dapat Anda baca, tetapi perlu diingat bahwa itu adalah praktik 'terbaik' di bengkel orang lain , bukan milik Anda.
perhatikan bahwa intinya adalah bagi pelanggan dan pengembang untuk datang dengan fitur dan menulis cerita dan deskripsi pengujian bersama , untuk saling pengertian
jadi, dengan itu, pertanyaan aslinya adalah:
Dan jawaban singkatnya adalah:
EDIT: Jawaban panjangnya adalah: arsitek memainkan peran visioner / penyelidik / pengiritasi / pendukung / backstop yang biasa selama seluruh proses, sebagaimana diperlukan.
EDIT 2: maaf saya melewatkan inti dari sub-pertanyaan! Setiap orang bertanggung jawab untuk menulis spesifikasi; semua pengembang termasuk arsiteknya jika diperlukan ditambah pelanggan . Pengembang juga membuat kode tes.
sumber
Arsitek Perangkat Lunak tidak menulis semua tes. Itu akan menempatkan terlalu banyak ke pundak satu orang ke pikiran saya.
Arsitek Perangkat Lunak harus dapat membuat sketsa formulir awal untuk API yang kemudian dikembangkan oleh para pengembang tes untuk itu dan kemudian membangun API. Namun, Arsitek Perangkat Lunak mungkin memiliki berbagai standar kode yang belum tentu dapat diuji, misalnya dokumentasi atau konvensi penamaan. Ada juga potensi untuk API awal akan kehilangan beberapa panggilan yang sebagai implementasi dilakukan panggilan baru ditambahkan ke API. Dengan demikian, akan ada beberapa pertumbuhan organik ke API sebagai basis kode tumbuh tetapi peran Arsitek adalah dalam memberikan pedoman tingkat tinggi dan berusaha untuk memastikan mereka diikuti.
Tentu saja ada kasus-kasus di mana sebuah tim dapat memutuskan untuk tidak memiliki Arsitek Perangkat Lunak tetapi tergantung pada skala API dan perusahaan yang terlibat ini mungkin atau mungkin bukan ide yang baik.
sumber