Gunakan pengujian sebagai bukti
SelesaiPilih pemeriksaan yang dapat menolak perilaku keliru. Tinjau pengujian yang dihasilkan dengan ketelitian yang sama seperti implementasi yang dihasilkan.
Diterbitkan oleh TaigaCara kami menulis
Periksa pemahaman AndaPengujian yang dihasilkan menggunakan mock fungsi otorisasi agar selalu mengizinkan akses. Apa yang dibuktikan oleh hasil lulus?Kerjakan latihan
Hal yang akan dipelajari
- Hubungkan setiap persyaratan penting dengan pemeriksaan yang bermakna.
- Bedakan bukti unit, integrasi, dan end-to-end.
- Deteksi pengujian yang mengulang asumsi keliru yang sama dengan implementasi.
Mulai dari persyaratan
Pengujian merupakan bukti untuk klaim spesifik. Eksekusi pengujian yang berhasil tidak membuktikan setiap sifat perangkat lunak. Sebelum meminta pengujian, identifikasi perilaku yang penting dan cacat yang harus dideteksi setiap pemeriksaan.
Untuk ekspor organisasi fiktif, persyaratan utamanya adalah isolasi data. Pengguna dalam organisasi A tidak boleh menerima data organisasi B. Pengujian yang hanya memeriksa unduhan berhasil tidak membuktikan persyaratan ini.
Minta agen menjelaskan hubungan antara persyaratan dan assertion. Ini memudahkan deteksi kasus yang belum tercakup sebelum kumpulan pengujian menjadi besar.
Pilih cakupan pengujian yang sesuai
Unit test dapat memeriksa transformasi kecil dengan cepat. Pengujian integrasi dapat memeriksa cara komponen bekerja bersama. Pengujian end-to-end dapat memeriksa rangkaian tindakan penting pengguna melalui aplikasi yang di-deploy atau aplikasi yang mewakili kondisi tersebut.
Gunakan cakupan tersempit yang memberikan bukti yang diperlukan. Formatter tidak memerlukan pengujian browser lengkap untuk setiap input. Batas otorisasi mungkin memerlukan route dan jalur akses data nyata. Interaksi browser kritis memerlukan bukti tentang antarmuka yang dirender.
| Klaim | Contoh bukti |
|---|---|
| Output CSV melakukan escaping tanda kutip dengan benar | Unit test dengan tanda kutip dalam field |
| Organisasi lain tidak dapat membaca ekspor | Pengujian integrasi melalui otorisasi nyata |
| Pengguna keyboard dapat memulai ekspor | Pengujian browser dan peninjauan keyboard manual |
| Ekspor yang gagal memberikan error yang berguna | Pemeriksaan jalur kegagalan pada antarmuka relevan |
Tidak ada persentase tetap jenis pengujian yang sesuai untuk setiap sistem. Pilih berdasarkan kegagalan yang perlu dideteksi dan biaya pemeliharaan pemeriksaan.
Hindari asumsi keliru yang digunakan bersama
Agen dapat menulis implementasi dan pengujian berdasarkan kesalahpahaman yang sama. Keduanya dapat sesuai satu sama lain sementara persyaratan tetap tidak terpenuhi.
Misalkan implementasi memfilter data berdasarkan ID organisasi yang diberikan dalam permintaan. Pengujian menggunakan ID yang sama untuk pengguna yang masuk dan permintaan. Pengujian lulus. Kasus yang belum dicakup adalah pengguna yang meminta ID organisasi berbeda.
Tambahkan kasus itu melalui identitas tepercaya dan jalur otorisasi yang sebenarnya. Mock yang selalu mengembalikan “diizinkan” tidak dapat membuktikan isolasi tenant. Mock hanya membuktikan perilaku setelah otorisasi berhasil.
Verifikasi bahwa pengujian dapat gagal
Untuk cacat yang diketahui, jalankan pengujian regresi baru terhadap versi yang cacat dalam branch terisolasi. Konfirmasikan bahwa pengujian gagal karena alasan yang dimaksud. Lalu terapkan perbaikan dan jalankan ulang.
Pengujian yang gagal karena fixture tidak dapat dimuat belum menjadi bukti tentang perilaku bisnis. Periksa kegagalannya, bukan hanya exit code.
Untuk perubahan lebih luas, mutation testing dapat membantu menilai apakah perubahan kode tertentu menyebabkan kegagalan pengujian. Metode ini memiliki biaya dan tidak menggantikan peninjauan persyaratan. Gunakan ketika bukti tambahan mendukung keputusan berdampak penting.
Jaga bukti tetap terhubung dengan perubahan
Jalankan pemeriksaan yang relevan pada revisi akhir. Catat pemeriksaan yang dilewati dan alasannya. Hasil dari commit sebelumnya mungkin tidak lagi berlaku setelah perbaikan hasil peninjauan.
Jaga pengujian tetap mudah dipahami. Utamakan penyiapan dan assertion yang eksplisit daripada helper besar yang menyembunyikan kondisi penting. Hapus pemeriksaan berulang jika menambah biaya pemeliharaan tanpa mendeteksi kegagalan berbeda.
Peninjau harus dapat menyatakan hal yang dibuktikan pengujian dan hal yang masih belum pasti. Penjelasan itu lebih berguna daripada jumlah pengujian yang besar.
Kerjakan latihan
Pilih satu pengujian yang dihasilkan. Nyatakan persyaratan yang diperiksanya. Masukkan sementara cacat yang relevan dalam branch terisolasi. Konfirmasikan bahwa pengujian gagal karena alasan yang dimaksud, lalu pulihkan kode. Catat hal yang masih belum dicakup pengujian.
Unduh lembar kerja (Markdown)Menonaktifkan pilihan ini menghapus seluruh kemajuan yang tersimpan dalam browser.
Kemajuan tetap tersimpan dalam browser ini. Tanpa akun atau pelacakan.
Sumber dan bacaan lanjutan
- Google Engineering Practices: Review tests for useful assertions ↗
- Google Testing Blog: Test scope and feedback ↗