Inkrementell testing i programvaretesting er en metodikk som lar team bryte ned individuelle moduler, teste dem isolert og integrere dem i etapper. Det hjelper å finne defekter tidlig, reduserer kompleksiteten og øker testdekningen.
Denne artikkelen vil ta et dypdykk i inkrementell testing, forklare hva det er, og utforske de forskjellige typene, prosessene, tilnærmingene, verktøyene og mer som er forbundet med denne nyttige metodikken.
Hva er inkrementell testing?
Testing er en av de viktigste stadiene i programvareutviklingens livssyklus (SDLC). Akkurat som med SDLC, er testing delt opp i forskjellige logiske trinn. Inkrementell testing er et av disse stadiene, og det skjer vanligvis under integrasjonstesting og rett etter enhetstesting .
Inkrementell testing er en pragmatisk tilnærming til programvaretesting som bryter ned store eller komplekse programmer i håndterbare biter. I stedet for å integrere og teste et helt programvaresystem på en gang, ser inkrementell testing på moduler og implementerer en trinnvis verifiseringsprosess.
Programvaremoduler er vanligvis selvstendige kodeenheter som utfører spesifikke oppgaver eller funksjoner. Hvor granulære disse modulene er avhenger av ulike faktorer, for eksempel kodingspraksis, utviklingsmetoder eller til og med programmeringsspråket du bruker.
Moduler testes uavhengig under enhetstesting. Deretter, under integrasjonstesting, blir hver modul integrert del for del – eller i trinn. Denne prosessen sikrer at hver modul fungerer godt sammen. For å verifisere hver modul fullt ut, må testerne imidlertid simulere komponenter som ennå ikke er implementert eller eksterne systemer. For å gjøre dette trenger de hjelp av stubber og sjåfører.
Hva er stubber og drivere i inkrementell testing?
Stubber og drivere er kritiske testverktøy for programvare. Disse midlertidige kodebitene brukes under integrasjonstesting fordi de gir teamene muligheten til å etterligne atferden og grensesnittene til ulike moduler eller komponenter.
1. Stubber:
Stubber etterligner moduler som ennå ikke er utviklet, og er som sådan utilgjengelige for testing. De lar modulen under test (MUT) kalle på ufullstendige moduler. Resultatet her er at MUT kan testes isolert, selv når relaterte moduler ikke er tilgjengelige.
2. Drivere:
Drivere, på den annen side, simulerer oppførselen til moduler som kaller MUT. Innenfor testmiljøet kan disse sjåførene sende MUT-testdataene. Igjen, dette letter testing av moduler isolert uten behov for eksterne avhengigheter.
Bruk av stubber eller drivere reduserer utviklingstiden, forbedrer kodekvaliteten og øker teamets produktivitet. Å bestemme hvilken som skal brukes avhenger imidlertid av hvilken testmetodikk som er mest hensiktsmessig. Vi vil utvide dette i et avsnitt nedenfor som omhandler de forskjellige typene inkrementell integrasjonstesting.
Ulike typer inkrementelle
integrasjonstesting
Inkrementelle testtyper kan grovt deles inn i tre kategorier. La oss utforske hver enkelt.
1. Inkrementell integrering ovenfra og ned
Top-down inkrementell integrasjon starter med å teste de høyeste ordensmodulene i et system. Derfra integrerer og tester den gradvis moduler av lavere orden.Det er to hovedscenarier der inkrementell integrasjon ovenfra og ned brukes. De er:
- Når et system er veldig stort eller svært komplekst
- Når utviklerteamet jobber med mange moduler samtidig.
Trinn for inkrementelle integrasjoner ovenfra og ned
- Identifiser kritiske moduler
- Lag stubber for å etterligne moduler av lavere orden
- Utvikle drivere for å samhandle med høyere-ordens moduler for å sende dem data og tolke modulens utdata
- Enhetstest kritiske moduler med drivere og stubber
- Integrer moduler av lavere orden og erstatt gradvis stubber med ekte implementeringer
- Refaktor-drivere for å imøtekomme de nye modulene
- Gjenta til alle moduler av lavere rekkefølge er integrert og testet.
2. Inkrementell integrasjon nedenfra og opp
Inkrementelle integrasjoner nedenfra og opp går i motsatt retning. Med denne tilnærmingen blir de lavere (eller minst kritiske) modulene i systemet testet, med høyere ordens moduler gradvis lagt til. Denne tilnærmingen er egnet i forskjellige scenarier, for eksempel:
- Når du arbeider med mindre systemer
- Når et system er modularisert
- Når du har noen bekymringer om enten nøyaktigheten eller fullstendigheten til stubber.
Trinn for inkrementelle integrasjoner nedenfra og opp
- Identifiser moduler av lavere orden
- Enhetstest moduler av lavere orden for å verifisere deres individuelle funksjonalitet
- Utvikle drivere til å fungere som mellomledd med moduler av lavere orden
- Lag stubber for å simulere oppførselen til høyere-ordens moduler
- Integrer de neste modulene, fra lavere til høyere orden, og bytt ut stubber gradvis med ekte implementeringer
- Refaktor-drivere for å imøtekomme de nye modulene
- Gjenta til alle høyere-ordens moduler er integrert og testet.
3. Funksjonell inkrementell integrasjon
Funksjons inkrementell integrasjonstesting er den neste vanlige typen inkrementell testing i programvaretesting. Mens de to foregående typene fokuserte på moduler av høyere og lavere orden, er funksjonell inkrementell testing basert på funksjonaliteten til en bestemt modul.
Funksjonell inkrementell integrasjon brukes i Agile/DevOps-metodologier , og det er et utmerket valg for applikasjoner med komplekse avhengigheter mellom moduler eller komponenter.
Trinn for funksjonell inkrementell integrasjon
- Identifiser individuelle moduler og komponenter med veldefinerte grensesnitt
- Verifiser funksjonaliteten til hver modul via enhetstesting
- Integrer de mest minimale kjernemodulene i systemet og sørg for at det fungerer
- Legg gradvis til enkeltmoduler, test funksjonalitet på hvert trinn
- Refaktorer koden etter hvert som hver modul legges til
- Når alle moduler er lagt til, test funksjonalitet og ytelse
Fordeler og ulemper med en inkrementell testmetode
Nå bør du ha en ide om hvorfor inkrementell testing er en populær tilnærming. Men som alle metoder for programvaretesting, har den sine fordeler og ulemper. La oss utforske noen av disse fordelene og ulempene.
Fordeler med en inkrementell testmetode
1. Fleksibilitet
Som alle programvareutviklere og testere vet altfor godt, kan kravene endres og utvikles under SDLC, noen ganger ganske dramatisk. Inkrementell testing er dynamisk nok til å tillate team å tilpasse seg under testprosessen og innlemme nye planer og retninger.
2. Tidlig feildeteksjon
Den beste tiden å oppdage en feil eller defekt er så tidlig som mulig. Når utviklere verifiserer bite-sized moduler individuelt, er det mye enklere å identifisere og fikse problemer. Dessuten bidrar det til å redusere sannsynligheten for at store problemer oppstår sent i utviklingen.
3. Enkelhet
Programvaretesting kan være en svært kompleks prosess. En av de mest overbevisende aspektene ved inkrementell testing er hvordan den deler testbyen opp i brukbare deler. I stedet for å håndtere overveldende kompleksitet, kan testere fokusere på og til og med prioritere bestemte moduler. Denne fordelen er en gave for store og komplekse applikasjoner.
4. Lavere regresjonsrisiko
Regresjon er en tidkrevende og kompleks problemstilling innen programvareutvikling. Inkrementell testing kan redusere frekvensen og risikoen forårsaket av regresjon fordi det lar team teste moduler individuelt og håndtere problemer etter hvert som de oppstår. Når det brukes sammen med solid regresjonstesting , kan team spare mye tid og hjertesorg.
5. Tilbakemeldingsmuligheter
En ofte oversett fordel med inkrementell testing er at den gir teamene mulighet til å sette sammen prototyper og MVP-er. Derfra kan interessenter og investorer vurdere den grunnleggende funksjonaliteten til prosessen og gi uvurderlig tilbakemelding. Denne situasjonen kan spare mye tid og penger og føre til mer robuste produkter.
Ulemper med en inkrementell testmetode
1. Integreringsspørsmål
Det er ønskelig å teste moduler separat fordi det bryter ned en kompleks applikasjon i håndterbare biter. Imidlertid kan integrering av disse modulene resultere i nye og uventede feil. Som sådan må en inkrementell testtilnærming planlegges nøye og bevisst.
2. Test suite kompleksitet
Med flere testtilfeller for hver modul og deres respektive interaksjon med hverandre, kan testsuiter bli komplekse å spore og administrere. For store og kompliserte apper gjør dette grundig dokumentasjon eller testadministrasjonsverktøy til en nødvendighet.
3. Mer arbeid
Monolittisk testing, selv om den er mer kompleks, krever mindre testing. Ved å teste mange moduler separat, krever inkrementell testing mer arbeid. Fordelene med inkrementell testing, for eksempel tidlig oppdagelse av feil, betyr imidlertid at ekstra innsats er en tidsbesparende investering. Selvfølgelig, programvaretestautomatisering kan bidra til å redusere denne innsatsen.
4. Økte ledelseskrav
Inkrementell testing krever at flere team jobber sammen. For eksempel må utviklings-, test- og DevOps-team samarbeide. Denne situasjonen skaper ytterligere etterspørsel fra ledelsen og krever god kommunikasjon mellom disse teamene for å sikre at de er fokuserte og trekker mot de samme målene.
Eksempel på inkrementell testing
Den kanskje enkleste måten å forstå en inkrementell testmetode på er å tenke på et eksempel. Her er en enkel situasjon for å visualisere prosessen.
1. Inkrementell testeksempel for en mobilbankapp
Scenario: Et team bygger en mobilbankapp. Appen er sammensatt av flere forskjellige moduler som muliggjør:
- 2FA og biometrisk brukerverifisering
- Transaksjon behandles
- Dashboard for finansiell databehandling
Objektiv: Teamet ønsker å teste integreringen av hver modul og finne ut om de fungerer godt sammen. Som et resultat bygger de tre testcaser.
Testtilfelle 1
I det første testtilfellet ønsker teamet å sikre at brukeren ved å legge inn biometriske eller passorddata får tilgang til både transaksjonsbehandling og dashbordet for finansiell databehandling.
Appen vil bestå testen hvis brukeren kan skrive inn detaljene sine og få tilgang til transaksjoner.
Testtilfelle 2
Den neste testsaken er designet for å se hvordan appen håndterer uautoriserte transaksjoner.
Appen består testen hvis et forsøk på å foreta en uautorisert transaksjon blokkeres og appen produserer en feilmelding.
Testtilfelle 3
Den siste integrasjonstesten innebærer å validere om appen kan foreta transaksjoner samtidig.
Appen vil bestå testen hvis brukeren kan starte en transaksjon og få tilgang til finansiell informasjon samtidig uten datainkonsekvenser eller problemer.
Er en inkrementalitetstesting tilnærming til
samme som inkrementell testing?
Nei. Inkrementalitetstesting refererer til en statistisk markedsføringsmetode som kanskje er best kjent som attribusjonsmodellering. Kort sagt, det hjelper markedsføringsteam med å forstå virkningen av reklamekampanjer, markedsføringskanaler eller bestemte strategier.
Mens interessen for denne typen modellering har vokst de siste årene takket være «døden» av informasjonskapsler og tredjepartsdata, er den eneste relasjonen den har til inkrementell testing et delt ord.
Topp 3 verktøy for inkrementell testing
#1. ZAPTEST
I tillegg til å gi førsteklasses RPA ZAPTEST tilbyr en rekke automatiseringsverktøy for programvaretesting som er perfekte for inkrementell testing. Noen av funksjonene inkluderer:
- Administrering av testdata : Reduser mengden tid og krefter involvert i inkrementell testing ved å la team gjenbruke testdata
- Skriptopptak og -avspilling : Dette verktøyet uten kode lar team ta opp og utføre skript og spare mye tid under inkrementell testing
- Gjenbrukbare testmoduler : ZAPTEST er svært modulbasert og lar team lage og gjenbruke testmoduler og frigjøre betydelige mengder tid fra testprosessen.
Alt i alt tilbyr ZAPTEST en kraftig og variert testautomatiseringspakke som passer for alle typer testing, inkludert inkrementell testing.
#2. Selen
Selenium er en åpen kildekode-testautomatiseringsplattform som er bygget for å lette testing av mobilapplikasjoner. Verktøyene støtter flere mobile plattformer (Android, iOS, Windows) og bruker stubber og drivere for å simulere moduler.
#3. Testsigma
Testsigma er en skybasert testautomatiseringsplattform. Den kan brukes til å teste web- og mobilapplikasjoner og er egnet for inkrementell testing takket være kodeløs testoppretting og integrasjon med CI/CD-rørledninger.
Siste tanker
Inkrementell testing i programvaretesting er en viktig del av integrasjonstesting. Den lar team bryte ned moduler til lett testbare deler før de sakte integreres. Fordelene her er at hver modul kan verifiseres for feil og deretter for hvordan den integreres med de tilkoblede delene.
Ved siden av vår beste RPA i klassen verktøy, tilbyr ZAPTEST no-code software test automatisering som er både på tvers av plattformer og på tvers av applikasjoner. Dessuten kommer testpakken vår fullpakket med funksjoner som CI/CD-integrasjon, robust rapportering og analyser, og førsteklasses støtte og kundeservice.