Cara meningkatkan pengujian kode Anda sendiri [ditutup]

12

Hari ini saya memeriksa perubahan pada beberapa kode yang ternyata tidak berfungsi sama sekali karena sesuatu yang agak bodoh namun sangat penting. Saya merasa sangat buruk tentang hal itu dan saya berharap saya akhirnya belajar sesuatu darinya. Yang bodoh adalah, saya sudah melakukan hal-hal ini sebelumnya dan saya selalu mengatakan pada diri sendiri, lain kali saya tidak akan sebodoh itu ... Kemudian itu terjadi lagi dan saya merasa lebih buruk lagi.

Saya tahu Anda harus menjaga dagu Anda dan belajar dari kesalahan Anda, tetapi inilah masalahnya: Saya mencoba meningkatkan diri saya, saya hanya tidak melihat bagaimana saya dapat mencegah hal-hal ini terjadi.

Jadi, sekarang saya bertanya kepada kalian: Apakah Anda memiliki beberapa aturan dasar saat menguji kode Anda?

Peter
sumber
1
Ini dapat membantu: programmers.stackexchange.com/questions/45479/…
Amir Rezaei

Jawaban:

17

Tulis tes sebelum Anda membuat perubahan kode.

Jika perubahan yang Anda usulkan adalah untuk memperbaiki bug, mulailah tes gagal dengan mendemonstrasikan bug. Kemudian pastikan itu lewat setelah Anda memperbaiki bug. Jika Anda menulis tes sesudahnya dan hanya pernah melihatnya lulus, Anda tidak dapat memastikan bahwa ia telah menguji bug dengan benar sejak awal.

Jika perubahan yang Anda usulkan adalah mengubah fungsionalitas yang ada atau menambahkan fitur, tulis beberapa tes untuk memastikan cakupan area kode yang baik yang akan Anda ubah. Pastikan tes ini lulus sebelum Anda mulai mengubah kode, dan masih lulus saat Anda selesai.

Alb
sumber
Ini saran yang sangat bagus, mungkin butuh waktu sedikit lebih lama untuk menyelesaikan perbaikan bug tapi itu pasti tidak akan menyebabkan saya membuat kesalahan semacam ini lagi dan itu akan memungkinkan saya untuk menulis kode yang lebih stabil secara keseluruhan.
Peter
@ Peter harus menghemat waktu perawatan dalam jangka panjang. Anda harus menghabiskan lebih sedikit waktu untuk memperbaiki pengujian asap secara manual dan juga pengujian akan dilakukan untuk waktu berikutnya kode diedit. Kadang-kadang Anda bahkan mungkin menemukan bahwa dengan cepat menulis unit test yang mereproduksi bug dapat membuatnya lebih cepat untuk debug dan memperbaiki bug di tempat pertama.
Alb
@ Peter Saya sering menemukan diri saya mereproduksi bug beberapa kali sambil memperbaikinya. Menulis tes kecil biasanya menghemat waktu, belum lagi Anda yakin benar itu bekerja (dan akan berhasil di masa depan).
DasIch
ini saran yang luar biasa sobat, terima kasih banyak!
Shaheer
@ Alb atau bahkan dalam jangka pendek.
3

Jangan lupa untuk menguji case edge! Banyak bug karena tindakan yang paling umum diuji tetapi tidak yang kurang umum.

HLGEM
sumber
Saya permata yang sebenarnya dalam menemukan kasus tepi ini. Saya sering terkejut dengan bug yang keluar dari suatu sistem, hanya karena kami tidak memikirkan skenario tertentu.
Peter
2

Ikuti saran teknis dalam jawaban yang berorientasi teknis; itu barang bagus. Jawaban saya lebih tentang sikap.

Merasa buruk tentang membuat kesalahan seperti yang dilakukan setiap pengembang sesekali adalah tidak masuk akal, dan tidak membantu Anda untuk tidak membuat kesalahan semacam itu di masa depan. Sementara Anda duduk di sana merasa tidak enak, bangunannya masih rusak, Anda tahu? Dan kemudian pekerjaan Anda adalah tentang menghindari kesalahan, yang saya tahu membuat bangun dari tempat tidur di pagi hari menjadi petualangan yang menyenangkan setiap hari, bukan?

