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.
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.
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.

