Hva er Ortogonal Array-testing? (Eksempel)

⚡ Smart oppsummering

Ortogonal arraytesting er en svartboksteknikk som bruker statistiske arrayer til å bygge et kompakt testsett, som dekker hvert par av inngangsverdier med langt færre testtilfeller enn uttømmende kombinasjonstesting krever.

  • 🎯 Kjerneløfte: Hvert nivåpar mellom to faktorer vises minst én gang i de genererte kjøringene.
  • 🔢 Notasjon: En matrise er skrevet LKjører(NivåerFaktorer), så L9(3⁴) betyr ni kjøringer for fire trenivåfaktorer.
  • 📉 Spareomfang: Fire faktorer på tre nivåer kollapser hver fra 81 uttømmende kombinasjoner til ni ortogonale løp.
  • 🧮 Balanseregel: Kolonner må fylles ut slik at ingen faktorer flyttes sammen, ellers er ikke tabellen ortogonal.
  • 🛠️ verktøy: GeneratorProgrammer som PICT og ACTS bygger arrayet automatisk, noe som fjerner hovedkilden til manuell feil.
  • ⚠️ Kjent grense: Parvis dekning kan ikke oppdage en defekt som krever tre eller flere spesifikke verdier sammen.

Ortogonal arraytesting reduserer inputkombinasjoner til et lite balansert sett med testtilfeller

Ortogonal array-testing

Ortogonal array-testing (OAT) er en programvaretestingsteknikk som bruker ortogonale arrayer for å lage testtilfeller. Det er en statistisk testtilnærming, og den er spesielt nyttig når systemet som testes aksepterer et stort antall datainnganger. Ortogonal arraytesting maksimerer testdekningen ved å pare og kombinere inngangene, slik at systemet utføres med relativt færre testtilfeller og mindre utførelsestid.

For eksempel, når en togbillett må verifiseres, må faktorer som antall passasjerer, billettnummer, setnummer og tognummer testes. Det er tungvint å teste hver faktor én etter én. Det er mer effektivt når kvalitetssikringsingeniøren kombinerer flere inndata og tester dem i én kjøring. I slike tilfeller kan vi bruke testmetoden Orthogonal Array.

Denne typen paring eller kombinasjon av inndata for å spare tid kalles parvis testing, og OATS-teknikken er én måte å produsere et parvis testsett på. Fordi teknikken fungerer utelukkende fra inndataverdier og forventede resultater, uten noen innsikt i den interne koden, tilhører den svart boks testing familie.

Hvorfor OAT (Orthogonal Array Testing)?

I det nåværende scenariet har det blitt utfordrende å levere et kvalitetsprogramvareprodukt til kunden på grunn av kompleksiteten til koden.

I den konvensjonelle metoden inkluderer testsuiter testtilfeller utledet fra alle kombinasjoner av inngangsverdier og forhåndsbetingelser. Som et resultat må n antall testtilfeller dekkes.

Men i et reelt scenario vil ikke testerne ha tid til å utføre alle testtilfellene for å avdekke feilene, ettersom det er andre aktiviteter som dokumentasjon, forslag og tilbakemeldinger fra kunden som må imøtekommes i testfasen.

Derfor ønsket testlederne å optimalisere antall og kvalitet på testtilfellene for å sikre maksimalt Testdekning med minimal innsats. Denne innsatsen kalles testtilfelleoptimalisering.

  • Systematisk og statistisk måte å teste parvise interaksjoner på.
  • Interaksjoner og integrasjonspunkter er en viktig kilde til defekter.
  • Utfør et veldefinert og konsist sett med testtilfeller som sannsynligvis vil avdekke de fleste (ikke alle) feil.
  • Den ortogonale tilnærmingen garanterer parvis dekning av alle variabler.

Teknikken står derfor ved siden av de andre metodene for input-reduksjon som et team allerede bruker. Ekvivalenspartisjonering og grenseverdianalyse bestemme hvilke verdier som er verdt å teste for et enkelt felt; ortogonale matriser bestemmer hvilke av disse verdiene som skal testes sammen.

Hvordan ortogonal arraytesting er representert

En ortogonal matrise beskrives av en kort formel snarere enn av innholdet. Diagrammet nedenfor viser hvordan de tre størrelsene i formelen forholder seg til matrisens form.

Ortogonal matrise-notasjon som viser løp, faktorer og nivåer i L(Løp)-formelen

  • Løper (N) – Antall rader i arrayet, som oversettes til antall testtilfeller som skal genereres.
  • Faktorer (K) – Antall kolonner i arrayet, som oversettes til det maksimale antallet variabler som kan håndteres.
  • Nivåer (V) – Maksimalt antall verdier som kan tas på en enkelt faktor.

En enkelt faktor har vanligvis 2 til 3 innganger som skal testes. Det maksimale antallet innganger bestemmer nivåene.

