Poin utama
- Gunakan fixture tetap untuk pernyataan stabil dan pengacakan dengan seed untuk eksplorasi
- Catat seed untuk setiap kegagalan yang terjadi
- Pisahkan catatan normal, batas, dan sengaja tidak valid
- Gunakan email example.com dan tandai catatan sintetis
Penulis dan tinjauan
Prinsip editorial- Ditulis oleh
- Tim Editorial Penghasil Alamat Acak
- Ditinjau oleh
- Tim Pemodelan Data dan Peninjau QA
- Pembaruan substantif terakhir
- Menambahkan benih deterministik, pengelompokan batas normal-tidak valid, asal, dan isolasi produksi.
Fixture tetap dan acak memiliki fungsi yang berbeda
Fixture tetap sesuai dengan snapshot, kontrak, dan migrasi. Generasi acak memperluas kombinasi, tetapi tanpa benih, hal itu menciptakan kegagalan yang tidak dapat diulangi oleh siapa pun.
Simpan kumpulan regresi kecil yang telah ditinjau dan generator yang menerima benih, negara, dan skenario. Promosikan kegagalan yang berguna ke dalam fixture yang tetap.
| Fixture | Tujuan | Contoh |
|---|---|---|
| Biasa | Buktikan aliran primer | Berbentuk format dan konsisten secara regional |
| Batas | Paparan panjang dan pengkodean | Unicode, jalan panjang, memimpin nol |
| Tidak valid | Pemulihan latihan | Kota dan kode pos tidak cocok |
| Kesalahan | Latih ketahanan | Batas waktu pencarian habis dan coba lagi |
Dapat dikenali tanpa merusak format
Gunakan domain cadangan seperti example.com, tambahkan dataPurpose dan fixtureId, dan catat fixtureId sebagai ganti alamat lengkap. Jaga agar bentuk pos tetap realistis saat menguji parser.
Jangan pernah menyalin pelanggan dan hanya mengganti namanya. Bidang lain masih dapat mengidentifikasi seseorang atau mengirim pemberitahuan.
{
"fixtureId": "ca-boundary-003",
"dataPurpose": "synthetic-test",
"seed": 7319,
"countryCode": "CA",
"email": "qa-7319@example.com"
}Acak bukan berarti tidak konsisten
Tentukan invarian: format negara sesuai, bidang regional berasal dari satu tupel, kode pos tetap berupa teks, dan baris opsional tetap kosong, bukan N/A. Tes properti dapat memeriksa banyak benih.
Fixture yang tidak valid mungkin merusak satu invarian, tetapi harus mendeklarasikan expectedError sehingga tidak ada yang memperlakukannya sebagai data normal.
- Setiap benih dapat diputar ulang
- Tupel regional normal tetap konsisten
- Fixture yang tidak valid melanggar satu aturan bernama
- Output mencatat versi data referensi
Mencegah efek samping produksi
Uji email, SMS, pencetakan, pemenuhan, dan integrasi pembayaran melalui kotak pasir atau blok keluar. Tes Menulis di suatu alamat tidak mencegah panggilan logistik yang sebenarnya.
CI harus memverifikasi jenis lingkungan dan kredensial serta menolak catatan pengujian sintetis yang memasuki antrean produksi.
Ubah kegagalan menjadi aset regresi
Pertahankan catatan kegagalan minimal, seed, versi data, dan pernyataan. Hapus duplikat secara berkala, namun jangan membuat ulang fixture stabil hanya untuk membuatnya terlihat segar.
Berikan setiap fixture tetap pemilik, skenario, hasil yang diharapkan, alasan pembuatan, dan tanggal peninjauan. File JSON besar yang tidak menjelaskan perilaku yang dilindunginya dengan cepat menjadi tumpukan yang tidak dipercaya dan tidak ada yang berani menghapusnya. Selama peninjauan, identifikasi cakupan duplikat dan peraturan yang tidak lagi berlaku pada produk.
Jangan mengambil snapshot UI dari keluaran acak yang tidak dibatasi. Gunakan catatan tetap yang eksplisit untuk snapshot dan biarkan pengujian acak menegaskan properti dan invarian. Pembagian tersebut mencegah churn snapshot yang tidak berarti setiap kali jalan yang dihasilkan berubah sambil tetap mempertahankan cakupan eksplorasi yang luas.
Perlakukan peningkatan data referensi seperti perubahan ketergantungan. Jalankan kumpulan benih lama terhadap snapshot baru, tinjau perbedaan yang disengaja, dan pertahankan kedua versi cukup lama untuk menjelaskan mengapa rekaman yang sebelumnya dapat direproduksi berubah.
Lacak cakupan berdasarkan skenario, bukan berdasarkan jumlah baris mentah yang dihasilkan. Sepuluh ribu alamat biasa tidak menggantikan satu fixture yang disengaja untuk unit yang hilang, kode pos tanpa awalan, nama bangunan yang terlalu panjang, atau wilayah yang tidak didukung. Matriks cakupan yang ringkas memungkinkan pengulas melihat aturan mana yang diterapkan pada setiap fixture dan di mana generator masih memiliki titik buta.
- Tetapkan pemilik dan perilaku yang dilindungi
- Tinjau kasus duplikat dan usang
- Gunakan fixture tetap untuk snapshot dan fixture acak untuk properti
- Pembaruan data referensi versi secara eksplisit
Pertanyaan umum
Apakah alamat pengujian harus tetap atau acak?
Gunakan keduanya: fixture tetap untuk regresi stabil dan pembuatan unggulan untuk kombinasi yang lebih luas.
Mengapa menggunakan example.com untuk email percobaan?
Ini dicadangkan untuk dokumentasi dan pengujian, sehingga mengurangi risiko menghubungi pihak ketiga yang sebenarnya.
Bisakah record sintetis dijalankan dalam produksi?
Tidak secara default. Mereka masih dapat memicu efek samping email, pemenuhan, pembayaran, atau analitik yang sebenarnya.
