Menggunakan SoapUI dengan Selenium untuk Pengujian Layanan Web
⚡ Ringkasan Cerdas
SoapUI dengan Selenium Memungkinkan satu rangkaian perangkat lunak untuk memeriksa layanan web dan peramban yang menggunakannya. Groovy adalah jembatan, karena SoapUI berjalan Groovy secara asli dan Groovy menjangkau setiap Java perpustakaan Selenium kapal.

SoapUI adalah open source yang paling populer pengujian fungsional alat untuk Pengujian API. Ini menyediakan lengkap cakupan tes dan mendukung semua protokol dan teknologi standar.
Apa itu SOAP?
SOAP HTTP adalah protokol berbasis XML sederhana. Protokol ini memungkinkan aplikasi untuk bertukar informasi melalui HTTP. HTTP menggunakan Layanan Web. DescriptBahasa Ion (WSDL) untuk komunikasi, dan aplikasi lain dapat berinteraksi dengannya. layanan web melalui antarmuka WSDL tersebut.
Layanan Web SOAP vs REST SoapUI
SoapUI Berawal sebagai klien SOAP, dan namanya masih mencerminkan hal itu, tetapi ia juga menguji endpoint REST. Mengetahui gaya mana yang Anda tunjuk akan menentukan bagaimana pengujian dibangun.
| Aspek | SOAP | ISTIRAHAT |
|---|---|---|
| dengantract | Sebuah file WSDL menjelaskan setiap operasi, jadi SoapUI dapat menghasilkan permintaan secara otomatis. | Biasanya definisi OpenAPI atau Swagger, atau tidak ada definisi formal sama sekali.tract sama sekali. |
| Format pesan | Hanya amplop XML. | Umumnya menggunakan JSON, meskipun XML dan format lainnya diperbolehkan. |
| angkutan | Paling sering menggunakan HTTP, tetapi SOAP tidak bergantung pada protokol transport. | HTTP, dengan metode dan URL menyampaikan maksud. |
| Pernyataan dalam SoapUI | Pencocokan XPath dan XQuery dilakukan terhadap amplop respons. | JSONPath dan pernyataan skrip dicocokkan dengan muatan data. |
| Penggunaan khas | Perbankan, telekomunikasi, dan lainnyatracIntegrasi perusahaan yang kompleks. | Layanan publik dan layanan yang dapat diakses melalui perangkat seluler di mana muatan data tetap ringan. |
Panduan di bawah ini menggunakan layanan cuaca SOAP, tetapi kelas runner yang sama menjalankan kasus uji REST tanpa perubahan apa pun. Java kode.
Apa itu SOAPUI?
SABUNUI SOAPUI adalah alat pengujian layanan web lintas platform sumber terbuka. Edisi SOAPUI-Pro memiliki fungsionalitas tambahan untuk perusahaan yang menangani layanan web kritis. Layanan web memainkan peran penting dalam aplikasi internet.
⚠️ Catatan nama produk: SmartBear dihentikan SoapUI per sebagai produk mandiri dan menggabungkannya, bersama dengan LoadUI Pro dan ServiceV Pro, ke dalam ReadyAPIEdisi gratisnya mempertahankan SoapUI nama dan masih aktif dirilis. Langkah-langkah di bawah ini berlaku untuk keduanya, dan yang sudah ada SoapUI proyek dibuka di ReadyAPI.
Apa itu Selenium?
Selenium Ini bukan satu program tunggal, melainkan serangkaian alat untuk mengoperasikan peramban seperti yang dilakukan manusia. Dua anggota penting di sini adalah:
- Selenium — sebuah alat pengujian yang mengotomatiskan browser di berbagai platform.
- Selenium webdriver — ia melakukan panggilan langsung ke browser, menggunakan dukungan bawaan masing-masing browser untuk otomatisasi.
Mengapa Menggabungkan SoapUI ke Selenium dalam Satu Tes
Pemeriksaan layanan dan pemeriksaan layar biasanya merupakan dua pekerjaan terpisah yang ditangani oleh dua perangkat lunak terpisah, itulah sebabnya kerusakan pada sambungan di antara keduanya cenderung tetap ada meskipun keduanya dijalankan bersamaan. Menjalankan keduanya secara bersamaan akan menutup celah tersebut.
- Buktikan perjalanan pulang pergi. Reservasi yang diajukan melalui browser harus muncul dalam respons layanan. Hanya pengujian gabungan yang dapat memastikan kedua bagian tersebut.
- Siapkan negara bagian dengan cepat. Membuat pelanggan melalui API hanya membutuhkan waktu satu detik; membuat satu hingga dua belas kolom formulir membutuhkan waktu satu menit dan lebih sering gagal.
- Lokalisasi kegagalan. Ketika UI menampilkan total yang salah, pernyataan API dalam proses yang sama akan langsung memberi tahu Anda apakah kesalahan tersebut berasal dari layanan atau halaman tersebut.
- Gunakan kembali satu set data. Pasangan kode pos dan kota dalam contoh di bawah ini digunakan untuk panggilan layanan dan juga dapat digunakan untuk pernyataan browser.
- Kurangi liputan yang berduplikat. Aturan validasi yang sudah terbukti di lapisan layanan tidak memerlukan pengujian browser yang lambat setiap kali.
Konsekuensinya adalah pengujian yang lebih berat: dua alat, dua set dependensi, dan waktu eksekusi yang lebih lama. Pertahankan pengujian gabungan untuk beberapa perjalanan yang benar-benar melintasi batas, dan biarkan sisanya sebagai pengujian murni. API atau pengecekan browser murni.
Selenium dengan SoapUI
Cara paling sederhana dan termudah untuk berintegrasi Selenium dengan SoapUI adalah dengan menggunakan Groovy, yang SoapUI memberikan dukungan secara luas.
Groovy adalah bahasa skrip berorientasi objek yang mencakup semua Java perpustakaan, jadi setiap Java kata kunci dan fungsi dapat digunakan dalam sebuah Groovy skrip secara langsung. Ini berjalan di JVM (Java Mesin Virtual), yang memungkinkan Groovy masuk ke dalam SoapUI dan Java Selenium uji untuk berbagi kelas yang sama.
Prasyarat untuk menggunakan Selenium dengan SoapUI
Instal hal-hal berikut sebelum menulis kode apa pun:
⚠️ Catatan versi: Groovy Versi 5.0 adalah rilis stabil saat ini dan membutuhkan JDK 11 atau yang lebih baru, jadi instal JDK terlebih dahulu dan biarkan Groovy versi selanjutnya. Selenium ditambahkan ke a Java proyek sebagai Maven atau Gradle sebagai dependensi, bukan sebagai folder yang diunduh, dan SoapUI File JAR harus berada di classpath yang sama dengan file pengujian Anda — titik tunggal inilah yang menyebabkan sebagian besar percobaan pertama gagal.
Sebut SoapUI Pelaksana kasus uji di Selenium
Kode di bawah ini memanggil sebuah SoapUI Kasus uji. Kode ini mengatur properti untuk sebuah kota dan kode pos yang sesuai, dan ketika dieksekusi, kode ini mengambil nilai dari setiap kota dan kode pos, kemudian melaporkan jumlah kegagalan untuk setiap pasangan yang tidak cocok. Kode ini berjalan di Selenium.
Catatan: `usePropertyFileFlag=true` digunakan di sini sebagai pengganti file properti statis untuk menyimpan kode pos dan kota. Kode pos dan kota diteruskan secara dinamis saat runtime melalui metode `setProjectProperties()`.
Instruksi untuk menjalankan kode:
- Mulai SoapUI.
- Mulai kasus uji baru.
- Tambahkan yang baru Groovy langkah.
- Salin dan tempel kode contoh ke dalam langkah tersebut.
- Klik Mainkan.
- Anda dapat melihat Firefox memulai dan menavigasi ke GoogleSetelah itu, Anda bisa melihat SoapUI entri log.
- Kode tersebut berjalan menggunakan JUnit.
Code Example
@when("<I use the weather service to get the weather information") public void i_use_the_weather_service_to_get_the_information() { Set<Entry<String, string>> set = zipAndCities.entrySet(); while (iterator,hasNext)) { Entry<String, String> entry = iterator.next(); String zipCode = entry.getkey(); String city = entry.getValue(); String[] prop = {"usePropertyFileFlag=true","zipCode=" +zipCode, "city=" +city}; try{ SoapUITestCaseRunner soapUITestCaseRunner = new SoapUITestCaseRunner(); soapUITestCaseRunner.setProjectFile("src/test/resources/WeatherSoapTest-soapui-project.xml"); soapUITestCaseRunner.setProjectProperties(prop); soapUITestCaseRunner.setTestSuite("TestSuite1"); soapUITestCaseRunner.setTestCase("TestCase1"); soapUITestCaseRunner.run(); } catch (Exception e) { System.err.println("checking" + zipCode + " failed!"); failureCount++; zipCodes.append(zipCode + " [" + city +"] "); e.printStackTrace(); }finally{ totalCount++; } } } }
⚠️ Code catatan: Cuplikan kode ini direproduksi persis seperti yang diterbitkan dan merupakan fragmen, bukan kelas yang dapat dikompilasi. Sebelum dapat dikompilasi, Anda harus mendeklarasikan iterator yang diperoleh dari set.iterator(), benar selama (iterator, memiliki Berikutnya)) untuk sementara (iterator.hasNext()) ke entri.dapatkan kunci() untuk entri.getKey(), kapitalisasi anotasi sebagai @Kapan, hapus karakter yang tidak perlu di awal teks langkah, dan gunakan String daripada string dalam deklarasi Set. Teks aslinya dipertahankan agar contoh yang dipublikasikan tetap utuh.
Tampilan konsol memungkinkan Anda melihat sekilas semua Kasus cobaanSetelah dieksekusi, Anda akan menemukan daftar kode pos dan kota yang diambil dan diteruskan ke SoapUI Kasus Uji 1.
Liha SoapUI File log
Berkas log mencatat setiap tindakan yang terjadi dalam sistem operasi atau aplikasi perangkat lunak. Untuk melihat SoapUI Untuk mengakses file log, masuk ke direktori utama, di sana Anda akan melihat file bernama... soapui.log.
In SoapUIFile log terletak di folder bin di dalam direktori instalasi, misalnya C:\Program Files\SmartBear\soapUI-Pro-4.0.1\bin. Pada instalasi terbaru, folder versinya berbeda, dan... ReadyAPI Instalasi malah menulis ke folder bin-nya sendiri.
Saat Anda membuka file log ini dengan mengkliknya, maka akan terlihat seperti gambar di bawah.
Where SoapUI ke Selenium Integrasi Sering Gagal
Hampir setiap kegagalan pada tahap ini disebabkan oleh masalah pengkabelan, bukan masalah pengujian. Inilah yang perlu diperiksa terlebih dahulu.
| Gejala | Kemungkinan penyebab | Apa yang harus diperiksa |
|---|---|---|
| NoClassDefFoundError atau ClassNotFoundException pada SoapUITestCaseRunner | The SoapUI File JAR tidak ada di classpath pengujian. | Tambahkan SoapUI ketergantungan pada file build, atau arahkan classpath ke jar di SoapUI folder lib. Sebuah file jar yang hilang muncul sebagai file biasa. Selenium pengecualian di konsol. |
| Berkas proyek tidak dapat ditemukan. | setProjectFile() menyelesaikan jalur relatif terhadap direktori kerja, yang berbeda antara IDE dan alat build. | Jalankan dari direktori root proyek, atau berikan jalur absolut. |
| Rangkaian pengujian atau kasus pengujian tidak ditemukan | Nama-nama dalam setTestSuite() dan setTestCase() harus sama persis dengan nama proyek. | Salin nama-nama tersebut langsung dari SoapUI Pohon proyek; bersifat peka huruf besar-kecil. |
| Properti tersebut tidak pernah sampai ke permintaan. | setProjectProperties() dijalankan setelah run(), atau permintaan tersebut tidak merujuk pada properti tersebut. | Atur setiap properti sebelum menjalankan fungsi run(), dan gunakan sintaks placeholder properti di dalam permintaan. |
| Browser tidak terbuka. | Driver dan browser yang terpasang memiliki versi utama yang berbeda. | membiarkan Selenium Manajer akan menyelesaikan masalah driver, atau mencocokkan driver dengan versi browser. |
| Fitur tersebut berfungsi di IDE tetapi tidak berfungsi dari aplikasi pelaksana. | Langkah ini bergantung pada fitur khusus Pro, seperti sumber data. | Konfirmasikan lisensi, atau buat ulang langkah tersebut dengan menggunakan alternatif sumber terbuka. |
Setelah runner keluar dengan bersih dan soapui.log menampilkan entri yang diharapkan, integrasi berfungsi dan dapat digabungkan ke dalam sistem yang lebih luas. pengujian otomasi pada.



