De flesta metoder och tillvägagångssätt som används vid mjukvarutestning idag har inte utvecklats nämnvärt de senaste 20 åren. Mognadsgraden är låg jämfört med tillverkningsindustrin, även om det finns många tillgängliga verktyg, tekniker och automatiserad testning. För att utföra bra testning krävs tillsammans med anpassade tekniker även god kreativitet, erfarenhet och intuition.
Utmaningen
I takt med att systemen som utvecklas blir mer och mer komplexa, ofta med flera olika gränssnitt och kommunikationsvägar, ökar även utmaningen i att testa dem. Även interaktionen mellan olika system blir fler och mer komplexa. Eftersom det även i ett måttligt stort system finns oändligt många testfall blir testning en balans mellan tillgänglig tid, budget och kvalitet.
Testning utförs för att hitta fel och säkerställa att ställda krav på systemet uppnås. Noteras bör att inte alla fel uppkommer som fel vid kodning. En vanlig källa till fel är brister i kraven, till exempel dåligt specificerade krav eller helt missade krav, vars frånvaro ger upphov till fel av systemdesignen.
Ett vanligt sätt att genomföra test på är att en grupp testare utför tester på systemet efter det att funktionaliteten implementerats samt innan den levereras till kund. Nackdelen med det här angreppssättet är att testfasens utförande blir beroende av de tidigare faserna som kan tendera att bli längre än vad som planerats. Testfasen riskerar att bli kortare än planerat då den får kompensera för övriga faser. Ett bättre tillvägagångssätt är att börja med testplanering direkt vid projektstart och genomföra tester parallellt under projektets hela livslängd.
Testning kan ske på flera nivåer - Enhetstestning - test av minsta kod-block/modul. Varje modul testas för att verifiera att den i detalj är korrekt implementerad. Dessa tester automatiseras i vissa fall genom att utvecklarna skriver program som utför testerna.
- Integrationstest - avsedd att testa hur väl olika moduler kommunicerar med varandra.
- Systemtest - verifiera att kraven uppfylls för ett komplett system av moduler.
- Acceptanstest - bör utföras av kunden/slutanvändaren för att validera att systemet gör det som det ska.
När har man testat klart?
Uttömmande testning är inte möjlig, det går alltid att testa lite till. Men utvecklingsprojekt drivs till stor del av vinstintresse. Testning blir därför en balans mellan tillgänglig tid, budget och kvalitet. Med en pessimistisk stoppregel, vilket är det vanligaste, slutar testandet när någon/några av de tilldelade resursernas tid, budget eller testfall tagit slut. En optimistisk regel däremot är att testerna avslutas då kraven uppfylls på ett tillförlitligt sätt eller då man inte kan försvara fördelen av ytterligare tester. Detta kräver tillförlitliga modeller för utvärdering av mjukvara under test. Tydliga målkriterier och prioriterade testfall är förutsättningar för att testerna ska ge bästa möjliga resultat.