Saya seorang insinyur perangkat lunak di perusahaan menengah. Kami memiliki platform pengujian yang cukup kuat yang berjalan di TeamCity. Itu melakukan tes unit pada setiap checkin, dan menjalankan tes unit / BVT harian.
Masalahnya adalah - kami memiliki banyak unit test yang rusak.
Cukup sering, saya mengemukakan kegunaan dari unit test jika mereka terus-menerus rusak dan tidak dirawat. Tidak dapat melihat apakah perubahan telah menyebabkan regresi menghapus sebagian besar nilai platform pengujian unit.
Saya ingin menanam benih yang akan menciptakan budaya kebiasaan yang baik - memperbaiki tes ketika mereka rusak, melihatnya bernilai, memprioritaskan penetapan tes bersama dengan pekerjaan lain.
Saya sudah mencoba suap (barang yang dipanggang!), Sekadar bertanya, dan berbicara dengan pimpinan tim. Semua orang mengatakan itu ide yang bagus, tetapi saya melihat menjadi satu-satunya yang melakukan sesuatu tentang itu.
Apa cara terbaik untuk memulai mendorong orang lain untuk memperbaiki tes mereka, dan memprioritaskan perbaikan tes dalam sprint mereka?
Jika ada cara yang kurang subyektif untuk menanyakan hal ini, saya akan dengan senang hati menerima tip.
sumber
Jawaban:
Buat itu jadi tidak mungkin untuk benar-benar melepaskan apa pun tanpa memperbaiki tes.
Faktanya adalah, jika bangunan Anda rusak selama lebih dari 15 menit sekaligus (dan itu termasuk tes gagal), maka Anda tidak melakukan integrasi terus menerus .
"Opsi nuklir" adalah meminta server kontrol sumber Anda menolak komit / checkin dari pengguna mana pun selain dari orang yang merusak build. Jelas seorang admin harus dapat mengesampingkan ini sementara jika orang tersebut pergi berlibur - tetapi, jika semua orang tahu bahwa seluruh tim kacau sampai mereka memperbaiki tes mereka, maka mereka akan menyelesaikannya dengan cepat.
Kebijakan yang baik (yang bahkan lebih baik ketika itu otomatis) adalah mengembalikan sumber ke komit stabil terakhir yang diketahui setelah 15 menit pembangunan gagal. Dengan kata lain, jika Anda tidak bisa memperbaikinya, atau tidak tahu apa yang menyebabkan build atau tes rusak, maka kembalikan dan bekerja secara lokal sampai diselesaikan - tidak pernah membuat pengembang lain memelintir ibu jari mereka saat Anda mengerjakan sesuatu masalah yang tidak mereka pedulikan.
PS Jika Anda sudah memiliki banyak tes gagal, Anda dapat menggunakan "trailing threshold" di CI. Atur agar build hanya gagal jika ada lebih banyak kegagalan pengujian daripada yang terakhir. Ini, bersama dengan aturan cakupan, akan memaksa pengembang untuk akhirnya memperbaiki situasi pengujian jika mereka ingin tetap bekerja.
PPS Saya menyadari ini mungkin tampak kejam bagi sebagian orang, tetapi itu semua tergantung budaya Anda. Jika Anda sampai pada titik di mana orang tidak membiarkan build rusak atau tes gagal (tim saya hampir tidak pernah melakukannya, walaupun saya kadang-kadang harus mengingatkan mereka), maka Anda tidak perlu melanjutkan dengan seperangkat aturan ketat. Meskipun IMO Anda harus selalu gagal membangun pada unit test yang rusak. Tes integrasi / browser terkadang gagal.
sumber
Tes unit yang gagal bukan masalah. Mereka adalah gejala .
Masalah sebenarnya adalah dalam budaya. Anda harus melangkah dengan lembut: ini naga . Anda tidak dapat mengubah budaya sendiri, dan menjadi roda yang melengking pada akhirnya akan membuat Anda menjadi orang buangan. Secara harfiah.
Saya sarankan jika Anda mencoba menemukan orang senior untuk memperjuangkan penyebabnya dan memimpin. Jika gagal, coba angkat dalam rapat pengembang umum, tanpa menunjukkan jari atau memanggil nama. Alternatif lain adalah mengambil tanggung jawab sendiri untuk melakukan pekerjaan yang tepat: perbaiki beberapa tes lagi setiap kali Anda melakukan check-in. Buatlah bagan di dinding yang menunjukkan berapa banyak tes yang gagal seiring waktu. Orang lain akan melihatnya: mungkin mereka akan ikut serta.
Tidak ada jawaban yang mudah.
sumber