fbpx

Get your 6-month No-Cost Opt-Out offer for Unlimited Software Automation?

Funktionel softwaretestning er en vigtig del af enhver softwaretestprocedure. Hvis du gør det korrekt første gang, kan du undgå dyre og tidskrævende reparationer senere og hjælpe med at holde kunderne tilfredse. At kunne automatisere dele af funktionstest med produkter som ZAPTEST gør processen endnu mere smertefri.

Vi forklarer betydningen af funktionel testning, typer af funktionel testning, hvordan man udfører funktionel testning, automatisering, bedste praksis og hvem der bør udføre funktionel testning i din virksomhed. Vi vil også se på nogle af de bedste værktøjer til funktionel testning på markedet.

Table of Contents

Hvad er funktionel testning?

Funktionel test i softwaretest er en måde at afgøre, om software eller en app fungerer som forventet. Funktionel testning drejer sig ikke om, hvordan behandlingen finder sted, men om behandlingen leverer de korrekte resultater eller har fejl.

Når du udfører en funktionel test, leder du efter eventuelle huller, fejl eller noget, der mangler i software- eller app-kravene.

Forskellen mellem systemtest og funktionel testning er, at systemtestning tester hele systemet, mens funktionel testning kun tester en enkelt funktion.

Funktionel og ikke-funktionel testning

Funktionel og ikke-funktionel test tester forskellige softwareaspekter. Funktionel testning i softwaretestning handler om, hvorvidt hver enkelt funktion i softwaren eller appen er i overensstemmelse med de krævede specifikationer. Ikke-funktionel testning måler på den anden side, hvor godt software eller apps fungerer, snarere end om de overhovedet fungerer.

Typer af funktionel testning, diskussion og eksempler

Definitionen af funktionel testning ligger i dens navn. Funktionel testning handler om at teste, om softwaren fungerer korrekt og lever op til brugerens forventninger.

For at hjælpe dig med at forstå betydningen af funktionel testning lidt bedre, er her nogle af de vigtigste typer af funktionel testning:

Test af enheder

Udviklere eller testere bruger enhedstest til at afgøre, om de enkelte komponenter eller enheder i softwaren eller appen opfylder funktionalitetskravene. Enhedstest sikrer, at de mindste funktionelle dele af softwaren fungerer korrekt.

Test af kodedækning er afgørende. Desuden skal du også lave enhedstest for at få dækket linjer, kodekørsler og metoder.

Fordele ved enhedstestning:
  • Fastlæggelse af din overordnede kodekvalitet
  • Finde softwarefejl
  • Dokumentation for bedre at forstå grænsefladen

 

Ulemper ved Unit Testing:
  • Kræver at skrive mere kode
  • Kan indikere et behov for at ændre den strukturelle konstruktion
  • Fanger ikke alle fejl

Test af røg

Udviklere (og nogle gange testere) udfører røgtests efter hvert nyt build for at sikre stabilitet og teste kritisk funktionalitet. Røgtestning kontrollerer hele systemets stabilitet.

Du kan f.eks. lave røgtest for funktionaliteten af loginsiden eller bestemme funktionaliteten af tilføjelse, opdatering eller sletning af poster i det nye build.

Røgtest Fordele:
  • Sikrer, at softwaren er stabil nok til mere detaljerede test
  • Sikrer, at softwaren ikke indeholder nogen uregelmæssigheder eller fejl

 

Ulemper ved røgtestning:
  • Er detaljeret afprøvning ikke
  • Det lille antal røgtestsager fanger måske ikke alle kritiske problemer

Sanity Testing

Testere udfører normalt sanity tests efter røgtests. Sanity testing sikrer, at specifikke nye funktioner fra buildet eller fejlrettelser i appen eller softwaresystemet fungerer, som de skal.

Hvis røgtestning inspirerede til fejlrettelser, er det ved sanity testing, at du kan afgøre, om disse fejlrettelser virker. Hvis røgtesten f.eks. har fundet loginproblemer, vil sanity testing kontrollere de fejlrettelser, der er rettet, og gå et skridt videre for at sikre, at nye logins opfylder alle kriterierne for loginindtastning.

Fordele ved sanity tests:
  • Sparer tid, fordi den fokuserer på specifikke områder af funktionaliteten efter en mindre ændring
  • Hjælper med at identificere afhængige manglende komponenter efter mindre ændringer

 

