CLOUSD
Buka akun
Testing aplikasi

Cara testing aplikasi mobile di berbagai negara

"Negara" di aplikasi Android terdiri dari empat sinyal terpisah. Cara mengatur masing-masing dalam pengujian, kenapa ketidakcocokan antarsinyal menemukan bug terbaik, dan cara mengecek listing toko serta harga per pasar.

Sebuah aplikasi bisa berperilaku berbeda di São Paulo dan di Berlin karena alasan yang tidak pernah terlihat saat code review. Backend menebak negara dari alamat IP. Ponsel memformat uang berdasarkan locale-nya. Jam mengikuti zona waktu. Play Store menampilkan katalog dan harga sesuai negara akun.

Untuk menguji aplikasi mobile di berbagai negara, Anda mengendalikan setiap sinyal itu secara terpisah, lalu mengecek apa yang dilakukan aplikasi saat sinyal-sinyalnya tidak sepakat. Panduan ini menunjukkan cara mengatur masing-masing di Android, pengecekan format dan sisi server yang menangkap sebagian besar bug pasar, dan cara memverifikasi listing toko serta harga untuk negara tempat Anda tidak berada.

Empat sinyal yang berarti "negara"

SinyalAsalnyaYang diubahnyaCara mengaturnya saat pengujian
Lokasi jaringanalamat IP tempat ponsel terhubungaturan geo di backend, feature flag, edge CDN, alur persetujuan, katalog kontenponsel yang terhubung dari negara itu
Locale perangkatbahasa sistem, atau bahasa per aplikasi di versi 13 ke atasbahasa, format angka, tanggal, dan mata uang, aturan bentuk jamak, arah teksSetelan, atau cmd locale set-app-locales
Zona waktupengaturan tanggal dan waktustempel waktu, "hari ini", reset harian, notifikasi terjadwalSetelan, atau cmd alarm set-timezone
Negara Playprofil pembayaran akun Googlekatalog Play Store, ketersediaan aplikasi, mata uang Play Billingakun uji yang terdaftar di negara itu

Aplikasi yang membaca TelephonyManager.getSimCountryIso() menambah sinyal kelima, yaitu negara kartu SIM. Uji yang satu ini di ponsel fisik dengan SIM lokal.

Ketidakcocokan menemukan bug yang sebenarnya

Pengguna sungguhan jarang punya keempat sinyal yang sepakat. Engineer dari AS yang sedang dinas ke Jerman punya ponsel en-US, akun Play AS, alamat IP Jerman, dan setelah mendarat, waktu Berlin. Mahasiswa Brasil di Lisbon membaca dalam pt-BR dari alamat Portugal. Bug hidup di celah-celah itu:

  • Backend menampilkan harga dalam euro karena IP, sementara Play Billing menagih dalam dolar sesuai akun.
  • Aplikasi memilih bahasa dari IP dan mengabaikan bahasa yang dipilih pengguna.
  • "Hari ini" dihitung di server dalam UTC, sehingga streak harian ter-reset pukul 21.00 bagi seseorang di São Paulo.
  • Permintaan persetujuan yang dikaitkan dengan IP muncul lagi bagi pengguna yang sudah menjawabnya di negara asal.

Tentukan sinyal mana yang menggerakkan fitur mana, tuliskan, dan uji setidaknya satu kombinasi yang tidak cocok untuk setiap pasar.

Siapkan ponsel di negara sasaran

Untuk sinyal jaringan, Anda butuh ponsel yang benar-benar terhubung dari negara tersebut. Ponsel fisik di kantor atau lab lokal bisa melakukannya, begitu juga cloud phone yang ditempatkan di sebuah negara. Di Clousd, ponsel terhubung dari negara yang Anda pilih, misalnya AS, Inggris, Jerman, Brasil, Indonesia, dan 40 negara lainnya, dengan zona waktu dan bahasa yang sesuai. Halaman region mencantumkan semuanya, dengan halaman untuk pasar seperti Brasil dan Jerman.

Pastikan apa yang dilaporkan ponsel sebelum menguji aplikasi:

adb shell getprop persist.sys.timezone
adb shell date
adb shell cmd locale get-app-locales com.example.app

Untuk sisi jaringan, buka halaman yang menampilkan negara klien dari browser ponsel, atau pantau log backend Anda sendiri. Cek apa yang dikembalikan penyedia geolokasi Anda untuk alamat itu, karena tiap database bisa berbeda, dan jawaban yang penting adalah yang dipakai backend Anda.

Pengecekan locale dan format

Sebagian besar bug negara adalah bug format. Biarkan platform yang bekerja, lalu uji bahwa Anda memang membiarkannya:

  • Mata uang. Format dengan NumberFormat.getCurrencyInstance(locale), jangan pernah dengan menempelkan simbol ke angka. Untuk 1234.56, pt-BR menghasilkan R$ 1.234,56 dan de-DE menghasilkan 1.234,56 €: simbolnya berpindah dan pemisahnya bertukar.
  • Tanggal dan waktu. Gunakan DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM) dan hari pertama dalam seminggu sesuai locale. Cek format jam 12 dan 24 jam.
  • Bentuk jamak. Bahasa Indonesia hanya punya satu bentuk jamak, sementara bahasa Rusia dan Polandia punya beberapa. Gunakan getQuantityString, bukan kondisi berdasarkan jumlah.
  • Panjang teks. String bahasa Jerman bisa sampai 30% lebih panjang daripada bahasa Inggris. Cari teks yang terpotong di tombol, tab, dan dialog.
  • Kanan ke kiri. Bahasa Arab dan Ibrani mencerminkan tata letak. Gunakan start dan end, bukan left dan right.

