Testförfarandena som används i programmeringsverktyg beror starkt på typen av verktyg och dess syfte. Det finns inget enda svar, men här är några vanliga tillvägagångssätt kategoriserade efter testtyp:
1. Enhetstest:
* Förfarande: Testa enskilda komponenter (funktioner, metoder, moduler) isolerat. Detta innebär att skapa testfall som utövar olika ingångar och kantfall för att verifiera att varje komponent uppför sig som förväntat.
* Verktyg: Junit (Java), Pytest (Python), Untestest (Python), Mocha (JavaScript), Jest (JavaScript).
* Tekniker: Testdriven utveckling (TDD), där tester skrivs * före * koden, hålande beroenden för att isolera enheten som testas.
2. Integrationstest:
* Förfarande: Testa interaktionen mellan olika komponenter eller moduler för att säkerställa att de fungerar korrekt.
* Verktyg: Ofta samma verktyg som används för enhetstestning, men med fokus på att testa gränssnitten och interaktioner mellan enheter.
* Tekniker: Använda hån för att simulera externa beroenden endast vid behov, med fokus på att verifiera flödet av data och funktionalitet mellan flera enheter.
3. Systemtestning:
* Förfarande: Testa hela systemet som helhet för att säkerställa att det uppfyller de angivna kraven. Detta innebär att testa systemets funktionalitet, prestanda och säkerhet.
* Verktyg: Selen (webbapplikationer), Appium (mobilapplikationer), lasttestverktyg som JMeter eller K6.
* Tekniker: Black-box-testning (testning utan kunskap om de interna arbetena), vitlådestest (testning med kunskap om de interna arbetena) och olika testdesigntekniker som ekvivalenspartitionering och gränsvärdeanalys.
4. Regressionstest:
* Förfarande: Återprovning av programvaran efter ändringar (t.ex. bugfixar, nya funktioner) för att säkerställa att befintlig funktionalitet inte har brutits. Detta är avgörande för att upprätthålla mjukvarukvaliteten över tid.
* Verktyg: Test Automation Frameworks (som Selenium, Pytest, Junit) är viktiga för effektiv regressionstest. Testhanteringsverktyg hjälper till att spåra testutförande och resultat.
* Tekniker: Kör befintliga testsviter, prioritera tester baserade på risk och påverkan.
5. Prestationstest:
* Förfarande: Utvärdera systemets lyhördhet, stabilitet, skalbarhet och resursanvändning under olika belastningsförhållanden.
* Verktyg: JMeter, K6, Gatling, LoadRunner.
* Tekniker: Lasttestning (simulering av ett stort antal användare), stresstestning (driver systemet utöver dess gränser), uthållighetstestning (testning av systemets förmåga att hantera långvarig belastning).
6. Säkerhetstest:
* Förfarande: Identifiera sårbarheter och svagheter i systemet som kan utnyttjas av angripare.
* Verktyg: Static and Dynamic Application Security Testing (SAST/DAST) Tools, Penetration Testing Tools.
* Tekniker: Sårbarhetsskanning, penetrationstest, kodöversikt för säkerhetsbrister.
7. Användbarhetstest:
* Förfarande: Utvärdering av användarvänligheten och effektiviteten för verktyget ur användarens perspektiv.
* Verktyg: Observation, användarintervjuer, undersökningar, programvara för användbarhetstest.
* Tekniker: Heuristisk utvärdering, kognitiva genomgångar, användarprovningssessioner.
De specifika testförfarandena som används kommer också att variera beroende på utvecklingsmetodiken (t.ex. Agile, Waterfall). Agile -metoder betonar vanligtvis kontinuerlig testning och integration, medan vattenfall kan innebära mer omfattande testfaser i slutet av utvecklingscykeln. Utöver ovanstående innehåller många team kodgranskning och statisk analys som en del av deras teststrategi.