Ulemper ved sanity testing:
  • Kort og ikke detaljeret
  • Angiver kun, at ændringerne har virket som forventet

Regressionstest

Testere bruger regressionstest blandt de forskellige typer funktionel testning for at sikre, at ny kode, opdateringer eller fejlrettelser ikke bryder appens eller softwarens eksisterende funktionalitet eller forårsager ustabilitet i uafhængige funktioner.

Du ønsker f.eks. ikke, at din nye kode eller din fejlrettelse skal ødelægge muligheden for at indtaste data i en ældre del af softwaren.

Fordele ved regressionstest:
  • Sikrer, at rettelser eller ændringer i softwaren ikke påvirker den måde, hvorpå ældre dele af softwaren fungerer med samme funktionalitet
  • Sikrer, at problemer, som du tidligere har løst, ikke opstår igen

 

Ulemper ved regressionstest:
  • Medmindre du kan automatisere processen, kan regressionstestning være dyrt og tidskrævende, fordi du skal udføre den for hver eneste lille ændring i koden.
  • Komplekse testcases er nødvendige for komplekse scenarier

Integrationstest

Udviklere (og nogle gange testere) udfører integrationstest for at sikre, at de enkelte moduler i softwaren eller appen er forbundet og fungerer sammen. Integrationstest omfatter undersøgelse af logik og gengivne værdier. Det sikrer, at modulerne integreres godt med tredjepartsværktøjer, og påpeger fejl i undtagelseshåndteringen.

Du kan f.eks. teste, om loginsiden fører dig til det rigtige modul, når du logger ind. Du kan også kontrollere, om slettede elementer ryger i en papirkurv, når du har slettet dem.

Fordele ved integrationstest:
  • Giver en uafhængig testproces med kodedækning af hele systemet
  • Opdager fejl eller sikkerhedsproblemer i de indledende faser af funktionel softwaretest for at spare tid

 

Ulemper ved integrationstest:
  • Svært at udføre
  • Tidskrævende

Beta/brugervenlighedstest

Efter andre typer funktionstest giver beta/brugervenlighedstest mulighed for at teste faktiske kunder for at sikre, at en ny produktopdatering fungerer korrekt, før den bliver sendt ud til alle. Kunderne giver feedback om, hvor godt opgraderingen fungerer, så udviklerne kan overveje yderligere ændringer af koden af hensyn til brugervenligheden.

Hvis f.eks. brugergrænsefladens udseende ændres i forbindelse med opdateringen, giver betatest kunderne mulighed for at give feedback om, hvad der fungerer, hvad der ikke fungerer, og hvilke funktioner der mangler.

Fordele ved brugervenlighedstest:
  • Vurderer, hvad slutbrugeren vil synes om ændringerne, og fastslår, hvad der mangler, eller hvad der ikke fungerer ved almindelig brug
  • Forbedrer produktkvaliteten og reducerer risikoen for produktfejl eller utilfredshed hos kunderne ved lanceringen

 

Ulemper ved brugervenlighedstest:
  • Udviklerne har ingen kontrol over testprocessen
  • Vanskeligheder med at duplikere de fejl, som betatestere oplever

Typer af ikke-funktionel testning, diskussion og eksempler

Når det er fastslået, om softwaren gør, hvad den skal, kan ikke-funktionel testning måle, hvor godt den fungerer under forskellige omstændigheder.

Test af ydeevne

Præstationsafprøvning gør det muligt for udviklere at finde ud af, hvor godt softwarekomponenterne fungerer. Den måler den overordnede kvalitet af softwaren for at bestemme, hvor hurtig den er, og hvor skalerbar den er.

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

Nogle eksempler på test af ydeevne omfatter måling af svartider, finde flaskehalse og finde punkter, hvor softwaren fejler.

Fordele ved præstationstest:
  • Bestemmelse af softwarehastighed
  • Optimering af softwaren
  • Fastlæggelse af belastningskapaciteten for at holde slutbrugerne tilfredse

 

Ulemper ved præstationstest:
  • Kan være dyrt
  • Kræver flere enheder på flere steder for at afgøre, hvilken type problemer forbrugerne kan have

Test af belastning

