Kami telah memperkenalkan proses peninjauan kode dalam organisasi kami dan tampaknya berfungsi dengan baik. Namun, saya ingin dapat mengukur keefektifan proses dari waktu ke waktu, yaitu apakah kita tidak menemukan bug karena kodenya bersih atau apakah orang tidak mengambil bug?
Saat ini, kami tidak memiliki proses pengujian otomatis otomatis yang efektif. Kami terutama menggunakan pengujian manual, jadi kami tidak dapat mengandalkan cacat yang ditemukan pada tahap ini untuk memastikan bahwa proses peninjauan kode berfungsi.
Adakah yang pernah menemukan masalah ini sebelumnya atau memiliki pemikiran tentang apa yang bekerja dengan baik dalam mengukur ulasan kode?
code-reviews
quality
metrics
measurement
Johnv2020
sumber
sumber
Jawaban:
Ada sejumlah metrik yang dapat dikumpulkan dari ulasan kode, beberapa bahkan memperpanjang sepanjang siklus proyek.
Metrik pertama yang saya rekomendasikan untuk dikumpulkan adalah defect removal efektivitas (DRE) . Untuk setiap cacat, Anda mengidentifikasi pada tahap apa cacat tersebut diperkenalkan dan pada tahap apa ia dihilangkan. Berbagai teknik deteksi cacat yang Anda gunakan semuanya dinilai secara bersamaan, sehingga berlaku sama untuk ulasan kebutuhan, ulasan desain, ulasan kode, ulasan kode, unit test , dan seterusnya. Anda akan sangat tertarik pada jumlah cacat yang tertangkap dalam fase kode, karena ini mungkin akan mencakup pengujian unit Anda serta ulasan kode. Jika banyak kerusakan dari fase kode yang berhasil sampai ke fase pengujian integrasi atau bahkan bidang, Anda tahu bahwa Anda mempraktikkan post-coding harus dievaluasi.
Berbagai metrik rapat juga akan relevan. Ini termasuk waktu untuk mempersiapkan, waktu dalam rapat, jalur kode membaca, cacat yang ditemukan dalam ulasan, dan sebagainya. Beberapa pengamatan dapat dilakukan dari data ini. Sebagai contoh adalah jika pengulas Anda menghabiskan banyak waktu membaca kode dalam persiapan untuk ulasan, tetapi menemukan sangat sedikit masalah. Ditambah dengan data DRE, Anda dapat menarik kesimpulan bahwa jika cacat sedang diuji dalam pengujian integrasi atau bidang, maka tim Anda perlu fokus pada teknik peninjauan mereka untuk dapat menemukan masalah. Catatan lain yang menarik adalah baris-baris kode (atau ukuran ukuran lain) yang dibaca dalam rapat dibandingkan dengan waktu rapat. Penelitian telah menemukan bahwa kecepatan tinjauan kode tipikal adalah 150 baris kode per jam.
Dengan salah satu dari metrik ini, penting untuk memahami dampaknya pada proses. Analisis akar penyebab, menggunakan teknik seperti mengapa-karena , diagram Lima Mengapa , atau diagram Ishikawa dapat digunakan untuk mengidentifikasi alasan mengapa tinjauan kode (atau teknik peningkatan kualitas lainnya) efektif.
Anda mungkin juga tertarik dengan artikel ini tentang inspeksi dari The Ganssle Group dan sebuah artikel oleh Capers Jones di Crosstalk tentang Potensi Cacat dan DRE .
sumber
Sementara sebagian besar memang benar demikian tinjauan kode akan mengambil masalah yang agak laten bahwa pengujian mungkin atau mungkin tidak. Namun, menurut pendapat saya Anda mungkin memiliki kode yang benar-benar stabil (praktis bebas bug) tetapi masih ditulis sedemikian rupa sehingga sangat tidak terbaca atau tidak dapat dipertahankan. Jadi mungkin ulasan kode TIDAK mungkin menemukan bug jika sebenarnya tidak ada masalah dalam kode.
Karena itu, saya benar-benar akan bertanya, mengapa orang ingin melakukan review kode? Alasan sederhana mengapa ini penting adalah bahwa kode harus ditingkatkan agar lebih mudah dibaca, dipelihara, dan dikembangkan. Banyak orang harus bisa membaca kode bersih dan masuk akal. Dalam hal itu, tujuan paling sederhana dari proses peninjauan kode adalah menghasilkan kode yang bersih. Jadi ukuran efektivitasnya adalah seberapa bersih kodenya sekarang.
Karena Anda ingin memiliki efektivitas yang terukur - inilah yang akan saya sarankan:
Metrik yang terkait dengan jumlah pengerjaan ulang - Jumlah waktu pengerjaan ulang diterapkan dalam modul / objek / item kerja yang sama adalah ukuran seberapa buruk kode tersebut dalam hal kemampuan pemeliharaan. Ketika tinjauan kode yang efektif diterapkan, seberapa sering kita dapat mengurangi permintaan pengerjaan ulang pada modul yang sama?
Metrik terkait dengan jumlah perubahan yang ditimbulkan setiap permintaan perubahan. Ketika setiap kali permintaan perubahan terjadi - kode dengan faktor buruk akan selalu memiliki jumlah modul yang lebih besar terpengaruh. Ukuran mungkin akan menunjukkan bahwa setelah review kode - sebuah adalah bahwa setiap pengurangan seperti penyebaran perubahan untuk permintaan perubahan serupa di masa lalu?
Metrik yang terkait dengan kecepatan rata-rata yang dapat digunakan untuk menanggapi permintaan perubahan. Ketika kode lebih bersih - lebih cepat dan lebih baik untuk merespons perubahan yang diperlukan. Setelah kode dibersihkan dalam proses peninjauan, mati kami menemukan kecepatan dalam menanggapi permintaan ukuran yang sama.
Saya tidak menempatkan satuan ukuran yang tepat - Anda mungkin dapat membuat pengukuran yang lebih akurat tentang hal ini dari pendekatan ini. Akan ada lebih banyak formalisme penyuluhan dalam pendekatan di atas mengenai hal ini.
Pada dasarnya, maksud saya adalah bahwa alih-alih melihat jumlah bug yang diidentifikasi oleh proses review kode; kita harus mengukur keefektifan dalam hal apakah tinjauan kode telah mampu menjadikan kode menjadi lebih bersih, lebih ramping, dan lebih mudah dirawat; karenanya, kita dapat mengukur efektivitas itu jika kita melihat bahwa permintaan perubahan serupa di masa mendatang menjadi lebih efisien untuk ditanggapi.
sumber