Kode OTP di pengujian otomatis adalah salah satu bagian yang paling sering membuat rangkaian pengujian gagal secara acak. Kodenya dikirim lewat surat, jadi pengujian harus menunggu, mencari, membaca, lalu mengisi kode itu ke formulir dalam waktu yang terbatas. Setiap langkah di situ bisa gagal karena sebab yang tidak ada hubungannya dengan kode aplikasi yang sedang diuji. Halaman ini membahas cara membuat langkah itu cukup tahan untuk dipercaya.
Di mana kode masuk ke dalam alur pengujian
Kode sekali pakai biasanya muncul di beberapa titik, dan setiap titik punya skenario kegagalannya sendiri.
- Pendaftaran akun baru, untuk membuktikan alamatnya bisa dibuka.
- Masuk dari perangkat yang belum dikenal.
- Konfirmasi tindakan sensitif, misalnya pemindahan dana atau perubahan kata sandi.
- Verifikasi nomor telepon, bila kode dikirim lewat pesan singkat, bukan surat.
Setiap titik itu perlu punya pengujiannya sendiri, karena laju pembatasan dan masa berlaku kodenya bisa diatur berbeda-beda oleh aplikasi Anda.
Daftar itu sebaiknya diperiksa kembali setiap kali ada fitur baru, karena fitur yang tampak tidak berhubungan pun kadang memerlukan konfirmasi lewat kode. Mengganti alamat penagihan, menambahkan rekening penerima dana, dan mengundang anggota tim adalah contoh perubahan yang sering diam-diam menambah satu titik pengiriman baru.
Tiga cara mendapatkannya
Cara pertama, ambil kodenya dari layanan surat sungguhan. Pengujian membuat alamat, memicunya, lalu membaca kotak yang bersangkutan. Cara ini paling dekat dengan kenyataan, tetapi paling lambat dan paling mudah terganggu oleh jaringan.
Cara kedua, hentikan suratnya di dalam mesin pengujian dan baca langsung dari sana. Cara ini cepat dan tidak bergantung pada internet, tetapi tidak membuktikan bahwa suratnya bisa menembus jaringan luar. Rinciannya ada di menangkap email pengujian di CI.
Cara ketiga, minta aplikasi membocorkan kodenya lewat jalur khusus untuk pengujian. Cara ini biasanya dihindari, karena menambahkan jalur yang hanya hidup di lingkungan uji berarti Anda tidak lagi menguji jalur yang dipakai pengguna sungguhan.
Pilihan di antara ketiganya sebaiknya tidak dianggap permanen. Banyak tim memakai cara kedua untuk pengujian harian yang berjalan cepat, lalu menambahkan cara pertama sebagai pemeriksaan berkala yang lebih jarang. Cara ketiga paling baik dihindari untuk alur yang penting, karena jalur yang hanya hidup di lingkungan uji tidak pernah membuktikan apa pun tentang pengalaman pengguna.
Mengambil kode dari kotak surat
Bila Anda memilih cara pertama, langkahnya berurutan dan masing-masing perlu penanganan yang rapi. Pertama, tunggu sampai surat yang diharapkan muncul. Kedua, pilih surat yang benar di antara semua yang ada. Ketiga, ambil kodenya dari isi surat. Keempat, isikan ke formulir dan kirim.
Langkah kedua yang paling sering dilupakan. Kotak bisa memuat surat lain dari kasus uji sebelumnya, pengiriman ulang dari percobaan yang gagal, atau pesan dari sistem lain. Bila pengujian sekadar mengambil kode pertama yang ditemukannya, ia bisa mengisi kode yang salah dan menghasilkan kegagalan yang membingungkan.
Cara yang lebih aman adalah menyaring berdasarkan alamat tujuan, lalu memilih pesan yang paling baru. Bila subjek suratnya konsisten, penyaringan berdasarkan subjek juga membantu, tetapi jangan bergantung pada teks subjek yang bisa berubah karena terjemahan atau penyuntingan templat.
Mengapa pengambilan kode sering gagal?
Ada beberapa sebab yang berulang, dan semuanya bisa diantisipasi.
Suratnya belum tiba pada saat pengujian memeriksa. Ini penyebab paling umum, dan jawabannya bukan menambah waktu jeda, melainkan memeriksa berulang sampai batas waktu tertentu.
Kode lama masih ada di kotak. Bila penyaringan tidak memilih pesan terbaru, pengujian bisa memakai kode dari percobaan sebelumnya yang sudah tidak berlaku.
Kode yang diambil tidak lengkap. Panjang kode bisa berbeda antar templat, dan pola pengambilan yang terlalu kaku akan gagal pada templat yang tidak biasa.
Permintaan kirim ulang dibatasi. Aplikasi yang baik memang membatasi jumlah permintaan ulang, dan pembatasan itu akan terpicu bila pengujian mencoba berkali-kali dalam waktu singkat.
Kode sudah kedaluwarsa sebelum sampai ke formulir. Ini terjadi bila antara pengambilan dan pengisian ada langkah lain yang memakan waktu, misalnya memuat halaman verifikasi yang lambat.
Ada pula sebab yang berasal dari sisi aplikasi: meminta kode baru bisa membatalkan kode sebelumnya. Bila pengujian meminta kode baru sementara kode lama masih terbuka di halaman lain, kode yang diisikan bisa saja sudah tidak berlaku. Aturan seperti ini jarang terdokumentasi, dan cara menemukannya adalah dengan sengaja meminta kode dua kali di dalam satu pengujian.
Kapan manusia masih harus dilibatkan?
Jawaban jujurnya: pada beberapa situasi, ya. Ketika sebuah layanan memblokir akses otomatis dengan sengaja, ketika pemeriksaan identitas mengharuskan keterlibatan manusia, atau ketika lingkungan uji sedang bermasalah, jalur cadangan manual tetap diperlukan.
Yang perlu dijaga adalah batasnya. Jalur manual harus dipakai sebagai cadangan, bukan sebagai cara utama. Bila pengujian rutin Anda selalu berakhir dengan seseorang membuka kotak surat dan menyalin kode, yang Anda miliki bukan pengujian otomatis, melainkan daftar langkah manual yang dibungkus skrip. Tetapkan juga batas waktu untuk jalur cadangan itu, supaya pengujian tidak menggantung selamanya menunggu seseorang.
Mencobanya dengan kotak sementara situs ini
Untuk memeriksa jalur yang benar-benar melewati jaringan surat, email sementara di situs ini bisa dipakai sebagai tujuan sementara. Buat alamat, picu pengiriman kode dari sistem Anda, lalu buka pesannya dan salin kode yang terdeteksi. Cara ini cukup untuk memastikan konfigurasi pengiriman Anda masih bekerja, tanpa menunggu kotak surat pribadi.
Perlu diingat bahwa alamat seperti ini dibuat untuk pengujian dan penerimaan pesan yang bersifat sesaat, dan tidak boleh dipakai sebagai identitas atau bukti kepemilikan apa pun.
Untuk pengembang: pemilihan pesan, batas tunggu, dan pengulangan
Empat kebiasaan berikut membuat pengujian berbasis kode jauh lebih stabil.
Pertama, pilih pesan dengan aturan yang tegas. Saring berdasarkan alamat tujuan, ambil pesan terbaru, dan catat waktu kedatangannya. Bila lebih dari satu pesan cocok, jangan menebak; gunakan waktu sebagai penentu, atau gagalkan pengujian dengan pesan yang menyebutkan berapa pesan yang ditemukan.
Kedua, ganti jeda tetap dengan pemeriksaan berulang. Tentukan batas waktu keseluruhan yang masuk akal untuk lingkungan Anda, lalu periksa berkala sampai kondisinya terpenuhi. Ketika batas itu tercapai, sertakan informasi yang berguna di pesan kegagalan: alamat yang ditunggu, jumlah pesan yang ada di kotak, dan waktu tunggu yang sudah dihabiskan.
Ketiga, jangan matikan pembatasan demi pengujian. Pembatasan kirim ulang adalah bagian dari perilaku yang harus diuji, bukan penghalang yang harus disingkirkan. Ujilah pembatasan itu pada kasus tersendiri, dan pastikan pesan yang muncul ketika batasnya tercapai cukup jelas. Pola pengujian yang lebih luas untuk alur ini dibahas di pengujian verifikasi email.
Keempat, tangani surat kembar. Karena pengiriman bisa mengulang, dua surat bisa datang dengan kode yang berbeda. Tentukan mana yang dianggap sah menurut aplikasi Anda, lalu pastikan pengujian mengikuti aturan yang sama.
Langkah berikutnya
Ambil satu alur yang memakai kode, lalu ganti jeda tetapnya dengan pemeriksaan berulang dan penyaringan pesan terbaru. Sesudah itu, ukur berapa lama alur itu benar-benar memakan waktu dalam beberapa kali percobaan; angka itulah dasar untuk menetapkan batas tunggu yang wajar di lingkungan Anda.