Belastningstest hjælper udviklere med at forstå, hvordan et system fungerer under forventede belastninger og brugertoppe.

Belastningstestning hjælper med at sikre, at softwaren fungerer og opfylder brugernes forventninger under normale belastninger i stedet for at teste den ved ekstreme kapaciteter.

Fordele ved belastningstestning:
  • Afdækker normale flaskehalse
  • Identificerer den ideelle infrastruktur til regelmæssig brug
  • Reducerer nedetiden under normale trafikspidser

 

Ulemper ved belastningstest:
  • Afsløring af mangler i lasthåndteringskapaciteten, som det kan være dyrt at afhjælpe
  • Afdækning af begrænsninger, der kan få potentielle brugere til at gå over til andre muligheder i perioder med stor trafik

Stresstest

Stresstest afslører, hvor godt softwaresystemet fungerer under de mest belastende forhold

Du kan f.eks. undersøge, hvordan systemet fungerer, når flere kunder end normalt logger ind på systemet.

Fordele ved stresstest:
  • Afsløring af, hvordan systemet ville fungere efter en fejl, og hvor godt det ville genoprette sig
  • at give et billede af, hvordan systemet vil fungere under normale og uregelmæssige forhold
  • giver en idé om, hvorvidt det er nødvendigt med et brugerloft

 

Ulemper ved stresstest:
  • Viden om, hvordan man skriver scripts til stresstestning for alle potentielle scenarier
  • Omkostelig og vanskelig at udføre manuelt

Hvordan udfører man funktionel testning?

Lad os se på, hvad der er involveret i at udføre funktionel testning i softwaretestning.

Introduktion og hvad der skal testes i funktionel testning

Funktionel testning er afgørende for at fastslå, om software eller apps fungerer som de skal uden fejl.

En af de første ting, du skal gøre, før du begynder at teste, er at fastlægge dine testmål. Alle små ændringer i scriptet kan påvirke, hvordan softwaren fungerer generelt.

Det er derfor vigtigt at identificere, hvilke softwarekomponenter der er forbundet med eventuelle ændringer, og teste hver enkelt forbundet komponent for at sikre, at den fungerer som forventet.

Trin 1: Udvikle testscenarier

Under testen er det vigtigt at teste forskellige scenarier for hver funktion og tænke på alle de “hvad nu hvis”-situationer, der kan ske for brugeren.

Hvad nu, hvis brugeren f.eks. forsøger at indtaste en adgangskode, der ikke opfylder dine kriterier? Hvad sker der, hvis brugeren betaler med et udløbent kreditkort eller i en anden valuta? Hvad hvis to brugere ønsker det samme login-navn?

 

Trin 2: Opret testdata for at simulere normale forhold

Du vil oprette testdata, der simulerer normale forhold baseret på de testscenarier, som du tidligere har identificeret. Du skal derfor opstille en liste over, hvad der skal ske i tilfælde af, at hvert af disse scenarier indtræffer.

Trin 3: Udfør test

Du kan enten have en plan for funktionel testning, der omfatter manuel testning af disse forhold, eller du kan oprette et automatisk script til automatiseret funktionel testning, der simulerer scenarierne.

Hvis en person f.eks. forsøger at oprette et login, der allerede findes i systemet, skal vedkommende få en fejlmeddelelse, der opfordrer vedkommende til at oprette et andet login.

Trin 4: Liste over problemer

Hvis du får andre resultater af testene end forventet, skal du registrere det.

Hvis det f.eks. er muligt at oprette et login, der er det samme som en anden persons login, skal du markere det som et problem, der skal løses.

Trin 5: Bestem, hvordan problemerne skal løses

Når du har identificeret et problem, der kræver en løsning, bør du registrere problemet på et formelt sted, så hele projektteamet har adgang til det identificerede problem.

Når du har fundet løsningen og foretaget ændringerne, skal du teste igen for at sikre, at fejlen er løst på tværs af platformen.

Skal du automatisere funktionel testning?

Funktionel test kan være en kedelig proces at gennemføre manuelt, især hvis ændringer i koden påvirker flere områder af softwaren. Ved at se på fordelene, udfordringerne og begrænsningerne ved at bruge software som ZAPTEST til automatiseret funktionstest kan du afgøre, om det er det rigtige i din situation.

bedste praksis for agil og funktionel testning af softwareautomatisering

