Testowanie oprogramowania Marcin Ugarenko Dawid Szoucha Podstawowe definicje

  • Slides: 13
Download presentation
Testowanie oprogramowania Marcin Ugarenko Dawid Szołucha

Testowanie oprogramowania Marcin Ugarenko Dawid Szołucha

Podstawowe definicje n Testowanie – faza cyklu życia oprogramowania mająca na celu podniesienie jego

Podstawowe definicje n Testowanie – faza cyklu życia oprogramowania mająca na celu podniesienie jego niezawodności. Polega na wykrywaniu błędów w oprogramowaniu. Cele testowania: wykrycie błędu, zlokalizowanie błędu, usunięcie błędu, ocena niezawodności oprogramowania. n Weryfikacja – testowanie zgodności systemu lub komponentu z wymaganiami zdefiniowanymi w fazie określenia wymagań. n Atestowanie – weryfikacja końcowa systemu lub komponentu, inaczej zatwierdzenie. n Błąd – niepoprawna konstrukcja w programie mogąca prowadzić do niewłaściwego jego działania. n Błędne wykonanie – niepoprawne działanie systemu podczas jego pracy

Weryfikacja: metody n n n Przeglądy oprogramowania Spotkania podczas, których system jest prezentowany dla

Weryfikacja: metody n n n Przeglądy oprogramowania Spotkania podczas, których system jest prezentowany dla personelu, kierownictwa, użytkowników, klientów i innych zainteresowanych osób. Przeglądy mogą być formalne lub nieformalne. Przeglądy techniczne Ocena zgodności postępu prac z przyjętym planem. Przejścia Wczesna ocena dokumentów, modeli i kodu, celem rozważenia możliwych rozwiązań. Audyty Ocena jakości oprogramowania, jego zgodności z założeniami, standardami, kontraktami oraz licencjami. Inspekcje Ocena wymagań przez osoby nie będące ich autorami. Testowanie

Co podlega testowaniu? n n n n Wydajność Interfejs Własności operacyjne systemu Użycie zasobów

Co podlega testowaniu? n n n n Wydajność Interfejs Własności operacyjne systemu Użycie zasobów Zabezpieczenia systemu Przenaszalność oprogramowania Niezawodność Odtwarzalność Bezpieczeństwo Modyfikowalność Obciążalność Skalowalność sytemu Kompletność wymagań Akceptowalność Jakość dokumentacji

Fazy testowania n Każdemu etapowi wytwarzania oprogramowania towarzyszy odpowiednia faza testowania. Zdefiniowanie wymagań użytkownika

Fazy testowania n Każdemu etapowi wytwarzania oprogramowania towarzyszy odpowiednia faza testowania. Zdefiniowanie wymagań użytkownika Testowanie akceptacyjne Definicja wymagań oprogramowania Testowanie całości systemu Projektowanie architektury Testowanie integracji Szczegółowe projektowanie Testowanie modułów Implementacja

Testowanie Według techniki wykonywania Testy dynamiczne Testy statyczne Polegają na wykonywaniu programu i porównywaniu

Testowanie Według techniki wykonywania Testy dynamiczne Testy statyczne Polegają na wykonywaniu programu i porównywaniu uzyskanych wyników z Wynikami poprawnymi. Polegają na analizie kodu programu. Zazwyczaj wykonywane przez programistę lub przy użyciu odpowiednich narzędzi. Pozwalają wykryć wyłącznie błędy Wykonania. Poznanie przyczyny Wymaga testów statycznych.

Testowanie Zorientowane na wykrywanie błędów Testy funkcjonalne „czarnej skrzynki” - Zakładają znajomość jedynie wymagań.

Testowanie Zorientowane na wykrywanie błędów Testy funkcjonalne „czarnej skrzynki” - Zakładają znajomość jedynie wymagań. - Tester niezaangażowany w tworzenie. systemu. Najlepiej użytkownik. - Podział na klasy równoważności danych. Testy strukturalne „białej skrzynki” - Zakładają znajomości implementacji funkcjonalności. - Dane dobrane na podstawie analizy struktury programu. - Przetestowanie wszystkich ścieżek - Nie pozwala znaleźć brakującej funkcjonalności.

