Pernyataan di SoapUI: Skrip, XQuery, Tutorial Tipe XPath
Apa Itu Penegasan?
Penegasan berarti tindakan menegaskan atau menyatakan sesuatu. Dapat juga diartikan sebagai check point atau titik validasi.
Setelah permintaan dikirim ke server web, respons diterima. Kita perlu memvalidasi apakah responnya berisi data yang kita harapkan. Untuk memvalidasi respons, kita perlu menggunakan pernyataan.
Jenis-Jenis Penegasan
Ada berbagai cara untuk menyatakan suatu tanggapan; namun, kami akan fokus pada jenis Pernyataan SoapUI yang umum digunakan saat memvalidasi respons. Di bawah ini adalah yang tersedia di SoapUI versi Open Source.
- Konten Properti
- Standar Status Kepatuhan
- Naskah
- SLA
- J.M.S.
- Security
Selain yang tercantum di atas, versi PRO juga memiliki Pernyataan JDBC bawaan yang dapat digunakan untuk menegaskan apakah layanan web telah memperbarui database dengan benar.
BERISI ASSERSI
Mencari keberadaan string yang ditentukan. Ini juga mendukung ekspresi reguler.
Kami akan melanjutkan dengan contoh yang sama dari tutorial sebelumnya dengan permintaan WSDL sebagai http://www.dneonline.com/calculator.asmx.
Langkah 1: Secara Default tidak ada pernyataan.
- Jumlah Pernyataan ditampilkan di Tab Pernyataan.
- Untuk menambahkan pernyataan baru, klik tombol 'Tambahkan Pernyataan Baru'.
Langkah 2: Sekarang,
- Pilih Kategori Pernyataan.
- Pilih Jenis Pernyataan.
- Klik 'Tambah'
Langkah 3: Mari kita validasi apakah string '46' ada di respons. Klik 'OK'
Catatan: Kita juga dapat mengabaikan huruf besar-kecil dan menambahkan ekspresi reguler.
Langkah 4: Setelah menambahkannya, pernyataan segera dijalankan dan menunjukkan apakah VALID atau INVALID.
Langkah 5: Sekarang katakanlah kita mengubah konten 'Berisi Pernyataan di SoapUI' menjadi '47' dan lihat apa yang terjadi.
Langkah 6: Pernyataan dijalankan dan hasilnya diberikan kepada pengguna. Karena kita tidak memiliki string '47' dalam respons, pernyataan tersebut gagal.
TIDAK MENGANDUNG ASSERSI
Mencari Ketidakberadaan string yang ditentukan. Ini juga mendukung ekspresi reguler.
Langkah 1: Sekarang setelah mengklik tombol 'tambahkan pernyataan baru',
- Pilih Kategori Pernyataan.
- Pilih Jenis Pernyataan – Dalam hal ini 'TIDAK Berisi'
- Klik 'Tambah'
Langkah 2: Mari kita validasi apakah string 'intA' ada dalam respons. Masukkan string 'FromCurrency' dan Klik 'OK'
Langkah 3: Segera setelah pernyataan ditambahkan, pernyataan tersebut dijalankan dan menampilkan hasilnya. Sejauh ini kami telah menambahkan dua pernyataan sehingga kedua pernyataan tersebut dijalankan dan hasilnya ditampilkan.
Langkah 4: Sekarang mari kita ubah isi 'Pernyataan Tidak Berisi' dan lihat apa yang terjadi. Kami akan memeriksa tidak adanya string “AddResult”.
Langkah 5: String 'AddResult' sebenarnya ada dalam respons, sehingga pernyataan 'TIDAK Berisi' akan gagal seperti yang ditunjukkan di bawah ini.
PERNYATAAN PERTANDINGAN XPATH
penggunaan XPath ekspresi untuk memilih node target dan nilainya. XPath, adalah bahasa kueri XML untuk memilih node dari dokumen XML.
Langkah 1: Sekarang setelah mengklik tombol 'Tambahkan Pernyataan Baru',
- Pilih Kategori Pernyataan.
- Pilih Jenis Pernyataan – Dalam hal ini 'XPath Match'
- Klik 'Tambah'
Langkah 2: Tambahkan Jendela XPath terbuka.
Sebelum Menambahkan SoapUI XPath, kita perlu mendeklarasikan NameSpace. Namespace XML adalah kumpulan nama, yang diidentifikasi oleh referensi Uniform Resource Identifier (URI), yang digunakan dalam dokumen XML sebagai nama elemen dan atribut. Hal yang sama digunakan dalam Pernyataan SOAP UI XPath.
Untuk mendeklarasikan Namespace XML, kita hanya perlu mengklik tombol 'Deklarasikan' yang akan melakukan tugasnya. Selain itu, kita juga dapat mendeklarasikan namespace sendiri secara manual.
Setelah mendeklarasikan namespace kita perlu merujuk XPath menggunakan namespace yang dibuat.
Setelah mengklik tombol 'Deklarasikan', dua namespace akan muncul karena kita memiliki dua URI. Salah satunya adalah URL skema dan yang lainnya sesuai dengan URL layanan web sebenarnya. Kita perlu menggunakan namespace aktual tempat layanan web berada dan BUKAN namespace skema saat mereferensikan XPath.
deklarasikan namespace sabun='http://schemas.xmlsoap.org/soap/envelope/';
mendeklarasikan namespace ns1='http://tempuri.org/';
Langkah 3: Sekarang kita perlu memasukkan XPath dari node XML yang perlu kita validasi.
//ns1:AddResult Memberi kita Nilai dari node yang diapit di antaranya & dan ns1 sesuai dengan namespace yang dideklarasikan yang menunjuk ke 'http://tempuri.org/'
Setelah memasukkan XML, kita perlu mengklik 'Pilih dari saat ini' sehingga nilai dari respon saat ini akan diambil untuk perbandingan selanjutnya.
Langkah 4: Sejauh ini,
- Setelah mendeklarasikan namespace, kita telah memasukkan XPath dari node XML yang perlu kita Validasi.
- Kita perlu mengklik 'Pilih dari Saat Ini' untuk menjadikan nilai saat ini sebagai nilai yang diharapkan.
- Nilai saat ini ditampilkan kepada pengguna yang dapat kami ubah jika diperlukan.
- Klik 'Simpan'.
Langkah 5: Pernyataan yang ditambahkan di SoapUI akan ditampilkan seperti gambar di bawah ini.
Pernyataan Skrip
Teknik Penegasan ini adalah yang paling banyak digunakan karena sangat sulit untuk mengelola dan mempertahankan ratusan pernyataan.
SOAP UI menggunakan keduanya Groovy Pembuatan skrip atau JavaNaskah untuk pernyataan skrip. Teknik skrip diadopsi untuk mengembangkan kerangka kerja untuk menguji SOAP. Pernyataan skrip digunakan dalam keadaan berikut.
Scripting memungkinkan pengguna untuk melakukan beberapa operasi sebelum dan sesudah menjalankan TestCase masing-masing menggunakan metode pengaturan dan pembongkaran. Set up adalah prosedur yang dijalankan sebelum mengeksekusi metode tertentu (contoh – Pembuatan dan Inisialisasi Objek) sedangkan pembongkaran adalah prosedur yang dijalankan setelah metode dijalankan (misalnya: Menghancurkan objek dan membersihkan). Fitur ini tidak tersedia pada tipe Assertion lainnya dan hanya dapat dilakukan melalui coding.
Hal ini memungkinkan pengguna untuk melakukan pembukaan/penutupan Proyek, untuk menginisialisasi atau membersihkan pengaturan terkait Proyek dan juga untuk bekerja dengan variabel lingkungan yang sangat membantu selama pembuatan skrip.
Ini membantu kami dalam menegaskan konten Respons yang dinamis.
Pernyataan skrip digunakan untuk membuat pernyataan yang ditentukan pengguna yang TIDAK ditentukan sebelumnya oleh SOAP UI.
Untuk mendemonstrasikan pernyataan Script di SoapUI, kita akan menggunakan kalkulator WSDL, test case 'Add' yang telah kita buat sebelumnya.
Langkah 1: Langkah-langkah untuk menambahkan skrip asyik sama dengan pernyataan lainnya, kecuali pernyataan tersebut bukan pernyataan yang telah ditentukan sebelumnya. Sebaliknya, ini adalah pernyataan yang ditentukan pengguna yang menawarkan fleksibilitas lebih besar daripada pernyataan bawaan.
Pilih langkah Uji yang harus ditambahkan pernyataannya.
Klik Tombol 'Tambahkan Pernyataan' seperti yang ditunjukkan di bawah ini.
Langkah 2: Sekarang pilih kategori Pernyataan.
- Dalam hal ini adalah Script.
- Pilih Pernyataan Skrip SoapUI dan tidak ada subtipe yang terkait dengannya.
- Klik 'Tambahkan'.
Langkah 3: Dialog Skrip terbuka di mana pengguna akan dapat menulis skrip yang ditentukan pengguna untuk memvalidasi XML respons.
Langkah 4: Sekarang mari kita menulis skrip asyik untuk memvalidasi Tingkat Konversi. Script terlampir di bawah dengan komentar yang disematkan. Disarankan untuk memiliki pengetahuan tentang Java Skrip atau Groovy Skrip sebelum mencoba menulis skrip Anda sendiri.
//Define Groovy Utils and holder for validating the XML reponse content def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) def holder = groovyUtils.getXmlHolder(messageExchange.responseContent) //Define the NameSpace holder.namespaces["ns1"] = "http://tempuri.org/" //Get the Value of the Node 'AddResult' and assign to a variable def addResult = holder.getNodeValue("//ns1:AddResult") //print the value of the result in the Output panel log.info "The result value for integers is " + addResult //Comparing the value to print 'Pass' or 'Fail' if(addResult=="46") { log.info "Pass" } else { log.info "fail"}
- Klik Tombol 'Jalankan' untuk memicu eksekusi.
- Output dari Script ditampilkan di panel Output. Sudah tercetak baik Nilai Konversi maupun hasil akhirnya (Lulus atau Gagal)
- Informasi yang ditampilkan adalah 'Pernyataan Skrip Lulus'. Klik Oke.
Catatan: Pop up Informasi terakhir akan selalu ditampilkan dengan pesan 'Script Assertion Passed' selama skrip tersebut benar secara sintaksis. Itu tidak ada hubungannya dengan pernyataan Anda dalam naskah.
klik OK
Langkah 5: Sekarang Tab pernyataan menampilkan semua pernyataan yang telah kami tambahkan untuk rangkaian pengujian ini dengan Status terhadap masing-masing pernyataan tersebut.
Langkah 6: Sekarang
- Pilih Test Suite dari pohon Navigator
- Klik Tombol 'Jalankan'
- Hasil akan ditampilkan untuk seluruh rangkaian pengujian.
Pernyataan Kecocokan Xquery
Ini Menggunakan ekspresi Xquery untuk memilih konten dari properti target. Kami memerlukan XML respons yang jauh lebih besar untuk lebih memahami pernyataan XQuery di SoapUI. Mari kita impor satu WSDL lain seperti yang ditunjukkan di bawah ini: http://www.webservicex.net/medicareSupplier.asmx?WSDL
Langkah 1: Lakukan klik kanan pada proyek yang ada dan pilih 'Tambahkan WSDL'.
Langkah 2: Lakukan klik kanan pada proyek yang ada dan pilih 'Tambahkan WSDL'. Biarkan opsi lain sebagai default dan Klik Tombol 'OK'.
Langkah 3: Semua operasi tercantum seperti yang ditunjukkan di bawah ini.
Langkah 4: Sekarang mari kita tambahkan a Uji Kasus dalam rangkaian pengujian yang sama dengan yang kami buat pengujian konverter mata uang.
Langkah 5: Masukkan nama kasus uji dan Klik Tombol 'OK'
Langkah 6: Kasus uji dibuat seperti yang ditunjukkan di bawah ini.
Langkah 7: Add
langkah pengujian baru Ketik 'Permintaan Tes Sabun' seperti gambar di bawah ini.
Langkah 8: Masukkan nama langkah pengujian. Katakanlah – Supplier_by_City mana yang lebih bermakna Klik 'OK'.
Langkah 9: Pilih Operayang ingin kami validasi. Dalam kasus ini adalah 'MedicareSupplierSoap -> GetSupplierByCity'. Klik 'OK'.
Langkah 10: Masukkan Nama kasus uji dan klik 'OK'.
Langkah 11: Garis Besar XML Permintaan akan ditampilkan seperti yang ditunjukkan di bawah ini.
Langkah 12: Sekarang mari kita temukan semua informasi pemasok untuk Kota 'New York'.
Untuk melakukannya, tambahkan baris berikut ke kode Anda.
<GetSupplierByCity xmlns="http://www.webservicex.net/"> <City>New York</City> </GetSupplierByCity>
WSDL di URL di bawah ini – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity
Langkah 13: Setelah menjalankan tes, kami menerima respons di bawah ini
Langkah 14: Misalkan kita perlu memvalidasi semua Nomor Pemasok. Kami tidak dapat menggunakan Pernyataan XPath karena kami harus memiliki ratusan Pernyataan XPath. Oleh karena itu penggunaan XQuery tidak dapat dihindari dalam kasus ini.
XQuery Assertion membantu kita memvalidasi sekelompok respons XML yang bersifat berulang.
Langkah 15: Sekarang klik 'Tambahkan pernyataan',
- Pilih 'Kategori Pernyataan' – Konten Properti dalam hal ini.
- Pilih Jenis Pernyataan sebagai 'Pernyataan XQuery'
- Klik 'Tambahkan'.
Langkah 16: Mirip dengan Pernyataan XPath kita perlu mendeklarasikan namespace.
-
Klik Tombol 'Deklarasikan' untuk secara otomatis mengizinkan SOAP UI mendeklarasikan namespace. Setelah mengklik tombol deklarasi, 'POP up' dengan pesan 'deklarasikan namespace dari skema sebagai gantinya' akan ditampilkan kepada pengguna. Klik 'Ya' untuk melanjutkan seperti yang ditunjukkan di bawah ini.
Catatan: Setelah menekan 'Tombol Nyatakan' Anda mungkin mendapatkan URL yang berbeda sebagai deklarasi namespace, namun namespace lokasi layanan web sebenarnya adalah apa yang akan dipertimbangkan untuk pengkodean.
- Untuk mengambil semua Nomor Pemasok, Kita perlu menulis Kueri XPath dan kami akan menempatkannya di dalam <Nomor Pemasok> dan Tag.
- Klik 'Pilih dari Saat Ini' yang akan mengeksekusi respons saat ini.
- Setelah Mengklik 'Pilih dari Saat Ini', Semua Nomor Pemasok terdaftar.
- Klik 'Simpan'.
// Namespace declaration declare namespace soap='http://schemas.xmlsoap.org/soap/envelope/'; declare namespace ns1='http://www.webservicex.net/'; declare namespace x = ''; // Placing the result in Myresult Tags{ // Iterating through all the supplier number for $x in //ns1:GetSupplierByCityResponse/ns1:SupplierDataLists/ns1:SupplierDatas/ns1:SupplierData //Return all the Supplier number within ‘SupplierNumber’ Tags. return {data($x/ns1:SupplierNumber)} }
Langkah 17: XQuery Assertion dijalankan dan menampilkan hasil akhir di Panel 'Assertion' seperti gambar di bawah ini. Sekarang kami telah berhasil menambahkan pernyataan Xquery yang dengannya kami telah memvalidasi semua informasi Nomor pemasok. Hal yang sama akan dibandingkan dengan keadaan sebenarnya, setiap kali permintaan dikirim ke server web.
Catatan: Nilai sebenarnya tidak akan ditampilkan. Jika semua nilai sebenarnya sama dengan nilai yang diharapkan, maka akan ditampilkan VALID, jika tidak maka akan ditampilkan 'Gagal'.
Kapan Menggunakan Pernyataan Bawaan?
- Ketika Respons pendek sehingga dapat divalidasi menggunakan salah satu pernyataan bawaan tersebut.
- Kita juga dapat menggunakan Inbuilt Assertion jika respon yang dikirim dari web server selalu bersifat statis. Jika bersifat dinamis, kami tidak akan dapat menegaskannya menggunakan pernyataan bawaan.
- Ketika penggunaan pernyataan bawaan seperti pernyataan Time out dan pernyataan keamanan menjadi tidak dapat dihindari.
- Pernyataan bawaan berlaku cukup baik untuk penggunaan satu kali di mana pengujian tidak perlu diulang.
Opsi Pernyataan
Pernyataan yang dibuat dapat dikontrol dengan baik menggunakan bantuan panel kontrol yang disorot di bawah.
Pernyataan yang dibuat memungkinkan penguji untuk mengonfigurasi hal-hal berikut dari kotak peralatan pernyataan.
pilihan | Uraian Teknis |
---|---|
|
Pernyataan yang dipilih akan naik urutannya. |
|
Pernyataan yang dipilih berpindah urutan ke bawah. |
|
Menghapus Pernyataan yang Dipilih |
|
Konfigurasi ulang/Edit Pernyataan yang dipilih. |
- Di bawah ini adalah fitur-fitur yang tersedia secara eksklusif di SOAP UI Versi PRO. Versi PRO juga membantu kita mengelompokkan pernyataan sehingga kita dapat menambahkan satu lapisan validasi lagi ke pernyataan yang dibuat.
- Versi Pro juga memungkinkan Kloning Pernyataan: Opsi ini memungkinkan penguji mengizinkan penyalinan pernyataan ke langkah pengujian berbeda dalam proyek yang sama atau berbeda.
- Nonaktifkan/Aktifkan Pernyataan: Opsi ini memungkinkan pernyataan yang dikelompokkan atau tidak dikelompokkan untuk dinonaktifkan atau diaktifkan. Jika pernyataan dinonaktifkan, pernyataan tersebut berwarna abu-abu dan ketika Kasus Uji dijalankan, pernyataan yang dinonaktifkan tidak akan dieksekusi.
- Pisahkan Pernyataan: Setiap pernyataan yang dikelompokkan dapat dipisahkan dari kelompoknya jika penguji memutuskan untuk melakukannya.
DAN: Semua pernyataan dievaluasi sebagai pernyataan VALID yang akan menghasilkan kondisi grup LULUS.ATAU: Setidaknya salah satu pernyataan dalam grup harus VALID untuk menegaskan kondisi grup LULUS.
Daftar Lengkap Metode yang tersedia dalam berbagai jenis pernyataan
Mekanisme Penegasan |
Uraian Teknis |
KONTEN PROPERTI | |
Mengandung | Mencari keberadaan string yang ditentukan. Ini juga mendukung ekspresi reguler. |
Tidak Berisi | Mencari Ketidakberadaan string yang ditentukan. Ini juga mendukung ekspresi reguler. |
Pertandingan XPath | Menggunakan ekspresi XPath untuk memilih node target dan nilainya. |
Pencocokan XQuery | Menggunakan ekspresi Xquery untuk memilih konten dari properti target. |
Kepatuhan, Status, Standar | |
HTTP Unduh semua sumber daya | Memvalidasi Dokumen HTML setelah diunduh dan berlaku untuk semua properti yang berisi HTML. |
Kode Status HTTP tidak valid | Memverifikasi apakah respons HTML berisi kode status yang tidak ada dalam daftar kode yang ditentukan. |
Bukan Kesalahan SABUN | Memverifikasi apakah pesan yang terakhir diterima bukan Kesalahan SOAP. Sangat jelas bahwa ini hanya berlaku untuk Langkah Uji SOAP. |
Kepatuhan Skema | Memverifikasi apakah pesan yang terakhir diterima sesuai dengan definisi skema standar WSDL atau WADL. Berlaku baik untuk Langkah Uji SOAP dan REST. |
Kesalahan SABUN | Memverifikasi apakah pesan yang terakhir diterima adalah Kesalahan SOAP. Ini adalah kebalikan dari Pernyataan Kesalahan 'NOT SOAP'. |
Respon SABUN | Memverifikasi apakah respons yang terakhir diterima adalah Respon SOAP yang valid dan berlaku hanya untuk Langkah Permintaan Pengujian SOAP. |
Kode Status HTTP yang Valid | Memverifikasi apakah respons HTML berisi kode status yang ada dalam daftar kode yang ditentukan. Ini adalah kebalikan dari Pernyataan 'Kode Status HTTP Tidak Valid'. |
Permintaan Pengalamatan WS | Memverifikasi apakah permintaan yang terakhir diterima berisi Header Pengalamatan WS yang sesuai. |
Respon Pengalamatan WS | Memverifikasi apakah respons yang terakhir diterima berisi Header Pengalamatan WS yang sesuai. |
Status Keamanan WS | Memvalidasi jika pesan terakhir yang diterima berisi header WS-Security yang valid dan hanya berlaku untuk Permintaan SOAP. |
Naskah | |
Penegasan Naskah | Memungkinkan pengguna menjalankan skrip khusus untuk melakukan validasi yang ditentukan pengguna. |
SLA | |
Respon SLA | Memvalidasi jika waktu respons dari respons yang terakhir diterima berada dalam batas yang ditentukan. |
J.M.S. | |
Status JMS | Memverifikasi apakah permintaan JMS dari Langkah Pengujian telah berhasil dijalankan dan berlaku untuk Langkah Pengujian dengan titik akhir JMS. |
Batas Waktu JMS | Memverifikasi apakah respons JMS dari langkah pengujian tidak memakan waktu lebih lama dari durasi yang ditentukan. |
Security | |
Paparan Informasi Sensitif | Memverifikasi apakah pesan respons tidak memaparkan informasi sensitif tentang sistem target. Kita dapat menggunakan pernyataan ini untuk Langkah Pengujian REST, SOAP, dan HTTP. |
UNDUH PROYEK SOAPUI YANG MENGANDUNG PERNYATAAN DI ATAS
Kesalahan Umum dan Pemecahan Masalah
Gunakan namespace yang benar. Ruang Nama harus berupa URL tempat layanan web berada.
Jika terjadi kesalahan saat mengembangkan pernyataan skrip, gunakan 'log.info' untuk mencetak konten variabel
Jika Anda belum memperoleh keluaran yang diinginkan, verifikasi apakah masukan yang valid telah diberikan dalam permintaan.
Misalnya, dalam konverter mata uang, jika Anda memasukkan 'intA' sebagai 'x' yang bukan bilangan bulat, output akan menampilkan kode kesalahan sebagai 'SOAP-Client' yang berarti masalahnya ada pada parameter yang diteruskan dari sisi klien.
Pastikan Anda menggunakan sintaks yang benar saat menggunakan pernyataan XPATH dan XQuery. Anda TIDAK boleh menggunakan titik(.) daripada titik dua(:) saat menggunakan pernyataan di atas. Sintaksnya adalah //namespace:Tagname dan BUKAN //namespace.tagname. Dengan melakukannya, Anda mungkin mendapatkan pesan 'TIDAK ada kecocokan dalam respons saat ini' meskipun nama tagnya benar.