Bagaimana cara membuat tes otomatis populer? [Tutup]

13

Basis kode kami berkembang selama 20 tahun sekarang. Kami sekitar 10 devs + sqa bekerja dengan 500kloc. Beberapa waktu yang lalu tim kecil kami (2 devs, satu dari sqa) mulai mengerjakan program pengujian otomatis. Saat ini sekali jalan membutuhkan waktu 11 jam dan entah bagaimana merupakan tes integrasi. Kami sedang mengusahakannya untuk menurunkan ini dan mengurangi positif palsu dan membuat kemajuan yang baik dalam hal itu. Tetapi detail seharusnya tidak masalah.

Ini berfungsi dengan baik dan kami terus meningkatkannya. Kami (tim kecil) sangat menyukainya. Jika kita memecahkan sesuatu, kita perhatikan sehari kemudian dan tidak 2 bulan kemudian ketika sqa memeriksanya. Juga, manajer kami (dev + sqa) menyukai gagasan itu. Tetapi orang lain dalam tim mengabaikan hasil tes. Dalam pikiran mereka, jika tes gagal setelah checkin, itu masalah tes dan bukan perubahan kode dan itu hanya proyek mainan kami. Kami telah berdiskusi beberapa kali jika tes gagal adalah kesalahan nyata. Seringkali.

Kami tidak bisa dan tidak ingin menegakkan sesuatu. Bagaimana kita dapat menunjukkan bahwa pengujian otomatis adalah sesuatu?

Peter Schneider
sumber
11
Ini bukan masalah Rekayasa Perangkat Lunak; itu masalah orang.
Robert Harvey
@RobertHarvey Saya mendapat downvotes di SO karena "berdasarkan pendapat" dan komentar bahwa situs ini akan cocok dengan sempurna (dan meningkatkan komentar pada komentar itu). Jadi: di mana saya harus bertanya? Ajari aku.
Peter Schneider
2
Saya dengan @RobertHarvey tentang ini menjadi masalah orang. Namun seperti di Tempat Kerja, pertanyaan Anda mungkin akan kami anggap sebagai penipuan. Misalnya, lihat pertanyaan ini yang pada dasarnya adalah apa yang Anda tanyakan di tempat kerja.stackexchange.com/questions/44964/…
Peter M
1
Jangan biarkan mereka yang downvoters (atau bahkan suara dekat) membuat Anda kecil hati! Beberapa orang mungkin mengerti bahwa pertanyaan seperti itu penting, dan mungkin dapat memberikan bantuan. Ngomong-ngomong, kolega saya juga gagal melihat kegunaan tes otomatis, meskipun versi sebelumnya (tanpa tes otomatis) adalah sekotak bug. Ubah saja satu hal, dan hancurkan beberapa hal lainnya, yang tampaknya tidak berhubungan. Beberapa orang tidak mau belajar (ada penolakan terbuka untuk mempelajari hal-hal baru).
Bernhard Hiller
1
Sayang pertanyaan ini telah ditutup. Jika rekayasa perangkat lunak berarti apa-apa itu berarti masalah bekerja dengan orang-orang yang sebenarnya, dan jawaban untuk masalah seperti itu akan melibatkan opini. Yang mengatakan, beberapa ide cepat: (1) jika Anda menguji memberikan negatif palsu, ini pasti akan meningkatkan pushback karena hasilnya akan terasa seperti buang-buang waktu; (2) membawa runtime ke bawah, jika memungkinkan. 11 jam tidak terasa langsung, bahkan jika itu jauh lebih baik dari dua bulan; (3) akan sqa mengadopsi tes ini sebagai metrik yang mereka tonton. mereka sudah dikenali oleh org Anda di area ini.
Dale Hagglund

Jawaban:

4

Penolakan

Walaupun saya mungkin terdengar seperti seorang manajer, saya menulis ini sebagai pengembang yang juga perlu diyakinkan bahwa tes otomatis itu baik.