Les arraynavnet fra venstre til høyre. L9(34) 9 er antall løp, 3 er antall nivåer hver faktor kan ta, og hevet 4 er antall faktorer. Den samme artikkelen bruker L4(23), som er fire kjøringer for tre faktorer som hver har to nivåer.

To egenskaper gjør en matrise ortogonal, og begge må holde før antall løp kan stoles på:

  • Balanse: Hvert nivå av en faktor vises like mange ganger i sin egen kolonne.
  • Parvis fullstendighet: For to kolonner vises hver kombinasjon av ett nivå fra hver like mange ganger.

Hvis den andre egenskapen feiler, er tabellen ganske enkelt et forkortet testsett, ikke en ortogonal matrise, og den parvise garantien som rettferdiggjør reduksjonen gjelder ikke lenger.

Hvordan gjøre Ortogonal Array Testing: Eksempler

  1. Identifiser den uavhengige variabelen for scenariet.
  2. Finn den minste matrisen med antall kjøringer.
  3. Kartlegg faktorene til matrisen.
  4. Velg verdiene for eventuelle "rest"-nivåer.
  5. Transkriber løpene til test tilfeller, og legger til eventuelle spesielt mistenkelige kombinasjoner som ikke genereres.

De to utarbeidede eksemplene nedenfor anvender disse fem trinnene, først på et lite problem med to nivåer og deretter på et større problem med tre nivåer.

Eksempel 1

En nettside har tre forskjellige seksjoner (øverst, midt, nederst) som kan vises eller skjules individuelt for en bruker.

  • Antall faktorer = 3 (øverst, midt, bunn)
  • Antall nivåer (synlighet) = 2 (skjult eller vist)
  • Matrisetype = L4(23)

(4 er antallet kjøringer som er oppnådd etter at OAT-matrisen er opprettet)

Hvis vi går for den konvensjonelle teknikken med å endre én seksjon om gangen, trenger vi testtilfeller som 2 X 3 = 6 testtilfeller.

test Cases scenarier Verdier som skal testes
Test nr. 1 SKJULT God
Test nr. 2 VIST God
Test nr. 3 SKJULT Bunn
Test nr. 4 VIST Bunn
Test nr. 5 SKJULT Middle
Test nr. 6 VIST Middle

Disse seks løpene varierer én seksjon om gangen og plasserer aldri to seksjoner i en valgt tilstand sammen. Å teste hver kombinasjon i stedet ville ta to3 = 8 løp.

Hvis vi går for OAT-testing, trenger vi 4 testtilfeller som vist nedenfor:

test Cases TOPP Middle Bunn
Test nr. 1 skjult skjult skjult
Test nr. 2 skjult Synlig Synlig
Test nr. 3 Synlig skjult Synlig
Test nr. 4 Synlig Synlig skjult

Sjekk to kolonner i den tabellen, og alle fire Skjult/Synlig-parene vises nøyaktig én gang, som er ortogonalitetsegenskapen i sin minste form.

Eksempel 2

En mikroprosessors funksjonalitet må testes:

  • Temperatur: 100C, 150C og 200C.
  • Trykk: 2 psi, 5 psi og 8 psi
  • Doping Beløp: 4 %, 6 % og 8 %
  • Avsetningshastighet: 0.1 mg/s, 0.2 mg/s og 0.3 mg/s

Ved å bruke den konvensjonelle metoden trenger vi 34 = 81 testtilfeller for å dekke alle inndataene. La oss heller jobbe med OATS-metoden:

Antall faktorer = 4 (temperatur, trykk, doping mengde og avsetningsrate)

Nivåer = 3 nivåer per faktor (temperatur har 3 nivåer – 100 °C, 150 °C og 200 °C – og på samme måte har de andre faktorene også 3 nivåer hver)

Lag en matrise som nedenfor:

1. Kolonner med antall faktorer

Testtilfelle # Temperatur Trykk Doping beløp Deponeringshastighet

2. Skriv inn antall rader som tilsvarer nivåer per faktor. Dvs. temperaturen har 3 nivåer. Sett derfor inn 3 rader for hvert temperaturnivå.

Testtilfelle # Temperatur Trykk Doping beløp Deponeringshastighet
1 100C
2 100C
3 100C
4 150C
5 150C
6 150C
7 200C
8 200C
9 200C

3. Del nå opp presset, gjør detping mengde og avsetningsratene i kolonnene.

For eksempel: Skriv inn 2 psi for temperaturene 100C, 150C og 200C, skriv også inn doping beløp 4 % for 100C, 150C og 200C og så videre.

