Hva er Grey Box Testing? Teknikker, eksempel

โšก Smart oppsummering

grรฅ Box Testing undersรธker en applikasjon med delvis kunnskap om dens interne struktur, og kombinerer det brukervendte perspektivet pรฅ svartboks-testing med nok arkitektonisk innsikt til รฅ forklare hvorfor en feil oppstod, i stedet for bare at den skjedde.

  • ๐Ÿ” Kunnskapsnivรฅ: Den interne strukturen er delvis kjent, mens den er fullt kjent for white box-testing og ukjent for black box-testing.
  • ๐Ÿงช Fire teknikker: Matrisetesting, regresjonstesting, ortogonal arraytesting og mรธnstertesting danner kjerneverktรธysettet.
  • ๐Ÿชœ Ti trinn: Identifiser innganger, utganger og hovedbaner, del deretter systemet opp i delfunksjoner og verifiser hver enkelt.
  • ๐Ÿ”— Passer best: Integrasjonstesting, penetrasjonstesting, databasebaserte arbeidsflyter, webtjenester og API-konfigurasjontracts.
  • ๐Ÿ‡ง๐Ÿ‡ท Avveining: Delvis synlighet reduserer innsatsen, men det begrenser ogsรฅ hvor dypt en enkelt kodesti kan vรฆre traced.
  • ???? Forutsetning: Nรธyaktig designdokumentasjon er viktig, fordi et foreldet skjema eller en foreldet spesifikasjon i stillhet ugyldiggjรธr testdesignet.

grรฅ Box Testing som kombinerer delvis intern kunnskap med brukerrettet testdesign

Hva er Grey Box Testing?

grรฅ Box Testing (ogsรฅ stavet grรฅ Box Testing) er en programvaretestteknikk som tester et programvareprodukt eller en applikasjon med delvis kunnskap om applikasjonens interne struktur. Formรฅlet med Grey Box Testing handler om รฅ sรธke etter og identifisere feil forรฅrsaket av feil kodestruktur eller feil bruk av applikasjonen.

I denne prosessen identifiseres ofte kontekstspesifikke feil relatert til websystemer. Teknikken รธker testdekning ved รฅ konsentrere seg om alle lagene i et komplekst system i stedet for ett av dem.

grรฅ Box Testing er en metode for programvaretesting som kombinerer Hvit Box Testing og Svart Box TestingForskjellen mellom de tre kommer ned til hvor mye av den interne strukturen testeren kan se:

  • I hvitt Box Testing av den interne strukturen (koden) er kjent.
  • I svart Box Testing av den interne strukturen (koden) er ukjent.
  • I grรฅtt Box Testing av den interne strukturen (koden) er delvis kjent.

Diagrammet nedenfor plasserer de tre metodene pรฅ samme synlighetsskala.

grรฅ Box Testing vist mellom hvite Box og svart Box testing pรฅ skalaen av intern kodesynlighet

In software engineering, Grรฅ Box Testing gir muligheten til รฅ teste begge sider av en applikasjon, presentasjonslaget samt koden bak det. Det er fรธrst og fremst nyttig i integrasjonstesting og Penetrasjonstesting.

Eksempel pรฅ grรฅ Box testing: Hvis testeren stรธter pรฅ et problem med en nettsidefunksjon, som lenker eller foreldrelรธse lenker, kan endringen gjรธres umiddelbart i HTML-koden og kontrolleres i sanntid.

Hvorfor grรฅ Box Testing

grรฅ Box Testing utfรธres av fรธlgende grunner:

  • Det gir de kombinerte fordelene ved bรฅde svartboks-testing og hvitboks-testing.
  • Den kombinerer innspill fra utviklere sรฅ vel som testere og forbedrer den generelle produktkvaliteten.
  • Det reduserer kostnadene ved den lange prosessen med รฅ teste funksjonelle og ikke-funksjonelle typer.
  • Det gir en utvikler nok fritid til รฅ fikse feil.
  • Testing gjรธres fra brukerens synspunkt snarere enn designerens synspunkt.
  • En feil kan forklares snarere enn bare rapporteres, fordi testeren kan se laget der den oppsto.

grรฅ Box Testing vs. svart Box mot hvit Box Testing

De tre metodene er ikke konkurrerende alternativer, men snarere tre tilgangsnivรฅer, og hver av dem svarer pรฅ en annen type spรธrsmรฅl. ร… sette dem side om side gjรธr valget konkret.

Base Svart Box Testing grรฅ Box Testing Hvit Box Testing
Kunnskap om intern struktur none Delvis Full
Fremfรธrt av Testere og sluttbrukere Testere og utviklere som jobber med testere Utviklere og testingeniรธrer
Grunnlaget for testdesign Krav og spesifikasjoner ArchiTektur, algoritmer, datastrukturer og grensesnitt Kildekode og kontrollflyt
Typisk nivรฅ System- og aksepttesting Integrasjon, penetrasjon og testing av webtjenester Enhets- og komponenttesting
Dekning mรฅlt som Kravdekning Grensesnitt-, data- og stidekning Utdrag, gren og stidekning
Hovedbegrensning ร…rsaken til en feil forblir skjult Dybden er begrenset av den gitte tilgangen Kostbart, og det kan fรธre til at kravene ikke lenger er oppfylt

