Menentukan nomor kartu uji per jaringan terdengar seperti pekerjaan sepele, tetapi keputusan itu menentukan seberapa luas pengujian Anda sebenarnya. Setiap jaringan punya panjang nomor, rentang prefiks, dan aturan kode keamanan yang sedikit berbeda. Fixture yang hanya berisi satu jenis kartu akan melewatkan bug yang justru muncul pada jenis lain, dan bug seperti itu biasanya baru terlihat setelah pelanggan mengeluh.
Mengapa setiap jaringan butuh perlakuan berbeda
Perbedaan antar jaringan bukan sekadar soal angka pembuka. Panjang nomor memengaruhi seberapa banyak digit yang harus diterima kolom masukan. Jumlah digit kode keamanan memengaruhi berapa banyak karakter yang boleh diketik pengguna. Ada pula jaringan yang memakai kode keamanan di sisi depan kartu, sehingga pengguna yang memegangnya akan mencari di tempat yang berbeda dari yang diasumsikan formulir Anda.
Menyeragamkan semuanya menjadi satu pola, misalnya selalu enam belas digit dengan kode keamanan tiga digit, memang membuat kode lebih sederhana, tetapi sekaligus membuat sistem Anda tidak siap menerima sebagian kartu yang sah.
Perbedaan yang perlu diperhatikan antar jaringan
Tabel berikut merangkum hal-hal yang paling sering menjadi sumber bug pada formulir:
| Jaringan | Panjang nomor | Digit kode keamanan | Hal yang sering terlewat |
|---|---|---|---|
| Visa | Bervariasi, termasuk enam belas digit | Tiga | Panjang lain yang sah ikut ditolak |
| Mastercard | Umumnya enam belas digit | Tiga | Dua rentang prefiks utama, bukan hanya satu |
| American Express | Lima belas digit | Empat, di sisi depan | Kolom keamanan yang terlalu pendek |
| Discover | Umumnya enam belas digit | Tiga | Beberapa rentang prefiks berbeda |
| UnionPay | Enam belas sampai sembilan belas digit | Tiga | Panjang sembilan belas digit dianggap tidak sah |
| JCB | Umumnya enam belas digit | Tiga | Prefiks panjang yang dipotong terlalu cepat |
Tidak semua jaringan di atas harus Anda dukung. Yang penting adalah kesadaran bahwa pilihan Anda punya konsekuensi pada tata letak formulir dan pada kumpulan kasus uji.
Bagaimana memilih nomor untuk matriks pengujian?
Mulailah dari daftar jaringan yang benar-benar Anda terima di produksi, lalu buat satu baris per jaringan di dalam matriks pengujian. Setiap baris sebaiknya memuat satu nomor yang sah, satu nomor dengan panjang menyimpang, dan satu nomor yang checksum-nya sengaja dirusak.
Setelah matriks itu selesai, tambahkan satu kolom untuk hal yang paling mungkin berbeda antar jaringan, misalnya jumlah digit kode keamanan atau letaknya di kartu. Kolom itu akan langsung menunjukkan kasus mana yang belum pernah Anda coba. Cara paling murah untuk mengisi matriks tersebut adalah menghasilkan nomor sesuai jaringan di generator kartu virtual di situs ini, karena jumlah dan jaringannya bisa ditentukan langsung.
Apakah prefiks menentukan bank penerbit?
Tidak secara pasti. Prefiks memang menunjukkan jaringan dan sering kali juga blok penerbitan, tetapi kesimpulan bahwa sebuah nomor “milik” bank tertentu tidak bisa ditarik hanya dari beberapa digit pertama. Rentang penerbitan berpindah antar lembaga, dan satu lembaga bisa memakai banyak rentang sekaligus.
Karena itu, jangan pernah menampilkan nama bank kepada pengguna berdasarkan prefiks saja. Selain berisiko salah, tampilan seperti itu bisa membuat pengguna mengira sistem Anda mengenali lebih banyak daripada yang sebenarnya. Kalau Anda memang perlu menampilkan merek kartu, batasi pada nama jaringannya saja dan biarkan pengguna memastikan sendiri sisanya.
Mengapa panjang lima belas digit sering jadi masalah
Jaringan dengan nomor lima belas digit adalah kasus uji yang paling sering gagal, karena banyak formulir dibangun dengan asumsi enam belas digit. Gejalanya mudah dikenali: pengguna mengetik sampai selesai, lalu kolom menolak beberapa digit terakhir atau tombol kirim tetap tidak aktif.
Perbaikan yang lazim adalah menghitung panjang yang diharapkan berdasarkan prefiks, bukan menetapkan satu angka tetap. Bila pendekatan itu terlalu rumit untuk tahap awal, setidaknya longgarkan batas bawah agar nomor yang lebih pendek tetap bisa dikirim. Penjelasan tentang bagaimana panjang ditentukan per jaringan ada di uraian format nomor kartu.
Apakah nomor uji satu jaringan bisa dipakai di jaringan lain?
Umumnya tidak. Sistem perutean mengenali jaringan dari beberapa digit pertama, sehingga nomor yang berpola satu jaringan tidak akan diperlakukan sama oleh jalur jaringan lain. Di lingkungan uji, akibatnya bisa bermacam-macam: permintaan ditolak, diabaikan, atau diteruskan ke jalur yang salah, dan ketiganya sama-sama menyulitkan penelusuran masalah.
Karena itu, jangan memakai nomor dari jaringan lain hanya karena kebetulan sudah tersedia di berkas pengujian. Sesuaikan nomor dengan jalur yang sedang diuji, lalu simpan pemetaan itu di dalam matriks agar tidak ada yang menebak-nebak di kemudian hari.
Catatan untuk pengembang: menyusun matriks pengujian
Susun matriks sebagai data, bukan sebagai daftar di dalam kepala seseorang. Satu baris per kombinasi jaringan dan skenario, dengan kolom untuk nomor yang dipakai, panjang yang diharapkan, hasil yang diharapkan, dan pesan galat yang seharusnya muncul.
Simpan matriks itu di dalam kendali versi, bersebelahan dengan berkas pengujiannya. Dengan begitu, perubahan aturan untuk satu jaringan akan muncul sebagai perbedaan yang bisa dibaca dan ditinjau, bukan sebagai keputusan yang hanya diketahui orang yang mengubahnya.
Simpan juga satu kasus untuk jaringan yang tidak Anda dukung, untuk memastikan sistem menolaknya dengan sopan. Perilaku yang diinginkan mungkin bukan pesan galat keras, melainkan penjelasan bahwa kartu tersebut belum bisa diproses. Sekali Anda memutuskan perilakunya, tuliskan sebagai kasus uji agar keputusan itu tidak hilang saat ada orang baru mengambil alih kode.
Pisahkan pula pengujian tampilan dari pengujian jaringan. Yang pertama bisa dijalankan setiap kali kode berubah karena tidak memerlukan sambungan ke mana pun, sedangkan yang kedua baru perlu dijalankan ketika alur pembayaran atau konfigurasi penyedia ikut berubah. Pemisahan ini menjaga rangkaian pengujian tetap cepat tanpa mengorbankan cakupan.
Ingat juga bahwa semua nomor buatan sendiri bersifat sah secara struktur namun tidak pernah diterbitkan, sehingga hasilnya hanya berlaku untuk pengujian bentuk dan tampilan. Untuk respons jaringan yang sebenarnya, gunakan nomor sandbox dari penyedia, sebagaimana dijelaskan di halaman kartu uji Stripe. Perbedaan jumlah digit kode keamanan antar jaringan dibahas tersendiri di halaman penjelasan CVV.
Langkah berikutnya
Ambil daftar jaringan yang Anda dukung, lalu buat satu baris matriks untuk masing-masing hari ini. Setelah itu isi nomornya dari halaman generator dan jalankan seluruh baris sebagai satu rangkaian pengujian. Bila ada baris yang belum pernah Anda coba, di situlah kemungkinan besar bug berikutnya bersembunyi.