Anda dapat menambahkan kondisi kontrol alur (loop, kondisi, tunggu, pengelompokan, dll.) ke skenario pengujian Anda. Hal ini meningkatkan pemanfaatan konfigurasi skenario/proses pengujian yang lebih kompleks, yang pada akhirnya menyelesaikan tantangan pengujian pada skenario yang rumit melalui fitur pengujian otomatis.Loop For#
Ketika Anda perlu mengirim satu permintaan beberapa kali secara berurutan, menggunakan loop for adalah pendekatan yang efisien. Berikut cara menggunakan loop for secara efektif dalam skenario pengujian Apidog Anda:Mengatur jumlah iterasi: Tentukan berapa kali loop harus berjalan. Ini dapat berupa angka tetap atau {{variable}}.
Menambahkan permintaan: Di dalam loop for, Anda dapat menyertakan satu atau beberapa permintaan, serta loop lain atau cabang bersyarat. Fleksibilitas ini memungkinkan skenario pengujian yang kompleks ketika beberapa tindakan perlu diuji secara berurutan.
Kondisi Break If: Anda dapat menambahkan kondisi Break if ke loop for. Ini akan segera menghentikan loop jika kondisi terpenuhi. Anda dapat menyeret dan menyesuaikan posisi Break if atau bahkan menambahkan beberapa kondisi Break if untuk menangani berbagai skenario.
Penanganan On Error: Kelola kesalahan dengan menambahkan kondisi On Error ke loop. Jika terjadi kesalahan, tindakan yang ditentukan akan dipicu:Ignore: Loop berlanjut dengan permintaan berikutnya.
Continue: Melewati permintaan yang tersisa dalam siklus saat ini dan berpindah ke iterasi berikutnya.
Break execution: Menghentikan loop dan melanjutkan dengan permintaan berikutnya di luar loop.
End execution: Menghentikan seluruh skenario pengujian sepenuhnya.
Kondisi On Error bersifat tetap di awal loop dan tidak dapat dipindahkan.
Menggunakan Indeks Loop dalam Permintaan#
Indeks loop saat ini dapat digunakan sebagai variabel lokal di dalam permintaan untuk menyesuaikan parameter atau body permintaan secara dinamis. Untuk menggunakannya:1
Tambahkan loop for dan sertakan sebuah permintaan di dalam loop.
2
Klik ikon tongkat ajaib
🪄 pada parameter permintaan dan pilih "Retrieve pre-step data."
Fitur "Retrieve pre-step data" hanya tersedia di modul "Tests" dan tidak tersedia di modul "APIs".
Saat menggunakan "Retrieve pre-step data", nilai hanya dapat diperoleh ketika seluruh skenario pengujian dijalankan bersama; nilai tersebut tidak dapat diakses saat menjalankan langkah individual.
3
Pilih opsi loop, biasanya diberi label "Loop n times."
4
Pilih "Current loop index."
5
Anda akan memperoleh variabel dinamis seperti
{{$.5.index}}. Klik "Insert", dan variabel tersebut akan diganti saat runtime dengan indeks loop saat ini seperti
0 atau
5.
Indeks loop selalu dimulai dari 0.
Loop ForEach#
Ketika Anda memiliki array yang berisi beberapa elemen (daftar konten tertentu atau daftar yang diperoleh dari langkah sebelumnya), dan Anda perlu melakukan operasi yang sama pada setiap item dalam daftar (misalnya, pertama-tama memperoleh daftar produk, lalu menambahkan setiap produk dalam daftar ke keranjang belanja), Anda perlu menggunakan loop ForEach.Dalam loop ForEach, operasi di dalam loop akan dieksekusi untuk setiap elemen dalam array.Perbedaannya dari loop For adalah Anda tidak perlu memikirkan jumlah iterasi; Anda hanya perlu berfokus pada konten array loop.Mengatur array loop: Dalam loop ForEach, Anda perlu menetapkan array sebagai objek loop. Anda dapat menggunakan variabel atau memasukkan array secara manual, seperti ["a","b","c"].
Menambahkan permintaan: Di dalam loop ForEach, Anda dapat menambahkan satu atau beberapa permintaan, atau menambahkan loop lain atau cabang bersyarat, dll.
Kondisi Break If dan penanganan On Error: Anda dapat menambahkan Break if dan On error ke loop ForEach, konsisten dengan loop for yang disebutkan di atas.
Dalam pengaturan lanjutan Loop ForEach, Anda juga dapat menyesuaikan opsi penanganan pengecualian untuk Break If dan On Error. Untuk informasi lebih lanjut, lihat Aturan Penilaian.
Contoh Penggunaan ForEach#
Pertimbangkan dua endpoint: satu untuk mengambil daftar informasi hewan peliharaan dan satu lagi untuk mengambil detail satu hewan peliharaan. Jika Anda perlu mengambil detail hewan peliharaan yang baru-baru ini ditambahkan ke daftar, Anda dapat menyiapkan skenario ini menggunakan loop ForEach dalam pengujian otomatis Anda.1.
Langkah pertama di luar loop ForEach adalah meminta endpoint daftar informasi hewan peliharaan untuk mengambil data daftar aktual. Biasanya, respons antarmuka ini berisi array dengan informasi dasar tentang beberapa hewan peliharaan, seperti ID dan nama hewan peliharaan.
2.
Siapkan loop ForEach dengan array sumber berupa subset dari array hewan peliharaan dari respons langkah sebelumnya.
3.
Di dalam loop, siapkan permintaan ke endpoint "Get Pet Information" dan gunakan nilai elemen dari loop ForEach untuk mengisi parameter ID dalam permintaan ini.
Menggunakan Elemen Loop dalam Permintaan#
Elemen/indeks loop saat ini dapat digunakan sebagai variabel lokal di dalam permintaan untuk menyesuaikan parameter atau body permintaan secara dinamis. Untuk menggunakannya:1
Tambahkan loop ForEach dan sertakan sebuah permintaan di dalam loop.
2
Klik ikon
tongkat ajaib pada parameter permintaan dan pilih "Retrieve pre-step data."
3
Pilih opsi loop, biasanya diberi label "Loop each element in
{{array}}."
4
Pilih "Current loop element." Anda dapat menggunakan JSONPath untuk mengekstrak properti elemen.
5
Anda akan memperoleh variabel dinamis seperti
{{$.17.element}}. Klik "Insert", dan variabel tersebut akan diganti saat runtime dengan elemen loop saat ini, yaitu elemen dari array loop.
Elemen Loop Saat Ini: Sistem secara otomatis mengekstrak elemen dari array yang ditentukan dalam loop ForEach dan menyimpannya dalam variabel yang ditetapkan. Pada awal setiap iterasi, variabel ini diperbarui dengan nilai elemen saat ini dari array. Jika elemennya adalah objek, Anda dapat menggunakan JSONPath untuk mengekstrak subbidang tertentu, seperti {{$.1.element.data.name}}.Indeks Loop Saat Ini: Indeks loop saat ini disimpan dalam variabel ini. Indeks dimulai dari 0 dan bertambah 1 pada awal setiap iterasi berikutnya, yang mencerminkan indeks saat ini.
Ketika Anda perlu mengirim permintaan yang berbeda berdasarkan skenario yang berbeda, Anda dapat menggunakan pernyataan If untuk menambahkan cabang bersyarat. Ketika kondisi yang ditentukan terpenuhi, langkah yang sesuai akan dieksekusi; jika tidak, langkah tersebut akan dilewati. Untuk detail yang lebih spesifik, silakan lihat Aturan Penilaian.Mengatur pernyataan If: Pernyataan If mendukung berbagai kondisi seperti sama dengan, tidak sama dengan, berisi, tidak berisi, dll. Konstanta maupun variabel dapat digunakan di kedua sisi kondisi.
Menambahkan permintaan: Beberapa permintaan dapat ditambahkan di dalam cabang bersyarat, serta loop lain atau cabang bersyarat.
Menjalankan cabang bersyarat: Jika kondisi yang ditetapkan dalam konfigurasi terpenuhi, langkah pengujian akan dieksekusi; jika tidak, langkah tersebut akan dilewati.
Pernyataan Else: Pernyataan Else dapat ditambahkan di dalam cabang bersyarat untuk menangani skenario ketika kondisi If tidak terpenuhi.
Contoh Penggunaan If#
Seorang pemilik toko hewan peliharaan, berdasarkan status penjualan hewan peliharaan dari hari sebelumnya, perlu mengubah status penjualan hewan peliharaan menjadi "Sold" jika hewan tersebut terjual. Jika tidak (else), mereka perlu memeriksa daftar hewan peliharaan yang masih dijual.1.
Klik tombol "Add Step" di bagian bawah dan pilih "Conditional Branching."
2.
Masukkan variabel saleStatus yang diperoleh dari respons permintaan API ke dalam kotak input setelah "If" dan pilih kondisi "equals." Terakhir, masukkan true sebagai nilai perbandingan.
3.
Arahkan kursor ke operasi percabangan bersyarat untuk melihat opsi " + Else". Klik opsi tersebut untuk menambahkan langkah "List of Pets for Sale" (jika kondisi tidak terpenuhi, yaitu untuk mengueri daftar hewan peliharaan yang masih dijual).
Aturan Penilaian#
Saat menggunakan pernyataan If dalam skenario pengujian, Anda dapat menentukan aturan bersyarat untuk mengontrol eksekusi pengujian. Jika kondisi terpenuhi, langkah yang sesuai akan berjalan; jika tidak, langkah tersebut akan dilewati. Demikian pula, dalam pengaturan Break If untuk loop ForEach dan For, Anda dapat menetapkan aturan penilaian untuk mengontrol alur eksekusi dengan lebih fleksibel.| Aturan | Deskripsi |
|---|
| Equals | Memeriksa apakah dua nilai sama. |
| Does not equal | Memeriksa apakah dua nilai tidak sama. |
| Exists | Memeriksa apakah suatu bidang atau variabel ada. |
| Does not exist | Memeriksa apakah suatu bidang atau variabel tidak ada. |
| Less than | Memeriksa apakah satu nilai lebih kecil dari nilai lain. |
| Less than or equal | Memeriksa apakah satu nilai lebih kecil dari atau sama dengan nilai lain. |
| Greater than | Memeriksa apakah satu nilai lebih besar dari nilai lain. |
| Greater than or equal | Memeriksa apakah satu nilai lebih besar dari atau sama dengan nilai lain. |
| Matches with Regex | Memeriksa apakah sebuah string cocok dengan ekspresi reguler yang ditentukan. |
| Contains | Memeriksa apakah sebuah string atau array berisi nilai yang ditentukan. |
| Does not contain | Memeriksa apakah sebuah string atau array tidak berisi nilai yang ditentukan. |
| Is empty | Memeriksa apakah suatu bidang, array, atau variabel kosong. |
| Is not Empty | Memeriksa apakah suatu bidang, array, atau variabel tidak kosong. |
| In List | Memeriksa apakah suatu nilai termasuk dalam List yang ditentukan. |
| Not in List | Memeriksa apakah suatu nilai tidak termasuk dalam List yang ditentukan. |
Saat melakukan pemeriksaan bersyarat (seperti lebih besar dari, lebih besar dari atau sama dengan, sama dengan, atau tidak sama dengan), jika nilai yang dibandingkan adalah bilangan bulat atau string, sistem akan secara otomatis mengonversi string menjadi angka untuk perbandingan yang akurat. Misalnya, jika Anda membandingkan string "18" dengan angka 18, sistem akan mengonversi string "18" menjadi angka 18 sebelum membandingkannya.Equals#
Memeriksa apakah dua nilai sama. Jika sama, kondisi terpenuhi dan langkah pengujian akan dieksekusi; jika tidak, langkah tersebut akan dilewati.Skenario: Periksa apakah usia pengguna yang diekstrak dari pra-langkah sama dengan 18.
Contoh Kondisi: {{$.5.response.body.data.age}} Equals 18
Efek Eksekusi Aktual: Jika nilai usia yang diekstrak dari pra-langkah adalah 18 (string akan secara otomatis dikonversi menjadi angka), langkah akan dieksekusi, seperti menampilkan informasi tertentu atau melakukan tindakan tertentu.
Does not equal#
Memeriksa apakah dua nilai tidak sama. Jika tidak sama, kondisi terpenuhi dan langkah pengujian akan dieksekusi; jika tidak, langkah tersebut akan dilewati.Skenario: Periksa apakah status pesanan yang diekstrak dari pra-langkah tidak sama dengan "Paid".
Contoh Kondisi: {{$.4.response.body.data.status}} Does not equal Paid
Efek Eksekusi Aktual: Jika status pesanan yang diekstrak dari pra-langkah adalah nilai lain (seperti "Pending" atau "Shipped"), langkah akan dieksekusi.
Exists#
Memeriksa apakah bidang atau variabel tertentu ada. Jika ada, kondisi terpenuhi dan langkah akan dieksekusi; jika tidak, langkah tersebut akan dilewati.Skenario: Periksa apakah bidang email ada dalam data pengguna yang diekstrak dari pra-langkah.
Contoh Kondisi: {{$.3.response.body.data.email}} Exists
Efek Eksekusi Aktual: Jika bidang email ada dalam data pengguna yang diekstrak dari pra-langkah, langkah akan dieksekusi.
Does not exist#
Memeriksa apakah bidang atau variabel tertentu tidak ada. Jika tidak ada, kondisi terpenuhi dan langkah akan dieksekusi; jika tidak, langkah tersebut akan dilewati.Skenario: Periksa apakah bidang phone tidak ada dalam data pengguna yang diekstrak dari pra-langkah.
Contoh Kondisi: {{$.2.response.body.data.phone}} Does not exist
Efek Eksekusi Aktual: Jika bidang phone tidak ada dalam data pengguna yang diekstrak dari pra-langkah, langkah akan dieksekusi.
Less Than#
Memeriksa apakah satu nilai lebih kecil dari nilai lain. Jika benar, kondisi terpenuhi dan langkah akan dieksekusi; jika tidak, langkah tersebut akan dilewati.Skenario: Periksa apakah stok produk yang diekstrak dari pra-langkah kurang dari 10.
Contoh Kondisi: {{$.1.response.body.data.stock}} Less Than 10
Efek Eksekusi Aktual: Jika nilai stok yang diekstrak dari pra-langkah adalah 8, kondisi terpenuhi dan langkah akan dieksekusi.
Less than or equal#
Memeriksa apakah satu nilai lebih kecil dari atau sama dengan nilai lain. Jika benar, kondisi terpenuhi dan langkah akan dieksekusi; jika tidak, langkah tersebut akan dilewati.Skenario: Periksa apakah usia yang diekstrak dari pra-langkah kurang dari atau sama dengan 12.
Contoh Kondisi: {{$.2.response.body.data.age}} Less than or equal 12
Efek Eksekusi Aktual: Jika nilai usia yang diekstrak dari pra-langkah adalah 10, kondisi terpenuhi dan langkah akan dieksekusi.
Greater than#
Memeriksa apakah satu nilai lebih besar dari nilai lain. Jika benar, kondisi terpenuhi dan langkah akan dieksekusi; jika tidak, langkah tersebut akan dilewati.Skenario: Periksa apakah jumlah pesanan yang diekstrak dari pra-langkah lebih besar dari 1000.
Contoh Kondisi: {{$.1.response.body.data.amount}} Greater than 1000
Efek Eksekusi Aktual: Jika nilai jumlah pesanan yang diekstrak dari pra-langkah adalah 1105, kondisi terpenuhi dan langkah akan dieksekusi.
Greater than or equal#
Memeriksa apakah satu nilai lebih besar dari atau sama dengan nilai lain. Jika benar, kondisi terpenuhi dan langkah akan dieksekusi; jika tidak, langkah tersebut akan dilewati.Skenario: Periksa apakah poin pengguna yang diekstrak dari pra-langkah lebih besar dari atau sama dengan 500.
Contoh Kondisi: {{$.3.response.body.data.points}} Greater than or equal 500
Efek Eksekusi Aktual: Jika nilai poin yang diekstrak dari pra-langkah adalah 600, kondisi terpenuhi dan langkah akan dieksekusi.
Matches with Regex#
Memeriksa apakah sebuah string cocok dengan ekspresi reguler yang ditentukan. Jika cocok, kondisi terpenuhi dan langkah akan dieksekusi; jika tidak, langkah tersebut akan dilewati.Skenario: Periksa apakah format email yang diekstrak dari pra-langkah sudah benar.
Contoh Kondisi: {{$.2.response.body.data.email}} Matches with Regex /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$/i
Efek Eksekusi Aktual: Jika format email yang diekstrak dari pra-langkah cocok dengan ekspresi reguler (misalnya, test@gmail.com), langkah akan dieksekusi.
Ekspresi reguler harus ditulis menggunakan sintaks "literal", yaitu pola diapit oleh /, dengan pengubah opsional (misalnya, g untuk pencocokan global, i untuk tidak peka huruf besar/kecil) ditambahkan di akhir. Untuk informasi lebih lanjut tentang penulisan ekspresi reguler, Anda dapat merujuk ke dokumentasi MDN. Contains#
Memeriksa apakah sebuah string atau array berisi nilai yang ditentukan. Jika berisi, kondisi terpenuhi dan langkah akan dieksekusi; jika tidak, langkah tersebut akan dilewati.Skenario: Periksa apakah daftar peran pengguna yang diekstrak dari pra-langkah berisi peran "admin".
Contoh Kondisi: {{$.3.response.body.data.roles}} Contains admin
Efek Eksekusi Aktual: Jika daftar peran yang diekstrak dari pra-langkah berisi "admin", langkah akan dieksekusi.
Does not contain#
Memeriksa apakah sebuah string atau array tidak berisi nilai yang ditentukan. Jika tidak berisi, kondisi terpenuhi dan langkah akan dieksekusi; jika tidak, langkah tersebut akan dilewati.Skenario: Periksa apakah keranjang belanja pengguna yang diekstrak dari pra-langkah tidak berisi produk tertentu.
Contoh Kondisi: {{$.4.response.body.data.cartItems}} Does not contain productId123
Efek Eksekusi Aktual: Jika array keranjang yang diekstrak dari pra-langkah tidak berisi produk productId123, langkah akan dieksekusi.
Is empty#
Memeriksa apakah suatu bidang, array, atau variabel kosong. Jika kosong, kondisi terpenuhi dan langkah akan dieksekusi; jika tidak, langkah tersebut akan dilewati.Skenario: Periksa apakah bidang keterangan yang diekstrak dari pra-langkah kosong.
Contoh Kondisi: {{$.2.response.body.data.remarks}} Is empty
Efek Eksekusi Aktual: Jika bidang keterangan yang diekstrak dari pra-langkah kosong, langkah akan dieksekusi.
Is not Empty#
Memeriksa apakah suatu bidang, array, atau variabel tidak kosong. Jika tidak kosong, kondisi terpenuhi dan langkah akan dieksekusi; jika tidak, langkah tersebut akan dilewati.Skenario: Periksa apakah keterangan pesanan yang diekstrak dari pra-langkah telah diisi.
Contoh Kondisi: {{$.1.response.body.data.orderRemarks}} Is not Empty
Efek Eksekusi Aktual: Jika keterangan pesanan yang diekstrak dari pra-langkah tidak kosong, langkah akan dieksekusi.
In List#
Memeriksa apakah suatu nilai termasuk dalam daftar yang ditentukan. Jika ya, kondisi terpenuhi dan langkah akan dieksekusi; jika tidak, langkah tersebut akan dilewati.Skenario: Periksa apakah produk yang dipilih oleh pengguna yang diekstrak dari pra-langkah berada dalam daftar produk yang direkomendasikan.
Contoh Kondisi: {{$.3.response.body.data.productId}} In List ["prod123", "prod456", "prod789"]
Efek Eksekusi Aktual: Jika ID produk yang diekstrak dari pra-langkah adalah "prod456", langkah akan dieksekusi.
Di Apidog, saat memasukkan daftar, setiap elemen harus dimasukkan secara terpisah dan dipisahkan dengan menekan tombol Enter.
Not in List#
Memeriksa apakah suatu nilai tidak termasuk dalam daftar yang ditentukan. Jika tidak termasuk, kondisi terpenuhi dan langkah akan dieksekusi; jika tidak, langkah tersebut akan dilewati.Skenario: Periksa apakah kode promo yang dimasukkan oleh pengguna yang diekstrak dari pra-langkah tidak ada dalam daftar kode promo yang telah digunakan.
Contoh Kondisi: {{$.4.response.body.data.promoCode}} Not in List ["usedCode1", "usedCode2"]
Efek Eksekusi Aktual: Jika kode promo yang diekstrak dari pra-langkah adalah "newPromo", kondisi terpenuhi dan langkah akan dieksekusi; jika tidak, langkah tersebut akan dilewati.
Pengelompokan#
Ketika beberapa langkah dalam proses pengujian saling terkait, langkah-langkah tersebut dapat dikelompokkan bersama untuk klasifikasi. Dengan mengelompokkan langkah pengujian, Anda meningkatkan keterbacaan dan operabilitas skenario pengujian.Tunggu#
Ketika langkah tertentu dalam proses pengujian memerlukan penantian selama periode tertentu sebelum eksekusi, Anda dapat menambahkan kondisi tunggu untuk menyelesaikannya.Contoh Penggunaan Tunggu#
Simulasikan pengguna yang melihat detail hewan peliharaan dan memperbarui status penelusuran informasi hewan peliharaan setelah menelusuri selama 1000ms.1.
Klik tombol "Add Step" di bagian bawah dan pilih "Wait."
2.
Masukkan waktu tunggu, 1000 (dalam milidetik).
Saat Anda menggunakan kontrol alur pengujian, laporan pengujian tidak akan menampilkan langkah seperti If, for, dll., tetapi hanya akan menampilkan permintaan aktual yang dieksekusi, yang dicantumkan secara linear sesuai urutan eksekusi.