Saya memiliki masalah yang menarik, cukup umum, dengan salah satu pengembang di tim saya. Lelaki itu adalah pengembang hebat, bekerja cepat dan produktif, menghasilkan kode kualitas yang cukup bagus dan semuanya. Insinyur yang bagus. Tetapi ada masalah dengan dia - sangat sering dia gagal untuk menangani kasus tepi dalam kodenya.
Kami berbicara dengannya tentang itu berkali-kali dan dia berusaha tetapi saya kira dia tidak berpikir seperti itu. Jadi apa yang akhirnya terjadi adalah bahwa QA akan menemukan banyak masalah dengan kodenya dan mengembalikannya untuk pengembangan lagi dan lagi, akhirnya menghasilkan tenggat waktu yang terlewat dan semua orang di tim tidak senang.
Saya tidak tahu apa yang harus saya lakukan dengannya dan bagaimana membantunya mengatasi masalah ini. Mungkin seseorang dengan pengalaman lebih bisa memberi saran?
sumber
Jawaban:
Mewajibkannya untuk menulis tes unit otomatis untuk kode-kodenya. Tes unit menulis memaksa seseorang untuk memikirkan kasus-kasus tepi.
Beberapa keterangan khusus:
sumber
After some amount of feedback from his team about missed edge cases, he will probably learn to consider those
Pengembang yang memiliki praktik buruk sering berargumen tentang tidak relevannya upaya tambahan yang diperlukan untuk praktik yang baik (karena mereka tidak melihat manfaat dari melakukannya). Meskipun pengembang dapat menyetujui ketika Anda menambahkan kasus tepi tambahan, itu tidak berarti dia menganggap itu relevan atau apakah dia akan menambahkannya sendiri.Beri dia daftar periksa, mis
Orang-orang QA dapat membantu menyusun daftar periksa
Berikan daftar periksa kepada semua pengembang, bukan hanya yang ini.
sumber
Baik.
Ini adalah kualitas yang tidak dibagikan oleh para insinyur baik.
Mengawasi kasus tepi adalah karakteristik yang hadir atau tidak pada orang. Itu tidak ada hubungannya dengan menjadi insinyur atau programmer. Perkembangan karakteristik ini dipengaruhi oleh latar belakang budaya, lingkungan hidup, peristiwa masa kecil dan pengalaman hidup. Maka sikap itu hanya diterapkan pada pekerjaan apa pun yang dilakukan individu.
Yang Anda butuhkan adalah mencari tahu apakah lelaki Anda berjenis sama yang belum mengembangkan indra tertentu ini (mungkin). Kemungkinan besar dia tidak peduli dengan alasan apa pun. Anda perlu menganalisis seluruh situasi, apakah dia bahagia dalam pekerjaannya. Jika tidak maka mungkin Anda harus melakukan sesuatu untuk membantunya terlebih dahulu.
Jika dia baik-baik saja dengan pekerjaan tetapi belum mengalami bahaya kasus tepi maka Anda dapat mulai mendidiknya. Jika dia menganggapnya serius, dia mungkin akan mengubah cara hidupnya. Meskipun saya skeptis dengan yang satu ini Anda masih bisa mencobanya.
Namun jika ia akan menjadi tipe orang yang tidak pandai dalam kasus tepi maka Anda mungkin tidak memiliki hal lain selain menghapusnya dari tim. Karakteristik ini sangat penting untuk pemrograman praktis. Sedihnya, tanpa itu bahkan orang yang hebat tidak akan menghasilkan pekerjaan yang baik.
sumber
Bisakah Anda melakukan tinjauan kode atau ulasan desain sebelumnya dalam proses?
sumber
Ajari dia untuk memprogram tes pertama. Padukan dengan dia. Anda akan menulis test case dan dia akan menulis kode untuk lulus tes.
sumber
Bisakah melibatkan QA cukup awal dalam pengembangan fitur membantu menyediakannya dengan daftar kasus tepi dekat awal untuk menutupi? Sementara beberapa orang mungkin melihat ini sebagai tidak mengharapkan pengembang untuk mencakup semuanya, ini mungkin cara untuk mengatasi hal ini jika ia cenderung melewatkan kasus-kasus batas yang mungkin dapat ditangkap oleh penguji pada awalnya.
Gagasan lain yang saya miliki di sini adalah bagaimana dia melihat masalah ini. Apakah dia benar-benar kesal dan berdetak pada dirinya sendiri untuk pola ini atau apakah dia hanya melihat ini sebagai hal yang normal dan bukan sesuatu yang dia khawatirkan untuk diselesaikan? Memang ini memang membutuhkan banyak kepercayaan dan membuatnya terbuka pada sudut pandangnya, tetapi saya pikir ada tingkat empati di sini yang dapat membantu jika Anda dapat melihat sesuatu dari sudut pandangnya.
sumber
Ada jumlah kasus tepi yang tak terbatas, yang mencakup semuanya tidak layak. Bagaimana jika seseorang melakukannya
#define TRUE FALSE
? Ini menambahkan kasus tepi, apakah Anda akan memeriksanya juga?Juga, saya tidak akan mempertimbangkan untuk membuktikan setiap fungsi dari kelas privat atau fungsi internal.
Pendekatan yang saya pilih untuk kode yang harus sangat solid dan stabil adalah:
Dengan cara ini Anda mendapatkan kesedihan aplikasi yang solid di QA, dan pada saat Anda mendapatkan rilis, aplikasi tersebut solid dan aman.
Mengatasi kesalahan itu buruk. Ok, Anda mungkin menyimpan fungsi jika file menangani nol dan mengembalikan nol, tetapi dalam kebanyakan kasus, ada kesalahan desain di suatu tempat, dan aplikasi crash adalah cara yang lebih baik untuk memaksa Anda menemukan penyebabnya. Kebanyakan kasus tepi hanya menutupi kesalahan dengan menyembunyikan masalah, misalnya - tombol berhenti berfungsi. Crash memberi tahu Anda bahwa beberapa asumsi tentang produk salah, dan Anda harus merevisi logika yang menyebabkan kerusakan.
sumber
Jika ini kasus tepi, apakah perlu dipertimbangkan? Jika kasus tepi penting maka kasus tepi perlu dimasukkan ke dalam persyaratan / fitur / cerita pengguna.
Jika kasus tepi telah dianggap sebagai bagian dari suatu pekerjaan dan perangkat diharuskan untuk ditempatkan maka mereka harus menjadi bagian dari item pekerjaan dan menurut definisi item pekerjaan tidak lengkap sampai mekanisme untuk menangani kasus tepi adalah di tempat.
Ini memberi Anda sebagai Tim Pimpin sesuatu untuk diperiksa setelah pekerjaan selesai selama diskusi pasca kerja dan memberi pengembang sesuatu untuk diperiksa saat ia menyelesaikan pekerjaan.
sumber
Kasus-kasus menarik adalah mengapa QA ada. Programmer memiliki tanggung jawab untuk mendorong pekerjaan tepat waktu. Menghabiskan seluruh waktu mereka untuk mencari kasus tepi sangat tidak efisien. Jika Anda memiliki siklus berulang yang cukup cepat, maka ini seharusnya tidak menjadi masalah sama sekali. Kasing tepi hampir tak terhingga jumlahnya. Jika itu adalah masalah dengan kasus "Core" maka saya akan sedikit khawatir. Sama seperti pengembang yang ahli dalam pengembangan, penguji juga harus ahli dalam pengujian. Ketika seorang tester menemukan masalah, mereka mengirimkannya kembali ke pengembangan. Pengembang memperbaiki masalah tersebut. Masalah terpecahkan. Waktu bagi pengembang untuk melacak setiap kasus tepi jauh lebih lama daripada waktu yang dibutuhkan siklus pengujian berulang. Perhatikan juga, ketika saya berbicara tentang pengujian, saya tidak bermaksud tes unit kotak putih, tetapi tes kotak hitam.
sumber
Itu adalah salah satu kasus di mana saya percaya pengembangan didorong oleh tes datang untuk menyelamatkan karena membantu untuk berpikir dalam hal kasus tepi dan apa pun yang dapat memecahkan kode.
sumber