Ekvivalenspartisjonering i programvaretesting er en black-box-testteknikk som hjelper deg med å bygge effektive testtilfeller uten å gå på akkord med testdekningen.
I denne artikkelen skal vi se på hva ekvivalensklassepartisjonering er, hvorfor det er nyttig, og utforske noen av prosessene og tilnærmingene du kan bruke for å låse opp fordelene med denne teknikken.
Hva er ekvivalensklassepartisjonering
i programvaretesting?
All programvare har spesielle inngangsbetingelser. I sammenheng med programvaretesting beskriver disse inndatabetingelsene verdiene eller dataene som en tester må bruke for å verifisere kvaliteten og funksjonaliteten til programvaren deres. Disse inngangene kan være noe så enkelt som et museklikk, helt opp til tekst og tall.
En ekvivalent partisjon i programvaretesting utforsker de forskjellige inngangene som kreves for å bruke programvaren og grupperer dem i ekvivalensklasser, dvs. sett med innganger som vil ha en tilsvarende effekt på programvarens oppførsel.
Hvis du vet hvordan hver gruppe med innganger vil oppføre seg, trenger du ikke å teste hver representant for gruppen. Som sådan er ekvivalensklassepartisjonering en fin måte å hjelpe testere med å redusere frekvensen av overflødige tester. I en hyperkonkurransedyktig programvareutviklingsverden med stadig strammere tidsfrister, er det avgjørende å spare tid og krefter i livssyklusen for programvaretesting (STLC).
Til slutt er det verdt å merke seg at ekvivalenstesting er en svart-boks-testingsteknikk. Kort fortalt betyr det at testerne ikke trenger å vite om programmets interne kode eller indre funksjoner. Tester er basert på innganger, utganger og ekstern atferd. Som sådan er disse testene sterkt fokusert på brukeratferd mens du bruker programmet.
1. Programvaretesting av ekvivalenspartisjonering i et nøtteskall
Ekvivalenspartisjonering deler inndata for programvaretesting i to grupper: gyldige og ugyldige innganger. Verdiene i hver partisjon må føre til at programvaren viser samme oppførsel. For eksempel:
- Hvis betingelsen for én verdi i partisjon A er sann, må de andre verdiene i partisjon A også være det.
- På samme måte, hvis betingelsene for én verdi i partisjon A er falske, må de andre verdiene i partisjon A også være falske.
I en testsammenheng må hver partisjon dekkes minst én gang. Logisk sett betyr dette at hvis en oppføring i partisjon A mislykkes, vil alle andre innganger også mislykkes. Denne prosessen bør spare tid fordi i stedet for å teste hver inngang som ligger i partisjon A, kan testere teste bare én og ekstrapolere resultatet basert på dets fellestrekk.
2. Hvorfor ekvivalensklassetesting i programvaretesting er viktig
Før vi kommer inn på de direkte fordelene med ekvivalensklassetesting i programvaretesting, må vi definere hvorfor tilnærmingen er viktig.
Alle testere forstår at programvaretesting krever kompromisser. Tid og budsjetter er begrenset, noe som betyr at testere må få mest mulig ut av ressursene sine. Programvaretesting av ekvivalenspartisjonering hjelper teamene med å finne en balanse mellom effektivitet og pålitelighet i testingen ved å redusere antall innganger.
Fordeler med ekvivalenspartisjonering
i programvaretesting
En tilsvarende partisjon i programvaretesting foretrekkes av testteam av en rekke årsaker. Her er noen av de mest overbevisende.
1. Effektivitet
Den store fordelen med ekvivalenspartisjonstesting ligger i effektiviteten. Når testere bruker ekvivalenspartisjonering, kan de redusere antallet testtilfeller de trenger uten å gå på akkord med testdekningen. Ved å velge et inputtilfelle fra hver ekvivalensklasse, kan testere føle seg trygge på at de forstår hvordan programvaren deres fungerer med en rekke innganger.
2. Enkelhet
En annen stor fordel med programvaretesting av ekvivalenspartisjonering er enkelhet. Å bryte ned et mangfoldig sett med input i både gyldige og ugyldige data betyr at testplanlegging er langt enklere. Å teste hver input individuelt krever mye dokumentasjon og koordinering. Å kutte det ned til ett representativt eksempel effektiviserer testprosessen.
Forbedret dekning
Ved å bruke ekvivalensklasser i testing kan du også bruke testtiden mer effektivt. Å redusere testinndata til klasser betyr at du kan teste hver klasse mer grundig. Denne omfattende tilnærmingen ville ærlig talt vært umulig hvis du testet hver inngang individuelt. Ekvivalenspartisjonering lar team gjøre seg grundige og teste gyldige og ugyldige data, kantsaker, grenseverdier og mer.
3. Gjenbrukbarhet
Den første tiden du investerer i å etablere hver ekvivalensklasse i programvaretesting lønner seg underveis hvis du gjenbruker disse klassene for fremtidige inputtester. Selv om ikke alle partisjoner vil være relevante for fremtidige tester, vil de som er det spare deg for mye tid med enten fremtidige prosjekter eller til og med regresjonstestsituasjoner .
Ulemper med ekvivalenspartisjonering
i programvaretesting
Selv om ekvivalenspartisjonering gir noen store fordeler, er det ikke den ideelle løsningen for hvert scenario. La oss utforske noen av begrensningene.
1. Legg inn rekkefølge
I visse situasjoner er inndatarekkefølge en kritisk del av å teste funksjonaliteten til en applikasjon. Det er ikke noe du virkelig kan kutte ned ved å bruke ekvivalenspartisjonering. Testere må være oppmerksomme på disse situasjonene og bruke alternative teknikker for å gi god dekning.
2. Komplekse inngangsavhengigheter
Kompleks programvare med komplekse inngangsavhengigheter er et annet område hvor begrensningene for ekvivalenspartisjonering er utsatt. For eksempel programvare som gir ut beregninger basert på ulike input. I dette scenariet må testere bruke en rekke teknikker for å redusere kombinatorisk eksplosjon og øke sannsynligheten for å isolere defekter.
Alternative tilnærminger for å komplementere
begrensninger for ekvivalenstesting
Selv om ekvivalenspartisjonstesting er passende for mange testscenarier, kan svært kompleks programvare med intrikate avhengigheter mellom inngangsverdier kreve ytterligere komplementære tilnærminger.
Når det gjelder å skrive testcaser for kompleks programvare, er det en solid idé å bruke en kombinasjon av disse tilnærmingene.
1. Parvis testing
Parvis testing er en programvaretestingsteknikk som tester alle mulige kombinasjoner av hvert par med inngangsparametere. Denne tilnærmingen sikrer at hvert par parametere testes sammen minst én gang.
2. Beslutningstabelltesting
En beslutningstabell hjelper testerne metodisk å kartlegge ulike inngangskombinasjoner. Det er en god måte å sikre systematisk dekning når komplekse avhengigheter eksisterer.
3. Statlig overgangstesting
Denne testtypen måler hvordan programvaren går mellom ulike tilstander som svar på ulike inngangskombinasjoner.
4. Modellbasert testing
Denne tilnærmingen krever å lage en modell basert på programvarens interne logikk og bruke et automatiseringsverktøy for å lage testcaser basert på den modellen. Denne teknikken er dyktig til å håndtere kompleksitet og sikre tilstrekkelig dekning.
Eksempler på testing av ekvivalensklassepartisjonering
Den beste måten å forstå ekvivalenspartisjonering på er å se på hvordan og hvor du kan bruke en ekvivalensklasse i programvaretesting. Her er noen eksempler for å hjelpe deg å visualisere konseptet ytterligere.
1. Ekvivalensklassepartisjonstesting eksempel #1
Et online bestillingsskjema er et godt ekvivalensklasseeksempel i programvaretesting.
La oss si at du bygger en app for en nettbutikk for stasjonært utstyr. Det finnes et typisk bestillingsskjema for kausjoner av A4-papir. Her er hvordan du kan bruke ekvivalensklasser for å teste dette skjemaet.
Ekvivalensklasser:
Antall A4-papir er innenfor et spesifikt område på for eksempel 1 til 100. Så de tre klassene er:
- 1 til 100
- Tall under 1
- Tall over 100.
Testtilfeller:
Tre testcases bør kjøres, med følgende forventede resultater
- Ethvert tall mellom 1 og 100 = Bestilling behandlet
- Tall under 1 = feilmelding
- Tall over 100 = feilmelding
2. Ekvivalenspartisjonstesting eksempel #2
En ekvivalensklasse i programvaretesting kan omhandle mer enn bare tall. I dette eksemplet skal vi utforske hvordan du kan bruke det samme prinsippet for å bekrefte en filopplastingsportal. La oss si at du må teste for et nettsted som krever at brukere laster opp identitetsdokumenter, men du kan bare godta bestemte formater.
Ekvivalensklasser:
- Støttede dokumenter er PDF og JPEG.
- Ikke-støttede dokumenter er alle andre dokumentformater
- Ingen dokument
Testtilfeller:
- Test ved å laste opp PDF eller JPEG = vellykket opplasting
- Test ved å laste opp format som ikke støttes = feilmelding
- Test uten filopplasting = feilmelding
Hvordan implementere en ekvivalenspartisjonering
tilnærming til programvaretesting
Hvis du vil bruke ekvivalensklasser i testing, må du ta en strategisk tilnærming. Her er en nyttig trinn-for-trinn-guide for implementering av ekvivalenspartisjonering i programvaretesting.
Trinn #1: Identifiser inngangsvariabler
Hver programvare reagerer på en rekke inngangsvariabler. For kompleks programvare kan disse variablene være enorme. Så gå gjennom programvarekravene og spesifikasjonene og finn ut alle variablene som har innvirkning på programvarens oppførsel.
Noen av de mest åpenbare inngangene vil inkludere brukerinndataskjemaer. Du må imidlertid vurdere et bredere spekter av input for listen din. Du kan også vurdere miljøvariabler, API-kall, interne beregninger og så videre.
Deretter bør du forstå de forskjellige typene variable data. Du kan kategorisere disse variablene som heltall, boolsk, streng, etc., for å definere de riktige partisjonene.
Til slutt må du utforske inndatabegrensninger. Det vil være ting som hvilke tegn som er tillatt, definerte formater og minimums-/maksimumsverdier.
Steg 2. Bestem gyldige og ugyldige partisjoner
Se på hver inngangsvariabel og begynn å partisjonere dem i henhold til gyldige og ugyldige utfall. Dette vil være ekvivalensklassene dine i testing.
1. Gyldige partisjoner
Gyldige partisjoner kan deles inn i to klasser.
Positive ekvivalensklasser:
Verdier du forventer at programvaren din vil håndtere. For eksempel, for programvare som registrerer prosentvise karakterer, er alt mellom 0 og 100 gyldig.
Negative ekvivalensklasser:
Denne kategorien vil være for verdier som er utenfor grensene for forventet input, men som programvaren din skal håndtere med en feilmelding. For eksempel er inndata 110 for en prosentkarakter, noe som ber programvaren om å returnere en feilmelding som sier: “Alle verdier må være 0 til 100”.
2. Ugyldige partisjoner
Disse ekvivalensklassene vil inkludere innganger som vil utløse feil eller uventet atferd. I eksemplet ovenfor kan det inkludere forsøk på å legge inn A+ eller B eller lignende inndata i prosentkarakteren. Selv om disse inngangene kan være teknisk korrekte, er de utenfor de numeriske forventningene.
#3. Skrive effektive testcases
Deretter må du designe testtilfeller som dekker hver ekvivalenspartisjon minst én gang. Som nevnt tidligere i artikkelen, sikrer dette passende testdekning.
Først må du velge representative verdier innenfor hver ekvivalenspartisjon som kan dekke både gyldige og ugyldige data.
Tips for å skrive solide testcases
- Tenk på grenseverdier: Sørg for at du tester grensene til partisjonene dine. Minimum, maksimum, inkluderende, eksklusivt osv., da disse områdene er sterke kandidater for feil. For eksempel, hvis inndataforventningene dine er mellom 0 og 100, test for negative verdier, samt tall som 101.
- Vurder positive og negative testscenarier for både gyldige og ugyldige testtilfeller.
- Kombinasjonstesting er en god idé. Bruk noen forskjellige tilnærminger som skissert i våre alternative tilnærminger for å utfylle begrensningene i ekvivalenstestingsdelen ovenfor.
- Dokumenter begrunnelsen bak hvorfor inngangsverdier har blitt delt inn i spesifikke partisjoner, og skisser tydelig den forventede oppførselen til hver test
- Der det er mulig, bruk visuelle verktøy for å gi en følelse av klarhet og objektivitet til testsakene dine ved å bruke diagrammer eller tabeller for å kartlegge partisjonene dine.
#4. Planlegg og utfør testsakene dine
Prioriter oppgavene dine basert på faktorer som:
- Hvilke områder er mest sannsynlig å ha defekter
- Hvilke scenarier er mest sannsynlig å forårsake alvorlige scenarier, for eksempel krasj eller fryser
Utfør deretter testene dine og registrer utdataene og eventuelle feil som oppstår. For komplekse programmer med mange innganger kan du bruke RPA- verktøy for å etterligne brukerhandlinger.
#5. Analyser resultatene
Slå sammen de innsamlede testdataene og analyser resultatene. Noen metoder du må bruke er å:
- Se på hvert testtilfelle og sammenlign de faktiske utgangene med dine forventede utganger
- Finn eventuelle avvik og undersøk og rapporter eventuelle feil og mangler.
# 6 Ytterligere tips
Selv om disse tipsene ikke vil gjelde i alle scenarier, vil de vise seg nyttige for kompleks programvaretesting.
- Beslutningstabeller er en utmerket måte å visualisere ekvivalenspartisjonene dine og forskjellige inngangskombinasjoner du kanskje vil bruke
- Du kan slå sammen ekvivalensklasser hvis de viser nesten identisk oppførsel, og optimalisere testprosessen ytterligere
- Bruk grenseverditesting for å forbedre defektdeteksjon
- Der det er mulig, automatiser testsakene for ekvivalenspartisjonering
Ekvivalenspartisjonering og grenseverdianalyse
Ekvivalenspartisjonering er basert på antakelsen om at hver test i en partisjon vil gi det samme resultatet. Selv om det er sant i mange situasjoner, vil det ikke alltid fungere. For eksempel kan alle innganger som er lagt til en partisjon ved en feiltakelse bli ukontrollert, noe som kan føre til redusert dekning og potensiell programvareustabilitet langs linjen.
Løsningen på dette problemet er grenseverditesting. Den lar programvaretestteam fokusere på områdene som er mest sannsynlig å inneholde risiko, og tester programvaren på dette grunnlaget. Kort sagt, det foreslår at det er mest sannsynlig at risiko oppstår ved kantene eller grensene til inngangspartisjonene dine. Derfor kan testere skrive testtilfeller ved øvre og nedre grenser for inngangene, i tillegg til de andre ekvivalensklassetestsakene.
Ekvivalenspartisjonering og automatisering med ZAPTEST
Programvaretestautomatiseringsverktøy, som ZAPTEST , kan hjelpe team med å automatisere ekvivalenspartisjonering både under testoppretting og utførelse.
La oss utforske hvordan ZAPTEST kan hjelpe deg å låse opp fordelene med denne nyttige svartboks-testmetoden.
1. Verktøyvalg
Det er viktig å velge riktig verktøy for jobben. De fleste testautomatiseringsverktøy spesialiserer seg på enten nett-, mobil- eller skrivebordstesting. ZAPTEST er i stand til å håndtere testing på tvers av forskjellige plattformer og applikasjoner, noe som gjør det til et solid valg.
2. Skriv og utfør testsaker
ZAPTEST 1Script lar deg skanne brukergrensesnittet for å bygge testautomatisering. I tillegg kan du også skanne programmodeller hvis du er i et tidlig stadium av utviklingen. Ved å bruke Scan GUI-funksjonen vil ZAPTEST skanne alle testobjekter og legge dem til i objektlisten.
Herfra kan du legge til objekter i diagrammet og bygge ut testtrinnene.
ZAPTEST lar deg automatisere skrivingen av sakene med et enkelt dra-og-slipp-grensesnitt. Du trenger ikke kodeekspertise for å bygge testcases med ZAPTEST. Så herfra kan du velge den relevante operasjonen fra en rullegardinmetode og bygge en testcase basert på inngangsverdiene som trengs for grensesnittet ditt. Deretter kan du bygge testtilfeller for hver ekvivalens og utføre testsakene dine. Du kan til og med gjenbruke testsaker og redigere dem i Step-editoren, noe som sparer mye tid.
3. Rapportering og testsaksbehandling
ZAPTEST lar deg kjøre testsaker parallelt, noe som sparer betydelig tid. Dette kan hjelpe deg med å kjøre et stort antall forskjellige ekvivalenspartisjoner på en gang eller kjøre bestemte grupper av tester.
Resultatene er enkle å samle takket være detaljerte mislykkede/beståtte rapporter, skjermbilder, utførelseslogger og ytelsesmålinger knyttet til hvert testtilfelle.
4. Vedlikehold av testkasse
Du kan også enkelt spore og vedlikeholde testsakene dine takket være funksjoner for kvalitetskontroll av versjoner. Dessuten kan ZAPTEST-brukere klone og gjenbruke tester for å oppnå et nytt effektivitetsnivå.
ZAPTEST tilbyr mye mer funksjonalitet bortsett fra testcase-automatisering. Med en rekke RPA- verktøy tilbyr ZAPTEST 2-i-1-funksjonalitet, som bygger bro mellom DevOps og BizOps i en fremtid preget av hyperautomatisering, hvor alt som kan automatiseres vil bli automatisert.
Siste tanker
Ekvivalenspartisjonering er en elegant løsning for situasjoner der testere må finne en balanse mellom effektivitet og nøyaktighet. Med noe programvare som tillater et nesten uendelig utvalg av innganger, hjelper ekvivalensklassepartisjonering teamene med å bryte ned testdata i håndterbare biter i små størrelser som hver kan testes grundig.