Saya pernah mendengar tentang perusahaan yang mengecek kode rusak karena mempermalukan publik. Aku bahkan tidak bisa mendapatkan pikiran yang melengkung, saudara laki-laki, pemikiran tingkat SMP yang akan mengarah pada perilaku seperti itu. Hampir tidak ada APA SAJA yang lebih kontraproduktif untuk dilakukan oleh pemimpin tim atau manajer.

Jadi, jangan menyalahkan diri sendiri. Kita semua sudah melakukannya. Saya mungkin menghabiskan setengah hari per minggu dalam kesalahan konyol, dan saya sudah melakukan ini untuk (batuk) sejak lama. Seperti itulah rasanya menulis kode - Anda terus-menerus menentang apa yang tampaknya seperti kekurangan Anda sendiri. Apa yang membuat seorang profesional menjadi profesional bukanlah kualitas mitos yang tidak pernah membuat kesalahan (termasuk yang besar kadang-kadang), tetapi bagaimana mereka MENANGGAPI kesalahan yang mereka buat.

Jika ada satu mantra yang bisa saya tanam di setiap pengembang yang bekerja dengan saya, ini dia: Anda bukan kode Anda . Anda menulis kode. Anda menulisnya dengan baik dan seefisien mungkin. Lalu kamu pulang. Jika Anda menyamakan nilai atau harga diri Anda sebagai orang dengan kualitas kode Anda, Anda tidak mengetahui siapa diri Anda sebenarnya.

Dan Ray
sumber
Saya mengerti apa yang Anda katakan tentang mempermalukan di depan umum, tetapi pada saat yang sama frustasi karena diblokir karena Joe Bloggs tidak membangun semua platform sebelum check-in.
tenpn
@tenpn - Benar-benar. Tapi kebalikan dari apa yang saya katakan juga berlaku tentang Joe Bloggs. Dia juga bukan kodenya. Sebagai kolega, kita harus menolak dorongan untuk mengubah Joe menjadi idiot di mata kita karena dia membuat kesalahan yang bisa kita lakukan.
Dan Ray
@tenpn sebenarnya, Anda juga bisa menyalahkan sistem karena tidak secara otomatis menguji build sebelum melakukan perubahan pada trunk / master.
David
2
@tenpn - Tidak ada yang memukul rekan kerja Anda.
Dan Ray
1
Bagaimana jika perubahan tidak merusak build? Masuk akal untuk membuat kode Anda sebelum check-in. Tidak begitu jelas untuk menguji kode Anda dalam setiap cara yang memungkinkan. Selalu ada beberapa skenario yang tidak bisa Anda miliki. Baru hari ini saya mengalami kesalahan pembulatan titik mengambang yang terjadi hanya jika Anda memiliki angka yang benar (salah)
Peter
2

Praktik pengujian penting lainnya adalah menulis tes dan memastikan bahwa gagal setidaknya satu kali sebelum menulis kode. Semuanya mudah untuk dikacaukan dan menulis tes tautologi yang secara tidak sengaja tidak menguji kondisi yang Anda periksa. Jaminan palsu hampir (dan terkadang lebih buruk) daripada tidak ada jaminan.

Uri
sumber
0

Satu Ide yang saya gunakan dari waktu ke waktu adalah ini,

buat cabang dan pecahkan kode Anda, jalankan tes dan pastikan bahwa tes menangkap kesalahan.

Zachary K
sumber
0

Apakah Anda memiliki beberapa aturan dasar saat menguji kode Anda?

  • Selalu uji unit kode Anda, dan cobalah untuk mencapai cakupan setinggi mungkin.

Beberapa poin umum tambahan:

  • menginvestasikan waktu ke dalam desain dan perencanaan sebelum mulai kode
  • refactor kode Anda!
BЈовић
sumber