Pada dasarnya, kami memiliki tiga proyek utama, dua di antaranya adalah layanan web, dan yang lainnya adalah aplikasi web. Sementara saya puas dengan mencakup sebanyak mungkin layanan web kami dengan tes fungsional (ketiga proyek memiliki tes unit yang tepat), tes fungsional untuk aplikasi web membutuhkan banyak waktu pengembang untuk diimplementasikan. Maksud saya dua kali, atau kadang-kadang lebih, waktu yang diperlukan untuk mengimplementasikan fungsionalitas yang sedang diuji dengan unit test.
Kebijakan manajer adalah untuk menguji setiap fungsionalitas tunggal yang kami tambahkan, meskipun tidak penting untuk bisnis (yaitu CRUD baru).
Saya setuju dengan pengujian semua fungsionalitas layanan web, karena sulit untuk mengujinya secara manual, dan juga, tes ini berjalan cepat dan tidak perlu terlalu banyak untuk diterapkan.
Jadi, apa nilai menghabiskan lebih banyak waktu untuk menulis tes fungsional, daripada menulis kode sistem, unit test dan memperbaiki QA tikets? Apakah ini normal? Bukankah kita seharusnya menulis tes fungsional hanya untuk fungsionalitas kritis dan membiarkan QA melakukan tes regresi tanpa fungsionalitas kritis?
Catatan: kami tidak mengembangkan perangkat lunak medis atau perangkat lunak NASA atau tidak ada yang kritis.
sumber
Jawaban:
Tes fungsional sangat penting. Ya, mereka membutuhkan waktu untuk menulis tetapi jika Anda menulis tes fungsional yang tepat, mereka akan lebih berharga.
Ada beberapa alasan bagus untuk melakukan tes fungsional otomatis pada aplikasi.
Pada akhirnya, ya butuh waktu untuk menulis kasus ini, tetapi Anda harus bangga menulisnya. Ini cara Anda membuktikan, di luar bayangan keraguan bahwa kode Anda berfungsi dan berfungsi dengan semua fitur lain di luar sana. Ketika QA mendatangi Anda dan mengatakan ada bug, Anda memperbaikinya, lalu menambahkannya ke ruang uji untuk menunjukkan bahwa itu diperbaiki dan memastikan tidak pernah terjadi lagi.
Ini adalah jaring pengaman Anda. Ketika seseorang masuk dan membajak proc yang disimpan dan membuat perubahan kecil sehingga itu akan bekerja dengan kode mereka, Anda akan mengetahui bahwa itu telah merusak 3 fitur lainnya dalam proses. Anda akan menangkapnya malam itu dan bukan malam sebelum batas waktu!
Sedangkan untuk menulis tes fungsional hanya untuk fungsi kritis sistem. Itu tidak akan memberi Anda seluruh gambar dan itu akan memungkinkan bug untuk menyelinap. Yang diperlukan hanyalah menambahkan satu fitur kecil yang tidak kritis terhadap sistem, tetapi berinteraksi secara tidak langsung dengan fungsi kritis sistem dan Anda memiliki potensi untuk memperkenalkan bug.
sumber
Lebih dari 2 kali ... sepertinya agak banyak bagi saya. Anda mungkin ingin menganalisis alasan untuk ini, mereka dapat mencakup:
dukungan alat buruk untuk pembuatan dan pemeliharaan tes
kontrak layanan web tidak dijelaskan secara memadai dalam desain. Pengembang perlu mengerjakan kontrak saat pengujian, yang biasanya merupakan proses penyelarasan yang memakan waktu.
Bicaralah dengan pengembang Anda.
Asumsikan Anda berkembang dalam sprint, lakukan tes fungsional ini jika hanya bagian dari sprint. Itu tidak dilakukan tanpa tes ini. Jika Anda tidak memilikinya, waktu Anda untuk pengujian integrasi setelah fase pengembangan mungkin berlipat ganda.
sumber
Apakah menghabiskan lebih banyak waktu untuk melaksanakan tes fungsional daripada mengimplementasikan sistem itu sendiri normal?
Benar. Menulis tes yang sangat bagus kemungkinan akan menghabiskan sebagian besar waktu di banyak toko (bagus).
Jadi rasio 2-1 baik-baik saja. Pengembang yang kurang berpengalaman sendiri sering tidak meluangkan waktu untuk pengujian.
sumber
Ada hukum pengembalian yang semakin berkurang. Dengan asumsi Anda menulis tes untuk kode paling berisiko pertama, nilai yang dihasilkan oleh tes lebih lanjut berkurang dari waktu ke waktu.
Tes unit adalah kode, sehingga akan mengandung bug (seperti semua kode lainnya). Memperbaiki bug-bug itu membutuhkan waktu.
Dalam pengalaman saya, unit-test mengandung lebih banyak bug daripada sistem yang mereka uji, dan memperbaikinya adalah beban yang terus menerus.
sumber
Ini tentang kualitas.
Jika Anda perlu mendapatkan pasar - Anda akan mengembangkan aplikasi Anda secepat mungkin. Anda bahkan dapat tidak memiliki tes otomatis sama sekali =) tetapi Anda akan memberikan aplikasi Anda ke auditori Anda sebelum pesaing Anda.
Tetapi jika Anda tahu bahwa pendengaran Anda tidak akan hilang, Anda akan melakukan apa pun yang Anda tidak bisa mengecewakan mereka. Setiap tiket bug akan menurunkan reputasi Anda. Bayangkan bahwa satu bug akan menghapus 50 persen dari reputasi Anda, yang berikutnya - 25 persen dan seterusnya. Jadi, bisakah ada terlalu banyak tes?
sumber
Jika dengan "apakah ini normal" Anda bertanya apakah itu umum, tidak, tentu saja tidak. Banyak tim pengembang memiliki praktik pengujian yang buruk (saya milik salah satu) dan bahkan buku berkualitas yang saya baca saran untuk menghabiskan waktu sebanyak kira-kira pengkodean fungsi daripada tes. Jika secara normal Anda bertanya apakah itu sehat, itu tergantung, tetapi dua kali lebih banyak tes daripada yang dibutuhkan lebih baik daripada tidak ada tes.
Tidak harus kritis . Saat Anda menguji suatu fungsi, Anda menguji sesuatu yang berguna bagi pengguna akhir, dan Anda bertanggung jawab untuk mengetahui (dan tidak menebak), itu sepanjang waktu berfungsi dengan benar. Jika Anda membutuhkan dua kali lebih banyak untuk tujuan itu, maka itu harus dilakukan dengan cara itu - jika mungkin.
Mungkin juga kebijakan Anda terlalu ketat tentang tes otomatis, tetapi sulit untuk mengatakan tanpa mengetahui kualitas yang mereka tuju, sumber daya mereka, dan apa lagi yang dapat mereka alokasi.
sumber