Testowanie aplikacji i systemów - Poziomy testów

1. Testy czarno-skrzynkowe są tworzone i wykonywane bez znajomości kodu i wewnętrznego działania testowanej aplikacji. Testy te są opierane na wymaganiach do testowanego programu.
Cechy:
  • Skupia się na tym, co oprogramowanie ma robić według oczekiwań użytkownika.
  • Umożliwia ocenę, czy program działa zgodnie z wymaganiami użytkownika.
  • Jest zazwyczaj wykonywany na samym końcu testowania systemu.
  • Służy do znalezienia funkcjonalności, które zostały pominięte lub źle zrealizowane w stosunku do specyfikacji użytkownika.
2. Testowanie metodą białej skrzynki polega na sprawdzaniu aplikacji znając jej kod źródłowy. Umożliwia to lepsze doboru danych testowych i pokrycie kodu. Może być statyczne (analiza kodu znajdująca źródła potencjalnych problemów w programie) lub dynamiczne (z wykonaniem programu). Najczęściej używa się go do debugowania.

3. Elementy wyróżniające w procesie przeglądu kodu to identyfikacja problemów, postępowanie według narzuconych zasad, przygotowanie do przeglądu oraz tworzenie raportów. Standardy narzucają ustalone wymagania i reguły kodowania w celu poprawy niezawodności oprogramowania, ułatwienia czytania, zrozumienia i modyfikacji kodu oraz zapewnienia przenośności pomiędzy różnymi platformami.

4. Analiza dynamiczna w testowaniu metodą białej skrzynki pozwala przetestować stan i przepływy sterowania programu, dążyć do wykonania każdego wiersza i ścieżki programu oraz znaleźć błędy w mniej wykonywanych fragmentach kodu.

5. Programy śledzące umożliwiają monitorowanie wykonania kodu i analizę pokrycia kodu w celu identyfikacji niepokrytych części kodu i generowania statystyk dotyczących testowania.

6. Pokrycie kodu może być realizowane poprzez analizę pokrycia instrukcji, rozgałęzień programu oraz warunków logicznych.

7. Testowanie mutacyjne to technika testowania białej skrzynki, która wprowadza błędy do kodu i sprawdza, czy testy są w stanie je wykryć. Przebiega ono poprzez zastosowanie reguł mutacji do struktur składniowych programu i uruchomienie testów na zmodyfikowanym kodzie. Wartości specjalne i transcendentne to takie wartości, które mogą spowodować nieoczekiwane zachowanie programu lub wyjątki. Dobiera się je na podstawie analizy granic wartości dla danych wejściowych i wyjściowych programu.

8. Metoda klas równoważności to technika testowania czarnoskrzynkowego, która polega na podziale zbioru danych wejściowych i wyjściowych na grupy o podobnym charakterze i sposobie przetwarzania. Przebiega ona poprzez wyznaczenie klas poprawnych i niepoprawnych dla danych, które system może przyjąć. Wartości specjalne to takie wartości, które mogą spowodować nieoczekiwane zachowanie systemu lub wyjątki. Wartości transcendentne to takie wartości, które są poza zakresem dopuszczalnych dla danych. Dobiera się je na podstawie analizy granic wartości dla danych wejściowych i wyjściowych programu.

9. Metoda Monte Carlo to metoda modelowania matematycznego procesów zbyt złożonych, aby można było przewidzieć ich wyniki za pomocą podejścia analitycznego. Polega ona na losowym generowaniu wielu próbek danych i obliczaniu statystyk na ich podstawie. Metody genetyczne to metody optymalizacji i poszukiwania rozwiązań oparte na zasadach ewolucji biologicznej. Polegają one na losowym tworzeniu populacji kandydatów na rozwiązania i stosowaniu operacji takich jak krzyżowanie, mutacja i selekcja naturalna. W testowaniu aplikacji i systemów metoda Monte Carlo i metody genetyczne mogą być używane do generowania danych testowych, które mają pokryć różne scenariusze i warunki brzegowe .

10. Poziomy testowania oprogramowania:
  • Testy jednostkowe (modułowe)
  • Testy integracyjne
  • Testy funkcjonalne
  • Testy systemowe
  • Testy akceptacyjne
  • Testy w fazie utrzymywania systemu
11. Główne rodzaje testów:
  • Testy jednostkowe - testy modułów lub bloków kodu przez programistę piszącego kod.
  • Testy integracyjne - testy integralności aplikacji w jej granicach przez porównanie modułów kodu.
  • Testy systemowe - testy całego oprogramowania przez profesjonalnego testera przed rynkiem.
  • Testy akceptacyjne - testy produktu przez użytkowników końcowych.
  • Testy komponentów - testy całych komponentów lub modułów kodu.
  • Testy integracji komponentów - testy poprawności działania integrowanych komponentów lub modułów kodu.
  • Testy integracji systemu - testy integralności danych i koordynacji z innymi systemami.
  • Alfa testy - testy na stronie deweloperów na końcu procesu rozwoju oprogramowania.
  • Beta testy - testy na stronie klienta przed premierą produktu.
12. Podpoziomowe rodzaje testów:
  • Testy dostępności - testy funkcjonalności aplikacji dla ludzi z dysfunkcjami.
  • Testy pojemności - testy maksymalnej liczby zasobów użytych w aplikacji.
  • Testy wdrożeniowe - testy instalacji aplikacji na różnych systemach operacyjnych.
  • Testy interfejsu użytkownika - testy zgodności interfejsu użytkownika ze specyfikacją.
  • Testy wydajnościowe - testy odpowiedzi systemu pod obciążeniem według czasu i liczby żądań.
  • Testy regresyjne - testy funkcjonalności po naprawie innej wadliwej funkcjonalności.
  • Testy skalowalności - testy wydajności systemu przy zwiększonym ruchu, użytkownikach i danych.
  • Testy bezpieczeństwa - testy ochrony danych i funkcjonalności aplikacji.
  • Testy użyteczności - testy korzystania z systemu przez użytkowników końcowych.
13. Podział testów oprogramowania możne być realizowany ze względu na:
a) sposób przeprowadzania testów: testy manualne, testy automatyczne,
b) testowany zakres aplikacji: testy jednostkowe, testy integracyjne, testy systemowe,
c) rodzaje testów: statyczne, dynamiczne: strukturalne, funkcjonalne.