Kombinatorisk test
Feb 24, 2020
introduktion:
i dag er programmelsystemer forskellige såvel som komplekse og har mange mulige konfigurationer. Disse kvaliteter og funktioner i systemerne har indviet en efterspørgsel efter programmer og applikationer, der er unikt designet og har innovative såvel som kreative funktioner. Bortset fra disse kræver klienter og brugere også eksponentiel ydeevne, funktionalitet, kvalitet, skalerbarhed, effektivitet og mere. For at nå disse mål og opfylde kundernes og forbrugernes krav bruger programmelingeniører forskellige innovative teknikker og metoder til at udvikle et produkt samt udføre strenge test, da produkter, der frigives med utilstrækkelig test, kan forårsage uoprettelig skade og tab for klienten såvel som den bruger, der installerer applikationen eller bruger programmet. Desuden kan det også forårsage legemsbeskadigelse, hvilket kan resultere i store økonomiske tab eller sikkerhedsbrud samt påvirke kvaliteten af det daglige liv. Testere har dog ofte begrænset tid og budget, hvilket ofte gør det umuligt at teste programmer udtømmende. Derudover tester testere ofte intuitivt for defekter, som de forventer, mens mindre forventede defekter overses og ikke testes. Den bedste måde at overvinde en sådan situation på er at implementere kombinatorisk test i programmer og applikationer. Kombinatorisk test er en tilgang, der systematisk kan undersøge systemindstilling i et håndterbart antal tests og ved systematisk at dække t-vejs interaktioner. Derfor er her en forklaret diskussion om kombinatorisk test, for at definere dens betydning, metoder og andre vigtige kvaliteter.
beskrivelse af kombinatorisk test:
kombinatorisk test er nu en praktisk tilgang, der producerer test af høj kvalitet til en lavere pris. Det nedbryder brute force i trin for at angribe problemet trinvist ved at adskille analyse-og synteseaktiviteter, der kan kvantificeres og overvåges og delvist understøttes af værktøjer. Desuden er kombinatorisk test ekstremt enkel at anvende. Som specifikationsbaseret teknik kræver det ingen viden om implementeringen under test. Kombinatorisk test er baseret på den forudsætning, at mange fejl i programmer kun kan opstå ved interaktion mellem to eller flere parametre. Derfor er kombinatorisk test en effektiv teknik til at teste programmer med flere konfigurationsparametre. Det bruges hovedsageligt til at detektere interaktionsfejl forårsaget af kombinationen af parametre. Den type test, der genereres ved kombinatorisk test, sigter mod at generere dækning, der dækker alle t-vejs parameterkombinationer, hvor ‘t’ er en given dækstyrke. Grundlæggende kombinatorisk test kan bruges på to måder, som enten kan bruges separat eller på samme tid. Disse måder er:
- kombinationer af konfigurationsværdier eller parametre, hvor dækningsarrays bruges til at vælge værdierne for konfigurerbare parametre, muligvis ved hjælp af samme test, der kører mod alle konfigurationskombinationer.
- Dækningsarrays bruges til at vælge inputdataværdier, som derefter bliver en del af komplette testcases, hvilket skaber en testdragt til applikationen. Anvendelse af denne form for kombinatorisk test til den virkelige verden er udfordrende, da den præsenterer en højere grad af interaktioner, for hvilke meget store tests kan kræves.
metoder anvendt til generering af kombinatoriske Testdragter:
populariteten kombinatorisk test er steget markant i de seneste år. På grund af sine mange fordele er det udnyttet af testere på forskellige testniveauer. Fra model, enhed, integration, system, og accepttest til sort, hvid, modelbaseret test, og mere, testere implementerer kombinatorisk test for at få effektive resultater til en omkostningseffektiv Sats. For at generere testdragter til kombinatorisk test bruger programmelingeniører desuden en lang række værktøjer, hvilket forenkler processen med at teste programmel yderligere. Disse kombinatoriske testdragter giver højere t-vejs dækning, selvom generering af arrays med højere t-vejs dækning kan forbruge betydelige beregningsressourcer og give store resultater. Derudover fokuserer størstedelen af algoritmer til kombinatorisk test på det specielle tilfælde af 2-vejs test. For at konstruere testdragt til kombinatorisk test manuelt anvendes tre metoder. Disse metoder giver forskellige fordele til testeren og sikrer output er så nøjagtige som muligt. Disse metoder / algoritmer er:
- algebraisk metode: Dette giver effektive konstruktioner med hensyn til tid, men det er vanskeligt at producere nøjagtige resultater på en bred og generel række input.
- Grådig Algoritme: Dette er den velundersøgte type algoritme til konstruktion af dækningsarrayer, da de er fundet relativt effektive med hensyn til tid og nøjagtighed.
- heuristisk søgning: heuristisk søgning især selvom anvendelsen af stimuleret udglødning (SA) har givet de mest nøjagtige resultater i flere tilfælde. Denne lokale søgemetode har leveret mange af de mindste testsuiter til forskellige systemkonfigurationer; dog til en pris af udførelsestid for at generere testsuiter.
Parvis Test:
parvis test er en kombinatorisk metode til test af programmer, der for hvert par inputparameter til et system tester alle mulige diskrete kombinationer af disse parametre. Det er en test design teknik, der leverer hundrede procent test dækning. De mest almindelige fejl i et program findes normalt og udløses enten af en inputparameter eller af en interaktion mellem par parametre. Fejl, der involverer interaktioner mellem tre eller flere parametre, er både gradvist mindre almindelige såvel som gradvist dyrere at finde, sådan test har som sin grænse testningen af alle mulige input. I dette tilfælde er en kombinatorisk teknik til plukning af testcases som alle par et meget nyttigt cost benefit-kompromis, der muliggør en betydelig reduktion i antallet af testcases uden drastisk at gå på kompromis med funktionel dækning. Derfor er parvis testteknik uhyre nyttig til design af test til applikationer, der involverer flere parametre. Dens testdragt dækker alle kombinationer, og derfor er den ikke udtømmende, men alligevel meget effektiv til at finde fejl. Selvom parvis test dramatisk kan reducere kombinationer, forbliver den stadig virkelig effektiv med hensyn til fejldetekteringer og er faktisk en smart testdesignteknik, der lover den bedste testindsats og enestående effektivitet.
fordele ved kombinatorisk test:
ovenstående diskussion om kombinatorisk test afspejler dens betydning såvel som anvendelighed. Det er en af de mest effektive testteknikker, da det tester et program med flere konfigurerbare parametre. Desuden kan man ved hjælp af kombinatorisk test let opdage interaktionsfejl forårsaget af kombinationen af parametre. En anden fordel ved denne type test er, at den producerer test af høj kvalitet til en meget omkostningseffektiv hastighed, hvilket ikke kun hjælper programmeludviklere og testere, men også gavner den organisation, som produktet udvikles til. Derfor er andre fordele ved denne tilgang:
- håndterer dækningsproblemer ved definition af testplanen.
- tillader systematisk planlægning af test.
- kan praktisk talt anvendes på ethvert program og på forskellige niveauer af abstraktioner.
- højere testdækning med bedre kvalitetssikring.
- kræver ingen adgang til intern kildekode SUT.
- det maksimerer værdien af hvert testet scenario.
- signifikant reduktion i antallet af tests.
- det kan styre risici og er let at gennemgå.
konklusion:
Programmelsystemer er komplekse og kan medføre eksponentielle antal mulige tests. Ethvert produkt, der frigives uden ordentlig test, kan være en betydelig fare for organisationen såvel som brugeren. For at sikre, at der ikke opstår en sådan situation eller et sådant problem, efter at programmet er frigivet, udfører programtestere strenge test. Desuden bruger de ofte kombinatorisk test i forskellige testniveauer, da det nemt kan teste programmer med flere konfigurerbare parametre. Kort sagt bruges kombinatorisk test til at detektere interaktionsfejl forårsaget af kombinationen af parametre. Den vigtigste indsigt, der ligger til grund for effektiviteten af kombinatorisk test, skyldtes en række undersøgelser og forskning udført af NIST fra 1999-2004. Det er en uhyre nyttig tilgang, der systematisk kan undersøge systemindstilling i et håndterbart antal test. Det er en tilgang, der producerer og udfører test af høj kvalitet til en meget omkostningseffektiv Sats. Desuden er det en effektiv testplanlægningsteknik, der kan håndtere dækningsproblemer så tidligt som muligt. Derfor, hvis en programmelingeniør ønsker at få de bedste testresultater, skal de helt sikkert udføre kombinatorisk test på et tidligt stadium af Programmeludviklingens livscyklus (SDLC).