Kvalitetssäkring av programvara innebär att testa design och implementering av datorprogramvara och säkerställa att den uppfyller en lägsta kvalitetsstandard. Kärnan i kvalitetssäkringsprocessen är testning, vilket är den metod med vilken varje steg i utvecklingscykeln analyseras för att hitta defekter, såsom funktionsfel eller säkerhetsproblem. Den mest kända delen av kvalitetssäkringsprocessen för programvaran är testning av mjukvara och kod; den täcker dock även andra aspekter av ingenjörscykeln. Andra aspekter av mjukvaruteknik som är föremål för kvalitetsanalys inkluderar design- och implementeringsstadierna.
Det övergripande konceptet för kvalitetssäkring av programvara kräver att det börjar i programvaruplaneringsfasen. Dåligt planerad programvara kan vara svår eller omöjlig att skriva på ett sätt som motsvarar förväntningarna hos den organisation som föreställt sig det. Kvalitetsledning på designstadiet innebär att studera konsekvenserna av projektets specifikationer, eller mål, såväl som organisationens planer för att uppnå sina mål. Fördelen med kvalitetsanalys i designfasen är att den hittar och eliminerar misstag tidigt, snarare än senare i utvecklingscykeln när designproblem är mycket dyrare att åtgärda.
En mjukvarutestingenjör, även känd som en mjukvarukvalitetsanalytiker, är den primära personen som ansvarar för att utföra testprocessen. Denna person designar och utför testplanerna som kommer att hjälpa en organisation att förbättra kvaliteten på deras mjukvara. Helst ska en programmerare aldrig testa sin egen produkt, vilket innebär att inom ett projekt är en programmerare och testingenjör två olika personer.
Testplaner är en kritisk del av kvalitetssäkringssystemet, särskilt programvarutestfasen. Syftet med testplaner är att fastställa förhållanden som markerar framgång eller misslyckande för programvara. En typisk testplan kommer att innehålla en omfattande lista över program och underprogram, eller procedurer som måste testas, såväl som de tekniker som är involverade i testning. En annan kritisk funktion hos en testplan är att avgöra vilka defekter som är oacceptabla. Testplaner utformas vanligtvis innan projektets faktiska programvarukod utvecklas.
När testingenjörer skriver program för att implementera testplaner kallas dessa testskript. Testskript är en viktig del av kvalitetssäkringsprocessen för programvara. Deras syfte är att automatisera testningen av ett programs befintliga kod för att hitta defekter. Dessutom använder testingenjörer vanligtvis kommersiellt utformade testverktyg för att leta efter potentiella problem. Testplaner implementeras under kodningsstadiet av mjukvaruutveckling.
Det finns ett antal viktiga steg involverade i själva teststadiet av kvalitetssäkringsprocessen för programvara. Dessa inkluderar enhetstester, som bedömer integriteten hos olika sektioner av programvarukod, samt felinjektioner, som är utformade för att undersöka hur programmen reagerar på felaktiga data. Ytterligare steg inkluderar belastningstestning, eller stresstester, som ser hur ett program fungerar under hård användning, och intrångs- eller säkerhetstester för att testa ett programs motstånd mot obehörig åtkomst. Ett programvaruprojekt utsätts också vanligtvis för användbarhetstester för att verifiera att det resulterande programmet är lätt för andra att använda.
Specialister som ägnar sig åt testning av mjukvarukod är i allmänhet uppdelade i två grupper, en som kallas black box testare och den andra kallas white box, eller glass box, testare. Black box-testning är en mer ytlig process som börjar i programvarukodningsstadiet och inte undersöker någon underliggande datorkod. Den undersöker programvarans användbarhet, kosmetiska konsistens och förekomsten av fel och funktionsfel.
White box-testning är en process som börjar i början av kvalitetssäkringsprocessen för programvaran, vid designstadiet. Det inkluderar förutsägelse av potentiella problem innan koden faktiskt skrivs, såväl som att skriva testplaner och avancerade testskript. Till skillnad från black box-testning involverar white box-testning också studier av den underliggande datorkoden.
Kvalitetssäkring gäller även för programimplementeringsfasen, det vill säga när programvaran är nära färdigställd och installeras på datorsystem för utvärdering. Denna fas kallas ofta för alfatestning och den inträffar när den nästan färdiga produkten installeras och testas av utvecklarpersonalen. När programvaran presenteras för potentiella kunder utanför företaget kallas det betatestning. Om defekter uppstår efter att programvaran har släppts och en patch behöver utvecklas, används regressionstestning för att säkerställa att nya fel inte skapas av uppdateringarna.