Testowanie statystyczne n n n Wykonywane w sposób cykliczny Losowa konstrukcja danych wejściowych zgodnych

Testowanie statystyczne n n n Wykonywane w sposób cykliczny Losowa konstrukcja danych wejściowych zgodnych z prawdopodobieństwem ich wystąpienia Określenie poprawnych wyników dla danych losowych Porównanie wyników oczekiwanych z otrzymanymi Wady: Trudne ustalenie danych losowych możliwie bliskich rozkładowi rzeczywistemu ¨ Wnioski mogą być nietrafne ¨ n Zalety: Możliwość automatyzacji procesu testowania ¨ Możliwość wykonania dużej liczby testów ¨

Testowanie systemu n Testowanie wstępujące: Rozpoczęcie testowania od pojedynczych modułów, podsystemów, aż do całości.

Testowanie systemu n Testowanie wstępujące: Rozpoczęcie testowania od pojedynczych modułów, podsystemów, aż do całości. ¨ Zastosowanie zawsze możliwe np. występują zależności między modułami. ¨ n Testowanie zstępujące: Zaczynamy testowanie od modułów znajdujących się najwyżej w hierarchii. ¨ Niższe moduły zastępuje się modelami szkieletowymi. ¨ Po przetestowaniu modułów wyższego poziomu dołącza się moduły niższego poziomu. ¨ Proces trawa aż do zintegrowania i przetestowania całego systemu. ¨

Testy obciążenia i odporności n Testy obciążenia Celem jest zbadanie obciążalności, wydajności i niezawodności

Testy obciążenia i odporności n Testy obciążenia Celem jest zbadanie obciążalności, wydajności i niezawodności systemu. ¨ Przeprowadzane w warunkach maksymalnego lub nadmiernego obciążenia systemu. ¨ Systemy wielodostępne i sieciowe. ¨ Spełnienie wymagań niefunkcjonalnych dotyczących wydajności, liczby użytkowników itp. ¨ n Testy odporności Celem jest zbadanie zachowań systemu w przypadku niepożądanych zdarzeń. ¨ Awarie sprzętu, prądu, niepoprawne dane, niepoprawne polecenia. ¨

Niezawodność oprogramowania n Szacowanie niezawodności: Poziom niezawodności może być określony w wymaganiach klienta. ¨

Niezawodność oprogramowania n Szacowanie niezawodności: Poziom niezawodności może być określony w wymaganiach klienta. ¨ Informacja o niezawodności pozwala ustalić późniejsze koszty konserwacji systemu. ¨ Umożliwia ocenę i polepszenie procesu wytwarzania, a co za tym idzie minimalizację kosztów. ¨ n Miary i metryki: Prawdopodobieństwo błędnego wykonania. ¨ Częstość występowania błędnych wykonań. ¨ n Ilość błędów w jednostce czasu np. . 0, 2/h. Średni czas między błędnymi wykonaniami. ¨ Dostępność. ¨ n n n Stosunek czasu, w którym system jest dostępny, do czasu jaki jest potrzebny na usunięcie awarii. Dostępność pozwala zmierzyć poza ilością błędów, także ich narzut Niezawodność=niezawodność_początkowa*e(-C * liczba_testów)

Wnioski n n n n Nie wykonywanie testów prowadzi do propagacji błędów i narastania

Wnioski n n n n Nie wykonywanie testów prowadzi do propagacji błędów i narastania kosztów i usuwania. Nie wszystkie błędy udaje się znaleźć i naprawić. Poprawiony model, kod, projekt, wymagania. Raporty z testów i ich rezultatów. Ograniczenie kosztów konserwacji. Zwiększenie niezawodności oprogramowania i zadowolenia klienta. Lepiej posiadać nie w pełni działającą funkcjonalność niż nie posiadać jej w ogóle.

Bibliografia n „Podstawy inżynierii oprogramowania” – Włodzimierz Dąbrowski i Kazimierz Subieta.

Bibliografia n „Podstawy inżynierii oprogramowania” – Włodzimierz Dąbrowski i Kazimierz Subieta.