Fordele ved at automatisere funktionel testning

  • Tager mindre tid end manuel testning
  • Kræver mindre indsats end manuel testning
  • Der er færre menneskelige fejl involveret
  • Færre fejl slipper forbi under testning
  • Giver en kopi af, hvordan produktet vil fungere i et live-miljø
  • Hjælper med at levere et produkt af højere kvalitet, der opfylder kundernes krav til brugervenlighed

Udfordringer og begrænsninger ved automatisering af funktionelle test

  • Udvikling af en række forskellige testscenarier
  • Fastlæggelse af de korrekte test
  • Manglende logiske fejl
  • Tidskrævende ved mere kompliceret testning
  • Finde de rigtige værktøjer til automatisering af softwaretestning
  • Det er ikke muligt at automatisere alle test
  • Nogle fejl kan undgå at blive analyseret

Konklusion: Hvorfor automatisere funktionelle tests?

Automatisering af funktionelle tests med værktøjer som ZAPTEST sparer tid og kræfter og gør det muligt at undgå fejl i forhold til manuel testning. Automatiseret testning på tværs af platforme er mere omkostningseffektivt end manuel testning og giver en mere sandfærdig indikation af, hvordan brugerne vil opleve din software.

Bedste praksis inden for automatisering af funktionel test

Automatisering af funktionel testning vil gøre dig bedre, hvis den udføres korrekt. Her er nogle eksempler på bedste praksis, som du kan følge.

Vælg de rigtige testcases

En af de vigtigste komponenter i automatisering af funktionel testning er at vide, hvad der skal testes. De typer funktionelle test, der er bedst som automatiseret funktionel testning, er:

  • Test, som du skal udføre flere gange eller regelmæssigt
  • Test, som du skal køre flere gange med forskellige datasæt
  • Test, der tager meget tid og kræfter
  • Test, der let kan resultere i menneskelige fejl
  • Udførelse af den samme test på tværs af forskellige brugerstyresystemer, browsere eller enheder

Saml data i brugbare formater

Når du kompilerer data til automatiserede test, der har brug for flere datasæt, skal dataene være nemme at bruge, læse og vedligeholde. Oplysningerne skal komme fra letlæselige kilder, f.eks. XML-filer, tekstfiler eller i en database. Ved at opbevare data i disse formater er det lettere at vedligeholde, bruge, teste og genbruge automatiseringsrammen.

Det er også vigtigt at være organiseret, når forskellige teammedlemmer skal kunne bruge de samme data.

Få et dedikeret automatiseringsteam

Et dedikeret team af detailorienterede personer, der er involveret i automatiseret funktionel testning, er nøglen til succesfuld testning. Du skal vælge detaljeorienterede teammedlemmer med de rette færdigheder til at udføre automatiseret testning. Det er afgørende for en vellykket testning at afgøre, hvem der er bedst til manuel testning i forhold til scripting og brug af automatiserede værktøjer til funktionel testning.

Mulighed for at søge efter fejlpunkter i forskellige brugergrænseflader (UI)

Det er vigtigt, at testningen omfatter funktionelle UI-tests for at verificere, om softwaren fungerer ens på tværs af forskellige operativsystemer, browsere og enheder. Det er derfor vigtigt at skrive tests, der ikke går i stykker og kun kræver minimale ændringer i tilfælde af ændringer i brugergrænsefladen.

Hyppig testning

Du skal udarbejde en strategi, der indeholder en liste over de komponenter, du skal teste regelmæssigt. Når du ved, hvilke komponenter der skal testes efter ændringer på tværs af forskellige platforme, er der større sandsynlighed for, at du kan afsløre flere fejl i de tidligere testfaser.

IS YOUR COMPANY IN NEED OF

ENTERPRISE LEVEL

TASK-AGNOSTIC SOFTWARE AUTOMATION?

Hvem skal gøre hvad i funktionel testning?

Når du udarbejder en plan for funktionel testning, er det vigtigt at fastslå, hvem der har hvilket ansvar for de forskellige komponenter af funktionel testning.

der bør være involveret i værktøjer til automatisering af softwaretest og planlægning

Udviklerens ansvarsområder

  • Sikring af, at deres kode fungerer uden stavefejl
  • Test af enheder
  • Røgprøvning
  • Integrationstest

