Što je SOA testiranje? Vodič s primjerom
⚡ Pametni sažetak
SOA testiranje potvrđuje servisno orijentiranu Archistruktura u kojoj labavo povezane usluge razmjenjuju poruke putem mreže, provjeravajući svaku uslugu zasebno, integracije među njima i cijeli poslovni tijek od početka do kraja.
Što je SOA testiranje?
SOA (Service Oriented ArchiIspitivanje teksture je testiranje SOA arhitektonskog stila, u kojem su aplikacijske komponente dizajnirane za komunikaciju putem komunikacijskih protokola, obično preko mreže.
Što je SOA?
SOA je metoda integracije poslovnih aplikacija i procesa kako bi se zadovoljile poslovne potrebe.
In Programsko inženjerstvoSOA pruža agilnost i fleksibilnost poslovnim procesima. Promjena procesa ili aplikacije može se usmjeriti na određenu komponentu bez utjecaja na cijeli sustav.
Razvojni programeri koji rade u SOA-i ili razvijaju ili kupuju dijelove programa koji se nazivaju usluge.
Što je usluga?
Donji dijagram prikazuje platni sustav objavljen kao usluga koju nekoliko web-mjesta za e-trgovinu može pozvati.
- Usluga može biti funkcionalna jedinica aplikacije ili poslovnog procesa koju bilo koja druga aplikacija ili proces može ponovno upotrijebiti ili ponoviti. (Na primjer, na gornjoj slici, Payment Gateway je usluga koju može ponovno upotrijebiti bilo koja web-lokacija za e-trgovinu. Kad god je potrebno izvršiti plaćanje, web-lokacija za e-trgovinu poziva ili zahtijeva uslugu Payment Gateway. Nakon što je plaćanje dovršeno na gatewayu, odgovor se šalje natrag web-lokaciji za e-trgovinu.)
- Usluge je lako sastaviti i lako rekonfigurirati komponente.
- Usluge se mogu usporediti s građevnim blokovima. Mogu izgraditi bilo koju potrebnu aplikaciju, a njihovo dodavanje ili uklanjanje iz aplikacije ili poslovnog procesa je jednostavno.
- Usluge su više definirane poslovnom funkcijom koju obavljaju nego kao dijelovi koda.
Web usluge
Većina SOA usluga izložena je kao web usluge, stoga je mehaniku poziva web usluge vrijedno objasniti prije testnih slojeva.
Web usluge su neovisne komponente aplikacije koje su dostupne putem weba.
Mogu se objaviti, pronaći i koristiti na webu te komuniciraju putem interneta. Slijed u nastavku prikazuje kako pružatelj usluga, registar i potrošač međusobno djeluju.
- Pružatelj usluga objavljuje uslugu na internetu.
- Klijent traži određenu web uslugu u Registru web usluga.
- A URL i wsdl za potrebnu web uslugu. Korištenjem WSDL-a i URL, komunikacija između pružatelja usluge i podnositelja zahtjeva odvija se putem SOAP poruka.
- Kada korisnik pozove web uslugu, uspostavlja se HTTP veza s pružateljem usluga.
- SOAP poruka se kreira kako bi se davatelju usluga da pozove potrebnu logiku web servisa.
- Odgovor primljen od davatelja je SOAP poruka koja je ugrađena u HTTP odgovor. Ovaj HTTP odgovor je format podataka koji razumije korisnička aplikacija.
Primjer
Snimka zaslona u nastavku prikazuje vremensku prognozu koju pruža vanjska usluga i ugrađenu je u početnu stranicu tražilice.
Početna stranica web-mjesta i tražilice prikazuju svakodnevnu vremensku prognozu. Umjesto kodiranja odjeljka za vremensku prognozu od nule, usluga vremenske prognoze može se kupiti od dobavljača i integrirati u stranice.
SOA slojevi za testiranje
SOA se sastoji od različitih tehnologija, a aplikacije izgrađene pomoću SOA-e imaju različite usluge koje su labavo povezane. Dijagram u nastavku prikazuje tri sloja koja plan testiranja mora pokriti.
SOA testiranje treba se usredotočiti na 3 sistemska sloja.
Sloj usluga
Ovaj sloj sastoji se od usluga koje pruža sustav, a izvedene su iz poslovnih funkcija.
Na primjer, razmotrite web stranicu o wellnessu koja se sastoji od:
- Težina Tracker
- Šećer u krvi Tracker
- Krvni pritisak Tracker
Trackeri prikazuju odgovarajuće podatke i datum unosa. Sloj usluga sastoji se od usluga koje dobivaju odgovarajuće podatke iz baze podataka:
- Težina Tracker usluga
- Šećer u krvi Tracker usluga
- Krvni pritisak Tracker usluga
- Usluga prijave
Procesni sloj
Procesni sloj sastoji se od procesa, skupa usluga koje su dio jedne funkcionalnosti.
Procesi mogu biti dio korisničkog sučelja (na primjer, tražilice) ili dio ETL alata koji povlači podatke iz baze podataka.
Glavni fokus u ovom sloju je na korisničkim sučeljima i procesima. Korisničko sučelje težine tracker i njegova integracija s bazom podataka je primarni fokus.
Sljedeće funkcije dolaze u obzir:
- Dodavanje novih podataka
- Uređivanje postojećih podataka
- Stvaranje novog tracker
- Brisanje podataka
Potrošački sloj
Ovaj sloj uglavnom sadrži korisnička sučelja, kao što je prikazano na donjem zaslonu.
Na temelju ovih slojeva, testiranje SOA aplikacije podijeljeno je u tri razine:
- Razina usluge
- Razina sučelja
- Od kraja do kraja razine
Dva smjera kretanja se razlikuju: pristup od vrha prema dolje koristi se za dizajn testa, dok se pristup od dna prema vrhu koristi za izvršavanje testa.
Strategija za SOA testiranje
Pristup planiranju testiranja
- SOA testeri bi trebali razumjeti potpunu arhitekturu aplikacije.
- Aplikaciju je potrebno podijeliti na neovisne servise (servis koji ima vlastitu strukturu zahtjeva i odgovora i ne ovisi o nijednom drugom servisu za formiranje odgovora).
- Strukturu aplikacije potrebno je reorganizirati u tri komponente - podatke, usluge i front-end aplikacije.
- Sve komponente treba pažljivo analizirati i treba razraditi poslovne scenarije.
- Poslovne scenarije treba klasificirati kao uobičajene scenarije i scenarije specifične za primjenu.
- A TracMatrica mogućnosti treba biti pripremljen, a svi testni slučajevi trebaju biti tracprilagođeno poslovnim scenarijima.
Pristup izvođenju testa
- Svaku komponentu usluge treba ispitati.
- Ispitivanje integracije komponenti usluge treba učiniti kako bi se potvrdio protok podataka kroz usluge i integritet podataka.
- Ispitivanje sustava cijelog modela treba napraviti kako bi se validirao protok podataka između front-end aplikacije i baze podataka.
- Ispitivanje performansi treba učiniti za fino ugađanje i optimalnu izvedbu.
SOA metode testiranja
1) Testiranje temeljeno na podacima vođeno poslovnim scenarijem
- Treba analizirati različite poslovne aspekte povezane sa sustavom.
- Scenariji bi trebali biti razvijeni na temelju integracije različitih web servisa aplikacije i web servisa s aplikacijom.
- Postavljanje podataka treba se izvršiti na temelju gore navedenih scenarija.
- Postavke podataka trebale bi također obuhvatiti scenarije od početka do kraja.
2) Stubovi
- Lažna sučelja su stvorena za testiranje usluga.
- Kroz ova sučelja mogu se osigurati različiti ulazi, a izlazi se mogu potvrditi.
- Kada aplikacija koristi sučelje prema vanjskoj usluzi koja se ne testira (usluga treće strane), tijekom integracijskog testiranja može se stvoriti stub.
3) Regresijsko testiranje
- Ispitivanje regresije na aplikaciji treba obaviti kada postoji više izdanja, kako bi se osigurala stabilnost i dostupnost sustava.
- Izradit će se sveobuhvatan paket regresijskih testova koji pokriva usluge koje čine važan dio aplikacije.
- Ovaj testni paket može se ponovno koristiti u više izdanja projekta.
4) Testiranje razine usluge
Testiranje razine usluge uključuje testiranje komponente za funkcionalnost, sigurnost, performanse i interoperabilnost. Svaku uslugu prvo je potrebno neovisno testirati.
5) Funkcionalno testiranje
Funkcionalno ispitivanje treba obaviti na svakoj usluzi kako bi se:
- Osigurajte da usluga pruži ispravan odgovor na svaki zahtjev.
- Osigurajte da se za zahtjeve s nevažećim ili lošim podacima primaju ispravne pogreške.
- Provjerite svaki zahtjev i odgovor za svaku operaciju koju usluga mora izvršiti tijekom izvođenja.
- Provjerite poruke o pogrešci kada se pojavi pogreška na razini poslužitelja, klijenta ili mreže.
- Provjerite jesu li primljeni odgovori u ispravnom formatu.
- Provjerite odgovaraju li podaci primljeni u odgovoru traženim podacima.
6) Sigurnosno testiranje
Sigurnosno testiranje web servisa važan je aspekt tijekom testiranja razine usluge SOA aplikacije, jer osigurava sigurnost aplikacije.
Tijekom testiranja potrebno je pokriti sljedeće čimbenike:
- Web usluga treba se pridržavati industrijskog standarda koji je definirao WS-Security.
- Sigurnosne mjere trebale bi funkcionirati besprijekorno.
- Šifriranje podataka i digitalnih potpisa na dokumentima.
- Autentifikacija i autorizacija.
- SQL injekcija, zlonamjerni softver, XSS, CSRF i ostale ranjivosti bit će testirane na XML.
- Napadi uskraćivanjem usluge.
7) Testiranje izvedbe
Testiranje performansi usluge potrebno je provesti jer se usluge mogu ponovno koristiti i više aplikacija može koristiti istu uslugu.
Tijekom ispitivanja uzimaju se u obzir sljedeći čimbenici:
- Izvedbu i funkcionalnost usluge potrebno je testirati pod velikim opterećenjem.
- Performanse usluge potrebno je usporediti kada radi zasebno i kada je povezana unutar aplikacije.
- Ispitivanje opterećenja usluge treba provesti kako bi se provjerilo vrijeme odziva, provjerila uska grla, provjerila iskorištenost CPU-a i memorije te predvidjela skalabilnost.
8) Testiranje razine integracije
- Testiranje razine usluge osigurava ispravan rad pojedinačnih usluga; ne jamči rad povezanih komponenti.
- Integracijsko testiranje se provodi s fokusom uglavnom na sučelja.
- Ova faza pokriva sve moguće poslovne scenarije.
- Nefunkcionalno testiranje aplikacije treba provesti još jednom u ovoj fazi. Testiranje sigurnosti, usklađenosti i performansi osigurava dostupnost i stabilnost sustava u svim aspektima.
- Komunikacijski i mrežni protokoli trebaju se testirati kako bi se potvrdila dosljednost podatkovne komunikacije između usluga.
9) End to End testiranje
Ova faza osigurava da aplikacija ispunjava poslovne zahtjeve, i funkcionalno i nefunkcionalno.
Zajamčeno je da se dolje navedene stavke testiraju tijekom end-to-end testiranje:
- Sve usluge rade prema očekivanjima nakon integracije
- Rukovanje izuzecima
- Korisničko sučelje aplikacije
- Ispravan protok podataka kroz sve komponente
- Poslovni proces
Izazovi u SOA testiranju
Primjena tih metoda rijetko je jednostavna, a dolje navedene poteškoće ponavljaju se u gotovo svakom SOA programu.
- Nedostatak sučelja za usluge.
- Proces testiranja obuhvaća više sustava, što stvara složene potrebe za podacima.
- Aplikacija je skup različitih komponenti koje se obično mijenjaju, pa je potreba za regresijskim testiranjem češća.
- Zbog višeslojne arhitekture, teško je izolirati nedostatke.
- Budući da uslugu koriste različita sučelja, opterećenje je teško predvidjeti, što planiranje testova performansi čini složenim.
- SOA je skup heterogenih tehnologija. Testiranje SOA aplikacije zahtijeva ljude s različitim vještinama, što zauzvrat povećava troškove planiranja i izvršenja.
- Budući da aplikacija integrira više usluga, sigurnosno testiranje ima svoj dio problema. Validacija autentifikacije i autorizacije je teška.
Alati za testiranje SOA-e
Na tržištu je dostupno mnogo alata za SOA testiranje koji pomažu testerima u testiranju SOA aplikacija. Evo nekih od popularnih alata za SOA testiranje.
1) SoapUI
SoapUI je alat otvorenog koda za funkcionalno testiranje usluga i API testiranje.
- Desktop aplikacija
- Podržava više protokola — SOAP, REST, HTTP, JMS, AMF, JDBC
- Web servisi se mogu razvijati, pregledavati i pozivati.
- Može se koristiti i za testiranje opterećenja, Testiranje automatizacijei sigurnosno testiranje
- Stubove može izraditi MockServices
- Zahtjevi i testovi web servisa mogu se automatski generirati putem klijenta web servisa.
- Ima ugrađene alate za izvještavanje
- Razvijeno od strane SmartBear-a, koji isporučuje i open-source SoapUI distribucija i komercijalni ReadyAPI izdanje
2) Virtualizacija Broadcom usluga (prije iTKO LISA)
LISA je paket proizvoda koji pruža rješenje za funkcionalno testiranje distribuiranih sustava poput SOA. Proizvod je prešao od iTKO-a do CA Technologies i danas se prodaje kao Broadcom Service Virtualization.
- Također se može koristiti za regresiju, integraciju, testiranje opterećenja i performansi.
- Može se koristiti za dizajn i izvođenje testova.
3) UFT Jedan (prije HP servisni test)
Service Test je alat za funkcionalno testiranje koji podržava testiranje korisničkog sučelja i dijeljenih usluga. Njegova mogućnost testiranja API-ja uključena je u Unified Functional Testing, koji sada prodaje OpenText as UFT Jedan.
- I funkcionalni i performansni testovi usluga mogu se obaviti pomoću jednog skripta.
- Integrirano s Centrom za kvalitetu, sada se prodaje kao OpenText ALM / Centar za kvalitetu.
- Može se upravljati ogromnom količinom usluga i podataka.
- Podržava testiranje interoperabilnosti simulacijom klijentskih okruženja JEE, AXIS i DotNet.
4) Parasoft SOAtest
Parasoft SOAtest je paket alata za testiranje i analizu razvijen za testiranje API-ja i API-jem vođenih aplikacija.
- Podržava web servise, REST, JSON, MQ, JMS, TIBCO, HTTP i XML tehnologije.
- Moguća su funkcionalna, jedinična, integracijska, regresijska, sigurnosna, interoperabilnost, usklađenost i testiranje performansi.
- Stubovi se mogu kreirati pomoću Parasoft Virtualize, koji su sposobniji od SoapUI MockServices.
Slučajevi korištenja SOA testiranja
U donjem primjeru primjenjuje se gore navedena strategija, metode i alati na jednu web-lokaciju e-trgovine, faza po faza.
Razmotrite web stranicu za e-trgovinu koja sadrži funkcije i podfunkcije navedene u nastavku.
Obrada narudžbe
Donja tablica rastavlja obradu narudžbi na podfunkcije koje postaju usluge.
FAZA 1
U prvoj fazi SOA testiranja, fazi strategije testiranja, aplikacija se dijeli na usluge i poslovne funkcije.
Razmotrimo usluge u nastavku u prijavi.
- Stvorite narudžbu
- Provjerite status korisnika
- Promjena statusa narudžbe
- Provjerite status narudžbe
- Provjerite zalihu
Poslovne funkcije su iste kao i funkcije web stranice.
Napomena: Dokument strategije testiranja sadržavao bi popis usluga i funkcija koje treba testirati.
FAZA 2
Ovo je faza planiranja testiranja. Test slučajevi su napisane za svaku razinu.
Razina od kraja do kraja. Testni slučajevi napisani su za svaki poslovni slučaj upotrebe i tijek. U nastavku su primjeri testnih slučajeva.
- Izradite narudžbu s aktivnim korisnikom.
- Kreirajte narudžbu s neaktivnim korisnikom.
- Kreirajte narudžbu s dostupnim proizvodom s količinom narudžbe < dostupnom količinom.
- Izradite narudžbu s dostupnim proizvodom s količinom narudžbe > dostupnom količinom.
- Napravite narudžbu s više artikala.
- Otkažite narudžbu u potpunosti.
- Djelomično otkazivanje narudžbe.
Razina integracije. Testni slučajevi su napisani za integraciju baze podataka i korisničkog sučelja. U nastavku su navedeni primjeri testnih slučajeva.
- Napravite novu narudžbu s jednom stavkom. Provjerite je li narudžba stvorena u bazi podataka.
- Napravite novu narudžbu s jednom stavkom. Provjerite je li cijena izračunata za narudžbu točna.
- Izradite novu narudžbu s jednim artiklom. Provjerite je li količina dostupnog proizvoda smanjena za iznos narudžbe.
- Provjerite je li status narudžbe prikazan na korisničkom sučelju isti kao i u bazi podataka.
- Otkažite narudžbu i provjerite je li status narudžbe promijenjen u bazi podataka.
- Za prvo plaćanje, provjerite jesu li podaci o plaćanju uneseni na korisničkom sučelju spremljeni u bazi podataka.
- Za vraćanje plaćanja provjerite jesu li podaci o plaćanju u bazi podataka prikazani na korisničkom sučelju.
Razina usluge. Svaka usluga testira se za sve uvjete podataka. U nastavku je nekoliko primjera.
| Ne. | Detalji narudžbe | Uvjet narudžbe |
|---|---|---|
| 1 | Stvorite narudžbu. Broj stavki = 1 | Količina po narudžbi < Količina po bazi podataka |
| 2 | Stvorite narudžbu. Broj stavki > 1 | Količina na narudžbi < Količina u bazi podataka |
| 3 | Stvorite narudžbu. Broj stavki = 1 | Količina u narudžbi > Količina u bazi podataka |
| 4 | Provjerite status narudžbe | Status u bazi podataka = Aktivno |
| 5 | Provjerite status narudžbe | Status u bazi podataka = Otpremljeno |
| 6 | Provjerite status narudžbe | Status u bazi podataka = Otkazano |
| 7 | Provjerite status narudžbe | ID narudžbe = Nevažeći |
| 8 | Provjerite dostupnost proizvoda | Količina proizvoda >0 |
| 9 | Provjerite dostupnost proizvoda | Količina proizvoda =0 |
| 10 | Provjerite dostupnost proizvoda | ID proizvoda = nevažeći |
FAZA 3 — Izvršenje testa
Izvršavanje testiranja koristi pristup odozdo prema gore: prvo se provodi testiranje na razini usluge, zatim na razini integracije, a na kraju end-to-end testiranje.
1) Razina usluge
Uzmimo u obzir da SoapUI Alat se koristi za testiranje aplikacije. WSDL i URL se pregledavaju u testnom prozoru SoapUI, a zahtjev za svaku uslugu prikazuje se u prozoru zahtjeva. Izmjenom podataka prema testnim slučajevima na razini usluge, zahtjevi se kreiraju za svaki testni slučaj.
| Testni slučaj | Zatražite | Očekivani odgovor |
|---|---|---|
| Kreiraj narudžbu. Broj artikala = 1, Količina u narudžbi < Količina u bazi podataka | x2 2 | o3251 Uspješno |
| Kreiraj narudžbu. Broj artikala > 1, Količina u narudžbi < Količina u bazi podataka | y1 1 y2 3 | o3251 Uspješno |
| Kreiraj narudžbu. Broj artikala = 1, Količina u narudžbi > Količina u bazi podataka | x23 200 | ništavan Neuspješno |
| Provjerite status narudžbe. Status u bazi podataka = Aktivno | o9876 | Aktivan Uspješno |
| Provjerite status narudžbe. Status u bazi podataka = Poslano | o9656 | Poslano Uspješno |
| Provjerite status narudžbe. ID narudžbe = Nevažeći | y5686 | null Neuspješno |
| Provjerite dostupnost proizvoda. Količina proizvoda >0 | d34 | 34 Da Uspješno |
| Provjerite dostupnost proizvoda. Količina proizvoda = 0 | y34 | 0 Ne Uspješno |
| Provjerite dostupnost proizvoda. ID proizvoda = nevažeći | sder | Neuspješno |
2) Razina integracije
Testni slučajevi na razini integracije izvršavaju se na korisničkom sučelju i bazi podataka. Izradite narudžbu s jednom stavkom:
- Korisnik otvara web stranicu.
- Korisnik ide naručiti.
- Korisnik odabire valjani proizvod i količinu te sprema narudžbu.
- Trebala bi se prikazati poruka da je narudžba uspješno poslana.
- Korisnik otvara bazu podataka i provjerava jesu li podaci narudžbe isti kao oni uneseni na web stranici.
3) Razina od kraja do kraja
Poslovni tokovi i slučajevi upotrebe izvršavaju se na korisničkom sučelju. Izradite narudžbu s više stavki:
- Korisnik otvara web stranicu.
- Korisnik ide naručiti.
- Korisnik se raspita o valjanom proizvodu i količini te ih doda u košaricu.
- Dodaju se drugi valjani proizvodi s valjanim količinama i narudžba se sprema. Plaćanje se vrši novim načinom plaćanja i narudžba se šalje.
- Trebala bi se prikazati poruka "Narudžba je uspješno poslana".
- Tester bi trebao potvrditi da se cijeli tok završava bez iskrivljavanja podataka.