De fleste lag bruker alle tre pรฅ tvers av livssyklus for programvaretesting, og det grรฅ bokslaget er der feilene som faller mellom brukergrensesnittet og datalageret vanligvis fanges opp.

grรฅ Box Teststrategi

ร… utfรธre Grรฅ Box Testing, det er ikke nรธdvendig for testeren รฅ ha tilgang til kildekoden. En test er utformet basert pรฅ kunnskap om algoritmer, arkitekturer, interne tilstander eller andre overordnede beskrivelser av programoppfรธrsel.

ร… utfรธre Grรฅ Box testing:

  • Den anvender de enkle teknikkene fra svartbokstesting.
  • Den er basert pรฅ kravdrevet testtilfellegenerering, sรฅ den forhรฅndsinnstiller alle betingelsene fรธr programmet testes med pรฅstandsmetoden.

Teknikker brukt for grรฅ Box Testingen er:

  • Matrisetesting: Denne teknikken innebรฆrer รฅ definere alle variablene som finnes i programmet, sammen med risikoen hver enkelt bรฆrer, slik at ubrukte og hรธyrisikovariabler er synlige.
  • Regresjonstesting: sjekker om en endring i den forrige versjonen har pรฅvirket andre aspekter av programmet i den nye versjonen. Dette gjรธres med strategier som รฅ teste alle pรฅ nytt, teste risikable brukstilfeller pรฅ nytt og teste pรฅ nytt innenfor en brannmur.
  • Ortogonal array-testing eller HAVRE: gir maksimal kodedekning med et minimum antall testtilfeller.
  • Mรธnstertesting: utfรธrt pรฅ historiske data fra tidligere systemfeil. I motsetning til svartbokstesting, grรฅ Box Testing graver i koden og bestemmer hvorfor feilen oppstod.

grรฅ Box metodikken bruker vanligvis automatisert verktรธy for testing av programvare for รฅ utfรธre testingen. Stubber og moduldrivere opprettes slik at testeren ikke trenger รฅ generere koden manuelt.

Fremgangsmรฅte for รฅ utfรธre grรฅ Box Testingen er:

  • Trinn 1: Identifiser innganger.
  • Trinn 2: Identifiser utgangene.
  • Trinn 3: Identifiser hovedstiene.
  • Trinn 4: Identifiser delfunksjoner.
  • Trinn 5: Utvikle inndata for delfunksjonene.
  • Trinn 6: Utvikle utdata for delfunksjonene.
  • Trinn 7: Kjรธr testtilfellet for delfunksjonene.
  • Trinn 8: Bekreft riktig resultat for delfunksjonene.
  • Trinn 9: Gjenta trinn 4 til 8 for de andre delfunksjonene.
  • Trinn 10: Gjenta trinn 7 og 8 for de andre delfunksjonene.

Testtilfellene for Grey Box Testing kan blant annet dekke problemer knyttet til brukergrensesnitt, sikkerhet, database, nettleser og operativsystem. Hvert genererte tilfelle trenger fortsatt de vanlige testforsรธk attributter, siden et tilfelle som ikke kan reproduseres fra sin egen beskrivelse er av liten nytte under regresjon.

Hvor grรฅ Box Testing brukes

Teknikken fortjener sin plass der en defekt bare kan diagnostiseres ved รฅ se pรฅ to lag samtidig. Fรธlgende scenarier er de den oftest brukes pรฅ:

  • Databasebaserte arbeidsflyter: en handling utfรธres via brukergrensesnittet, og de resulterende radene spรธrres deretter direkte for รฅ bekrefte at verdiene, typene og relasjonene ble lagret som tiltenkt.
  • Webtjenester og API-er: en forespรธrsel sendes, og svarstatus, overskrifter og nyttelast kontrolleres mot den publiserte konfigurasjonen.tract, som er hverdagsformen av API-testing.
  • Integrasjonspunkter: Meldinger som krysser en grense mellom to moduler blir inspisert, mens begge modulene behandles som kjรธrende systemer i stedet for som kildefiler.
  • Sikkerhetsvurdering: En penetrasjonstester gitt en vanlig brukerkonto og en arkitekturoversikt gjengir posisjonen til en insider, som er standard grรฅboks-engasjementsmodell.
  • Webapplikasjoner og grafiske brukergrensesnitt: ร˜delagte lenker, foreldrelรธse sider, รธkthรฅndtering og validering pรฅ klientsiden kontrolleres alle med delvis synlighet av markupen og forespรธrselsflyten.

Pรฅ tvers av alle disse reduseres den totale kostnaden for systemfeil fordi problemer fanges opp og forklares fรธr de gรฅr videre ned i rรธrledningen til systemtesting eller produksjon.

grรฅ Box Testverktรธy

