Generator nomor identitas nasional menyusun nilai yang bentuknya sesuai aturan satu negara, lengkap dengan panjang dan digit pemeriksa yang benar, tanpa mengambil data dari siapa pun. Kebutuhan ini muncul setiap kali sebuah sistem harus memeriksa nomor identitas sebelum ada pengguna sungguhan, misalnya pada alur pendaftaran berbayar, verifikasi usia, atau pengajuan layanan keuangan. Uraian berikut menjelaskan mengapa format nomor identitas berbeda-beda menurut negara, mengapa digit pemeriksa menentukan kualitas data uji, dan di mana batas yang tidak boleh dilewati meski seluruh pekerjaan berlangsung di lingkungan Anda sendiri.
Format nomor identitas berbeda-beda menurut negara
Tidak ada satu bentuk nomor identitas yang berlaku di seluruh dunia. Setiap negara menetapkan panjang, susunan, dan aturan penerbitannya sendiri, dan aturan itu berubah dari waktu ke waktu. Sebagian negara memakai sembilan digit angka, sebagian memakai sebelas digit dengan dua digit pemeriksa, dan sebagian lagi memakai campuran angka serta huruf yang menyandikan tanggal lahir atau wilayah.
Perbedaan itu bukan sekadar soal selera. Nomor identitas sering menyandikan keterangan, misalnya tanggal lahir, jenis kelamin, atau daerah penerbitan, dan keterangan itu dipakai oleh sistem lain untuk pemeriksaan silang. Sebuah nomor yang panjangnya benar tetapi susunan bagiannya salah akan tampak wajar bagi pengembang yang tidak mengenal aturannya, sementara sistem di negara bersangkutan menolaknya seketika.
Bagi tim yang menguji alur lintas negara, akibatnya jelas: model data harus mampu menampung bentuk yang berbeda-beda tanpa memaksa semuanya masuk ke satu cetakan. Halaman ini membahas prinsipnya, sedangkan perbandingan panjang nomor antarnegara ada pada panjang nomor identitas menurut negara, yang berguna ketika Anda perlu memutuskan berapa lebar kolom yang harus disediakan.
Mengapa digit pemeriksa membuat perbedaan besar?
Karena digit pemeriksa adalah pembeda antara data uji yang benar-benar berguna dan deretan angka yang kebetulan panjangnya pas. Nomor tanpa digit pemeriksa yang sah akan ditolak oleh pemeriksaan pertama di sistem mana pun, sehingga pengujian Anda berhenti di pintu masuk dan tidak pernah menyentuh logika yang sebenarnya ingin diuji. Sebaliknya, nomor dengan digit pemeriksa yang benar akan lolos ke tahap berikutnya, dan di situlah kutu yang sebenarnya bersembunyi.
Digit pemeriksa bekerja dengan menghitung ulang sebagian digit lainnya menurut aturan tertentu, lalu membandingkan hasilnya dengan digit terakhir. Bila satu digit diubah, hasil hitungannya hampir selalu berubah, sehingga kesalahan ketik dan digit yang tertukar posisinya langsung terdeteksi. Algoritma semacam ini dipakai pada nomor identitas, nomor pajak, dan nomor rekening di banyak negara, dengan variasi aturan yang berbeda-beda. Ringkasan berbagai algoritma itu ada pada ikhtisar algoritma digit pemeriksa.
Yang tidak diperiksa oleh digit pemeriksa adalah apakah nomor itu benar-benar diterbitkan kepada seseorang. Ia hanya memastikan susunan digitnya konsisten secara aritmetika. Karena itu, data uji dengan digit pemeriksa yang sah tetap tidak menunjuk siapa pun, dan justru sifat itulah yang membuatnya aman dipakai berulang kali.
Mengapa panjang nomor identitas tidak boleh dipatok?
Karena panjang yang dipatok akan menolak seluruh negara yang memakai bentuk berbeda. Sistem yang menyimpan nomor identitas dalam satu kolom dengan panjang tetap akan memotong nilai yang lebih panjang dan menolak nilai yang lebih pendek, dan keduanya adalah kesalahan yang baru terlihat setelah ada pengguna dari negara tersebut. Memperbaiki panjang kolom pada basis data yang sudah berisi jutaan baris jauh lebih mahal daripada menyediakannya sejak awal.
Masalah kedua muncul pada pemeriksaan di lapisan aplikasi. Aturan validasi yang menuntut panjang tertentu sering ditulis ketika produk hanya melayani satu negara, lalu diterapkan ke seluruh dunia tanpa ditinjau ulang. Akibatnya, pengguna dari negara lain menerima pesan kesalahan yang membingungkan, dan tim dukungan menerima keluhan yang sebenarnya berakar pada satu baris aturan yang tidak pernah diperbarui.
Jalan keluarnya adalah memisahkan pemeriksaan menurut negara, bukan menerapkan satu aturan untuk semuanya. Panjang minimum dan maksimum ditetapkan per negara, aturan digit pemeriksa ditetapkan per negara, dan kolom penyimpanan dibuat cukup lebar untuk menampung bentuk terpanjang yang perlu dilayani. Data uji yang dihasilkan situs ini mengikuti prinsip itu: panjang dan susunan nilainya ditentukan oleh negara yang Anda pilih, bukan oleh satu cetakan tetap.
Contoh format negara yang perlu diketahui
Beberapa negara memakai nomor yang hanya diperiksa bentuknya. Nomor identitas Amerika Serikat terdiri dari sembilan digit dengan pemisah kebiasaan, dan sebagian rentangnya sengaja tidak dipakai untuk penerbitan. Karena pemeriksaannya hanya pada bentuk, data uji dengan pola yang benar sudah cukup, dan rentang yang tidak dipakai justru perlu dihindari agar data uji tidak menyerupai nomor yang mungkin pernah diterbitkan. Penjelasannya ada pada format dan rentang nomor identitas Amerika Serikat.
Sebagian negara lain memakai digit pemeriksa yang dihitung. Nomor identitas wajib pajak Brasil terdiri dari sebelas digit dengan dua digit pemeriksa di ujungnya, dan aturan perhitungannya sudah baku. Turki memakai sebelas digit dengan digit pemeriksa tersendiri. Spanyol memakai nomor dengan huruf sebagai digit pemeriksa, sehingga nomor di sana bukan hanya angka. Indonesia memakai enam belas digit yang menyandikan wilayah dan tanggal lahir, sedangkan Vietnam memakai dua belas digit.
Cina memakai delapan belas digit dengan digit pemeriksa yang dapat berupa angka atau huruf. Rusia memakai nomor wajib pajak dan nomor asuransi sosial yang keduanya berbeda panjang serta berbeda aturan. Perbedaan sebanyak ini menjelaskan mengapa aturan validasi yang ditulis sebagai satu pemeriksaan panjang tunggal hampir selalu salah. Rangkuman aturan per negara tersedia pada aturan validasi nomor identitas menurut negara.
Batas kepatuhan saat menguji alur verifikasi identitas
Data identitas termasuk kelompok data yang paling ketat pengaturannya, dan lingkungan pengujian umumnya jauh lebih longgar pengamanannya daripada lingkungan produksi. Salinan basis data produksi yang dibawa ke lingkungan pengujian membawa serta kewajiban hukum yang tetap berlaku meski tidak ada satu pun baris yang dibaca. Karena itu, aturan pertama adalah tidak membawa data orang sungguhan ke lingkungan pengujian sama sekali.
Aturan kedua adalah tidak memakai data uji untuk menyamar sebagai orang lain. Tidak ada nomor yang dihasilkan alat ini yang dapat dipakai membuka rekening, menandatangani perjanjian, atau melewati pemeriksaan identitas yang sungguhan. Yang diuji adalah perangkat lunak Anda: apakah formulirnya menerima bentuk yang sah, apakah validasinya menolak bentuk yang salah dengan pesan yang jelas, dan apakah alurnya berjalan sampai selesai di lingkungan staging.
Aturan ketiga adalah melabeli data uji dengan jelas. Beri penanda pada setiap catatan yang menandakan bahwa ia berasal dari generator, dan pisahkan penyimpanannya dari data sungguhan. Aturan perlindungan data yang berlaku umum dibahas pada aturan perlindungan data dan data identitas uji, dan prinsip dasarnya berlaku luas: data yang tidak berasal dari orang tidak membawa risiko yang sama, tetapi hanya bila Anda benar-benar menjaganya tetap terpisah.
Kasus uji untuk alur verifikasi identitas
Uji bentuk yang sah untuk setiap negara yang Anda layani, lalu uji bentuk yang salah untuk masing-masingnya. Uji nomor dengan panjang yang kurang satu digit, dengan panjang yang lebih satu digit, dengan huruf di posisi yang seharusnya angka, dan dengan digit pemeriksa yang sengaja diubah. Keempat kasus itu menutup sebagian besar kesalahan nyata, dan semuanya dapat dijalankan tanpa memerlukan data dari orang sungguhan.
Tambahkan kasus yang berkaitan dengan tanggal lahir, karena banyak nomor identitas menyandikan tanggal di dalamnya. Uji tanggal yang tidak masuk akal, tanggal pada batas usia minimum, dan tanggal lahir yang membuat seseorang berusia tepat pada hari pengujian. Pengujian batas usia secara umum dibahas pada pengujian verifikasi usia, dan kasus semacam itu sering menjadi sumber kegagalan yang tidak ditemukan pengujian biasa.
Uji juga perilaku sistem ketika nomor identitas dikosongkan atau diisi nilai yang sama dua kali. Sistem yang baik akan menolak nomor yang sudah terdaftar dengan pesan yang tidak membocorkan keberadaan data orang lain. Untuk mengisi seluruh kasus itu, generator nomor identitas di situs ini menyusun nilai menurut negara yang Anda pilih, dengan kunci yang membuat hasilnya dapat diulang.
Menyimpan dan memberi label data identitas uji
Perlakukan berkas data identitas uji seperti berkas rahasia, meskipun isinya tidak menunjuk siapa pun. Kebiasaan itu melindungi Anda dari dua hal sekaligus: kebingungan ketika seseorang menemukan berkas itu tanpa konteks, dan pencampuran yang tidak sengaja ke lingkungan produksi. Beri nama berkas yang menyebut asalnya, dan simpan di luar repositori kode bila memungkinkan.
Sediakan juga mekanisme yang membuat data uji mudah dikenali di dalam basis data. Penanda sederhana pada salah satu kolom sudah cukup, asalkan penanda itu tidak dipakai oleh logika bisnis mana pun. Bila penanda ikut dipakai untuk memfilter laporan, data uji akan menghilang dari laporan yang justru ingin Anda periksa.
Menyusun data uji untuk beberapa negara sekaligus
Bila produk Anda melayani beberapa negara, data uji identitas perlu mewakili setiap negara yang dilayani dan bukan hanya satu di antaranya. Siapkan satu contoh yang sah dan satu contoh yang salah untuk setiap negara, lalu jalankan keduanya pada alur yang sama. Perbedaan perilaku antarnegara biasanya baru terlihat pada langkah ini, karena alur yang sama dapat berjalan lancar untuk satu negara dan gagal untuk negara lain.
Perhatikan juga perbedaan antara negara yang memakai digit pemeriksa dan negara yang hanya memeriksa bentuk. Untuk kelompok pertama, uji nilai dengan digit terakhir yang sengaja diubah, karena di situlah kesalahan ketik sebenarnya terdeteksi. Untuk kelompok kedua, uji panjang serta posisi pemisahnya, karena aturan bentuk biasanya lebih longgar tetapi tetap memiliki batas yang jelas dan perlu diuji satu per satu.
Himpunan lintas negara juga berguna untuk memeriksa perilaku tampilan. Kolom yang sama dapat menampung panjang yang sangat berbeda, dan satu negara mungkin tidak memiliki padanan untuk kolom yang di negara lain wajib diisi. Kasus semacam ini sering terlewat ketika pengujian hanya memakai satu negara, dan baru muncul ketika pengguna dari negara lain mencoba mendaftar.
Simpan himpunan itu dalam berkas yang menyebut negaranya pada setiap baris, agar pengujian yang sedang gagal dapat disaring dengan cepat dan tidak perlu dijalankan seluruhnya.
Langkah berikutnya
Mulailah dengan mendaftar negara yang benar-benar Anda layani, lalu tetapkan aturan panjang dan digit pemeriksa untuk masing-masingnya. Sesudah itu, uji setiap aturan dengan satu contoh yang sah dan satu contoh yang sengaja salah, dan pastikan pesan kesalahannya dapat dipahami pengguna tanpa membocorkan informasi apa pun.
Akhirnya, ingat kembali sifat datanya. Seluruh nomor identitas yang dihasilkan situs ini adalah data sintetis untuk menguji perangkat lunak, mengisi lingkungan staging, dan melatih alur verifikasi milik Anda sendiri. Nilainya mengikuti bentuk yang berlaku agar sistem Anda teruji dengan jujur, tetapi tidak satu pun menunjuk orang, kewarganegaraan, atau rekening yang sungguh ada, dan tidak satu pun boleh dipakai untuk melewati pemeriksaan identitas yang sebenarnya.