Berapa banyak programmer harus membantu penguji dalam merancang tes?
Saya tidak berpikir mereka harus membantu sama sekali. Kekhawatiran saya adalah bahwa jika mereka membantu penguji dalam merancang tes untuk kode mereka sendiri, mereka akan 'menginfeksi' penguji dengan prasangka mereka sendiri dan titik-titik buta tentang kode itu.
Saya merasa bahwa persyaratan harus cukup untuk memberikan informasi yang diperlukan bagi penguji untuk membuat tes mereka. Jika ada beberapa bagian dari implementasi yang dirasa oleh para programmer, maka saya pikir itu adalah tugas mereka untuk mengimplementasikan unit test untuk menguji bagian itu atau bahkan menjalankan tes sistem informal mereka sendiri untuk menguji bagian itu.
Tidak semua orang yang saya kenal setuju dengan ini (dan saya mengerti beberapa poin mereka sampai batas tertentu). Apa pendapat orang lain tentang ini? Apakah ini dibahas dalam literatur di mana saja?
Saya pikir ada ruang bagi pengembang dan penguji untuk hidup berdampingan secara damai di ranah QA. :)
Lebih khusus lagi, saya pikir pengembang harus bertanggung jawab untuk pengujian tingkat pertama - tes unit dan tes integrasi dasar untuk memastikan bahwa barang-barang mereka berfungsi dalam banyak kasus sebelum diserahkan ke penguji.
Terserah penguji untuk membuat tes penerimaan berdasarkan persyaratan yang sepenuhnya agnostik dari setiap detail implementasi (ini biasanya disebut sebagai 'pengujian kotak hitam'). Jika ada perbedaan dalam bagaimana penguji dan pengembang memahami persyaratan, itu adalah masalah yang harus diatasi baik oleh manajer proyek (jika ada) atau dengan memastikan semua orang ada di halaman yang sama kembali pada tahap desain fitur.
sumber
Saya pikir baik pengujian dan pengembangan adalah upaya kolaborasi , jadi tentu saja (IMO), pengembang harus memberikan ide pengujian kepada penguji. Saya tidak berpikir itu menginfeksi mereka atau mengotori penguji sama sekali. Penguji, tentu saja, harus meningkatkan pengujian tersebut dengan banyak pendekatan pengujian lainnya.
Saya juga penggemar berat penguji yang membantu pengembang - saya telah melakukan brainstorming ide-ide desain dengan pengembang dan berpasangan dengan mereka untuk memperbaiki bug (dan menunjukkan bug dan perbaikan yang disarankan) berkali-kali dalam karir saya, dan tidak berpikir saya ' pernah mencemari pengembang dengan barang rampasan penguji.
Jika Anda tidak melihatnya sebagai upaya kolaboratif, Anda hanya akan memiliki kode "dilempar ke tembok" dari dev untuk menguji ... dan Anda akan berakhir dengan kualitas yang lebih rendah. Itulah kebenaran di dunia saya, tetapi (tentu saja), hmm.
sumber
Cara saya melihatnya adalah bukan tugas QA untuk menguji kode saya. Tugas penguji adalah memastikan kode saya memenuhi semua persyaratan untuk tugas itu.
Ketika saya mengirimkan sesuatu ke QA, saya memastikan mereka tahu tugas yang saya lakukan, bukan spesifik kode saya. Saya tidak pernah memberikan apa pun kepada QA yang memiliki bug 'tulang kepala' di dalamnya. Itu membuang-buang waktu saya, waktu mereka ... dan hampir semua waktu orang.
Di pekerjaan terakhir saya, kami melibatkan QA sejak awal. Itu duduk di sesi pengumpulan persyaratan, pertemuan proyek, dan pertemuan desain juga. Mereka mendengarkan dan mengajukan pertanyaan dan ketika pengembang menulis kode, mereka menulis rencana pengujian mereka. Itu bekerja dengan baik dan kami menangkap banyak masalah yang mungkin akan lolos.
sumber
Saya pikir Anda salah bicara di sini. Saya telah menjadi penguji dan pengembang, dan telah sangat diuntungkan sebagai penguji dari bimbingan oleh pengembang di bidang yang mereka anggap berisiko tinggi atau rapuh; sebagai pengembang, saya ingin penguji menemukan masalah yang belum saya selidiki secara mendalam.
Tidak ada "polusi" kecuali kode Anda adalah limbah mentah, dan itu akan menjadi alasan yang sama sekali berbeda.
Persyaratan melakukan pekerjaan yang mengerikan untuk mengkomunikasikan masalah teknis yang akan diperhatikan oleh seorang profesional QA, karena mereka menguraikan paling baik hanya apa yang berhasil ditangkap oleh analis bisnis. Pengembang yang baik akan menyadari bahwa kode mereka dioptimalkan di sekitar "jalan bahagia", dan ingin tahu apa yang mereka tinggalkan tanpa pertimbangan. Setidaknya mereka akan memiliki intuisi tentang apa yang bisa salah, dan bidang apa yang ingin mereka selidiki. Mereka juga tahu apa gambaran besarnya risiko di sekitar fitur tertentu berdasarkan desain mereka.
Sebagai penguji yang tidak memiliki panduan dari tim pengembangan, saya terkadang menggunakan pendekatan yang salah yang menghasilkan laporan bug yang baik, tetapi tidak sepenuhnya menggunakan jalur kode berisiko tinggi dan masalah yang lebih besar, yang dapat dihindari melalui kolaborasi yang lebih baik dengan tim pengembangan, dikirim ke pelanggan.
Sementara seorang penguji tentu tidak seharusnya membatasi diri untuk menguji apa yang dikatakan pengembang itu penting, mereka tidak akan rusak dengan mempelajari apa yang menjadi perhatian pengembang tentang kode tersebut. Kadang-kadang, mereka dapat memperbaiki pendekatan mereka berdasarkan pengetahuan mereka tentang implementasi. Hanya jika penguji sangat berpandangan pendek mereka akan mempertimbangkan pendapat pengembang tentang apa risikonya sebagai kata terakhir; mereka tidak akan sepenuhnya menutup hal-hal yang diidentifikasi oleh pengembang sebagai risiko rendah, tetapi mereka akan menginvestasikan lebih banyak upaya dalam hal-hal yang dapat memiliki dampak pelanggan yang lebih tinggi.
Tim QA cenderung melihat area-area yang memiliki ruang lingkup uji kombinatorial yang besar daripada pengumpul persyaratan atau pengembang suatu sistem, tetapi mereka mungkin tidak mengetahui komponen-komponen sistem yang memiliki jenis kerapuhan yang lebih halus yang mendapat manfaat dari kesadaran desain. atau implementasi sistem.
Dalam pengalaman saya, kolaborasi antara QA dan Pengembangan menghasilkan produk berkualitas lebih baik. Saya tidak akan merekomendasikan melakukan hanya handoff kotak hitam.
sumber
Sebagai seorang penguji, saya tidak keberatan sama sekali kepada pemrogram menyarankan kasus uji (meskipun itu tidak berarti saya hanya akan menempel pada kasus uji itu), atau menggambarkan detail implementasi. Kadang-kadang bisa sangat membantu untuk meminta seseorang mengatakan, "Saya pikir bit ini mungkin berisiko, saya sangat suka jika Anda menguji bit ini dengan cukup teliti". Mengetahui beberapa detail implementasi membantu saya menerapkan pengalaman bertahun-tahun untuk memilih tes yang saya pikir paling mungkin gagal. Terkadang, penyebutan singkat berarti beberapa tes tiba-tiba memperbesar hingga daftar prioritas saya.
Apakah itu mencemari saya? Saya agak tergelitik oleh gagasan programmer yang berusaha untuk menjaga kemurnian tester saya, tapi sungguh - tidak, ini adalah mitos. Lebih banyak informasi biasanya memicu lebih banyak pertanyaan bagi saya, tidak sedikit. Saya kira itu adalah pola pikir - saya tidak menemukan bug karena saya bodoh, saya menemukan masalah karena saya tipe skeptis, tidak percaya yang terlalu keras kepala untuk sepenuhnya mengambil apa pun dengan kepercayaan. Pada setiap sistem yang saya uji, saya menemukan bahwa saya menemukan lebih banyak masalah, dan lebih banyak "menarik", semakin dalam saya memahaminya.
sumber
Saya suka meninjau rencana pengujian dan menyarankan kasus uji tambahan yang mungkin tidak dipikirkan QA. Saya tidak yakin bagaimana itu akan "menginfeksi penguji dengan prasangka saya sendiri".
sumber
Saya menemukan diri saya dalam posisi yang aneh ini sehingga saya perlu menerapkan dan menulis kasus uji di Selenium sesudahnya karena kami kekurangan staf QA. Saya percaya pengembangan yang digerakkan oleh tes akan sangat membantu tetapi belum diadaptasi di toko saya.
Satu hal yang menurut saya sangat membantu dalam penulisan tes adalah saya menemukan bug saat menulis tes. Saya pikir dalam perspektif yang berbeda untuk membantu saya menulis kode yang lebih kuat. Tetapi memang benar bahwa cakupan tes bisa terbatas. Dalam hal ini, QA selalu dapat memberi tahu kami apa yang ingin mereka liput. Atau, kita dapat secara pasif menambahkan lebih banyak tes saat kita melihat kesalahan.
sumber
Saya melakukan QA, dan tidak seperti kebanyakan domain, mengetahui cara menggunakan kode kami jauh lebih sulit daripada mempelajari bahasa pemrograman apa pun. Jadi kami mengandalkan pengembang untuk memberi kami kasus uji untuk fitur whizzbang baru mereka, karena kami tidak tahu caranya. Bagaimanapun masalah QA lebih untuk menangkap regresi dan hal-hal yang rusak daripada pengujian asli fitur baru. Dalam setiap kasus ketika hasilnya adalah perhitungan yang kompleks, sulit untuk mengetahui apa yang merupakan jawaban yang benar dan apa yang salah, atau bahkan jika penghentian yang abnormal adalah hal yang baik atau buruk.
Bagaimanapun, seorang pengembang, jika dia jujur mungkin tahu sesuatu tentang kerentanan bayinya. Dia mungkin tahu pada nilai parameter apa, dia harus memilih algoritma yang berbeda, atau domain dalam pencarian tabel atau apa pun. Mengetahui bahwa, jika dia tulus tentang pengujian yang ketat, dia harus dapat menghasilkan serangkaian tes berukuran wajar yang mencakup banyak kode.
sumber