Integrasi dapat lulus happy-path test dan gagal pada hari sibuk pertama. Sistem nyata mengirim duplicate, menghilangkan field opsional, mengubah schema, membuat credential kedaluwarsa, menerapkan rate limit, dan mengembalikan success sebelum transaksi bisnis selesai.
Strategi pengujian yang kuat memeriksa contract, perilaku komponen, hasil end-to-end, dan recovery. Ia tidak bergantung pada satu test environment rapuh yang harus memuat semua sistem.
Mulai dari Business Invariant
Definisikan kondisi yang harus selalu benar:
- Setiap paid order membuat paling banyak satu fulfilment request.
- Posted invoice balance dengan transaksi sumber.
- Pelanggan tidak dapat melihat record pelanggan lain.
- Inventory tidak menjadi available dari receipt yang gagal.
Test harus membuktikan invariant saat gagal dan retry, bukan hanya membandingkan status HTTP.
Gunakan Testing Pyramid
Component test
Uji mapping, validation, state transition, idempotency, dan error classification menggunakan input terkontrol. Test ini cepat dan banyak.
Contract test
Pastikan consumer dan provider sepakat mengenai request, response, message, dan field yang digunakan. Consumer-driven contract testing menemukan breaking change tanpa men-deploy seluruh estate.
Integration test
Uji interface nyata untuk authentication, pagination, rate limit, webhook verification, file transfer, dan perilaku platform.
End-to-end test
Gunakan sedikit critical journey untuk memastikan final business state. Jaga fokus karena test ini lebih lambat dan rapuh.
Production verification
Gunakan synthetic check, canary, reconciliation, dan monitored transaction bila sesuai. Sebagian perilaku provider sulit ditiru sempurna di luar produksi.
Buat Failure Catalogue
Sertakan timeout sebelum dan setelah provider commit, duplicate, out-of-order message, field null atau unknown, invalid date dan currency, credential expiry, permission denial, rate limit, partial batch, outage, schema change, dan replay setelah jeda panjang.
Untuk setiap kegagalan, definisikan retry, dead letter, alert, reconciliation, dan human recovery.
Uji Idempotency
Kirim command yang sama secara concurrent dan setelah timeout. Pastikan hanya ada satu business result dan reference stabil.
Uji scope dan expiry idempotency key. Key untuk order baru tidak boleh menekannya, sementara retry tidak boleh membuat duplicate.
Kelola Test Data
Buat record yang dapat dikenali dan terisolasi dengan setup serta cleanup deterministik. Jangan gunakan satu “test customer” mutable untuk semua test paralel.
Mask atau sintetiskan data pribadi. Tentukan cara test event dikecualikan dari finance, komunikasi pelanggan, analytics, dan fulfilment.
Kelola External Dependency
Gunakan mock untuk component test, sandbox provider untuk interface, dan sedikit real-system test. Dokumentasikan perbedaan sandbox dari produksi.
Simpan response representatif agar kegagalan dapat direproduksi, tetapi perbarui fixture saat contract berubah.
Uji Kompatibilitas Deployment
Gunakan pola expand-and-contract:
- Tambahkan field atau perilaku baru tanpa menghapus yang lama.
- Deploy provider.
- Pindahkan consumer.
- Pastikan penggunaan lama berhenti.
- Hapus contract lama.
Contract verification harus menjadi deployment gate bagi kedua sisi.
Verifikasi Recovery
Picu dead-letter queue, replay message, rotasi credential, pulihkan koneksi, dan lakukan reconciliation. Pastikan operator dapat mengenali scope, mencegah duplicate, dan menutup exception.
Runbook yang belum pernah dilatih masih berupa asumsi.
Sebelum release, minta bukti contract, critical journey, failure test, permission, performa peak, reconciliation, monitoring, dan rollback.
Layanan integrasi sistem DualByte dapat membantu merancang contract yang dapat diuji dan membuktikan integrasi pada kondisi gagal.
Sumber
Butuh bantuan implementasi?
Konsultasi gratis dengan tim DualByte untuk solusi teknologi bisnis Anda.