9.3 KiB
Przygotowanie do projektu badawczo-rozwojowego
9. Testowanie systemowe i adaptacyjne[wykład]
Krzysztof Jassem (2021)
1. Testowanie systemowe i adaptacyjne - wyjaśnienie pojęć
Testowanie systemowe
Przedmiotem testowania systemowego jest całość oprogramowania zainstalowana w pewnym środowisku wykonawczym. * Środowisko testowania musi być zbliżone do środowiska pracy. * Testowanie systemowe odbywa się metodą „czarnej skrzynki”.Testowanie adaptacyjne
Przedmiotem testowania adaptacyjnego jest oprogramowanie stanowiące przedmiot dostawy do użytkownika w docelowym środowisku pracy. * Testowana jest zgodność z wymaganiami i potrzebami użytkownika. * Testowanie akceptacyjne przeprowadza użytkownik / klient.2. Typy testowania systemowego
2.1. Testowanie funkcjonalne (functional testing)
Testowanie funkcjonalne ma na celu wykazanie rozbieżności między programem a jego specyfikacją zapisaną w postaci wymagań funkcjonalnych lub przypadków użycia.
- Przypadki testowe (scenariusze testowe) wielokrotnie tworzy się na podstawie przypadków użycia.
- Podstawowa zasada:Im więcej błędów wykryto w pewnej funkcji programu, tym (prawdopodobnie) większą liczbę błędów ona jeszcze ukrywa.
- Testowanie funkcjonalne może odbywać się na różnych poziomach szczegółowości:
- testy dymne
- testy zdroworozsądkowe
- testy regresywne
Testy dymne
Testy dymne (ang. smoke tests) to powierzchowne testy pozwalające wykazać błędy krytyczne,
Testy zdroworozsądkowe
Testy zdroworozsądkowe mają wykazać, że aplikacja nie działa zgodnie ze stawianymi przed nią wymaganiami.
"Smoke test określa, czy w ogóle coś działa, a sanity test - czy działa tak, jak ma działać”.
Przykład przypadków testowych na poziomie testowania regresywnego:
Testy regresywne
Testy regresywne to szczegółowe testy, pozwalające wykazać, że w aplikacji powstały nieznane błędów będące wynikiem wprowadzonych zmian.
Przykład przypadku testowego na poziomie testowania regresywnego:
Raport z testowania funkcjonalnego
Przypadki testowe w testowaniu funkcjonalnym warto tworzyć w takiej formie, aby łatwo można je było rozszerzyć o wyniki testowania - tworząc raport z testowania.
Fragment raportu z testowania funckjonalnego:
W raporcie z testowania można zawrzeć dodatkowe informacje np. o wydajności działania danego przypadku testowego.
2.2. Testowanie wydajności (performance testing)
Zadaniem testowania wydajności jest wykazanie, że system nie daje odpowiedzi w wystarczająco krótkim czasie pod ustalonym obciążeniem produkcyjnym, np. przy dużym wolumenie przetwarzanych danych.
Przykładowy fragment raportu z testowania wydajności systemu tłumaczenia:
Stronę internetową można bardzo szybko przetestować pod kątem wydajności, korzystając np. z narzędzia dostępnego na stronie https://webspeed.intensys.pl/.
2.3. Testowanie przeciążeń (load testing)
Przeciążenie to skumulowanie w krótkim czasie dużej liczby jednocześnie działających użytkowników lub przeprowadzanych transakcji.
Celem testowania przeciążeń jest zweryfikowania działania systemu przy wysokim obciążeniu.
- Przykładowy scenariusz testowania przeciążeń:
- Nagranie ciągu operacji wykonywanych przez jednego klienta (np. w postaci makra)
- Odtworzenie nagranego ciągu operacji dla wybranej (dużej) liczby klientów
- Analiza raportu
Przykład raportu tekstowego z testu przeciążeń systemu tłumaczenia:
Przykład raportu graficznego z testu przeciążeń systemu tłumaczenia:
2.4. Testowanie pamięci (memory testing)
Celem testowania pamięci jest wykazanie, że system narusza narzucone wymagania pamięciowe.
2.5. Testowanie ochrony danych (security testing)
Proces ma wykazać, że dane nie są chronione w odpowiedni sposób.
- Przypadki testowe mają wymusić naruszenie mechanizmów ochrony danych.
2.6. Testowanie konfiguracji
Testowanie konfiguracji ma na celu zweryfikowanie działania systemu w różnych konfiguracjach sprzętowych i programowych.
- Testowanie może odbywać się za pomocą specjalnie przygotowanej maszyny wirtualnej.
- Dla serwisów webowych istotne jest testowanie różnych urządzeń oraz różnych typów przeglądarek.
2.7. Testowanie zgodności wersji
Testowanie zgodności wersji ma na celu wykazanie niezgodności z przeszłymi wersjami programów:
- testowanie patchów i aktualizacji,
- testowanie nowych wersji.