Ansvarsområder for testere

  • Test af enheder
  • Røgtest (undertiden)
  • Sanity testing
  • Regressionstest
  • Integrationstest (undertiden)

Ansvar for kvalitetssikring

  • Kørsel af automatiserede test, der ikke kræver så meget teknisk viden eller viden om kodning
  • Test, der skubber grænserne for softwarens muligheder
  • Test af applikationer i hele spektret af problemer, som almindelige udviklere eller testere måske overser

Bedste værktøjer til funktionel testning

Der findes et bredt udvalg af værktøjer til automatisering af funktionelle test. Derfor er det vigtigt at finde de rigtige værktøjer til at afgøre, om din software fungerer, som den skal.

Zaptest, det bedste værktøj til automatisering af funktionel testning

Hvad gør et godt værktøj til automatisering af funktionel testning til et godt værktøj?

Gode automatiserede værktøjer til funktionel testning er nemme at bruge i forskellige miljøer, tilbyder en række forskellige testværktøjer og kan genbruges.

Let at bruge

Et godt værktøj til automatisering af funktionel testning er let at bruge for alle teammedlemmer, uanset færdighedsniveau.

Virker i forskellige miljøer

Værktøjet skal være i stand til at teste en række forskellige operativsystemer, browsere og enheder. 88 % af apps forlades, hvis brugerne oplever fejl, og derfor er både funktionel testning af mobile apps og funktionel testning af webapplikationer ekstremt vigtig på tværs af forskellige operativsystemer.

Tilbyder de nødvendige testværktøjer

Et godt værktøj til automatisering af funktionel testning har de nødvendige værktøjer til at teste funktionalitet. Den skal f.eks. understøtte dit scriptingsprog, så den er let at bruge, selv for folk, der ikke er fortrolige med scriptingsproget. Den skal også kunne understøtte dine produktfunktionsbehov, f.eks. specifikke rapporter, build-tests og logning.

Genanvendelighed

Testværktøjet skal også let kunne genbruges til flere tests og ændringer. Muligheden for at gemme data i skyen til senere brug sparer tid og omkostninger.

De bedste gratis værktøjer til automatiseret funktionel testning

Gratis automatiserede værktøjer til automatisering af funktionelle test har mange fordele, men de har også begrænsninger.

Fordele ved gratis værktøjer til automatisering af funktionelle test

  • sparer penge
  • Reducerer den tid, der bruges på vedligeholdelse af systemet
  • Eliminerer gentagende manuelt arbejde gennem automatisering af robotprocesser (RPA)
  • Giver hurtige resultater på tværs af platforme
  • Giver dig mulighed for at teste uden ekstra kodning
  • Tilbyder grundlæggende funktionalitetstest

Begrænsninger ved gratis automatiserede værktøjer til funktionstest

  • Afprøver måske ikke alle funktionalitetsscenarier
  • Kan kun afprøve på et begrænset antal platforme
  • Nogle testværktøjer kan være bag betalingsvægge
  • Giver dig muligvis ikke mulighed for at opbevare data i skyen for flere testere

De bedste gratis værktøjer til automatisering af funktionel testning er…

Der findes mange automatiserede værktøjer til funktionel testning, men disse er nogle af de bedste:

  • Zaptest
  • Katalon Studio
  • Selen
  • Appium
  • Robotium
  • Vindmølle
  • Apache JMeter
  • Capybara
  • Testlink
  • Marathon
  • Wiremock

Hvornår skal du vælge et værktøj til funktionel testning på virksomhedsniveau?

Hvis du bruger en version på virksomhedsniveau i stedet for et gratis værktøj til funktionel testning, får du flere funktioner og flere muligheder for deling på tværs af organisationen.

Når du har brug for at spare tid

Værktøjer til automatisering af funktionelle test på virksomhedsniveau kan spare tid ved at udføre flere automatiserede procestrin samtidigt pr. time.

Når du har brug for at tjekke flere brugergrænseflader

Funktionelle testværktøjer på virksomhedsniveau kontrollerer flere brugergrænseflader uden at ændre din kode for at sikre, at kunder, der bruger forskellige operativsystemer, enheder eller browsere, kan bruge din software eller app på samme måde.

Til dataforvaltning

