Saya cukup baru dalam pendekatan TDD dan percobaan pertama saya mengatakan bahwa menulis 1 baris kode fungsional berarti menulis sekitar 2-3 baris kode pengujian. Jadi, jika saya akan menulis 1000 LOC, seluruh basis kode termasuk tes akan menjadi sekitar ~ 3500 LOC.
Apakah ini dianggap normal? Berapa rasio dalam kode yang Anda tulis?
testing
unit-testing
tdd
metrics
Andrey Agibalov
sumber
sumber
Jawaban:
1: 3 normal dengan TDD.
Dari pengalaman saya, dan juga dari kutipan lain yang saya ingat.
sumber
Ada variasi berdasarkan gaya pengkodean dan bahasa yang berbeda. Namun, terlepas dari bahasa yang Anda gunakan, variasi terbesar adalah Anda.
Robert Martin pernah berkata:
Itu membuat saya berpikir. Tes yang lebih spesifik berarti lebih banyak kode tes. Kode produksi yang lebih umum berarti lebih sedikit kode, sehingga rasio uji / kode akan naik ketika kode berevolusi.
Tapi tunggu, itu juga tidak baik. Dalam beberapa kasus tertentu, misalnya ketika Anda mendefinisikan algoritma tertentu, Anda mungkin hanya memiliki 6-10 baris kode yang berisi beberapa "jika", beberapa saat dan mungkin 2-3 rekursi. Saya dapat memberitahu Anda, kode itu mungkin memiliki lebih dari 100 baris kode uji.
Dalam proyek nyata, sesuatu yang lebih besar dari hanya beberapa algoritma, rasio tes / kode harus berada di antara 1: 1 dan 2: 1. Jika mendapat di atas 2: 1, itu bau bahwa Anda memiliki tes yang harus di refactored atau dihapus (atau mungkin kode yang sulit untuk diuji). Anda harus selalu menginvestasikan jumlah perawatan dan refactoring yang sama dalam tes Anda seperti dalam kode produksi Anda.
Bagaimanapun, jawaban terbaik untuk pertanyaan Anda mungkin adalah "Kompleksitas Siklomatik" . Semakin tinggi kompleksitas siklomatik metode Anda, semakin banyak tes yang harus Anda tulis untuk mencakup semua kasus.
sumber
Rasio akan bervariasi tergantung pada ukuran metode Anda. Ukuran metode Anda akan bervariasi berdasarkan gaya pemrograman, bahasa, dan domain masalah.
Jika metode Anda pendek maka 3: 1 masuk akal. Jika metode Anda panjang, maka 3: 1 ada di sisi atas.
Jadi, untuk menjawab pertanyaan Anda, itu tergantung. :-)
sumber
Untuk aplikasi kritis perangkat lunak, rasio yang biasa dilakukan adalah satu hari pengujian untuk setiap 10 fungsional LoC.
Dan ini tidak termasuk TDD yang bukan tentang tes tetapi tentang spesifikasi.
sumber
Ukuran kode pengujian saya sekitar setengah dari kode 'aktual' secara keseluruhan. Melakukan sebaliknya menunjukkan bahwa pengujian Anda terlalu kompleks dan / atau kode Anda terlalu sulit untuk diuji dan / atau kode Anda terlalu padat / kompleks.
Atau Anda hanya menguji terlalu banyak, dan membuang-buang waktu untuk pengembalian yang berkurang.
Lihat juga "kapan pengujian unit tidak tepat atau tidak perlu?"
sumber
Rasio saya sekitar 2-1 hingga 10-1 (kode untuk diuji). Pastikan Anda menguji tentang nilai / perilaku dan bukan implementasi.
sumber