Testtilfelle # Temperatur Trykk Doping beløp Deponeringshastighet
1 100C 2 psi 4% 0.1 mg/s
2 100C 5 psi 6% 0.2 mg/s
3 100C 8 psi 8% 0.3 mg/s
4 150C 2 psi 4% 0.1 mg/s
5 150C 5 psi 6% 0.2 mg/s
6 150C 8 psi 8% 0.3 mg/s
7 200C 2 psi 4% 0.1 mg/s
8 200C 5 psi 6% 0.2 mg/s
9 200C 8 psi 8% 0.3 mg/s

Derfor, i OA-er, trenger vi 9 testtilfeller å dekke.

Nøyaktighetsmerknad: fyller de resterende tre kolonnene rett ned, slik trinn 3 gjør, gjentar det samme trykket, gjørping og avsetning tredobles inne i hver temperaturblokk. Trykk og gjørping Mengden beveger seg derfor sammen, og par som 2 psi med 6 % vises aldri, så de ni radene ovenfor er et redusert testsett snarere enn en ekte ortogonal matrise. Den balanserte L9(34)-matrisen nedenfor beholder de samme ni kjøringene samtidig som den dekker alle ni nivåpar mellom hver to faktorer.

Testtilfelle # Temperatur Trykk Doping beløp Deponeringshastighet
1 100C 2 psi 4% 0.1 mg/s
2 100C 5 psi 6% 0.2 mg/s
3 100C 8 psi 8% 0.3 mg/s
4 150C 2 psi 6% 0.3 mg/s
5 150C 5 psi 8% 0.1 mg/s
6 150C 8 psi 4% 0.2 mg/s
7 200C 2 psi 8% 0.2 mg/s
8 200C 5 psi 4% 0.3 mg/s
9 200C 8 psi 6% 0.1 mg/s

Ortogonal arraytesting vs. parvis (alle par) testing

De to begrepene brukes om hverandre i mange team, men de er ikke identiske. Begge tar sikte på å dekke verdipar, men de varierer i hvor strengt den resulterende tabellen er begrenset.

Aspekt Ortogonal array-testing Parvis (alle par) testing
Underliggende struktur Ortogonal matrise, lånt fra design av eksperimenter Dekkende array, generert av en søkealgoritme
Dekningsregel Hvert par forekommer like mange ganger Hvert par dukker opp minst én gang
Faktorer med ulik nivå Trenger en matrise med blandet nivå, som kanskje ikke finnes for den nødvendige formen Håndtert direkte av generatoren
Typisk antall løp Lik eller litt høyere, på grunn av balansekravet Lik eller lavere for de samme inngangene
Begrensninger mellom verdier Vanskelig å uttrykke inne i arrayet Støttet av de fleste moderne generatorer

I praksis er en balansert ortogonal matrise den tydeligere undervisningsmodellen og det tryggere valget når faktorer deler samme nivåtelling, mens en dekkende matrise er det de fleste verktøy produserer for virkelige prosjekter med vanskelige, ujevne input. Begge er komplementære til testing av beslutningstabell og testing av tilstandsovergang, som er rettet mot forretningsregler og sekvens i stedet for kombinasjoner av verdier.

Verktøy for ortogonale arraytesting

Å bygge en matrise for hånd er bare praktisk for de små eksemplene ovenfor. Utover fire eller fem faktorer bruker team en generator, og verktøyet bestemmer antall løp for dem.

  • BILDE: en kommandolinjegenerator med åpen kildekode fra MicrosoftParametre og deres verdier skrives i en ren tekstmodellfil, og verktøyet skriver ut kombinasjonssettet. Begrensninger og delmodeller støttes, noe som er viktig når visse verdipar er ugyldige. Se PICT-arkivet.
  • Apostlenes gjerninger: et forskningsverktøy fra NIST som genererer dekningsmatriser for toveis opptil seksveis dekning, og som også publiserer et bibliotek med forhåndsberegnede matriser. Det er tilgjengelig fra NIST kombinatorisk testprosjekt.
  • Kommersielle kombinatoriske plattformer: Krav til å legge til hostede verktøy traceffektivitet, forventede resultater og eksport til et teststyringssystem, som passer for større team som trenger et revisjonsspor.
  • Publiserte arraybiblioteker: Standardarrayer som L4, L8, L9, L16 og L18 er tabulert og kan kopieres direkte når faktor- og nivåtellingene samsvarer.

Uansett hvilket verktøy som produserer tabellen, må de genererte radene fortsatt gjøres om til kjørbare tilfeller med reelle data og forventede resultater, og deretter planlegges som enhver annen pakke inni. teknikker for programvaretesting allerede i bruk på prosjektet.

