Što je testiranje sučelja? Vrste i primjer

⚡ Pametni sažetak

Testiranje sučelja provjerava ispravno razmjenjuju li dva povezana softverska sustava podatke. Obuhvaća veze web poslužitelja, aplikacijskog poslužitelja i poslužitelja baze podataka koje prenose svaki zahtjev koji aplikacija uputi, zajedno s obradom pogrešaka oko njih.

  • 🔗 Definicija: Sučelje je bilo koja veza - API, web servis ili red poruka - koja spaja dvije komponente.
  • 🧭 Dva segmenta: Testiranje cilja vezu web poslužitelja s aplikacijskim poslužiteljem i vezu aplikacijskog poslužitelja s poslužiteljem baze podataka.
  • 📄 Obrađeni primjer: XML ulaz i JSON izlaz se validiraju u odnosu na njihove objavljene specifikacije formata.
  • 🧪 Vrste testova: Tijek rada, rubni slučajevi, performanse i opterećenje, plus svaki pojedinačni sustav vježban izolirano.
  • 🛠️ alat: API klijenti i virtualizacija usluga pokreću zahtjeve kada ne postoji korisničko sučelje za klikanje.
  • 🔍 Granica opsega: Testiranje sučelja je podvrsta integracijskog testiranja usmjerena na konekcijske mogućnosti.tracsamog sebe.

Testiranje sučelja između web poslužitelja, aplikacijskog poslužitelja i poslužitelja baze podataka

Što je testiranje sučelja?

Testiranje sučelja definira se kao vrsta testiranja softvera koja provjerava je li komunikacija između dva različita softverska sustava ispravno obavljena.

Veza koja integrira dvije komponente naziva se sučelje. To sučelje u računalnom svijetu može biti bilo što poput API-ja, web servisa itd. Testiranje ovih povezujućih servisa ili sučelja naziva se testiranje sučelja.

Sučelje je zapravo softver koji se sastoji od skupova naredbi, poruka i drugih atributa koji omogućuju komunikaciju između uređaja i korisnika.

Važno je da sučelje ima manutract: dogovoreni format zahtjeva, dogovoreni format odgovora, dogovoreni skup kodova pogrešaka i dogovoreno vremensko ograničenje. Vježbe testiranja sučelja koje...tracs obje strane, tako da promjena koju napravi jedan tim ne prekida tiho drugi. Budući da većina ovog prometa nikada ne dospije na ekran, nedostaci koje pronađe su nevidljivi testiranje crne kutije izvodi se samo putem korisničkog sučelja.

Kako napraviti testiranje sučelja

Testiranje sučelja uključuje testiranje dva glavna segmenta:

  1. Web poslužitelj i sučelje poslužitelja aplikacija
  2. Aplikacijski poslužitelj i sučelje poslužitelja baze podataka.

Za gore navedene scenarije, testiranje sučelja se provodi na

  • Provjerite izvode li se poslužitelji ispravno ili ne
  • Pogreške se pravilno obrađuju ili vraćaju poruku o pogrešci za bilo koji upit koji napravi aplikacija
  • Provjerite ishode kada se veza s web poslužiteljem poništi između

Donji dijagram prikazuje ta dva segmenta kao jedan lanac, gdje preglednik komunicira s web poslužiteljem, web poslužitelj komunicira s aplikacijskim poslužiteljem, a aplikacijski poslužitelj komunicira s poslužiteljem baze podataka.

Testiranje sučelja na lancu web poslužitelja, aplikacijskog poslužitelja i poslužitelja baze podataka

U praksi, tester prolazi kroz taj lanac jedan po jedan skok. Svaki skok se prvo pokreće s valjanim zahtjevom, zatim s neispravnim zahtjevom, a na kraju s namjerno nedostupnim dalekim krajem, tako da se i put uspjeha i put neuspjeha bilježe u odnosu na isti testni slučaj.

Primjer testiranja sučelja

Pretpostavimo da za bilo koju xyz aplikaciju sučelje uzima XML datoteka kao ulaz i isporučuje JSON datoteku kao izlaz. Za testiranje sučelja ove aplikacije potrebne su samo specifikacije XML formata datoteke i JSON formata datoteke.

Pomoću ovih specifikacija možemo stvoriti primjere ulaznih XML datoteka i unijeti ih u sučelje. Zatim se validacijom ulazne (XML) i izlazne (JSON) datoteke s odgovarajućim zahtjevom testira sučelje.

Primijetite što primjeru nije potrebno: nema ekrana, nema izgradnje prednjeg dijela i nema poznavanja koda unutar sučelja. Dvije specifikacije formata dovoljne su za pisanje testova, zbog čega testiranje sučelja može započeti mnogo prije nego što korisničko sučelje postoji.

Zašto testirati sučelje

