Tes sangat berharga. Paling tidak, mereka mencatat bahwa seseorang menganggap bahwa mereka harus menghabiskan waktu menulisnya, sehingga mungkin mereka memiliki nilai bagi seseorang sekali. Dengan sedikit keberuntungan, mereka akan berisi catatan lengkap dari semua fitur dan bug yang pernah dikerjakan tim - meskipun mereka mungkin juga merupakan cara untuk mencapai beberapa angka cakupan uji arbitrer tanpa dipikirkan dengan cermat. Sampai Anda melihat mereka, Anda tidak akan tahu yang terjadi di sini.
Jika sebagian besar tes Anda melewati sebagian besar waktu, maka cukup gigit peluru dan investasikan waktu untuk mencari tahu apa yang beberapa tes gagal coba lakukan, dan apakah memperbaiki atau memperbaikinya sehingga pekerjaan akan lebih mudah di waktu berikutnya. Dalam hal ini, lewati untuk Menentukan maksud untuk setiap bagian tes , untuk beberapa saran tentang apa yang harus dilakukan dengan sejumlah kecil tes gagal.
Di sisi lain, Anda mungkin dihadapkan dengan bangunan Merah sekarang, dan ratusan atau bahkan ribuan tes yang belum berlalu untuk sementara waktu, dan Jenkins belum menjadi Hijau untuk waktu yang lama. Pada titik ini, status build Jenkins menjadi tidak berguna, dan indikator utama masalah dengan check-in Anda tidak lagi berfungsi. Anda harus memperbaiki ini, tetapi tidak mampu menghentikan semua kemajuan saat Anda merapikan kekacauan di ruang tamu Anda.
Untuk menjaga kewarasan Anda saat melakukan arkeologi yang diperlukan untuk menentukan nilai apa yang dapat dipulihkan dari tes yang gagal, saya akan merekomendasikan langkah-langkah berikut:
Nonaktifkan sementara tes yang gagal.
Ada beberapa cara Anda bisa melakukan ini, tergantung pada lingkungan Anda, yang tidak Anda jelaskan sehingga saya tidak bisa merekomendasikan yang mana pun.
Beberapa kerangka kerja mendukung gagasan kegagalan yang diharapkan. Jika Anda melakukannya, maka ini bagus, karena Anda akan melihat hitungan mundur berapa banyak tes yang tersisa dalam kategori ini, dan Anda bahkan akan diberi tahu jika beberapa dari mereka mulai lulus secara tak terduga.
Beberapa kerangka kerja mendukung kelompok uji, dan memungkinkan Anda memberi tahu Hudson hanya untuk menjalankan beberapa tes, atau untuk melewatkan sekelompok tes. Ini berarti Anda sesekali dapat menjalankan kelompok uji secara manual untuk melihat apakah ada yang lewat sekarang.
Beberapa kerangka kerja memungkinkan Anda untuk membubuhi keterangan atau menandai tes tunggal untuk Diabaikan. Lebih sulit untuk menjalankan mereka sebagai kelompok dalam kasus ini, tetapi menghentikan mereka dari mengganggu Anda.
Anda mungkin memindahkan tes ke pohon sumber yang biasanya tidak termasuk dalam build.
Dalam keadaan ekstrim, Anda dapat menghapus kode dari HEAD sistem kontrol versi, tetapi ini akan membuat lebih sulit untuk mengenali kapan fase ketiga telah selesai.
Tujuannya adalah membuat Jenkins menjadi ramah lingkungan sesegera mungkin, sehingga Anda bisa mulai bergerak ke arah yang benar sesegera mungkin.
Pertahankan tes yang relevan.
Putuskan untuk menambahkan tes baru saat Anda menambah atau memodifikasi kode, dan berkomitmen untuk menjaga semua lulus tes lulus.
Tes mungkin gagal karena berbagai alasan, termasuk fakta bahwa mereka bukan tes yang ditulis dengan baik untuk memulai. Tapi begitu Anda mendapatkan Jenkins hijau, mempertahankannya seperti itu sangat penting.
Biasakan menulis tes yang bagus, dan buat itu menjadi masalah besar jika tes mulai gagal.
Tentukan niat untuk setiap tes.
Pergi melalui tes yang dinonaktifkan satu per satu. Mulailah dengan modul yang memengaruhi modul yang paling sering Anda ubah. Tentukan niat tes, dan alasan kegagalan.
Apakah ini menguji fitur yang dihapus dari basis kode dengan sengaja? Maka Anda mungkin dapat menghapusnya.
Apakah itu menangkap bug yang belum diketahui oleh siapa pun? Pasang kembali tes dan perbaiki bug.
Apakah gagal karena membuat asumsi yang tidak beralasan (mis. Asumsi teks tombol akan selalu dalam bahasa Inggris, tetapi sekarang Anda telah melokalkan aplikasi Anda untuk berbagai bahasa)? Kemudian cari tahu bagaimana membuat tes fokus pada satu hal, dan mengisolasinya dari perubahan yang tidak terkait sebaik mungkin.
Apakah tes terkapar di seluruh aplikasi, dan mewakili tes Sistem? Kemudian hapus dari suite uji Jenkins utama Anda dan tambahkan ke suite Regresi yang lebih jarang berjalan.
Apakah arsitektur aplikasi berubah tanpa bisa dikenali, sehingga tes tidak lagi berguna? Hapus.
Apakah tes ditambahkan ke peningkatan statistik cakupan kode secara buatan, tetapi sebenarnya tidak lebih dari memastikan bahwa kode tersebut dikompilasi dengan benar dan tidak masuk ke loop tak terbatas? Atau yang lain, tes hanya mengkonfirmasi bahwa kerangka kerja mengejek yang Anda pilih mengembalikan hasil yang baru saja Anda katakan? Hapus.
Sebagai hasil dari ini, beberapa tes akan berdiri, beberapa dimodifikasi, beberapa dibagi menjadi beberapa potongan independen, ukuran gigitan, dan beberapa dihapus. Selama Anda masih membuat kemajuan dengan persyaratan baru, sisihkan sedikit waktu untuk berurusan dengan utang teknis seperti ini adalah hal yang bertanggung jawab untuk dilakukan.