Zapewnienie jakości oprogramowania obejmuje testowanie projektu i wdrażania oprogramowania komputerowego oraz zapewnienie, że spełnia ono minimalne standardy jakości. Podstawą procesu zapewniania jakości jest testowanie, czyli metoda, za pomocą której analizowany jest każdy etap cyklu rozwoju w celu znalezienia defektów, takich jak awarie czy problemy z bezpieczeństwem. Najbardziej znaną częścią procesu zapewniania jakości oprogramowania jest testowanie oprogramowania i kodu; obejmuje jednak również inne aspekty cyklu inżynierskiego. Inne aspekty inżynierii oprogramowania, które podlegają analizie jakości, obejmują etapy projektowania i wdrażania.
Ogólna koncepcja zapewniania jakości oprogramowania wymaga, aby rozpoczynała się ona na etapie planowania oprogramowania. Źle zaplanowane oprogramowanie może być trudne lub niemożliwe do napisania w sposób, który spełni oczekiwania organizacji, która to przewidziała. Zarządzanie jakością na etapie projektowania polega na badaniu konsekwencji specyfikacji lub celów projektu, a także planów organizacji dotyczących osiągnięcia ich celów. Zaletą analizy jakości na etapie projektowania jest to, że znajduje i eliminuje błędy na wczesnym etapie, a nie później w cyklu rozwojowym, gdy naprawienie problemów projektowych jest znacznie droższe.
Inżynier testów oprogramowania, znany również jako analityk jakości oprogramowania, jest główną osobą odpowiedzialną za przeprowadzenie procesu testowania. Osoba ta projektuje i wykonuje plany testów, które pomogą organizacji w poprawie jakości oprogramowania. W idealnym przypadku programista nigdy nie powinien testować własnego produktu, co oznacza, że w ramach projektu programista i inżynier testów to dwie różne osoby.
Plany testów są krytyczną częścią systemu zapewniania jakości, szczególnie w fazie testowania oprogramowania. Celem planów testów jest określenie warunków, które oznaczają sukces lub porażkę oprogramowania. Typowy plan testów będzie zawierał wyczerpującą listę programów i podprogramów lub procedur, które muszą być testowane, jak również techniki związane z testowaniem. Inną krytyczną funkcją planu testów jest określenie, które defekty są niedopuszczalne. Plany testów są zazwyczaj projektowane przed opracowaniem rzeczywistego kodu oprogramowania projektu.
Kiedy inżynierowie testowi piszą programy wdrażające plany testów, nazywane są one skryptami testowymi. Skrypty testowe są istotną częścią procesu zapewniania jakości oprogramowania. Ich celem jest zautomatyzowanie testowania istniejącego kodu programu w celu znalezienia defektów. Ponadto inżynierowie ds. testów zazwyczaj korzystają z narzędzi testowych zaprojektowanych komercyjnie, aby znaleźć potencjalne problemy. Plany testów są wdrażane na etapie kodowania tworzenia oprogramowania.
Istnieje wiele ważnych kroków związanych z faktycznym etapem testowania procesu zapewniania jakości oprogramowania. Obejmują one testy jednostkowe, które oceniają integralność różnych sekcji kodu oprogramowania, a także wstrzykiwanie błędów, które mają na celu zbadanie, w jaki sposób programy reagują na błędne dane. Dodatkowe kroki obejmują testowanie obciążenia lub testy warunków skrajnych, które sprawdzają, jak program działa w warunkach intensywnego użytkowania, oraz testy włamań lub zabezpieczeń w celu przetestowania odporności programu na nieautoryzowany dostęp. Projekt oprogramowania jest również zazwyczaj poddawany testom użyteczności w celu sprawdzenia, czy powstały program jest łatwy w użyciu dla innych.
Specjaliści zajmujący się testowaniem kodu oprogramowania są zazwyczaj podzieleni na dwie grupy, jedną zwaną testerami z czarnej skrzynki, a drugą zwaną testerami z białymi skrzynkami lub szklanymi skrzynkami. Testowanie czarnoskrzynkowe to bardziej powierzchowny proces, który rozpoczyna się na etapie kodowania oprogramowania i nie bada żadnego podstawowego kodu komputerowego. Bada użyteczność oprogramowania, spójność kosmetyczną oraz występowanie błędów i usterek.
Testowanie w białej skrzynce to proces, który rozpoczyna się na samym początku procesu zapewniania jakości oprogramowania, na etapie projektowania. Obejmuje przewidywanie potencjalnych problemów, zanim kod zostanie faktycznie napisany, a także pisanie planów testów i zaawansowanych skryptów testowych. W przeciwieństwie do testowania czarnoskrzynkowego, testowanie białoskrzynkowe obejmuje również badanie podstawowego kodu komputerowego.
Zapewnienie jakości dotyczy również fazy wdrażania oprogramowania, kiedy oprogramowanie jest bliskie ukończenia i jest instalowane w systemach komputerowych do oceny. Ta faza jest często określana jako testowanie alfa i występuje, gdy prawie gotowy produkt jest instalowany i testowany przez personel programistyczny. Gdy oprogramowanie jest prezentowane potencjalnym klientom spoza firmy, nazywa się to testami beta. Jeśli defekty pojawią się po wydaniu oprogramowania i konieczne jest opracowanie poprawki, stosuje się testy regresji, aby upewnić się, że nowe błędy nie są tworzone przez aktualizacje.