Inżynieria oprogramowania - Testowanie, weryfikacja i atestowanie oprogramowania
1. Weryfikacja - testowanie zgodności systemu z wymaganiami zdefiniowanymi w fazie określenia wymagań. Weryfikacja włącza następujące czynności:
- przeglądy techniczne oraz inspekcje oprogramowania
- sprawdzanie czy wymagania na oprogramowanie są zgodne z wymaganiami użytkownika
- sprawdzanie czy komponenty projektu są zgodne z wymaganiami na oprogramowanie
- testowanie jednostek oprogramowania
- testowanie integracji oprogramowania, testowanie systemy
- testowanie akceptacji systemu przez użytkowników
- audyt
2. Atestowanie (walidacja) - ocena systemu lub komponentu podczas lub na końcu procesu jego rozwoju na zgodności z wyspecjalizowanymi wymaganiami.
3. Cele testowania:
- wykrycie i usunięcie błędów w systemie
- ocena niezawodności systemu
4. Inspekcja to formalna technika oceny, w której wymagania na oprogramowanie, projekt lub kod są szczegółowo badane przez osobę lub grupę osób nie będących autorami, w celu identyfikacji błędów, naruszenia standardów i innych problemów.
Cechy inspekcji:
- są zaplanowane i przygotowane
- błędy i problemy są notowane
- dane nie są wykorzystywane do oceny pracowników
- wykonywana przez techników dla techników, bez udziału kierownictwa
- proces inspekcji jest mierzony
- proces inspekcji jest poprawiany
- błędy są wykorzystywane w poprawie procesu programowego
- dane nie są wykorzystywane do oceny pracowników
5. Testy można klasyfikować z różnych punktów widzenia:
- wykrywane błędów - testy, których głównym celem jest wykrycie jak największej liczby błędów w programie
- testy statystyczne - celem jest wykrycie najczęstszych błędnych wykonań oraz ocena niezawodności systemu
Z punktu techniki wykonywania testów można je podzielić na:
- testy dynamiczne - polegają na wykonywaniu programu lub jego fragmentów i porównywaniu uzyskanych wyników z wynikami poprawnymi
- testy statyczne - oparte na analizie kody
6. Błąd - niepoprawna konstrukcja znajdująca się w programie, która może doprowadzić do niewłaściwego działania.
7. Błędne wykonanie - niepoprawne działanie systemu w trakcie jego pracy.
8. Typowe fazy testowania systemu:
- testy modułów - wykonywane bezpośrednio po zakończeniu realizacji poszczególnych modułów
- testy systemu - w fazie integrowane są poszczególne moduły i testowane są szczególne podsystemy oraz system jako całość
- testy akceptacji - testy alpha; oprogramowanie jest przekazywane do przetestowania przyszłemu użytkownikami
- wydajność systemu
- interfejsy systemu
- własności operacyjne systemu
- testy zużycia zasobów
- zabezpieczenie systemu
- przenaszalność oprogramowania
- niezawodność oprogramowania
- odtwarzalność oprogramowania
- bezpieczeństwo oprogramowania
- kompletność i jakość założonych funkcji systemu
- nie przekraczanie ograniczeń
- modyfikowalność oprogramowania
- obciążalność oprogramowania
- skalowalność systemu
- akceptowalność systemu
- jakość dokumentacji
10. Miary niezawodności:
- prawdopodobieństwo błędnego wykonania
- częstotliwość występowania błędnych wykonań
- średni czas między błędnymi wykonaniami
- dostępność
11. Dynamiczne testy zorientowane na wykrywanie błędów dzieli się na:
- Testy funkcjonalne, które zakładają znajomość jedynie wymagań wobec testowanej funkcji. System jest traktowany jako czarna skrzynka, która w nieznany sposób realizuje wykonywane funkcje. Testy powinny wykonywać osoby, które nie były zaangażowane w realizację testowanych fragmentów systemu.
- Testy strukturalne, które zakładają znajomość sposobu implementacji testowanych funkcji.
12. Testy obciążeniowe - celem jest zbadanie wydajności i niezawodności systemu podczas pracy pod pełnym lub nawet nadmiernym obciążeniem
13. Testy odporności - celem jest sprawdzenie działania w przypadku zajścia niepożądanych zdarzeń, np.
- zaniku zasilania
- awarii sprzętowej
- wprowadzenia niepoprawnych danych
- wydania sekwencji niepoprawnych poleceń