Hva er grensesnitttesting? Typer og eksempler
โก Smart oppsummering
Grensesnittstesting bekrefter at to tilkoblede programvaresystemer utveksler data riktig. Den dekker webserver-, applikasjonsserver- og databaseserverkoblingene som bรฆrer alle forespรธrsler en applikasjon gjรธr, sammen med feilhรฅndteringen rundt dem.
Hva er grensesnitttesting?
Grensesnitttesting er definert som en programvaretestingstype som verifiserer om kommunikasjonen mellom to forskjellige programvaresystemer gjรธres riktig.
En forbindelse som integrerer to komponenter kalles grensesnitt. Dette grensesnittet i en dataverden kan vรฆre hva som helst som API-er, webtjenester osv. Testing av disse forbindelsestjenestene eller grensesnittene kalles grensesnittstesting.
Et grensesnitt er faktisk programvare som bestรฅr av sett med kommandoer, meldinger og andre attributter som muliggjรธr kommunikasjon mellom en enhet og en bruker.
Det viktige poenget er at et grensesnitt har en ulempetract: et avtalt forespรธrselsformat, et avtalt svarformat, et avtalt sett med feilkoder og en avtalt tidsavbrudd. Grensesnitttestingsรธvelser som konkluderer medtracfra begge sider, slik at en endring gjort av ett lag ikke i stillhet รธdelegger det andre. Fordi mesteparten av denne trafikken aldri nรฅr en skjerm, er feilene den finner usynlige for svart boks testing utfรธres kun gjennom brukergrensesnittet.
Hvordan gjรธre grensesnitttesting
Grensesnitttesting inkluderer testing av to hovedsegmenter:
- Webserver og applikasjonsservergrensesnitt
- Applikasjonsserver og databaseservergrensesnitt.
For ovennevnte scenarier utfรธres grensesnitttestingen for รฅ
- Sjekk at servere kjรธres riktig eller ikke
- Feil hรฅndteres riktig eller returnerer en feilmelding for ethvert spรธrsmรฅl fra en applikasjon
- Sjekk resultatene nรฅr tilkobling til en webserver tilbakestilles i mellom
Diagrammet nedenfor viser disse to segmentene som รฉn enkelt kjede, der nettleseren kommuniserer med webserveren, webserveren kommuniserer med applikasjonsserveren, og applikasjonsserveren kommuniserer med databaseserveren.
I praksis jobber en tester seg gjennom den kjeden ett hopp om gangen. Hvert hopp kjรธres fรธrst med en gyldig forespรธrsel, deretter med en feilformet forespรธrsel, og deretter med den andre enden bevisst utilgjengelig, slik at bรฅde suksessveien og feilveien registreres mot den samme. testforsรธk.
Eksempel pรฅ grensesnitttesting
Anta at for enhver xyz-applikasjon tar grensesnittet XML fil som input og leverer JSON fil som utdata. For รฅ teste grensesnittet til dette programmet trenger det bare spesifikasjonene for XML-filformatet og JSON-filformatet.
Ved hjelp av disse spesifikasjonene kan vi opprette eksempel-XML-filer for input og mate dem inn i grensesnittet. Deretter validere input- (XML) og output- (JSON) filene med kravet om grensesnittstesting.
Legg merke til hva eksemplet ikke trenger: ingen skjerm, ingen bygging av front-end og ingen kunnskap om koden i grensesnittet. To formatspesifikasjoner er nok til รฅ skrive testene, og det er derfor grensesnitttesting kan starte lenge fรธr brukergrensesnittet eksisterer.
Hvorfor gjรธr grensesnitttesting
Interface Testing er utfรธrt
- For รฅ sikre at sluttbrukere eller kunder ikke skal stรธte pรฅ problemer nรฅr de bruker et bestemt programvareprodukt
- For รฅ identifisere hvilke applikasjonsomrรฅder som vanligvis er tilgjengelig for sluttbrukere og for รฅ sjekke brukervennligheten ogsรฅ.
- For รฅ verifisere sikkerhetskrav mens kommunikasjon forplanter seg mellom systemene
- For รฅ sjekke om en lรธsning er i stand til รฅ hรฅndtere nettverksfeil mellom en applikasjonsserver og et nettsted
Det er ogsรฅ et kostnadsargument. En feil i et forespรธrselsformat er billig รฅ fikse mens de to systemene fortsatt kobles sammen, og dyrt nรฅr et nedstrรธmssystem allerede har lagret de feilformede dataene.
Typer grensesnitttesting
Under grensesnitttesting utfรธres ulike typer testing pรฅ grensesnittet som kan inkludere
- arbeidsflyt: Den sikrer at grensesnittmotoren hรฅndterer standardarbeidsflytene dine som forventet.
- Kanttilfeller - uventede verdier: Dette tas i betraktning nรฅr testing inkluderer dato, mรฅned og dag reversert.
- Ytelses-, belastnings- og nettverkstesting: Et grensesnitt med hรธyt volum kan kreve mer Load Testing enn et lavvolumsgrensesnitt, avhengig av grensesnittmotoren og tilkoblingsinfrastrukturen
- Individuelle systemer: Dette inkluderer testing av hvert system individuelt. For eksempel bรธr faktureringssystem og lagerstyringssystem for detaljhandelen kunne operere separat.
Det fรธrste elementet er nรฆrt nok til arbeidsflyttesting รฅ gjenbruke scenariene sine, og det siste elementet overlapper med modultesting, siden et system som svikter av seg selv, vil svikte igjen nรฅr det fรธrst er tilkoblet.
Strategi for grensesnitttesting
Grensesnittteststrategi er en metode som brukes til รฅ teste grensesnitt med vanlige tester uavhengig av implementering. Vi kan bruke abstract testtilfeller og lag konkrete instanser av testtilfellet for hver implementering av grensesnittteststrategien. Basen/abstract-testtilfeller utfรธrer implementeringsnรธytrale tester, mens konkrete tester tar seg av รฅ instansiere objekter for testing og utfรธre implementeringsspesifikke tester.
Gevinsten med den strukturen er gjenbruk. Nรฅr en tredje implementering av det samme grensesnittet dukker opp, vil abstract suite kjรธrer uendret mot den, og bare instansieringskoden mรฅ skrives. Den samme ideen brukes i stรธrre skala i komponenttesting, hvor en delt konvensjontract suite kjรธres mot alle komponenter som hevder รฅ tilfredsstille den.
Verktรธy for grensesnitttesting
Fordi et grensesnitt ikke har noen skjerm, mรฅ verktรธyet konstruere forespรธrsler direkte og gjรธre krav pรฅ rรฅsvar. Team kombinerer vanligvis tre kategorier av verktรธy.
- API-klienter og forespรธrselsbyggere: Verktรธy som Postman, SoapUI, Insomnia og Hoppscotch sender REST-, SOAP- eller GraphQL-kall, lagrer dem som gjenbrukbare samlinger og bekrefter statuskoder, overskrifter og svartekster.
- Code-nivรฅ testbiblioteker: Biblioteker som kjรธrer inne i den eksisterende testsuiten lar grensesnittsjekker fungere ved siden av enhetstester og kjรธres pรฅ hver build, noe som hindrer dem i รฅ bli utdaterte.
- Last- og protokollverktรธy: Et verktรธy som f.eks. JMeter driver det samme grensesnittet pรฅ volum, som er det som gjรธr en funksjonskontroll til ytelsestesting av forbindelsen.
- Tjenestevirtualisering og mockup-metoder: En stub som stรฅr inn for den andre enden lar den ene siden testes mens den andre er utilgjengelig, uferdig eller for dyr til รฅ ringe gjentatte ganger.
Utvalget er mindre viktig enn dekningen. Uansett hvilken klient som velges, mรฅ samlingen av forespรธrsler lagres i versjonskontroll sammen med koden, slik at en endring i grensesnittet og en endring i testene kommer i samme commit. Detaljer om den bredere kategorien er dekket i API-testing.
Sjekkliste og beste praksis for grensesnitttesting
En kort sjekkliste sรธrger for at grensesnittdekningen er รฆrlig pรฅ tvers av versjoner. Gรฅ gjennom den for hver tilkobling i stedet for for applikasjonen som helhet.
- medtracfรธrst: Bekreft at forespรธrsels- og svarskjemaene samsvarer med den publiserte spesifikasjonen, felt for felt, inkludert datatyper og valgfrie felt.
- Grenseverdier: Send tomme nyttelaster, felt med maksimal lengde, uventede tegnsett og reverserte datoformater.
- Feilstier: Bekreft at hver feil returnerer en meningsfull kode og melding i stedet for en stakk trace eller en stille suksess.
- Tidsavbrudd og nye forsรธk: Avbryt tilkoblingen midt i forespรธrselen og bekreft at innringeren forsรธker pรฅ nytt pรฅ en sikker mรฅte uten รฅ duplisere transaksjonen.
- Sikkerhet: Sjekk autentisering, autorisasjon og kryptering pรฅ lenken, og bekreft at feilmeldinger ikke lekker interne detaljer.
- Datakonsistens: Les oppfรธringen tilbake fra den andre siden og bekreft at ingenting ble avkortet, omkodet eller omordnet underveis.
- Volum: Gjenta kallet med hรธyest trafikk under samtidig belastning, og se etter uttรธmming av tilkoblingspoolen.
Tre fremgangsmรฅter gjรธr at denne sjekklisten er repeterbar. For det fรธrste, automatiser pakken og kjรธr den pรฅ hver build, fordi grensesnitt endres stillere enn skjermer. For det andre, loggfรธr hele forespรธrselen og svaret for hver feil, siden en grensesnittfeil er nesten umulig รฅ reprodusere fra et skjermbilde. For det tredje, hold pakken uavhengig av testdata opprettet av andre pakker, slik at en feil peker pรฅ grensesnittet snarere enn pรฅ en manglende post.
Disse kontrollene faller naturlig inn under den stรธrre planen beskrevet i typer programvaretesting, og de kjรธrer fรธr de samme forbindelsene utรธves ende til ende under systemtesting.
Grensesnitttesting vs integrasjonstesting
De to begrepene er relaterte snarere enn motstridende: grensesnitttesting er den delen av integrasjonsarbeidet som konsentrerer seg om selve forbindelsen. Tabellen nedenfor viser vektleggingen av hver side.
| Grensesnitttesting | Integrasjonstesting |
|---|---|
| En integrasjonstesttype som er opptatt av รฅ teste grensesnittene mellom komponenter eller systemer | Testing utfรธrt for รฅ avdekke feil i grensesnittene og i samspillet mellom integrerte komponenter eller systemer. |
| Fokus er ulempentract โ forespรธrselsformat, svarformat, feilkoder og tidsavbrudd | Fokus er den kombinerte oppfรธrselen til komponentene nรฅr de er sammenfรธyd |
| Kan utfรธres sรฅ snart spesifikasjonen finnes, med den fjerne enden stubbet | Krever at de deltakende komponentene bygges og distribueres sammen |
| En feil peker pรฅ รฉn tilkobling | En feil kan peke pรฅ en hvilken som helst komponent i den samlede gruppen |
Alle som er nye innen det bredere fagfeltet vil finne de omkringliggende nivรฅene beskrevet i integrasjonstesting og generelt programvaretesting innledning, mens terminologien som brukes ovenfor kommer fra standard software engineering praksis. For nettleservendte systemer blir de samme tilkoblingene til slutt utรธvd igjen under testing av webapplikasjoner.

