Apa itu Pengujian SOA? Tutorial dengan Contoh
โก Ringkasan Cerdas
Pengujian SOA memvalidasi sebuah Arsitektur Berorientasi Layanan. ArchiStruktur di mana layanan yang terhubung secara longgar bertukar pesan melalui jaringan, memeriksa setiap layanan secara terpisah, integrasi di antara mereka, dan alur bisnis lengkap dari ujung ke ujung.
Apa itu Pengujian SOA?
SOA (Berorientasi Layanan Archi(kuliah) Pengujian Pengujian ini berkaitan dengan gaya arsitektur SOA, di mana komponen aplikasi dirancang untuk berkomunikasi melalui protokol komunikasi, biasanya melalui jaringan.
Apa itu SOA?
SOA adalah metode mengintegrasikan aplikasi dan proses bisnis secara bersamaan sehingga dapat memenuhi kebutuhan bisnis.
In Rekayasa Perangkat LunakSOA memberikan kelincahan dan fleksibilitas pada proses bisnis. Perubahan pada suatu proses atau aplikasi dapat diarahkan pada komponen tertentu tanpa memengaruhi keseluruhan sistem.
Pengembang perangkat lunak yang bekerja di SOA baik mengembangkan sendiri atau membeli sebagian program yang disebut layanan.
Apa itu Layanan?
Diagram di bawah ini menunjukkan gerbang pembayaran yang dipublikasikan sebagai layanan yang dapat diakses oleh beberapa situs e-commerce.
- Suatu layanan dapat berupa unit fungsional dari sebuah aplikasi atau proses bisnis, yang dapat digunakan kembali atau diulang oleh aplikasi atau proses lain. (Sebagai contoh, pada gambar di atas, Payment Gateway adalah layanan yang dapat digunakan kembali oleh situs e-commerce mana pun. Setiap kali pembayaran perlu dilakukan, situs e-commerce memanggil atau meminta layanan Payment Gateway. Setelah pembayaran selesai di gateway, respons dikirim kembali ke situs web e-commerce.)
- Layanan mudah dirakit dan mudah dikonfigurasi ulang komponen.
- Layanan dapat diibaratkan seperti blok bangunan. Layanan dapat membangun aplikasi apa pun yang dibutuhkan, dan menambahkan atau menghapusnya dari aplikasi atau proses bisnis sangat mudah.
- Layanan lebih didefinisikan berdasarkan fungsi bisnis yang mereka lakukan daripada sebagai kumpulan kode.
Layanan Web
Sebagian besar layanan SOA diekspos sebagai layanan web, jadi mekanisme pemanggilan layanan web perlu dijelaskan sebelum lapisan pengujian.
Layanan Web merupakan komponen aplikasi independen yang tersedia melalui web.
Mereka dapat dipublikasikan, ditemukan, dan digunakan di web, dan mereka berkomunikasi melalui internet. Urutan di bawah ini menunjukkan bagaimana penyedia, registri, dan konsumen berinteraksi.
- Penyedia Layanan mempublikasikan layanan ke internet.
- Klien mencari layanan web tertentu di Registri Layanan Web.
- A URL dan wsdl untuk layanan web yang dibutuhkan akan dikembalikan. Dengan menggunakan WSDL dan URLKomunikasi antara penyedia layanan dan pemohon terjadi melalui pesan SOAP.
- Ketika konsumen mengakses layanan web, koneksi HTTP akan dibuat ke penyedia layanan tersebut.
- Sebuah pesan SOAP dibuat untuk menginstruksikan penyedia agar memanggil logika layanan web yang dibutuhkan.
- Respons yang diterima dari penyedia adalah pesan SOAP yang tertanam dalam respons HTTP. Respons HTTP ini adalah format data yang dapat dipahami oleh aplikasi konsumen.
Example
Tangkapan layar di bawah ini menunjukkan laporan cuaca yang disediakan oleh layanan eksternal dan disematkan di halaman beranda mesin pencari.
Halaman beranda sebuah situs web dan mesin pencari menampilkan laporan cuaca harian. Alih-alih membuat kode bagian laporan cuaca dari awal, layanan laporan cuaca dapat dibeli dari vendor dan diintegrasikan ke dalam halaman tersebut.
Lapisan Pengujian SOA
SOA terdiri dari berbagai teknologi, dan aplikasi yang dibangun menggunakan SOA memiliki berbagai layanan yang terhubung secara longgar. Diagram di bawah ini memetakan tiga lapisan yang harus dicakup oleh rencana pengujian.
Pengujian SOA harus fokus pada 3 lapisan sistem.
Lapisan Layanan
Lapisan ini terdiri dari layanan-layanan yang diekspos oleh suatu sistem, yang berasal dari fungsi-fungsi bisnis.
Sebagai contoh, pertimbangkan sebuah Situs Web Kesehatan yang terdiri dari:
- Berat TracKer
- Gula Darah TracKer
- Tekanan darah TracKer
TracKers menampilkan data yang bersangkutan dan tanggal data tersebut dimasukkan. Lapisan layanan terdiri dari layanan-layanan yang mengambil data yang bersangkutan dari basis data:
- Berat Traclayanan ker
- Gula Darah Traclayanan ker
- Tekanan darah Traclayanan ker
- Layanan Masuk
Lapisan Proses
Lapisan proses terdiri dari proses-proses, yaitu kumpulan layanan yang merupakan bagian dari satu fungsi tunggal.
Proses-proses tersebut mungkin merupakan bagian dari antarmuka pengguna (misalnya, mesin pencari) atau bagian dari alat ETL yang mengambil data dari basis data.
Fokus utama pada lapisan ini adalah pada antarmuka pengguna dan proses. Antarmuka pengguna dari bobot tracker dan integrasinya dengan basis data adalah fokus utama.
Fungsi-fungsi berikut perlu dipertimbangkan:
- Menambahkan data baru
- Mengedit data yang ada
- Membuat baru tracKer
- Menghapus data
Lapisan Konsumen
Lapisan ini terutama terdiri dari antarmuka pengguna, seperti yang diilustrasikan pada layar di bawah ini.
Berdasarkan lapisan-lapisan ini, pengujian aplikasi SOA dibagi menjadi tiga tingkatan:
- Tingkat layanan
- Tingkat antarmuka
- Tingkat ujung ke ujung
Kedua arah perjalanan tersebut berbeda: pendekatan top-down digunakan untuk desain pengujian, sedangkan pendekatan bottom-up digunakan untuk eksekusi pengujian.
Strategi Pengujian SOA
Pendekatan Perencanaan Pengujian
- Para penguji SOA harus memahami arsitektur aplikasi secara lengkap.
- Aplikasi tersebut perlu dipecah menjadi layanan-layanan independen (layanan yang memiliki struktur permintaan dan respons sendiri dan tidak bergantung pada layanan lain untuk membentuk respons).
- Struktur aplikasi perlu diorganisasi ulang menjadi tiga komponen โ data, layanan, dan aplikasi front-end.
- Semua komponen perlu dianalisis dengan cermat, dan skenario bisnis harus dirancang dengan matang.
- Skenario bisnis harus diklasifikasikan sebagai skenario umum dan skenario spesifik aplikasi.
- A TracMatriks Kelayakan harus disiapkan, dan semua kasus uji harus tracdisesuaikan dengan skenario bisnis.
Pendekatan Eksekusi Tes
- Setiap komponen layanan harus diuji.
- Tes integrasi komponen layanan harus dilakukan untuk memvalidasi aliran data melalui layanan dan integritas data.
- Pengujian Sistem Pengujian model secara menyeluruh harus dilakukan untuk memvalidasi aliran data antara aplikasi front-end dan basis data.
- Pengujian Kinerja harus dilakukan untuk penyempurnaan dan kinerja optimal.
Metode Pengujian SOA
1) Pengujian berbasis data yang didorong oleh skenario bisnis
- Berbagai aspek bisnis yang terkait dengan sistem tersebut perlu dianalisis.
- Skenario harus dikembangkan berdasarkan integrasi berbagai layanan web dari aplikasi, dan integrasi layanan web dengan aplikasi tersebut.
- Pengaturan data harus dilakukan berdasarkan skenario di atas.
- Pengaturan data juga harus mencakup skenario ujung-ke-ujung.
2) Rintisan
- Antarmuka dummy dibuat untuk menguji layanan.
- Berbagai masukan dapat diberikan melalui antarmuka ini, dan keluarannya dapat divalidasi.
- Ketika sebuah aplikasi menggunakan antarmuka ke layanan eksternal yang tidak sedang diuji (layanan pihak ketiga), sebuah stub dapat dibuat selama Pengujian Integrasi.
3) Pengujian regresi
- Pengujian Regresi Pembaruan aplikasi sebaiknya dilakukan ketika terdapat beberapa rilis, untuk memastikan stabilitas dan ketersediaan sistem.
- Rangkaian uji regresi komprehensif akan dibuat yang mencakup layanan yang merupakan bagian penting dari aplikasi.
- Rangkaian pengujian ini dapat digunakan kembali di berbagai rilis proyek.
4) Pengujian Tingkat Layanan
Pengujian tingkat layanan mencakup pengujian komponen untuk fungsionalitas, keamanan, kinerja, dan interoperabilitas. Setiap layanan perlu diuji secara independen terlebih dahulu.
5) Pengujian Fungsional
Pengujian Fungsional Hal ini harus dilakukan pada setiap layanan untuk:
- Pastikan bahwa layanan tersebut memberikan respons yang tepat untuk setiap permintaan.
- Pastikan kesalahan yang tepat diterima untuk permintaan dengan data yang tidak valid atau buruk.
- Periksa setiap permintaan dan respons untuk setiap operasi yang harus dilakukan layanan saat dijalankan.
- Validasi pesan kesalahan ketika terjadi kesalahan di tingkat server, klien, atau jaringan.
- Validasi bahwa tanggapan yang diterima berada dalam format yang benar.
- Verifikasi bahwa data yang diterima dalam respons sesuai dengan data yang diminta.
6) Pengujian Keamanan
Pengujian keamanan layanan web merupakan aspek penting selama pengujian tingkat layanan aplikasi SOA, karena hal ini memastikan keamanan aplikasi.
Faktor-faktor berikut perlu dicakup selama pengujian:
- Standar industri yang ditetapkan oleh WS-Security harus dipatuhi oleh layanan web tersebut.
- Langkah-langkah keamanan harus bekerja dengan sempurna.
- Enkripsi data dan tanda tangan digital pada dokumen.
- Autentikasi dan otorisasi.
- Kerentanan seperti injeksi SQL, malware, XSS, CSRF, dan kerentanan lainnya akan diuji pada... XML.
- Penolakan serangan layanan.
7) Pengujian Kinerja
Pengujian kinerja layanan perlu dilakukan karena layanan bersifat dapat digunakan kembali dan beberapa aplikasi mungkin menggunakan layanan yang sama.
Faktor-faktor berikut dipertimbangkan selama pengujian:
- Performa dan fungsionalitas layanan perlu diuji di bawah beban berat.
- Kinerja layanan perlu dibandingkan ketika berfungsi secara individual dan ketika terintegrasi dalam aplikasi.
- Uji beban Pengujian layanan harus dilakukan untuk memverifikasi waktu respons, memeriksa hambatan, memverifikasi pemanfaatan CPU dan memori, serta memprediksi skalabilitas.
8) Pengujian tingkat integrasi
- Pengujian tingkat layanan memastikan berfungsinya layanan secara individual dengan benar; hal ini tidak menjamin berfungsinya komponen yang saling terkait.
- Pengujian Integrasi dilakukan dengan fokus utama pada hal-hal berikut: interface.
- Fase ini mencakup semua skenario bisnis yang mungkin terjadi.
- Pengujian non-fungsional aplikasi harus dilakukan sekali lagi pada fase ini. Pengujian keamanan, kepatuhan, dan kinerja memastikan ketersediaan dan stabilitas sistem dalam semua aspek.
- Protokol komunikasi dan jaringan harus diuji untuk memvalidasi konsistensi komunikasi data antar layanan.
9) Pengujian ujung ke ujung
Fase ini memastikan bahwa aplikasi tersebut sesuai dengan persyaratan bisnis baik secara fungsional maupun non-fungsional.
Barang-barang di bawah ini dipastikan telah diuji selama pengujian ujung ke ujung:
- Semua layanan berfungsi seperti yang diharapkan setelah integrasi
- Penanganan pengecualian
- Antarmuka pengguna aplikasi
- Aliran data yang tepat melalui semua komponen
- Proses bisnis
Tantangan dalam Pengujian SOA
Menerapkan metode-metode tersebut jarang sekali mudah, dan kesulitan-kesulitan di bawah ini berulang di hampir setiap program SOA.
- Kurangnya antarmuka untuk layanan.
- Proses pengujian mencakup berbagai sistem, yang menciptakan kebutuhan data yang kompleks.
- Aplikasi ini merupakan kumpulan berbagai komponen yang cenderung berubah, sehingga kebutuhan akan Pengujian Regresi menjadi lebih sering.
- Karena arsitekturnya yang berlapis-lapis, sulit untuk mengisolasi cacat.
- Karena suatu layanan digunakan oleh berbagai antarmuka, beban sulit diprediksi, yang membuat perencanaan pengujian kinerja menjadi rumit.
- SOA adalah kumpulan teknologi heterogen. Pengujian aplikasi SOA membutuhkan orang-orang dengan keahlian yang berbeda, yang pada gilirannya meningkatkan biaya perencanaan dan pelaksanaan.
- Karena aplikasi ini mengintegrasikan berbagai layanan, pengujian keamanan memiliki tantangan tersendiri. Memvalidasi otentikasi dan otorisasi merupakan hal yang sulit.
Alat Pengujian SOA
Terdapat banyak alat pengujian SOA yang tersedia di pasaran untuk membantu penguji dalam menguji aplikasi SOA. Berikut adalah beberapa alat pengujian SOA yang populer.
1) SoapUI
SoapUI adalah alat pengujian fungsional sumber terbuka untuk layanan dan Pengujian API.
- Aplikasi desktop
- Mendukung berbagai protokol โ SOAP, REST, HTTP, JMS, AMF, JDBC
- Layanan web dapat dikembangkan, diperiksa, dan dipanggil.
- Dapat juga digunakan untuk pengujian beban, Pengujian Otomatisasi, dan pengujian keamanan
- Rintisan bertopik dapat dibuat oleh MockServices
- Permintaan dan pengujian layanan web dapat dihasilkan secara otomatis melalui klien layanan web-nya.
- Memiliki alat pelaporan bawaan.
- Dikembangkan oleh SmartBear, yang mengirimkan baik open-source SoapUI distribusi dan komersial ReadyAPI edisi
2) Virtualisasi Layanan Broadcom (sebelumnya iTKO LISA)
LISA adalah rangkaian produk yang menyediakan solusi pengujian fungsional untuk sistem terdistribusi seperti SOA. Produk ini beralih dari iTKO ke CA Technologies dan saat ini dijual sebagai Broadcom Service Virtualization.
- Dapat juga digunakan untuk pengujian regresi, integrasi, beban, dan kinerja.
- Dapat digunakan untuk merancang dan melaksanakan tes.
3) UFT Satu (sebelumnya HP Service Test)
Service Test adalah alat pengujian fungsional yang mendukung pengujian UI dan layanan bersama. Kemampuan pengujian API-nya digabungkan ke dalam Unified Functional Testing, yang sekarang dijual oleh OpenText as UFT Satu.
- Baik pengujian fungsional maupun pengujian kinerja layanan dapat dilakukan dengan satu skrip tunggal.
- Terintegrasi dengan Quality Center, sekarang dijual sebagai OpenText ALM / Pusat Mutu.
- Sejumlah besar layanan dan data dapat dikelola.
- Mendukung pengujian interoperabilitas dengan simulasi lingkungan klien JEE, AXIS, dan DotNet.
4) Parasoft SOAtest
Parasoft SOAtest adalah rangkaian alat pengujian dan analisis yang dikembangkan untuk pengujian API dan aplikasi berbasis API.
- Mendukung teknologi layanan web, REST, JSON, MQ, JMS, TIBCO, HTTP, dan XML.
- Pengujian fungsional, unit, integrasi, regresi, keamanan, interoperabilitas, kepatuhan, dan kinerja dimungkinkan.
- Stub dapat dibuat menggunakan Parasoft Virtualisasiyang lebih mampu daripada SoapUI Layanan tiruan.
Kasus Penggunaan Pengujian SOA
Contoh yang disajikan di bawah ini menerapkan strategi, metode, dan alat yang telah disebutkan di atas pada satu situs e-commerce, secara bertahap.
Pertimbangkan sebuah situs web e-commerce yang berisi fungsi dan sub-fungsi di bawah ini.
Proses Pemesanan
Bagan di bawah ini membagi proses pemesanan menjadi sub-fungsi yang menjadi layanan.
FASE 1
Pada fase pertama pengujian SOA, yaitu fase strategi pengujian, aplikasi dipecah menjadi layanan dan fungsi bisnis.
Mari kita pertimbangkan layanan-layanan di bawah ini dalam aplikasi.
- Buat Pesanan
- Periksa Status Pelanggan
- Ubah Status Pesanan
- Periksa Status Pemesanan
- Periksa Inventaris
Fungsi bisnis sama dengan fungsi situs web.
Catatan: Dokumen strategi pengujian akan berisi daftar layanan dan fungsi yang harus diuji.
FASE 2
Ini adalah fase perencanaan pengujian. Uji kasus ditulis untuk setiap level.
Level ujung ke ujung. Kasus uji ditulis untuk setiap kasus penggunaan dan alur bisnis. Berikut adalah contoh kasus uji.
- Buat pesanan dengan pengguna aktif.
- Buat pesanan dengan pengguna yang tidak aktif.
- Buat pesanan dengan produk yang tersedia dengan jumlah pesanan < jumlah produk yang tersedia.
- Buat pesanan dengan produk yang tersedia dengan jumlah pesanan > jumlah yang tersedia.
- Buat pesanan dengan beberapa item.
- Batalkan pesanan sepenuhnya.
- Membatalkan pesanan sebagian.
Tingkat integrasi. Kasus uji ditulis untuk integrasi basis data dan antarmuka pengguna. Berikut adalah contoh kasus uji.
- Buat pesanan baru dengan satu item. Verifikasi bahwa pesanan dibuat di database.
- Buat pesanan baru dengan satu item. Pastikan harga yang dihitung untuk pesanan sudah benar.
- Buat pesanan baru dengan satu item. Verifikasi bahwa jumlah produk yang tersedia berkurang sebesar jumlah pesanan.
- Pastikan bahwa status pesanan yang ditampilkan pada antarmuka pengguna (UI) sama dengan status yang ada di basis data.
- Batalkan pesanan dan verifikasi bahwa status pesanan telah diubah di database.
- Untuk pembayaran pertama kali, pastikan bahwa detail pembayaran yang dimasukkan pada antarmuka pengguna (UI) telah tersimpan di basis data.
- Untuk mengembalikan pembayaran, verifikasi bahwa rincian pembayaran pada database ditampilkan di UI.
Tingkat layanan. Setiap layanan diuji untuk semua kondisi data. Berikut beberapa contohnya.
| Nomor | Detail pesanan | Kondisi Pesanan |
|---|---|---|
| 1 | Buat Pesanan. Jumlah Barang = 1 | Jumlah pesanan < Jumlah di database |
| 2 | Buat Pesanan. Jumlah Barang > 1 | Jumlah Pesanan < Jumlah di Basis Data |
| 3 | Buat Pesanan. Jumlah Barang = 1 | Kuantitas pada Pesanan > Kuantitas pada database |
| 4 | Periksa status Pesanan | Status pada database = Aktif |
| 5 | Periksa status Pesanan | Status di database = Dikirim |
| 6 | Periksa status Pesanan | Status di database = Dibatalkan |
| 7 | Periksa status Pesanan | ID pesanan = Tidak valid |
| 8 | Cek ketersediaan produk | Jumlah produk >0 |
| 9 | Cek ketersediaan produk | Jumlah produk =0 |
| 10 | Cek ketersediaan produk | ID produk = tidak valid |
FASE 3 โ Pelaksanaan Tes
Pelaksanaan pengujian menggunakan pendekatan bottom-up: pengujian tingkat layanan dilakukan terlebih dahulu, kemudian tingkat integrasi, dan terakhir pengujian end-to-end.
1) Tingkat layanan
Mari kita pertimbangkan bahwa SoapUI Alat ini digunakan untuk menguji aplikasi. WSDL dan URL ditelusuri ke dalam jendela pengujian SoapUI, dan permintaan untuk setiap layanan ditampilkan di jendela permintaan. Dengan memodifikasi data sesuai dengan kasus uji tingkat layanan, permintaan dibuat untuk setiap kasus uji.
| Uji Kasus | Meminta | Respons yang diharapkan |
|---|---|---|
| Buat Pesanan. Jumlah Barang = 1, Kuantitas pada pesanan < Kuantitas pada database | x2 2 | o3251 Berhasil |
| Buat Pesanan. Jumlah Barang > 1, Kuantitas Pesanan < Kuantitas di database | kamu1 1 kamu2 3 | o3251 Berhasil |
| Buat Pesanan. Jumlah Barang = 1, Kuantitas pada Pesanan > Kuantitas pada database | x23 200 | batal Gagal |
| Periksa status pesanan. Status di basis data = Aktif | o9876 | Aktif Berhasil |
| Periksa status pesanan. Status di database = Terkirim | o9656 | Dikirim Berhasil |
| Periksa status pesanan. ID pesanan = Tidak valid | y5686 | batal Gagal |
| Periksa ketersediaan produk. Jumlah produk >0 | d34 | 34 Ya Berhasil |
| Periksa ketersediaan produk. Jumlah produk = 0 | y34 | 0 TIDAK Berhasil |
| Periksa ketersediaan produk. ID produk = tidak valid | sder | Gagal |
2) Tingkat Integrasi
Kasus uji tingkat integrasi dijalankan pada antarmuka pengguna dan basis data. Buat pesanan dengan satu item:
- Seorang pengguna membuka situs web.
- Pengguna tersebut kemudian melakukan pemesanan.
- Pengguna memilih produk dan kuantitas yang valid lalu menyimpan pesanan.
- Pesan yang menyatakan bahwa pesanan telah berhasil dilakukan harus ditampilkan.
- Pengguna membuka basis data dan memeriksa apakah detail pesanan sama dengan yang dimasukkan di situs web.
3) Tingkat ujung ke ujung
Alur bisnis dan kasus penggunaan dieksekusi pada antarmuka pengguna. Buat pesanan dengan beberapa item:
- Seorang pengguna membuka situs web.
- Pengguna tersebut kemudian melakukan pemesanan.
- Pengguna menanyakan tentang produk dan kuantitas yang valid lalu menambahkannya ke keranjang belanja.
- Produk valid lainnya ditambahkan dengan jumlah yang sesuai dan pesanan disimpan. Pembayaran dilakukan melalui metode pembayaran baru dan pesanan diproses.
- Pesan yang mengatakan โPesanan berhasil dilakukanโ akan ditampilkan.
- Penguji harus memvalidasi bahwa seluruh alur kerja selesai tanpa adanya penyimpangan data.







