Hvad er Orthogonal Array Testing? (Eksempel)
⚡ Smart opsummering
Ortogonal array-testning er en black box-teknik, der bruger statistiske arrays til at opbygge et kompakt testsæt, der dækker hvert par af inputværdier med langt færre testtilfælde end udtømmende kombinationstest kræver.

Ortogonal Array Test
Ortogonal Array Test (OAT) er en softwaretestteknik, der bruger ortogonale arrays til at oprette testcases. Det er en statistisk testmetode, og den er især nyttig, når det testede system accepterer et stort antal datainput. Ortogonal arraytestning maksimerer testdækningen ved at parre og kombinere inputtene, så systemet udføres med forholdsvis færre testcases og mindre udførelsestid.
For eksempel, når en togbillet skal verificeres, skal faktorer som antal passagerer, billetnummer, sædenummer og tognummer testes. Det er besværligt at teste hver faktor én efter én. Det er mere effektivt, når kvalitetssikringsingeniøren kombinerer flere input og tester dem i én kørsel. I sådanne tilfælde kan vi bruge Orthogonal Array-testmetoden.
Denne type parring eller kombination af input for at spare tid kaldes parvis testning, og OATS-teknikken er én måde at producere et parvis testsæt på. Fordi teknikken udelukkende fungerer ud fra inputværdier og forventede resultater, uden nogen form for overblik over den interne kode, tilhører den sort kasse test familie.
Hvorfor OAT (Orthogonal Array Testing)?
I det nuværende scenarie er det blevet udfordrende at levere et kvalitetssoftwareprodukt til kunden på grund af kodens kompleksitet.
I den konventionelle metode inkluderer testsuiter testcases afledt af enhver kombination af inputværdier og forudsætninger. Som et resultat skal n antal testcases dækkes.
Men i et virkeligt scenario vil testerne ikke have tid til at udføre alle testcases for at afdække defekterne, da der er andre aktiviteter såsom dokumentation, forslag og feedback fra kunden, der skal imødekommes i testfasen.
Derfor ønskede testlederne at optimere antallet og kvaliteten af testcases for at sikre maksimalt Testdækning med minimal indsats. Denne indsats kaldes testcaseoptimering.
- Systematisk og statistisk metode til at teste parvise interaktioner.
- Interaktioner og integrationspunkter er en væsentlig kilde til defekter.
- Udfør et veldefineret, præcist sæt af testcases, der sandsynligvis vil afdække de fleste (ikke alle) fejl.
- Den ortogonale tilgang garanterer parvis dækning af alle variabler.
Teknikken står derfor ved siden af de andre input-reduktionsmetoder, som et team allerede bruger. Ækvivalenspartitionering og randværdianalyse bestemmer hvilke værdier der er værd at teste for et enkelt felt; ortogonale arrays bestemmer hvilke af disse værdier der skal testes sammen.
Hvordan ortogonal array-testning er repræsenteret
Et ortogonalt array beskrives af en kort formel snarere end af dets indhold. Diagrammet nedenfor viser, hvordan de tre størrelser i den formel relaterer sig til arrayets form.
- Løb (N) – Antal rækker i arrayet, hvilket oversættes til antallet af testcases, der vil blive genereret.
- Faktorer (K) – Antal kolonner i arrayet, hvilket svarer til det maksimale antal variabler, der kan håndteres.
- Niveauer (V) – Maksimalt antal værdier, der kan tages for en enkelt faktor.
En enkelt faktor har normalt 2 til 3 input, der skal testes. Det maksimale antal input bestemmer niveauerne.
Læs arraynavnet fra venstre mod højre. L9(34) 9 er antallet af løb, 3 er antallet af niveauer, hver faktor kan tage, og 4 er antallet af faktorer. Den samme artikel bruger L4(23), hvilket er fire sekvenser for tre faktorer, der hver har to niveauer.
To egenskaber gør et array ortogonalt, og begge skal holde, før der kan stoles på antallet af løb:
- Balance: Hvert niveau af en faktor vises det samme antal gange i sin egen kolonne.
- Parvis fuldstændighed: For to kolonner vises hver kombination af ét niveau fra hver det samme antal gange.
Hvis den anden egenskab fejler, er tabellen blot et forkortet testsæt, ikke et ortogonalt array, og den parvise garanti, der retfærdiggør reduktionen, gælder ikke længere.
Sådan laver du Ortogonal Array Test: Eksempler
- Identificer den uafhængige variabel for scenariet.
- Find den mindste matrix med antallet af kørsler.
- Kortlæg faktorerne til arrayet.
- Vælg værdierne for eventuelle "overskydende" niveauer.
- Transskriber løbene til test tilfældeog tilføjer eventuelle særligt mistænkelige kombinationer, der ikke genereres.
De to bearbejdede eksempler nedenfor anvender disse fem trin, først på et lille problem med to niveauer og derefter på et større problem med tre niveauer.
Eksempel 1
En webside har tre forskellige sektioner (øverst, midterst, nederst), der kan vises eller skjules individuelt for en bruger.
- Antal faktorer = 3 (øverst, i midten, nederst)
- Antal niveauer (synlighed) = 2 (skjult eller vist)
- Arraytype = L4(23)
(4 er antallet af kørsler, der er opnået efter oprettelse af OAT-arrayet)
Hvis vi bruger den konventionelle teknik med at ændre én sektion ad gangen, har vi brug for testcases som 2 X 3 = 6 testcases.
| Test Cases | Scenarier | Værdier, der skal testes |
|---|---|---|
| Test #1 | HIDDEN | Top |
| Test #2 | VISET | Top |
| Test #3 | HIDDEN | Bund |
| Test #4 | VISET | Bund |
| Test #5 | HIDDEN | Mellemøsten |
| Test #6 | VISET | Mellemøsten |
Disse seks kørsler varierer én sektion ad gangen og placerer aldrig to sektioner i en valgt tilstand sammen. At teste hver kombination i stedet ville tage 23 = 8 løb.
Hvis vi går til OAT-test, har vi brug for 4 testcases som vist nedenfor:
| Test Cases | TOP | Mellemøsten | Bund |
|---|---|---|---|
| Test #1 | Skjult | Skjult | Skjult |
| Test #2 | Skjult | Synlig | Synlig |
| Test #3 | Synlig | Skjult | Synlig |
| Test #4 | Synlig | Synlig | Skjult |
Tjek to kolonner i den tabel, og alle fire Skjult/Synlig-par vises præcis én gang, hvilket er ortogonalitetsegenskaben i sin mindste form.
Eksempel 2
En mikroprocessors funktionalitet skal testes:
- Temperatur: 100C, 150C og 200C.
- Tryk: 2 psi, 5 psi og 8 psi
- Doping Beløb: 4%, 6% og 8%
- Aflejringshastighed: 0.1 mg/s, 0.2 mg/s og 0.3 mg/s
Ved at bruge den konventionelle metode har vi brug for 34 = 81 testcases til at dække alle input. Lad os i stedet arbejde med OATS-metoden:
Antal faktorer = 4 (temperatur, tryk, doping mængde og deponeringshastighed)
Niveauer = 3 niveauer pr. faktor (temperaturen har 3 niveauer – 100°C, 150°C og 200°C – og ligeledes har de andre faktorer også 3 niveauer hver)
Opret et array som nedenfor:
1. Kolonner med antallet af faktorer
| Test sag # | Temperatur | Tryk | Doping beløb | Deponeringshastighed |
|---|
2. Indtast antallet af rækker svarende til niveauer pr. faktor. Dvs. temperaturen har 3 niveauer. Indsæt derfor 3 rækker for hvert temperaturniveau.
| Test sag # | Temperatur | Tryk | Doping beløb | Deponeringshastighed |
|---|---|---|---|---|
| 1 | 100C | |||
| 2 | 100C | |||
| 3 | 100C | |||
| 4 | 150C | |||
| 5 | 150C | |||
| 6 | 150C | |||
| 7 | 200C | |||
| 8 | 200C | |||
| 9 | 200C |
3. Fordel nu presset, gør detping mængde og aflejringsraterne i kolonnerne.
For f.eks.: Indtast 2 psi på tværs af temperaturer 100C, 150C og 200C, indtast ligeledes doping beløb 4% for 100C, 150C og 200C og så videre.
| Test sag # | Temperatur | Tryk | Doping beløb | Deponeringshastighed |
|---|---|---|---|---|
| 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 har vi i OA'er brug for 9 testtilfælde at dække.
Nøjagtighedsbemærkning: fyld de resterende tre kolonner lige ned, som trin 3 gør, gentag det samme tryk, gørping og aflejring tredobles inden for hver temperaturblok. Tryk og gørping mængden bevæger sig derfor sammen, og par som 2 psi med 6% vises aldrig, så de ni rækker ovenfor er et reduceret testsæt snarere end et ægte ortogonalt array. Den afbalancerede L9(34) arrayet nedenfor beholder de samme ni kørselssekvenser, mens det dækker alle ni niveaupar mellem hver to faktorer.
| Test sag # | Temperatur | Tryk | Doping beløb | Deponeringshastighed |
|---|---|---|---|---|
| 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 array-testning vs. parvis (alle par) testning
De to udtryk bruges i flæng i mange teams, men de er ikke identiske. Begge sigter mod at dække værdipar, men de adskiller sig i, hvor strengt den resulterende tabel er begrænset.
| Aspect | Ortogonal array-testning | Parvis (alle par) testning |
|---|---|---|
| Underliggende struktur | Ortogonal matrix, lånt fra design af eksperimenter | Dækningsmatrix, genereret af en søgealgoritme |
| Dækningsregel | Hvert par optræder lige mange gange | Hvert par optræder mindst én gang |
| Faktorer med ulige niveauer | Kræver et blandet niveau-array, som muligvis ikke findes for den ønskede form | Håndteres direkte af generatoren |
| Typisk antal løb | Lige så meget som eller lidt højere på grund af balancekravet | Lige eller lavere for de samme input |
| Begrænsninger mellem værdier | Svært at udtrykke inden for arrayet | Understøttet af de fleste moderne generatorer |
I praksis er et balanceret ortogonalt array den klarere undervisningsmodel og det sikrere valg, når faktorer deler det samme niveau, mens et dækkende array er det, de fleste værktøjer producerer til virkelige projekter med akavede, ulige input. Begge er komplementære til test af beslutningstabeller og test af tilstandsovergang, som er rettet mod forretningsregler og sekvens snarere end kombinationer af værdier.
Værktøjer til ortogonale array-testning
Det er kun praktisk at bygge et array i hånden i de små eksempler ovenfor. Ud over fire eller fem faktorer bruger holdene en generator, og værktøjet bestemmer antallet af løb for dem.
- BILLEDE: en open source-kommandolinjegenerator fra MicrosoftParametre og deres værdier skrives i en almindelig tekstmodelfil, og værktøjet udskriver kombinationssættet. Begrænsninger og undermodeller understøttes, hvilket er vigtigt, når bestemte værdipar er ugyldige. Se PICT-arkiv.
- HANDLINGER: et forskningsværktøj fra NIST, der genererer dækningsarrays for tovejs op til seksvejsdækning, og som også udgiver et bibliotek med præberegnede arrays. Det er tilgængeligt fra NIST kombinatorisk testprojekt.
- Kommercielle kombinatoriske platforme: Krav til tilføjelse af hostede værktøjer traceffektivitet, forventede resultater og eksport til et teststyringssystem, som passer til større teams, der har brug for et revisionsspor.
- Udgivne array-biblioteker: Standardarrays som L4, L8, L9, L16 og L18 er tabuleret og kan kopieres direkte, når faktor- og niveautællingerne stemmer overens.
Uanset hvilket værktøj der producerer tabellen, skal de genererede rækker stadig omdannes til kørbare cases med reelle data og forventede resultater, og derefter planlægges som enhver anden suite indeni. softwaretestteknikker allerede i brug på projektet.
Fordele ved ortogonal array-testning
- Garanterer test af de parvise kombinationer af alle de valgte variable.
- Reducerer antallet af testtilfælde.
- Opretter færre testcases, der stadig dækker interaktionen mellem hvert par af variabler.
- En kompleks kombination af variable kan håndteres.
- Er enklere at generere og mindre udsat for fejl end testsæt, der er lavet i hånden.
- Det er nyttigt til Integrationstest, og lige så nyttige for konfigurationstest, hvor kombinationer af browsere, operativsystemer og enheder hurtigt multipliceres.
- Det forbedrer produktiviteten på grund af reducerede testcyklusser og testtider.
De sparende forbindelser under regressionstest, fordi en mindre balanceret suite er billig nok til at køre igen i hver cyklus, hvorimod en udtømmende kombinationssuite normalt køres én gang og derefter stille og roligt opgives.
Ulemper ved ortogonal array-testning
- Efterhånden som datainputtet stiger, øges kompleksiteten af testcase-designet. Som følge heraf øges den manuelle indsats og tidsforbrug, og testerne er nødt til at gå efter Test af automatisering.
- Parvis dækning er ikke fuld dækning. En defekt, der kun opstår, når tre specifikke værdier forekommer sammen, kan passere uberørt gennem arrayet.
- Faktorer med forskelligt antal niveauer afbildes ikke tydeligt på et standardarray, så et array med blandede niveauer eller en dækkende array-generator er nødvendigt.
- Valg af niveauer er et vurderingsspørgsmål. Hvis en værdi, der er vigtig, udelades fra inputmodellen, kan intet array gendanne den.
- Begrænsninger mellem værdier, såsom en betalingsmetode, der kun er gyldig i ét land, er vanskelige at udtrykke og resulterer normalt i ugyldige rækker, der skal fjernes manuelt.
Ingen af disse begrænsninger udelukker teknikken; de sætter blot dens grænse. Ortogonale arrays reducerer kombinationsproblemet, mens risikoanalyse og domænetestning beslutte hvilke faktorer der fortjener en plads i modellen til at starte med.
Fejl eller fejl under udførelse af OAT
- At rette testindsatsen mod det forkerte område af applikationen.
- Valg af de forkerte parametre at kombinere.
- Brug af ortogonal array-testning, hvor inputsættet er lille nok til at teste udtømmende.
- Manuel anvendelse af ortogonal array-testning på en model, der er stor nok til at kræve en generator.
- Brug udelukkende ortogonal array-testning til højrisikoapplikationer, hvor dybere dækning er påkrævet.
Det sidste element er det, der forårsager mest skade i praksis. På en sikkerhedskritisk eller økonomisk funktion er det parvise sæt et gulv snarere end et loft, og det suppleres normalt med målrettede tilfælde kl. system test niveau og med den bredere plan beskrevet i typer af softwaretestning.