Anda harus memahami psikologi dasar pengembang. Merupakan kebutuhan yang sudah tertanam dari pengembang untuk melakukan kode. Apa pun yang mencegah mereka melakukannya adalah hal yang sangat, sangat buruk. Tes gagal jelas merupakan sesuatu yang mencegah mereka melakukannya, ergo itu adalah hal yang buruk. Karena itu perlawanan.

Apa yang harus Anda tunjukkan adalah bahwa, sementara tes otomatis memperlambat mereka dalam jangka pendek, dalam jangka panjang itu akan menyelamatkan mereka dari banyak kesedihan dan benar-benar akan mempercepat mereka, karena mereka akan dapat lebih fokus pada pengembangan hal-hal baru, dan akan kehilangan lebih sedikit waktu untuk melakukan hal lain yang tidak disukai pengembang: memperbaiki bug.

Dan ya, Anda harus menegakkannya. Anda harus mendapatkan dukungan tanpa syarat dari manajemen dan membuat penulisan tes otomatis wajib dan tidak dapat dinegosiasikan. Seiring waktu, para pengembang akan terbiasa dengan mereka. Apa yang akan membantu adalah jika Anda dapat menyusun beberapa metrik yang akan menunjukkan berapa banyak lagi pengembangan baru yang dilakukan, dan seberapa banyak jumlah bug yang berkurang sejak Anda memperkenalkan tes otomatis. Kata-kata tidak stabil. Angka-angka itu padat. Dan angka adalah sesuatu yang dipahami oleh pengembang rata-rata lebih baik daripada kata-kata. Jika Anda dapat membuktikan menggunakan angka solid bahwa tes otomatis bagus, Anda akan mendapatkan sedikit atau tidak ada perlawanan terhadapnya.

Vladimir Stokic
sumber
11

Dalam pikiran mereka, jika tes gagal setelah checkin, itu masalah tes dan bukan perubahan kode dan itu hanya proyek mainan kami. Kami telah berdiskusi beberapa kali jika tes gagal adalah kesalahan nyata. Seringkali.

Itu masalahnya. Jika tes Anda tidak jelas (bahkan jika itu dapat diandalkan 'sebagian besar waktu'), maka orang akan cenderung mengabaikan hasilnya. Tim otomasi Anda harus fokus pada menghilangkan negatif palsu itu. Hanya dengan demikian tim yang lain akan mendapatkan kepercayaan yang cukup pada hasil untuk benar-benar mempercayai mereka.

Eternal21
sumber
5
Kemudian lagi, itu bisa menjadi sesuatu yang lain. Seperti resistensi terhadap perubahan. Jika tes gagal, selalu ada sesuatu untuk diperbaiki, baik kode atau tes, sehingga sikap bahwa orang akan mengabaikan tes karena tes yang serpihan salah tempat.
Robert Harvey
Kami berbicara dengan mereka ketika kami yakin ada sesuatu yang rusak (mis. Tes gagal 3 kali berturut-turut setelah checkin-nya mempengaruhi fungsi yang dimaksud). Tapi ya, meningkatkan keandalan adalah prioritas saat ini.
Peter Schneider
1
@PeterSchneider suatu tes bisa gagal 100 kali berturut-turut, itu akan melakukannya terutama jika tesnya salah.
Pieter B
Di sisi lain, tes yang tidak pernah gagal kemungkinan besar sama sekali tidak berguna
Vladimir Stokic
1
+1 Tes getas jelas merupakan masalah. Pengembang harus yakin bahwa tes yang mereka tulis bermanfaat, tidak menimbulkan komplikasi yang tidak perlu, dan tidak sibuk .
Andres F.
6

Kami tidak bisa dan tidak ingin menegakkan sesuatu.

Anda pasti harus menegakkannya! Jika seseorang mendorong kode baru dan tes gagal maka kode tersebut harus ditolak! Ini adalah satu-satunya cara untuk secara andal memelihara proyek perangkat lunak yang lebih besar.

Banan
sumber
Saya kira itu tergantung pada sistem, tes, skala, dan proses pengembangan. Tidak semua bug dapat diatasi segera, juga tidak semua masalah harus diselesaikan segera.
NickL