Ingen verktรธy yter grรฅtt Box Testing alene. Det kategorien trenger er en kombinasjon av en grensesnittdriver, et inspeksjonsverktรธy for laget under, og en mรฅte รฅ skripte de to sammen pรฅ.

  • API- og webtjenesteklienter slik som Postman og SoapUI, brukes til รฅ utstede forespรธrsler og gjรธre gjeldende statuskoder og svarelementer.
  • Databaseklienter og SQL-spรธrringsverktรธy, brukes til รฅ bekrefte vedvarende tilstand etter en grensesnitthandling.
  • Verktรธy for nettleserutviklere og HTTP-proxyer slik som Burp Suite, brukes til รฅ inspisere og endre forespรธrsler under sikkerhetsorienterte รธkter.
  • UI-automatiseringsrammeverk slik som Selenium, brukt til รฅ drive presentasjonslaget inne i en automatiseringstesting pรฅ.
  • Logg- og overvรฅkingsverktรธy, brukt til รฅ korrelere en observert feil med det applikasjonen registrerte internt i det รธyeblikket.

Valget betyr mindre enn kablingen: med mindre grensesnittdriveren og inspeksjonstrinnet kjรธrer i samme skriptede flyt, blir resultatet to separate manuelle kontroller i stedet for รฉn grรฅbokstest.

grรฅ Box Testing utfordringer

Delvis synlighet introduserer problemer som ingen av de rene metodene har, og fรธlgende er de som teamene mรธter oftest:

  • Nรฅr en komponent under test stรธter pรฅ en feil av noe slag, kan den avbryte den pรฅgรฅende operasjonen og la resten av sekvensen bli uutfรธrt.
  • En test kan kjรธres i sin helhet mens innholdet i resultatet er feil, sรฅ verifiseringstrinnet mรฅ kontrollere verdier i stedet for รฅ fullfรธre.
  • Full dekning av kodebanen er ikke oppnรฅelig, fordi testeren aldri ser alle grener som white box-testing ville nรฅdd.
  • Designdokumentasjonen testene er avhengige av kan vรฆre foreldet, og et utdatert skjema eller grensesnittspesifikasjon ugyldiggjรธr i stillhet testdesignet.
  • Testere trenger bรฅde domeneforstรฅelse og teknisk dybde, som er en smalere ferdighetsprofil รฅ rekruttere til.
  • Distribuert og tung magetracTed-arkitekturer gjรธr det vanskelig รฅ tilskrive en observert feil til en spesifikk intern komponent.

Disse begrensningene taler for รฅ behandle grรฅ Box Testing som ett lag blant flere snarere enn en erstatning for de andre, noe som er poenget som fremsettes pรฅ tvers av det bredere settet med teknikker for programvaretesting og typer programvaretestingDen sitter naturlig ved siden av funksjonstesting og spesifikasjonsdrevne tilnรฆrminger som modellbasert testing.

Spรธrsmรฅl og svar

Begge refererer til den samme teknikken. Grey er den britiske stavemรฅten og gray den amerikanske, og de to vises om hverandre i verktรธydokumentasjon og sertifiseringsplaner. Ingen av dem har en annen teknisk betydning.

Nok til รฅ resonnere om interne elementer uten รฅ lese hver linje: arkitekturdiagrammer, datamodellen, grensesnittkonsekvensertracts og en skrivebeskyttet konto pรฅ testdatabasen. Full tilgang til repositoriet gjรธr รธvelsen om til hvitbokstesting.

Vanligvis en testingeniรธr med utviklingsbakgrunn, eller en tester paret med en utvikler for รธkten. Sikkerhetsoppdrag drives av penetrasjonstestere som fรฅr en standard brukerkonto og en arkitekturbriefing.

Mot grensesnitt og data snarere enn setninger: hvert endepunkt og hver statuskode som utรธves, hver tabell- og tilstandsovergang som berรธres, hver integrasjonssti som fรธlges. Utsagns- og forgreningsprosenter tilhรธrer hvitboksmรฅling.

En stub erstatter en komponent som modulen under test kaller; en driver erstatter komponenten som ville kalle den. Sammen lar de en delfunksjon utfรธres isolert fรธr hele systemet eksisterer.

Nรฅr en uavhengig brukerperspektivvurdering er nรธdvendig, siden delvis kunnskap forvrider testeren mot forventede veier. Aksepttesting og brukbarhetsarbeid forblir svart boks av nettopp den grunn, og sikkerhetskritisk kode trenger fortsatt full hvit boks-analyse.

Maskinlรฆring utvinner feilhistorikk for mรธnstertestingstrinnet, rangerer grensesnitt etter forutsagt risiko slik at begrenset tilgang brukes godt, og klynger logger for รฅ koble en observert feil med den interne komponenten som produserte den.

Ja, for de repeterende delene: forespรธrselsbyggere, svarpรฅstander, verifiseringsspรธrringer, stubber og drivere utarbeidet fra en grensesnittdefinisjon. ร… avgjรธre hvilken intern tilstand som beviser at oppfรธrselen er korrekt, forblir en designvurdering for ingeniรธren.

Oppsummer dette innlegget med: