Ex ante: Tampaknya ada banyak kebingungan tentang apa yang dianggap sebagai pengujian apa yang tidak. Tentu, setiap pengembang perlu menguji kodenya saat ia membuatnya, ia perlu memverifikasinya berfungsi. Dia tidak bisa menyerahkannya ke penguji sebelum dia pikir itu dilakukan dan cukup baik. Tetapi pengembang tidak melihat semuanya. Mereka mungkin tidak mengenali bug. Bug ini hanya dapat ditemukan kemudian dalam siklus pengembangan ketika pengujian menyeluruh dilakukan. Pertanyaannya adalah apakah pengembang harus melakukan pengujian semacam itu atau tidak, dan menurut pendapat saya yang sederhana ini perlu dilihat dari sudut pandang manajer proyek:
Pengembang bisa menjadi penguji, tetapi mereka seharusnya tidak menjadi penguji . Pengembang cenderung secara tidak sengaja / tidak sadar menghindari untuk menggunakan aplikasi dengan cara yang dapat merusaknya. Itu karena mereka menulisnya dan sebagian besar mengujinya dengan cara yang seharusnya digunakan.
Penguji yang baik di sisi lain, mencoba menyiksa aplikasi. Niat utamanya adalah untuk melanggarnya. Mereka sering menggunakan aplikasi dengan cara yang tidak dibayangkan oleh pengembang. Mereka lebih dekat ke pengguna daripada pengembang dan sering kali memiliki pendekatan yang berbeda untuk menguji alur kerja.
Juga, menggunakan pengembang sebagai penguji meningkatkan biaya pengembangan dan tidak menguntungkan kualitas produk sebanyak memiliki penguji khusus. Saya tidak akan membiarkan pengembang menguji coba karya mereka ketika saya bisa melakukannya dengan lebih baik oleh tester dengan harga murah. Hanya jika loop umpan balik antara pengembang dan penguji menjadi terlalu mahal, saya akan meminta pengembang saling silang kode, tetapi dalam pengalaman saya yang jarang terjadi dan sangat tergantung pada proses.
Itu tidak berarti pengembang harus ceroboh dan menyerahkan semuanya kepada tester. Perangkat lunak harus didukung oleh tes unit dan kesalahan teknis harus dikurangi seminimal mungkin sebelum menyerahkan perangkat lunak ke tester. Namun, kadang-kadang Anda harus memperbaiki di sini, memecahkan masalah di sana atau bug lain yang tidak dapat dilihat oleh pengembang, itu tidak masalah. Juga, pengujian integrasi sebagian besar harus dilakukan oleh pengembang. Tujuan utama penguji adalah untuk memverifikasi bahwa persyaratan dipenuhi.
Dalam tim sekecil itu (dan juga tergantung pada ukuran aplikasi), saya juga dapat melihat tester dalam peran hibrid, tes unit penulisan, dan tes UI. Anda pasti harus menyewa satu .
Tetapi yang lebih penting dari tester adalah pembekuan / cabang biasa. Jangan tampilkan apa pun yang belum diuji dengan benar. Ketika Anda telah menambahkan fitur atau mengubah sesuatu, semua yang ada di sekitarnya harus diverifikasi lagi. Anda hanya akan mendapatkan reputasi yang buruk jika perusahaan Anda tidak. Jangan melepaskan sesuatu yang tidak stabil. Ketika pelanggan ingin memiliki perangkat lunak pada tanggal tertentu, kemudian berhenti mengembangkannya cukup awal dan mengujinya dengan benar, sehingga Anda memiliki cukup waktu untuk perbaikan bug. Seringkali lebih baik menolak permintaan fitur menit terakhir daripada mengimplementasikannya dengan buruk atau rilis tanpa pengujian yang tepat.