Saya baru saja menemukan masalah pengkodean kolaboratif yang menarik di tempat kerja.
Saya telah menulis beberapa tes unit / fungsional / integrasi dan mengimplementasikan fungsionalitas baru ke dalam aplikasi yang dapat ~ 20 pengembang mengerjakannya. Semua tes lulus dan saya memeriksa kode. Hari berikutnya saya memperbarui proyek saya dan memperhatikan (kebetulan) bahwa beberapa metode pengujian saya dihapus oleh pengembang lain (menggabungkan masalah pada akhirnya). Kode aplikasi baru tidak tersentuh.
Bagaimana saya bisa mendeteksi masalah seperti itu secara otomatis? Maksud saya, saya menulis tes untuk secara otomatis memeriksa bahwa kode saya masih berfungsi (atau tidak dihapus), bagaimana saya melakukan hal yang sama untuk tes?
Kami menggunakan Java, JUnit, Selenium, SVN dan Hudson CI jika itu penting.
Jawaban:
Saya tidak terlalu akrab dengan Hudson untuk CI, tetapi alat CI saya juga dapat menghitung cakupan kode. Jika Anda dapat menulis proses yang akan memberi tahu Anda ketika cakupan kode turun, itu akan menjadi indikator yang baik bahwa tes telah dihapus. Ini juga akan memberi tahu Anda jika kode baru telah ditambahkan tanpa tes. Bukan apa yang Anda tanyakan, tapi senang tahu.
sumber
Penafian standar berlaku: kami membuat solusi rekayasa untuk masalah sosial. Namun, ini adalah masalah kebersihan proyek, jadi agak seperti mengatakan toilet adalah solusi rekayasa untuk masalah sosial.
Dapatkan pekerjaan dari feed RSS dari Hudson. Hitung jumlah tes dalam laporan Hudson. Jika berkurang, bunyikan alarm. Miliki fitur auto-da-fe 'saat alarm berbunyi.
Kesalahan komit dapat diidentifikasi dan dihukum. Masalahmu akan hilang.
Anda mungkin membuat masalah lain sebagai hasil dari solusi ini. Jika pusing berlanjut, silakan kunjungi dokter Anda.
sumber
Pendekatan organisasi
Siapkan kebijakan yang mengharuskan seseorang menghapus tes untuk berbicara dengan pembuat tes. Biasanya Anda akan menghapus tes hanya ketika mendepresiasi beberapa fungsi yang sedang diuji, dan itu tidak sering terjadi.
Pendekatan teknis
Ini lebih merupakan pendekatan control freak tetapi Anda dapat memiliki tes terpisah, yang memindai kode sumber untuk keberadaan semua tes yang ingin Anda periksa. Mungkin Anda juga bisa antarmuka Hudson dan mendapatkan daftar tes yang dieksekusi.
sumber
Mirip dengan jawaban Art ..
Komentar Mulai dengan menggunakan komentar dengan baik. Untuk setiap metode; jangan lupa untuk menempatkan input dan output yang diharapkan, deskripsi singkat untuk fungsi yang lebih kompleks dan nama Anda.
Pedoman Tetapi ini benar-benar menggarisbawahi bahwa ada kebutuhan untuk lebih banyak komunikasi antara dev. tim. Harus ada pedoman untuk bekerja bersama ... atau setidaknya berbicara dengan proj Anda. manajer dan memintanya untuk mengklarifikasi ini di antara tim.
Penggunaan SVN yang tepat Anda juga dapat menuliskan kelas dan metode Anda dan melacaknya .. juga saat Anda menggunakan SVN, saya sangat berharap bahwa penghapusan ini dilacak sebagai perubahan, dicatat secara terpisah dan memiliki alasan yang BAIK.
Pendek menulis program khusus, Anda juga bisa membandingkan diff. file di SVN untuk melacak perubahan pada metode Anda.
sumber
Hal yang sama dapat terjadi untuk kode aktual juga, dan Anda tidak akan tahu sampai Anda melihat perubahan Anda tidak ada lagi.
Yang sedang berkata, sulit untuk mengidentifikasi kode yang dihapus sebagai hal yang buruk, karena sangat sering Anda secara manual menghapus kode / fitur dll, dan karena itu jumlah tes dapat turun serta orang lain yang disebutkan.
sumber