Pseudolocale menangkap sebagian besar masalah ini sebelum terjemahan datang. Aktifkan di build type debug, lalu pilih English (XA) atau Arabic (XB) di pengaturan bahasa dengan opsi developer aktif:

android {
    buildTypes {
        getByName("debug") {
            isPseudoLocalesEnabled = true
        }
    }
}

Di Android 13 ke atas, Anda bisa mengubah bahasa satu aplikasi tanpa menyentuh bahasa sistem:

adb shell cmd locale set-app-locales com.example.app --locales pt-BR
adb shell cmd locale set-app-locales com.example.app --locales de-DE

Aplikasinya harus mendukung bahasa per aplikasi, lewat deklarasi localeConfig atau AppCompat, agar perubahan itu terlihat. Jika Anda perlu menguji zona waktu yang berbeda dari jaringan, seperti kasus orang yang sedang bepergian di atas, atur langsung dengan adb shell cmd alarm set-timezone America/Sao_Paulo.

Perilaku di sisi server

Semua yang diputuskan server Anda berdasarkan alamat IP perlu diuji dari negara tersebut:

  • Feature flag dan konfigurasi jarak jauh yang ditargetkan per negara.
  • Opsi checkout dan metode pembayaran yang berbeda per pasar.
  • Alur persetujuan dan privasi: GDPR di Uni Eropa dan Inggris, LGPD di Brasil, undang-undang privasi negara bagian di AS.
  • Katalog konten, rating usia, dan pemberitahuan hukum.
  • Edge CDN dan latensi yang benar-benar dirasakan pengguna Anda.

Di build uji, catat negara yang diputuskan backend Anda untuk setiap request. Saat sebuah test gagal, pertanyaan pertamanya adalah negara mana yang dikira server sebagai lokasi ponsel.

Listing toko dan harga di negara lain

Play Store mengikuti akun, bukan jaringan. Setiap akun Google punya negara Play yang ditetapkan oleh profil pembayarannya, dan pengguna hanya bisa mengubahnya sekali setahun. Ponsel di Jerman yang login dengan akun AS tetap melihat toko AS: listing AS, ketersediaan AS, dan harga AS. Mengubah bahasa ponsel mengubah bahasa listing, bukan negaranya.

Untuk mengecek apa yang dilihat pengguna di suatu pasar:

  1. Teks dan grafis listing. Custom store listing di Play Console bisa menargetkan negara tertentu, dan listing utama punya terjemahan per bahasa. Pratinjau masing-masing di Play Console.
  2. Ketersediaan. Negara dan wilayah yang Anda pilih di Play Console menentukan di mana aplikasi bisa diinstal. Konfirmasikan dengan tester yang akunnya terdaftar di negara itu, di jalur pengujian internal atau tertutup.
  3. Harga. Play Billing mengembalikan harga yang sudah dikonversi dan diformat untuk pembeli, lewat getFormattedPrice() pada detail penawaran produk. Tampilkan string itu apa adanya, jangan harga hasil hitungan sendiri, dan uji pembelian dengan license tester.

Untuk melihat lebih luas bagaimana feed, harga, dan halaman toko berubah per pasar, baca melihat konten Anda dari negara lain.

Checklist untuk setiap negara

  • Aplikasi dimulai dalam bahasa perangkat atau locale aplikasi, bukan bahasa yang ditebak dari IP.
  • Harga, angka, tanggal, dan waktu memakai format lokal.
  • String panjang muat, dan pasar kanan-ke-kiri tercermin dengan benar.
  • Reset harian, notifikasi terjadwal, "hari ini", dan "kemarin" mengikuti zona waktu lokal.
  • Perilaku sisi server untuk negara itu: flag, persetujuan, katalog, opsi checkout.
  • Setidaknya satu ketidakcocokan: locale asing di jaringan lokal, atau locale lokal dengan akun asing.
  • Listing toko, ketersediaan, dan harga Play Billing, dicek dengan akun tester dari negara itu.
  • Screenshot setiap layar penting per pasar, disimpan bersama rilis untuk perbandingan.

Jalankan juga checklist ini di versi Android yang dipakai pengguna Anda; testing aplikasi di berbagai versi Android membahas bahasa per aplikasi dan perbedaan rilis lainnya.

Negara mana yang diuji lebih dulu

Mulailah dengan pasar yang mendatangkan pendapatan, atau yang akan segera mendatangkannya. Lalu tambahkan satu pasar untuk setiap keluarga format yang belum tercakup: pasar dengan koma sebagai desimal seperti Jerman atau Brasil, pasar kanan-ke-kiri, dan pasar dengan aksara non-Latin. Jika Anda sedang berkembang di Asia Tenggara, Indonesia menambah audiens besar dengan bahasa dan format angkanya sendiri.

Siap menjalankan
cloud phone pertama Anda?

Coba gratis 30 menit

Tanpa kartu