Världen är full av programvara som perfekt uppfyller alla sina dokumenterade krav men ändå inte skapar något värde för användarna.
När jag studerade programvaruteknik – för länge sedan – betydde kvalitet att kraven uppfylldes, det vill säga överensstämmelse med kraven. Jag lärde mig också att kvalitetssäkring innebär alla åtgärder som vidtas för att möjliggöra, skapa och verifiera kvalitet, och att testning är en viktig metod för kvalitetssäkring.
I dag definierar Wikipedia testning som handlingen att undersöka artefakterna och beteendet hos den programvara som testas genom validering och verifiering. Testning definieras som en aktivitet, vilket lämnar dess syfte öppet. Definitionerna jag lärde mig på ingenjörsutbildningen är mycket förenliga med Wikipedias definition av efterlevnadstestning: testning som avgör om en process, produkt eller tjänst överensstämmer med kraven i en specifikation, teknisk standard, ett avtal eller en förordning. Märkligt nog använder ingen av dessa definitioner ordet kvalitet alls.
Vad är kvalitet?
I dag undviker jag frestelsen att definiera kvalitet, förutom indirekt genom fyra dimensioner: fördelar, funktioner, process och upplevelse. Låt oss tänka på något som alla känner till, säg Paypal. Människor använder det för att överföra pengar online; detta är dess funktion. De fördelar de söker är enkelhet, säkerhet och låg kostnad. Att använda Paypal innebär olika användarprocesser, och programvaran vägleder användaren genom dem. De känslor, såsom lycka, frustration eller känslan av att ha lyckats, som användaren upplever när hon använder Paypal utgör upplevelsen. Oavsett vad kvalitet är kan den knappast finnas där utan alla dessa fyra dimensioner.
Testning fokuserar vanligtvis på funktionell efterlevnad, det vill säga att kontrollera att programvaran gör det som kraven anger och inte gör något annat. Det kan också finnas icke-funktionella krav, såsom svarstider, antalet parallella transaktioner som hanteras och säkerheten för användarens data. Standarder och förordningar, såsom SOC2 eller GDPR, medför ytterligare krav, liksom Paypals avtal med kreditkortsföretag. Dessa kan ha lite att göra med programvarans faktiska funktioner och värde, men att uppfylla dem är en förutsättning för att få delta i verksamheten.
Kvalitet går längre än enbart efterlevnad. För att uppnå båda, ta del av vår kuraterade lista över de bästa plattformarna för programvarutestning
Den ideala världen
Duktiga testare tillämpar både ett efterlevnadsbaserat perspektiv som fokuserar på att uppfylla kraven och ett resultatbaserat perspektiv som fokuserar på att förverkliga fördelarna. I en idealisk värld skulle uppfyllandet av de dokumenterade kraven innebära att användarens fördelar förverkligas, men världen är sällan idealisk. Även om programvaran vore perfekt är användarna det inte. Förverkligandet av fördelarna beror i hög grad på användarens handlingar, och användarens handlingar beror på hur programvaran samspelar med användaren och vägleder henne. Dessa faktorer påverkar i sin tur kvaliteten på hela upplevelsen. Dessa egenskaper hos programvaran kan knappast fångas i krav på efterlevnad eller formella testfall. Återigen skulle alla dessa utmaningar i en idealisk värld lösas tillräckligt tidigt genom användarcentrerad design – men världen är långt ifrån idealisk, och en testare behöver fungera som den verkliga användarens ställföreträdare.
Efterlevnadstestning kontra resultatbaserad testning
Efterlevnadstestning och resultatbaserad testning kräver olika tankesätt. Efterlevnadstestning liknar att rigga fällor: att läsa kraven, föreställa sig vad som kan gå fel och utforma testförhållanden där programvaran sannolikt kommer att misslyckas. Resultatbaserad testning liknar mer en nyfiken handling: att förstå vad användaren behöver åstadkomma, föreställa sig allt hon kan tänkas göra, komma fram till hur programvaran bör reagera och sedan prova den.
Efterlevnad är en förutsättning för kvalitet. Inom många branscher är det till och med en förutsättning för att få delta i verksamheten att uppfylla formella efterlevnadskrav. Man kan också minska risken för skadeståndsansvar genom att ta fram dokumenterade bevis på att efterlevnaden har testats på rätt sätt. Jag brukar tänka att efterlevnadstestning hjälper dig att minska risken för misslyckande, medan resultatbaserad testning hjälper dig att öka sannolikheten för framgång.
