Osiguranje kvalitete softvera uključuje testiranje dizajna i implementacije računalnog softvera te osiguravanje da zadovoljava minimalni standard kvalitete. U srži procesa osiguranja kvalitete je testiranje, što je metoda kojom se analizira svaki korak razvojnog ciklusa kako bi se pronašli nedostaci, kao što su kvarovi ili sigurnosni problemi. Najpoznatiji dio procesa osiguranja kvalitete softvera je testiranje softvera i koda; međutim, pokriva i druge aspekte inženjerskog ciklusa. Ostali aspekti softverskog inženjeringa koji su predmet analize kvalitete uključuju faze dizajna i implementacije.
Cjelokupni koncept osiguranja kvalitete softvera zahtijeva da počne u fazi planiranja softvera. Loše planiran softver može biti teško ili nemoguće napisati na način koji ispunjava očekivanja organizacije koja ga je zamislila. Upravljanje kvalitetom u fazi projektiranja uključuje proučavanje grananja projektnih specifikacija, odnosno ciljeva, kao i planova organizacije za postizanje njihovih ciljeva. Prednost analize kvalitete u fazi projektiranja je u tome što pronalazi i eliminira pogreške rano, a ne kasnije u razvojnom ciklusu kada je problem dizajna puno skuplje popraviti.
Inženjer za testiranje softvera, također poznat kao analitičar kvalitete softvera, primarna je osoba odgovorna za provođenje procesa testiranja. Ova osoba osmišljava i provodi planove testiranja koji će pomoći organizaciji u poboljšanju kvalitete softvera. U idealnom slučaju, programer nikada ne bi trebao testirati vlastiti proizvod, što znači da su unutar projekta programer i testni inženjer dvije različite osobe.
Planovi testiranja kritični su dio sustava osiguranja kvalitete, posebno faze testiranja softvera. Svrha planova testiranja je odrediti uvjete koji obilježavaju uspjeh ili neuspjeh softvera. Tipični plan testiranja uključivat će opsežan popis programa i potprograma, odnosno postupaka koji se moraju testirati, kao i tehnike uključene u testiranje. Još jedna kritična funkcija plana testiranja je određivanje koji su nedostaci neprihvatljivi. Planovi testiranja se obično osmišljavaju prije nego što se razvije stvarni softverski kod projekta.
Kada testni inženjeri pišu programe za provedbu testnih planova, to se naziva testnim skriptama. Testne skripte bitan su dio procesa osiguranja kvalitete softvera. Njihova je svrha automatizirati testiranje postojećeg koda programa kako bi se pronašli nedostaci. Osim toga, testni inženjeri obično koriste komercijalno dizajnirane alate za testiranje kako bi potražili potencijalne probleme. Testni planovi se provode tijekom faze kodiranja razvoja softvera.
Postoji niz važnih koraka koji su uključeni u stvarnu fazu testiranja procesa osiguranja kvalitete softvera. To uključuje testiranje jedinica, koje procjenjuje integritet različitih dijelova softverskog koda, kao i ubacivanje grešaka, koje su dizajnirane da istraže kako programi reagiraju na pogrešne podatke. Dodatni koraci uključuju testiranje opterećenja, ili testiranje otpornosti na stres, koje vidi kako program funkcionira pod intenzivnom upotrebom, i testiranje na upad ili sigurnost kako bi se testirala otpornost programa na neovlašteni pristup. Softverski projekt također se obično podvrgava testiranju upotrebljivosti kako bi se provjerilo je li rezultirajući program jednostavan za korištenje.
Stručnjaci koji se bave testiranjem softverskog koda općenito se dijele u dvije grupe, jedna se zove testeri crne kutije, a druga poznata kao testeri bijele kutije ili staklene kutije. Testiranje crne kutije je površniji proces koji počinje u fazi softverskog kodiranja i ne ispituje nikakav temeljni računalni kod. Istražuje upotrebljivost softvera, kozmetičku dosljednost i pojavu pogrešaka i kvarova.
Testiranje bijele kutije je proces koji počinje na samom početku procesa osiguranja kvalitete softvera, u fazi dizajna. Uključuje predviđanje potencijalnih problema prije nego što je kod zapravo napisan, kao i pisanje planova testiranja i naprednih testnih skripti. Za razliku od testiranja crne kutije, testiranje bijele kutije također uključuje proučavanje temeljnog računalnog koda.
Osiguranje kvalitete također se odnosi na fazu implementacije softvera, kada je softver blizu završetka i instalira se na računalne sustave radi evaluacije. Ova faza se često naziva alfa testiranjem i događa se kada razvojno osoblje instalira i testira gotovo gotov proizvod. Kada se softver prezentira potencijalnim kupcima izvan tvrtke, to se naziva beta testiranjem. Ako se kvarovi pojave nakon što je softver objavljen i potrebno je razviti zakrpu, koristi se regresijsko testiranje kako bi se osiguralo da ažuriranja ne stvaraju nove pogreške.