Ingeniører bruker en rekke metoder for å teste en ny programvaredesign. Her er en oversikt over vanlige testteknikker og verktøy:
testnivåer:
* enhetstesting: Fokuserer på individuelle komponenter (funksjoner, klasser, moduler). Sikrer at hver komponent oppfører seg som forventet isolert.
* Integrasjonstesting: Tester hvordan flere komponenter samhandler med hverandre. Verifiserer dataflyt og kommunikasjon mellom forskjellige deler.
* Systemtesting: Tester hele systemet som en helhet, og sikrer at det oppfyller funksjonelle og ikke-funksjonelle krav.
* Aksepttesting: Utført av interessenter (brukere, klienter) for å bekrefte om programvaren oppfyller deres behov og forventninger.
Testtyper:
* Funksjonell testing: Verifiserer programvarens funksjonalitet mot de spesifiserte kravene.
* Ikke-funksjonell testing: Evaluerer aspekter som ytelse (hastighet, belastning), sikkerhet, brukervennlighet og pålitelighet.
* Regresjonstesting: Sikrer at endringer eller feilrettinger ikke har påvirket eksisterende funksjonalitet negativt.
* Røykestesting: Raske innledende tester for å verifisere grunnleggende funksjonalitet og stabilitet.
* Stressprøving: Skyver systemet utover dets normale grenser for å se hvordan det oppfører seg under ekstreme forhold.
* Performance Testing: Måler responstid, gjennomstrømning og ressursbruk for å vurdere systemytelsen.
* Sikkerhetstesting: Identifiserer sårbarheter og svakheter i programvarens sikkerhetstiltak.
* Brukbarhetstesting: Evaluerer programvarens brukervennlighet og generell brukeropplevelse.
Verktøy og teknikker:
* Testautomatiseringsrammer: Verktøy som Selenium, Cypress og Junit automatiserer utførelse og rapportering av test.
* Test Case Management Tools: Verktøy som Testrail og Zephyr er med på å organisere, prioritere og håndtere testtilfeller.
* statiske analyseverktøy: (f.eks. Sonarqube, Fortify) Analyser kode for potensielle mangler og sårbarheter uten å kjøre koden.
* kodedekningsverktøy: (f.eks. Jacoco, Sonarqube) måler prosentandelen av koden som dekkes av tester.
* Feilsøkingsverktøy: (f.eks. Debuggere innebygd i IDE) hjelper ingeniører til å gå gjennom kode, inspisere variabler og identifisere feil.
* Profileringsverktøy: (f.eks. JProfiler, Yourkit) Identifiser flaskehalser for ytelse og optimaliser kode.
* Overvåkingsverktøy: (f.eks. Prometheus, Grafana) gir sanntidsinnsikt i systemets ytelse og helse.
Andre hensyn:
* Testdata: Å generere realistiske testdata er avgjørende for nøyaktig testing.
* testmiljøer: Skape miljøer (utvikling, testing, produksjon) som etterligner forhold i den virkelige verden.
* samarbeid: Ingeniører samarbeider tett med utviklere og interessenter for å sikre at testmål stemmer overens med forretningsbehov.
De spesifikke metodene som brukes vil avhenge av:
* kompleksiteten i programvaren.
* prosjektets tidslinje og budsjett.
* Kritikken til programvarens funksjoner.
* ønsket nivå av kvalitetssikring.
Ved å bruke en kombinasjon av disse testteknikkene og verktøyene, kan ingeniører sikre kvaliteten og påliteligheten til programvaredesignene sine.