Fordeler med ortogonal arraytesting

  • Garanterer testing av de parvise kombinasjonene av alle de valgte variablene.
  • Reduserer antall testtilfeller.
  • Oppretter færre testtilfeller som fortsatt dekker samspillet mellom hvert par av variabler.
  • En kompleks kombinasjon av variablene kan håndteres.
  • Er enklere å generere og mindre utsatt for feil enn testsett laget for hånd.
  • Det er nyttig for Integrasjonstesting, og like nyttig for konfigurasjonstesting, hvor kombinasjoner av nettlesere, operativsystemer og enheter multipliseres raskt.
  • Det forbedrer produktiviteten på grunn av reduserte testsykluser og testtider.

De sparende forbindelsene under Regresjonstesting, fordi en mindre balansert suite er billig nok til å kjøres på nytt hver syklus, mens en uttømmende kombinasjonssuite vanligvis kjøres én gang og deretter stille forlates.

Ulemper med ortogonal arraytesting

  • Etter hvert som datainngangene øker, øker kompleksiteten i testcasedesignet. Som et resultat øker manuell innsats og tid brukt, og testerne må gå for Automatiseringstesting.
  • Parvis dekning er ikke full dekning. En defekt som bare oppstår når tre spesifikke verdier forekommer sammen, kan passere urørt gjennom tabellen.
  • Faktorer med ulikt antall nivåer kartlegges ikke rent på en standard array, så en blandet nivå array eller en dekkende array-generator er nødvendig.
  • Å velge nivåene er en vurdering. Hvis en verdi som er viktig utelates fra inputmodellen, kan ingen array gjenopprette den.
  • Begrensninger mellom verdier, for eksempel en betalingsmåte som bare er gyldig i ett land, er vanskelige å uttrykke og produserer vanligvis ugyldige rader som må fjernes manuelt.

Ingen av disse begrensningene utelukker teknikken; de setter bare dens grense. Ortogonale matriser reduserer kombinasjonsproblemet, mens risikoanalyse og domenetesting bestemme hvilke faktorer som fortjener en plass i modellen til å begynne med.

Feil eller feil under utførelse av OAT

  • Å rette testinnsatsen mot feil område av applikasjonen.
  • Å velge feil parametere å kombinere.
  • Bruk av ortogonal array-testing der inngangssettet er lite nok til å teste uttømmende.
  • Manuell bruk av ortogonal array-testing på en modell som er stor nok til å trenge en generator.
  • Å stole utelukkende på ortogonal array-testing for høyrisikoapplikasjoner, der dypere dekning er nødvendig.

Det siste elementet er det som forårsaker mest skade i praksis. På en sikkerhetskritisk eller økonomisk funksjon er det parvise settet et gulv snarere enn et tak, og det suppleres vanligvis med målrettede tilfeller på systemtesting nivå og med den bredere planen beskrevet i typer programvaretesting.

Spørsmål og svar

Det er en svartboksteknikk. Arrayet er bygget kun fra inngangsparametere og deres tillatte verdier, uten referanse til kildekode, grener eller intern tilstand, slik at det kan designes før implementeringen er fullført.

Testeren bygger inputmodellen, vanligvis med en forretningsanalytiker som bekrefter hvilke verdier som er lovlige. Utviklere bidrar der en parameter er intern, for eksempel en hurtigbufferinnstilling. Modellkvaliteten, ikke arrayet, bestemmer verdien av suiten.

Nei, det avhenger av dem. Partisjonering og grenseanalyse reduserer hvert felt til en håndfull representative verdier, og arrayet bestemmer deretter hvilke av disse verdiene som kombineres. Å kjøre arrayet på ufiltrerte råverdier produserer en unødvendig stor tabell.

En matrise med blandet nivå er nødvendig, for eksempel L18 som blander kolonner med to og tre nivåer. Der ingen standardmatrise passer, håndterer en dekkende matrisegenerator formen direkte og returnerer en mindre tabell enn å tvinge alle faktorer til samme nivåtelling.

Enhver feil som trenger tre eller flere spesifikke verdier samtidig. Empiriske studier av feildata rapporterer at de fleste feil utløses av én eller to parametere, og det er derfor parvis dekning er effektiv, men treveis dekning anbefales for kritiske funksjoner.

Mest på integrasjons- og systemnivå, der flere komponenter eller innstillinger samhandler. Den passer også til miljømatriser, som nettleser, operativsystem og skjermstørrelse, og ethvert konfigurerbart produkt der de leverte kombinasjonene overgår det tilgjengelige testvinduet.

Maskinlæring leser krav og produksjonslogger for å foreslå faktorene og nivåene som er viktige, og defekthistorikkmodeller rangerer hvilke kombinasjoner som fortjener treveis dekning. Matrisematematikken er deterministisk – den intelligente delen er å velge hva som skal inn i modellen.

Den lager et utkast til modellfilen for en generator, den datadrevne løkken som leser radene og påstandene rundt dem. Bekreft dekningskravet med selve generatoren, fordi en språkmodell kan produsere en plausibel tabell som ikke er ortogonal.

Oppsummer dette innlegget med: