Har du någonsin undrat vad som händer bakom kulisserna innan mjukvaran går offentligt? Programmerare är väl medvetna om hur mycket arbete som går in i programskapande. Hours spent försöker stryka ut varje lilla bugga lämnar många dra sitt hår ut. Och tills produkten uppfyller alla intressenter kommer den inte vara tillgänglig för kommersiell användning.
Stort mjukvaruföretag, som Google, lyckas trots lågprioriterande fel i deras programvara, men mindre företag och startups har inte den lyxen. Kunderna förväntar sig att produkter ska göra vad de hävdar på försäljningssidan eller i dokumentationen. Med så många alternativ där ute, tänker de inte två gånger om hoppa skeppet om produkten slösar bort tid och pengar. Därför genomgår programvaran noggranna tester före släpp för att:
- markera skillnader mellan originalkonceptet och slutprodukten
- verifiera programvaran fungerar som designers planerade
- validera slutprodukten - produkten måste uppfylla kundens krav
- bedöma egenskaper och kvalitet
Testning följer en strikt ritning. Detta optimerar användningen av värdefulla resurser - färdigheter, tid och pengar, samtidigt som intressenterna får viktig information för att ta fram produkten. Målet är att underlätta en bra slutanvändarupplevelse genom ett starkt kvalitetssäkringsprogram. Med insatserna så höga är QA-chefer några av de främsta tjänstemännen i tech.Testing följer vanligtvis följande steg:
- Kravanalys där cheferna skisserar en plan för att sätta en lämplig teststrategi på plats.
- Testerna börjar och resultaten genomgår analyser.
- Eventuella fel korrigeras, och mjukvaran går igenom regressionstestning - ett system för att kontrollera att programmet fortfarande fungerar efter ändringar.
- En teststängningsrapport beskriver sedan hela processen och resultaten.
Software Testing Methods
Här är de olika metoderna som används för att bedöma produktbeteende och prestanda. Black box och white box test är de två grundläggande metoderna.
- Black box testing - Även kallad funktionell eller specifikationsbaserad testning, fokuserar den här metoden på produktionen. Testare är inte oroade över de interna mekanismerna. De kontrollerar bara att programvaran gör vad den ska. Kunskaper om kodning är inte nödvändiga, och testare arbetar på användargränssnitt.
- White box testning - Denna metod använder kodningsteknik som en del av testproceduren. När en produkt misslyckas går testarna så djupt in i koden som behövs för att hitta orsaken. Programutvecklarna gör det själv eftersom de bestämmer hur produkten ska fungera. Strukturbaserad och glasboxprovning är andra namn för denna metod.
- Statisk testning - Testare undersöker programvarans kod och dokumentation, men kör inte programmet. Statiska tester börjar tidigt i produktens utveckling under verifieringsprocessen.
- Dynamisk testning - Programvaran exekveras med olika ingångar, och testare jämför jämförelser med förväntat beteende med denna metod.
- GUI-testning - Detta tester GUI-egenskaper - textformatering, textrutor, knappar, listor, layout, färger, typsnitt, teckensnittstorlekar och så vidare. GUI-testning är tidskrävande och tredjepartsföretag tar ofta uppgiften istället för utvecklare.
Testnivåer
Dessa är nödvändiga för att identifiera områden av svaghet och överlappning i varje fas av mjukvaruutvecklingens livscykel.
- Enhetstestning - Utvecklare testar de mest grundläggande delarna av kod som klasser, gränssnitt och funktioner / procedurer. De vet hur deras kod ska svara och kan göra justeringar beroende på produktionen.
- Komponenttestning - Andra namn är modul eller programtestning. Det liknar enhetstestning men innehåller en högre grad av integration. Modulerna i programvaran testas för fel för att verifiera deras individuella funktion.
- Integrationstestning - Detta identifierar fel när moduler integreras. Olika integrationsprov är uppifrån, upp och ned och funktionell inkrementell.
- Systemtest - Komponenter av ett projekt testas som helhet i olika miljöer med denna metod. Den faller under den svarta lådmetoden och är en av de slutliga testerna i processen. Det avgör om systemet fungerar som det ska för att möta affärs- och användarbehov.
- Alfa-testning - Intern personal testar programvaran på utvecklarens webbplats i en simulerad eller faktisk miljö. Därefter rätta utvecklarna fel och andra problem.
- Betatestning - Känd som fälttestning, klienten tester produkten på sin egen webbplats under reella förhållanden. Klienten kan erbjuda en grupp slutanvändare möjlighet att testa programvaran via prerelease eller beta-versioner. Feedback om eventuella förbättringar skickas sedan till utvecklaren.
- Acceptanstestning - Även inom ramen för svart boxningstest, testar klienten programvaran för att ta reda på om utvecklaren har skapat programmet till önskade specifikationer.
Testtyper
Dessa mjukvarutester fokuserar på specifika mål.
- Installationstestning - Programvarutestingenjören och konfigurationshanteraren utför detta test för att säkerställa att slutanvändaren kan installera och köra programmet. Den täcker områden som installationsfiler, installationsplatser och administrativa behörigheter.
- Utvecklingstestning - Detta implementerar en rad synkroniserade strategier för att upptäcka och förebygga fel. Den innehåller statisk kodanalys, peer code reviews, spårbarhet och mätanalys. Syftet är att minska risker och spara kostnader.
- Användbarhetstest - Användarupplevelse kommer under rampljuset med detta test. Det mäter hur bra GUI är utformad och användarvänlighet. Testet kontrollerar noggrannhet och effektivitet i funktionerna och de emotionella responserna hos testpersonerna.
- Sanity testing - Detta indikerar om programvaran är värda tiden och kostnaden för att fortsätta ytterligare tester. För många brister och mer aggressiva tester följer inte.
- Röktestning - Röktest avslöjar grundläggande fel som är allvarliga för att förhindra utsläpp. När detta utförs på en ny byggnad kallas det ett byggverifieringsprov.
- Regressionstestning - När systemet genomgår modifiering övervakar regressionstestet oväntat beteende. Det påpekar negativa effekter på moduler eller komponenter.
- Destruktiv testning - Testare anger onormala poster och identifierar programvarans förmåga att hantera oväntad inmatning. Detta visar utvecklare hur robust programmet är vid felhantering.
- Återställningstestning - När maskinvaran eller andra funktioner misslyckas visar det här testet hur bra programvaran kan återställa och fortsätta att fungera.
- Automatiserad testning - Det här utför funktioner som är svåra att implementera manuellt. Den använder specifika program för att köra testen och för att ge data om faktiska kontra förväntade resultat.
- Kompatibilitetstestning - Programvaran måste köras i olika datormiljöer, så det här kontrollerar kompatibiliteten med olika system. Till exempel arbetar mjukvaran med olika operativsystem och webbläsare?
- Prestandatestning - Detta är ett djupt test som granskar programvaruprestanda i olika scenarier. Information om respons, stabilitet, resursallokering och hastighet samlas in. Dessutom delprov som volym-, kapacitets- och spikprovning spelar en roll i denna process.
- Säkerhetsprovning - Detta mäter programvarans förmåga att skydda användarnas säkerhet. Det betyder auktoriseringsfunktioner, autentisering, sekretess, integritet, tillgänglighet och icke-repudiation.
- Tillgänglighetstestning - Detta är inte detsamma som användbarhetstestning. Detta bestämmer i vilken utsträckning användare med olika förmågor - inlärning och fysiska funktionshinder, kan använda programvaran.
- Internationalisering och lokaliseringstestning - Resultat visar hur mjukvaran kan anpassa sig till olika språk och regionala krav. Detta inkluderar att lägga till komponenter för specifika platser och översätta text.
Programvarutestning är en viktig del för att få en produkt till marknaden. Och utan testare skulle det stora utbudet av tillgänglig programvara inte existera. Bli en certifierad programvarutestare genom organisationer som BCS, The Chartered Institute for IT, ISTQB® (International Software Testing Qualifications Board) och ASQ (tidigare American Society for Quality).