Mange virksomheder er bevidste om behovet for applikationstests før go-live. Sideløbende med funktionsstests kan der udføres en del andre tests, men de bliver ofte blandet sammen fordi de overlapper. Hvilke typer tests findes der, og hvilke skal du vælge for at dit software kommer sikkert i produktion?
Hvorfor performanceteste dine applikationer?
Mange virksomheder anerkender vigtigheden af at forsikre at den tekniske og funktionelle kvalitet af en applikation eller system lever op til kravene. Load- og performancetests bliver oftest ikke udført. Bekræftelse af ikke-funktionelle krav, f.eks. den maksimale gennemførsels- og responstid, er mindst lige så vigtig som funktionel kvalitet. At arbejde med 'standardiserede' miljøer, standardindstillinger eller lave forkerte antagelser i implementeringsfasen kan indføre problemer og begrænsninger, der kun vises i performancetesten. Tænk derfor på:
- Konfigurationen af forbindelse og applikationspuljer samt køer
- Tildeling af kapacitet for hukommelse og strategier for dets håndtering
- Afvikling inden for Citrix, virtualisering eller Docker
Det er derfor nødvendigt at ikke kun at teste de funktionelle krav, men også teste de ikke-funktionelle krav.
Etabler det rette miljø
Når du tester applikationer, er det naturligvis vigtigt at udføre den korrekte test på den korrekte måde for at resultaterne afspejler virksomhedens fremtidsstadie. For det meste er applikationer oprettet og testet i et miljø, hvor infrastrukturen ikke er dimensioneret som den er i produktionen og applikationsgrænseflader er afskårede. Der skabes trods alt et udviklingsmiljø baseret på formelle specifikationer, som er en ideel verden for applikationen at leve i. I et produktionsmiljø kan konventioner vise sig at blive fortolket anderledes, eller miljøet kan baseres på andre standarder end applikationen var designet til. Disse forskelle introducerer ofte funktionel eller ikke-funktionel uventet adfærd. Så før du vælger en performancetest, skal du sørge for, at dit miljø afspejler det faktiske produktionsmiljø.
End-to-end tests, integrationstests og/eller systemtests
Efter udviklingsfasen vil alle softwarekomponenter blive forbundet og testet som en helhed i en 'integrationstest'. Gennem den efterfølgende 'systemtest' bliver yderligere infrastrukturselementer tilføjet: hardware, clustering osv. I nogle virksomheder er det nyttigt at udføre en "end-to-end test" for at sikre, at det informationsflow, der spredes gennem alle involverede applikationer, stadig er gyldig i slutfasen.
Afhængigt af kompleksiteten og de involverede risici bør et udvalg af disse test typer udføres. Hvis der kun udføres en end-to-end funktionel test, vil alle former for funktionelle og tekniske fejl komme frem og vil frustrere testprocessen på mange punkter. Jo mere komplekst systemet er, jo flere test typer er der brug for at kunne styre kompleksiteten af kvalitetsstakken.
Loadtests, stresstests og performancetests
Disse tests blandes ofte sammen selvom de repræsenterer forskellige områder. I en performancetest måles softwarens hastighed: svartiderne, som de opleves af brugere eller andre systemer såsom indlæsningstider for (web) sider, brugerhandlinger eller batchprocesser. En performancetest vil for det meste levere et sæt responstider målt ved et udvalg af mest anvendte eller mest kritiske handlinger.
En test kaldes en 'load test' når svar tiderne er målt mens en bestemt belastning påføres. Denne belastning kan bestå af kunstigt genererede (web) forespørgsler eller batches af data, der føres til systemet. Når der generes trafik, er det vigtigt, at den rigtige produktionsbelastning matcher og er mulig.
Orkestrering af testcases eller forespørgsler, der anvendes under en belastningstest, bør baseres på målinger og estimater af den aktuelle eller forventede produktionssituation. Denne forberedelse vil resultere i tekniske parametre, hvormed belastningsgeneratorer konfigureres, og testdata sammensættes.
En 'stresstest' er en normal belastningstest som er forstærket efter en bestemt faktor. Den belastning, der genereres i belastningstesten øges gradvist, indtil det testede system mættes, og gennemstrømningen når til en grænse. Denne test viser hvad der er systemets maksimale kapacitet, og hvis enten kapacitet eller konfiguration vil forårsage en begrænsning af det belastningsniveau systemet kan behandle.
Hvad skal du vælge?
Der er mange typer tests at vælge imellem, og de overlapper til dels. Hvilke tests du skal vælge, bør afhænge af de risici, der gælder for specifikke applikationer og situationer. Jo mere kompleks situationen er, jo flere risici akkumuleres og bør testes, før en applikation udrulles i et produktionsmiljø. En lille konfigurationsfejl kan forårsage alvorlige begrænsninger og nedetid fra dag ét.