𝗦𝗽𝗲𝗰 𝗗𝗲𝗯𝘁 𝗧𝗶𝗱𝗮𝗸 𝗛𝗶𝗹𝗮𝗻𝗴 𝗦𝗮𝗮𝘁 𝗔𝗻𝗱𝗮 𝗠𝗲𝗺𝗽𝗲𝗿𝗯𝗮𝗶𝗸𝗶𝗻𝘆𝗮. 𝗜𝗮 𝗕𝗲𝗿𝗺𝗶𝗴𝗿𝗮𝘀𝗶.
Memperbaiki masalah tidak selalu menghilangkannya. Terkadang, Anda hanya memindahkannya ke tempat lain.
Baru-baru ini saya mengaudit sebuah proyek untuk menemukan spec debt. Ini adalah celah dalam instruksi yang menyebabkan bug atau perilaku AI yang buruk. Saya memperbaiki tujuh item spesifik. Setelah perbaikan, pengujian berhasil. Semuanya tampak hijau.
Namun, hutang tersebut tidak lenyap. Ia bermigrasi dari feature files ke step definitions.
Berikut adalah apa yang saya pelajari dari memperbaiki item-item ini:
- Presisi itu penting. Alih-alih mengatakan "responsnya cepat," katakanlah "respons kembali dalam waktu 12 detik setelah pengiriman pesanan." Ini memberikan jangkar pada waktu.
- Hindari ambiguitas. "Dicoba ulang 2 kali" itu tidak jelas. Apakah itu berarti total 2 percobaan atau 3? Gunakan "tidak lebih dari total 2 permintaan penagihan" agar pasti.
- Sebutkan mekanismenya. Mengatakan "inventaris dilepaskan" itu samar. Spesifikasikan bahwa "layanan inventaris menerima permintaan pelepasan untuk item X."
- Hapus jaminan palsu. Jika sebuah langkah berhasil karena fiturnya belum ada, hapus langkah tersebut. Pengujian yang berhasil untuk alur yang tidak ada adalah sebuah kebohongan.
- Definisikan "benar." Jangan pernah menggunakan kata-kata seperti "benar" atau "layak" tanpa nilai yang pasti. Gunakan "berisi order_id 123" alih-alih "berisi id yang benar."
Saya membangun sebuah framework untuk menemukan masalah-masalah ini. Ajukan lima pertanyaan ini untuk setiap skenario:
- Siapa pemilik skenario ini?
- Keputusan apa yang dibiarkan terbuka oleh ini?
- Apakah semua istilah sudah didefinisikan di sini?
- Apakah ini mendeskripsikan perilaku atau implementasi?
- Apa yang kurang dari deskripsi ini?
Jebakan terbesar adalah celah antara teks dan kode. Anda dapat menulis instruksi yang sempurna dan presisi dalam spesifikasi Anda. Namun, jika kode dasar Anda menggunakan jalan pintas untuk meloloskan pengujian tersebut, Anda tetap memiliki hutang.
Spesifikasi mengatakan "buat pesanan melalui API." Kode tersebut sebenarnya hanya menyuntikkan pesanan langsung ke dalam database untuk menghemat waktu. Pengujian berhasil, tetapi hutang tersebut berpindah dari persyaratan ke implementasi.
Jangan mencoba menulis spesifikasi yang sempurna pada percobaan pertama. Tulis, audit, dan perbaiki.
Source: https://dev.to/diyaburman/spec-debt-doesnt-disappear-when-you-fix-it-it-migrates-d25
Optional learning community: https://t.me/GyaanSetuAi