Funktionel softwaretestning på virksomhedsniveau giver mulighed for bedre datahåndtering, så du lettere kan henvise til fremtidige test og gentage testning i forbindelse med fremtidige test.

Til cloud-hostede testløsninger

Når du vælger software til funktionel test på virksomhedsniveau, kan du se dine data på tværs af flere enheder og steder, så flere brugere kan arbejde på de samme projekter uden at gøre dobbeltarbejde.

For ubegrænset licensering

Hvis du vælger et værktøj til funktionstest på virksomhedsniveau, kan du give medlemmer af din organisation ubegrænset adgang, uanset hvor mange personer der har brug for at få adgang til dataene.

Til hyperautomatisering

Hvis du vælger et værktøj til funktionel testning på virksomhedsniveau, giver det hyperautomatisering, hvilket maksimerer de processer, du kan automatisere.

Funktionelle testværktøjer på virksomhedsniveau, der tilbyder automatisering af robotprocesser (RPA), reducerer menneskelige fejl ved at automatisere banale, rutineopgaver med stor volumen for at identificere svagheder og maksimere den operationelle effektivitet.

Når du har brug for flere tjenester og fordele ved funktionel testning

Hvis du vælger et værktøj til funktionel testning på virksomhedsniveau, får du adgang til flere funktionelle testtjenester. En god virksomhed, der udfører funktionel test, tilbyder tjenester og fordele som:

  • Øget ROI
  • Test på tværs af platforme uden at skulle ændre koden
  • Evnen til at køre flere scripts samtidig på flere platforme
  • Muligheden for at parre med flere apps
  • Konvertering af scripts til test med et enkelt klik
  • Tilgængelighed af automatiserede scripts
  • Tilgængelighed af testscenarier
  • Mere realistiske realtidssimuleringer
  • Optagelse af scenarier for at lave eksekverbare scripts
  • Kodefri testramme, der eliminerer behovet for en intern programmør
  • 24/7 ekspertstøtte
  • Parring med anden software, som du allerede bruger, f.eks. JIRA eller Rally Software

Afsluttende overvejelser om funktionel testning

Automatiseret funktionel test-software kan spare tid ved at sikre, at software eller apps fungerer korrekt på tværs af forskellige brugergrænseflader. Der findes gratis automatiserede versioner, men værktøjer til funktionel testning på virksomhedsniveau giver mere omfattende løsninger til funktionel softwaretestning, fordele og cloud-hostede data, der kan deles på tværs af organisationen.

Når du vælger et firma som ZAPTEST til funktionel testning, kan du få et bedre indblik i, hvad det enkelte værktøj tilbyder, og hvad det ikke tilbyder, ved at besøge firmaets hjemmeside for funktionel testning.

Ofte stillede spørgsmål om funktionel testning

Her er nogle andre spørgsmål, som du bør overveje i forbindelse med funktionel testning.

Ofte stillede spørgsmål om automatisering af funktionel testning

Hvilke typer af testning findes der?

De fleste måder at teste software eller apps på falder inden for kategorierne funktionel og ikke-funktionel testning. Funktionel testning sikrer, at softwaren fungerer som forventet, mens ikke-funktionel testning fastslår, hvor godt softwaren fungerer inden for forskellige parametre.

Hvad er testteknikker?

Testteknikker henviser til evalueringsmetoder for softwaresystemer eller -komponenter for at sikre, at de opfylder alle kravene. Ved at teste kan du finde ud af, om der er mangler eller fejl, som gør, at den ikke opfylder kravene. Testning kan enten være manuel eller automatiseret.

Hvad er funktionel testning med et eksempel?

Definitionen af funktionel testning vedrører funktion. Funktionel testning er en måde at teste software eller apps på for at sikre, at de fungerer, som de skal.

Du kan f.eks. teste for at sikre, at ny kodning giver brugerne adgang til den korrekte side efter login. Hvis det ikke er tilfældet, tyder det på, at der er en fejl i koden et sted, som skal repareres.

Download post as PDF

Alex Zap Chernyak

Alex Zap Chernyak

Founder and CEO of ZAPTEST, with 20 years of experience in Software Automation for Testing + RPA processes, and application development. Read Alex Zap Chernyak's full executive profile on Forbes.

Get PDF-file of this post

Virtual Expert

ZAPTEST

ZAPTEST Logo