aitech-pbr-pilka/materiały na PPB (wykład)/09_testowanie_integracyjne_i_systemowe.ipynb

9.3 KiB
Raw Blame History

Logo 1

Przygotowanie do projektu badawczo-rozwojowego

9. Testowanie systemowe i adaptacyjne[wykład]

Krzysztof Jassem (2021)

Logo 2

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,

  • Przykładem testu dymnego może być test CRUD (Create, Read, Update, Delete).

  • _Przykład opisu testów dymnych:*

    Przykład testów dymnych

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: Przykład testów zdroworozsądkowych

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: Przykład testów regresywnych

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: Przykład raportu z testowania

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: Przykład raportu z testowania

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 z testowania

Przykład raportu graficznego z testu przeciążeń systemu tłumaczenia: Przykład raportu z testowania

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.

Strategie testowania integracyjnego

Środowisko testowania systemowego

Testowanie manualne:

Testowanie eksploracyjne

Testowanie sesyjne

Testowanie akceptacyjne

Testowanie automatyczne

Testowanie oparte na nagrywaniu

Testowanie oparte na słowach kluczowych

Testowanie oparte na zachowaniu