Testiranje sučelja je obavljeno

  • Kako bi se osiguralo da krajnji korisnici ili kupci ne bi trebali naići na bilo kakve probleme prilikom korištenja određenog softverskog proizvoda
  • Identificirati kojim područjima primjene obično pristupaju krajnji korisnici i provjeriti njegovu jednostavnost upotrebe.
  • Za provjeru sigurnosnih zahtjeva dok se komunikacija širi između sustava
  • Za provjeru je li rješenje sposobno nositi se s mrežnim kvarovima između aplikacijskog poslužitelja i web stranice

Tu je i argument cijene. Nedostatak u formatu zahtjeva je jeftin za popravak dok su dva sustava još uvijek u procesu povezivanja, a skup je nakon što je nizvodni sustav već pohranio neispravne podatke.

Vrste testiranja sučelja

Tijekom testiranja sučelja obavljaju se različite vrste testiranja na sučelju koje mogu uključivati

  • Tijek rada: Osigurava da motor sučelja rukuje vašim standardnim tijekovima rada prema očekivanjima.
  • Rubni slučajevi - neočekivane vrijednosti: To se uzima u obzir kada testiranje uključuje datum, mjesec i dan obrnutim redoslijedom.
  • Testiranje performansi, opterećenja i mreže: Sučelje s velikim volumenom može zahtijevati više Testiranje opterećenja nego sučelje male količine, ovisno o mehanizmu sučelja i infrastrukturi povezivanja
  • Pojedinačni sustavi: To uključuje testiranje svakog sustava pojedinačno. Na primjer, sustav naplate i sustav upravljanja zalihama za maloprodajnu trgovinu trebali bi moći raditi odvojeno.

Prva stavka je dovoljno blizu testiranje tijeka rada ponovno upotrijebiti svoje scenarije, a posljednja stavka se preklapa s testiranje modula, budući da će sustav koji sam od sebe zakazati ponovno zakazati nakon što se spoji.

Strategija testiranja sučelja

Strategija testiranja sučelja je metoda koja se koristi za testiranje sučelja uobičajenim testovima bez obzira na implementaciju. Možemo koristiti abstract testne slučajeve i stvaranje konkretnih instanci testnog slučaja za svaku implementaciju strategije testiranja sučelja. Baza/abstract testni slučajevi izvode implementacijski neutralne testove, dok konkretni testovi brinu o instanciranju objekata za testiranje i izvođenju testova specifičnih za implementaciju.

Prednost te strukture je ponovna upotreba. Kada se pojavi treća implementacija istog sučelja, abstract suite se protiv njega izvršava nepromijenjen, a potrebno je napisati samo kod za instanciranje. Ista ideja se primjenjuje u većem opsegu u testiranje komponenti, gdje je zajednička kontract suite se pokreće na svakoj komponenti koja tvrdi da ga zadovoljava.

Alati za testiranje sučelja

Budući da sučelje nema ekran, alati moraju izravno konstruirati zahtjeve i utvrđivati ​​ih na temelju sirovih odgovora. Timovi obično kombiniraju tri kategorije alata.

  • API klijenti i alati za izradu zahtjeva: Alati kao što su Postman, SoapUI, Insomnia i Hoppscotch šalju REST, SOAP ili GraphQL pozive, pohranjuju ih kao višekratno upotrebljive kolekcije i potvrđuju statusne kodove, zaglavlja i tijela odgovora.
  • Codebiblioteke za testiranje na razini: Biblioteke koje se izvode unutar postojećeg testnog paketa omogućuju provjerama sučelja da rade uz jedinične testove i izvršavaju se na svakoj izgradnji, što ih sprječava da zastare.
  • Alati za učitavanje i protokoliranje: Alat kao što je JMeter pokreće isto sučelje na razini volumena, što funkcionalnu provjeru pretvara u ispitivanje performansi veze.
  • Virtualizacija usluga i simulacije: Stub koji zauzima udaljeni kraj omogućuje testiranje jedne strane dok je druga nedostupna, nedovršena ili preskupa za ponovljeno pozivanje.

Odabir je manje važan od pokrivenosti. Bez obzira na to koji se klijent odabere, kolekcija zahtjeva mora se pohraniti u kontrolu verzija zajedno s kodom, tako da promjena sučelja i promjena njegovih testova stižu u istom commitu. Pojedinosti šire kategorije obuhvaćene su u API testiranje.

Kontrolna lista za testiranje sučelja i najbolje prakse

Kratka kontrolna lista osigurava pouzdanu pokrivenost sučelja u svim izdanjima. Proučite je za svaku vezu, a ne za aplikaciju u cjelini.

  • stracprvo: Potvrdite da sheme zahtjeva i odgovora odgovaraju objavljenoj specifikaciji, polje po polje, uključujući tipove podataka i opcionalna polja.
  • Granične vrijednosti: Pošalji prazne podatke, polja maksimalne duljine, neočekivane skupove znakova i obrnute formate datuma.
  • Putovi pogrešaka: Provjerite vraća li svaki neuspjeh smislen kod i poruku, a ne stog tracili tihi uspjeh.
  • Vremenska ograničenja i ponovni pokušaji: Prekinite vezu usred zahtjeva i potvrdite da pozivatelj sigurno ponovno pokušava bez dupliciranja transakcije.
  • Sigurnost: Provjerite autentifikaciju, autorizaciju i šifriranje na poveznici te potvrdite da poruke o pogreškama ne otkrivaju interne detalje.
  • Dosljednost podataka: Pročitajte zapis s druge strane i potvrdite da ništa nije skraćeno, ponovno kodirano ili preuređeno tijekom prijenosa.
  • Volumen: Ponovite poziv s najvećim prometom pod istodobnim opterećenjem i pripazite na iscrpljenost skupa veza.

Tri prakse čine taj popis ponovljivim. Prvo, automatizirajte paket i pokrenite ga na svakoj izgradnji, jer se sučelja mijenjaju tiše od ekrana. Drugo, zabilježite puni zahtjev i odgovor za svaki kvar, budući da je kvar sučelja gotovo nemoguće reproducirati sa snimke zaslona. Treće, održavajte paket neovisnim o testnim podacima koje su stvorili drugi paketi, tako da kvar ukazuje na sučelje, a ne na nedostajući zapis.

Ove provjere prirodno se uklapaju u širi plan opisan u vrste testiranja softverai pokreću se prije nego što se iste veze koriste od kraja do kraja tijekom testiranje sustava.

Testiranje sučelja nasuprot integracijskom testiranju

Ta dva pojma su povezana, a ne suprotstavljena: testiranje sučelja dio je integracijskog rada koji se usredotočuje na samu vezu. Tablica u nastavku naglašava naglasak svake strane.

Testiranje sučelja Ispitivanje integracije
Vrsta integracijskog testa koja se bavi testiranjem sučelja između komponenti ili sustava Testiranje koje se provodi radi otkrivanja nedostataka u sučeljima i interakcijama između integriranih komponenti ili sustava.
Fokus je prevaratract — format zahtjeva, format odgovora, kodovi pogrešaka i vremenska ograničenja Fokus je kombinirano ponašanje komponenti nakon što su spojene
Može se izvršiti čim specifikacija postoji, s dalekim krajem koji je zaustavljen Zahtijeva da se uključene komponente izgrade i implementiraju zajedno
Kvar ukazuje na jednu vezu Kvar može ukazivati ​​na bilo koju komponentu u sastavljenoj grupi

Svatko tko je nov u široj disciplini pronaći će okolne razine opisane u integracijsko testiranje i općenito testiranje softvera uvod, dok gore korištena terminologija dolazi iz standardnih programsko inženjerstvo praksa. Za sustave okrenute pregledniku, iste se veze na kraju ponovno koriste tijekom testiranje web aplikacija.

Pitanja i odgovori

Obično QA inženjeri koji su odgovorni za integracijsku pokrivenost surađuju s programerima oba sustava. Na proizvodima koji zahtijevaju puno usluga, to preuzima namjenski API tester, jer posao zahtijeva vještine konstrukcije zahtjeva, a ne vještine navigacije po zaslonu.

Nema vidljivog izlaza za pregled, krajnje točke trećih strana koje se ne mogu slobodno pozivati, testni podaci koji moraju postojati na obje strane i specifikacije koje se mijenjaju bez prethodne najave. Stubovi i kolekcije zahtjeva kontrolirane verzijama smanjuju većinu njih.

Uvelike se preklapaju. API je jedna vrsta sučelja, pa API testiranje primjenjuje li se testiranje sučelja na tu specifičnu tehnologiju. Testiranje sučelja također obuhvaća brisanje datoteka, redove poruka i veze do baze podataka koje nemaju API.

Ne. Naziv je zajednički, ali cilj je drugačiji. Testiranje sučelja provjerava veze između sustava; testiranje korisničkog sučelja provjerava zaslone, kontrole i raspored. Zamjena ta dva pojma ostavlja veze na strani poslužitelja netestiranima.

Čim se dogovore specifikacije zahtjeva i odgovora, što je obično prije nego što je bilo koji sustav završen, isključivanje krajnjeg dijela omogućuje paketu da se pokrene ranije, a isti paket se ponovno koristi nakon što oba sustava budu aktivna.

Udio dokumentiranih krajnjih točaka s barem jednim pozitivnim i jednim negativnim testom, udio deklariranih kodova pogrešaka koji su se stvarno aktivirali i broj eskalirajućih nedostataka sučeljaping do kasnijih faza. Sirovi rezultati testova vrlo malo dokazuju.

Strojno učenje čita shemu i generira granične i negativne korisne podatke koje bi čovjek preskočio, a zatim grupira neuspješne odgovore kako se jedan uzrok ne bi prijavio osam puta. Također označava promjene sheme kojima postojeći zahtjevi više ne odgovaraju.

Da. S obzirom na shemu ili uzorak korisnog tereta, brzo izrađuje alate za izradu zahtjeva, tvrdnje i odgovore na stubove. Specifikaciju i dalje mora dati čovjek, jer je generirana tvrdnja točna samo koliko i kontraciza toga.

Sažmite ovu objavu uz: