Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 1 Wyszukiwanie błędów l Testowanie programów w celu wyszukania błędów.

Podobne prezentacje


Prezentacja na temat: "©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 1 Wyszukiwanie błędów l Testowanie programów w celu wyszukania błędów."— Zapis prezentacji:

1 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 1 Wyszukiwanie błędów l Testowanie programów w celu wyszukania błędów

2 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 2 Zawartość l Testowanie defektów l Testowanie integracyjne l Testowanie obiektowe l Warsztaty do testowania

3 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 3 Proces testowania l Testowanie komponentów Testowanie pojedynczych składowych programu Zazwyczaj odpowiedzialność twórców komponentów (poza szczególnie krytycznymi systemami) Testy wykonywane na podstawie doświadczenia twórcy l Testy integracyjne Testowanie zbiorów komponentów zintegrowanych w większy system lub podsystem Odpowiedzialność niezależnego zespołu testerów Testy oparte na specyfikacji systemu

4 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 4 Testowanie defektów l Celem testowania jest odkrycie defektów w programie l Udany test defektów to taki, który sprawia, że program zachowuje się w nieoczekiwany sposób l Testy pokazują obecność a nie brak defektów

5 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 5 l Tylko wyczerpujące testowanie może pokazać, że program jest wolny od błędów. Niestety jest ono niepraktyczne, a niekiedy wręcz niemożliwe l Testy powinny sprawdzać możliwości systemu a nie jego komponentów l Testowanie starych możliwości jest ważniejsze od testowania nowych l Testowanie typowych sytuacji jest ważniejsze od testowania warunków brzegowych Priorytety testowania

6 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 6 l Dane testowe Dane, które są przekazywane do testowanego systemu l Przypadki testowe Dane dla testowanego systemu i przewidywane odpowiedzi systemu zachowującego się w sposób zgodny ze specyfikacją Dane testowe i przypadki testowe

7 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 7 Proces testowania defektów Opracuj przypadki testowe Przygotuj dane testowe Uruchom program na danych testowych Porównaj wyniki z przypadkami testowymi Przypadki testowe Dane testowe Wyniki testów Raport z testowania

8 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 8 Testowanie czarnej skrzynki l Podejście do testowania w którym program jest traktowany jako czarna skrzynka l Przypadki testowe oparte są na specyfikacji programu l Planowanie testowania rozpoczyna się we wczesnych fazach przedsięwzięcia

9 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 9 Dzielenie na klasy równoważności l Dane wejściowe i wyniki można często podzielić na różne klasy w których znajdują się podobne doi siebie przypadki l Dla danych w obrębie jednej klasy program zachowuje się podobnie l Przypadki testowe powinny być wybrane z każdej z klas

10 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 10 Podział na klasy System Błędne Wejścia Wyjścia Poprawne Wejścia

11 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 11 l Podział danych wejściowych na zbiory równoważne Jeśli wejście jest pięciocyfrową liczbą naturalną to klasami są: l Warto wybrać następujące testy 00000, 09999, 10000, 99999, Podział na klasy

12 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 12 Specyfikacja wyszukiwania procedure Search (Key : ELEM ; T: ELEM_ARRAY; Found : in out BOOLEAN; L: in out ELEM_INDEX) ; Pre-condition -- the array has at least one element TFIRST <= TLAST Post-condition -- the element is found and is referenced by L ( Found and T (L) = Key) or -- the element is not in the array ( not Found and not (exists i, TFIRST >= i <= TLAST, T (i) = Key ))

13 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 13 l Dane spełniające warunki wejściowe l Dane nie spełniające warunków wejściowych l Dane gdzie klucz jest w tablicy l Dane gdzie klucza nie ma w tablicy Wyszukiwanie podział na klasy

14 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 14 Zasady testowania (listy) l Testuj oprogramowanie na listach jednoelementowych l Używaj list o różnych rozmiarach l Napisz testy w których odnosisz się do pierwszego, środkowego i końcowego elementu listy l Testuj listy puste

15 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 15 Wyszukiwanie - klasy

16 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 16 l Czasami nazywane testowaniem białej skrzynki l Przypadki testowe otrzymane na podstawie struktury programu. Znajomość programu pomaga odnaleźć dodatkowe przypadki l Celem jest przetestowanie wszystkich instrukcji programu (ale nie wszystkich kombinacji ścieżek) Testowanie strukturalne

17 Binary search (Java)

18 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 18 l Spełniony warunek wstępny, klucz w tablicy l Spełniony warunek wstępny, klucz nie w tablicy l Niespełniony warunek wstępny, klucz w tablicy l Niespełniony warunek wstępny, klucz nie w tablicy l Dane mają jeden element l Dane mają parzystą liczbę elementów l Dane mają nieparzystą liczbę elementów Binary search – klasy równoważności

19 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 19 Binary search – przypadki testowe

20 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 20 Testowanie ścieżek l Celem testowania ścieżek jest zapewnienie, ze każda ścieżka programu jest wykonywana co najmniej raz l Punktem wyjścia do testowania ścieżek jest graf przepływu sterowania w programie pokazujący decyzje i przebieg sterowania l Instrukcje warunkowe są wierzchołkami grafu

21 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 21 l Opisuje przepływ sterowania w programie. Każda gałąź jest pokazana jako oddzielna ścieżka a pętle są pokazane jako zapętlone krawędzie l Używany do liczenia złożoności cyklicznej l Złożoność cykliczna = Liczba krawędzi – Liczba węzłów +2 Graf przepływu sterowania

22 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 22 l Liczba przypadków testowych równa jest złożoności cyklicznej l Złożoność cykliczna jest równa liczbie warunków logicznych w programie l Należy używać ostrożnie, gdyż nie zawsze daje dobre rezultaty l Nie wszystkie kombinacje ścieżek są wykonywane Złożoność cykliczna

23 Binary search flow graph

24 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 24 l 1, 2, 3, 8, 9 l 1, 2, 3, 4, 6, 7, 2 l 1, 2, 3, 4, 5, 7, 2 l 1, 2, 3, 4, 6, 7, 2, 8, 9 l Przypadki testowe należy dobrać tak, aby sprawdzić wszystkie ścieżki l Analizator dynamicznego wykonania może być użyty dla zweryfikowania czy wszystkie ścieżki są przetestowane Niezależne ścieżki

25 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 25 Testy integracyjne l Testują pełny system lub system złożony z gotowych komponentów l Powinny być testami czarnej skrzynki z przypadkami opracowanymi na podstawie specyfikacji l Główną trudnością jest zlokalizowanie błędów l Przyrostowe testy integracyjne zwiększają szanse powodzenia

26 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 26 Przyrostowe testowanie integracyjne

27 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 27 Podejścia do testowana integracyjnego l Testowanie zstępujące najpierw testuje się system z wysokiego poziomu stosując namiastki, które następnie zastępuje się działającymi komponentami l Testowanie wstępujące Najpierw testuje się komponenty najniższego poziomu l W praktyce stosuje się oba podejścia równocześnie

28 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 28 Testowanie zstępujące

29 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 29 Testowanie wstępujące

30 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 30 Porównanie metod testowania l Zatwierdzanie architektury Testowanie zstępujące lepiej wykrywa błędy w architekturze l Demonstracja systemu Testowanie zstępujące pozwala na szybszą demonstrację działającego systemu l Implementacja testowania Łatwiej jest przeprowadzać testy wstępujące l Obserwacja testów Problemy w obu przypadkach. Często trzeba tworzyć dodatkowy kod

31 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 31 l Jest wykonywane po zintegrowaniu modułów lub podsystemów l Celem jest wykrycie błędów programistycznych oraz nieuzasadnionych założeń l Szczególnie ważne w przypadku programów obiektowych Testowanie interfejsów

32 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 32 Testowanie interfejsów

33 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 33 Rodzaje interfejsów l Interfejsy parametryczne Dane przekazywane z jednej procedury do innej l Interfejsy w pamięci dzielonej Blok pamięci dzielony pomiędzy podsystemami l Interfejsy proceduralne Podsystem zawiera zbiór procedur wywoływany przez inny podsystem l Interfejsy z przekazywaniem komunikatów Podsystem żąda usług od innego podsystemu

34 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 34 Błędy w interfejsach l Niewłaściwe użycie interfejsu Komponent wywołujący inny komponent popełnia błąd używając interfejsu np. podając parametry w złej kolejności l Niezrozumienie interfejsu Komponent wywołujący zawiera założenia o zachowaniu komponentu wywoływanego, które są nieprawdziwe l Błędy synchronizacji Producent i konsument danych działają z różnymi prędkościami i odczytywana jest nieaktualna informacja

35 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 35 Porady l Testuj procedury używając krańcowych wartości parametrów l Zawsze testuj wskaźniki zawierające zera l Projektuj testy, które spowodują sytuacje wyjątkowe l Używaj testów obciążeniowych w przypadku systemów z przekazywaniem komunikatów l W systemach z pamięcią dzieloną uważaj na porządek wykonywania działań

36 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 36 Testy obciążeniowe l Testowanie systemów z obciążeniami na które systemy nie były zaprojektowane pozwala wykryć inne błędy l Testy obciążeniowe sprawdzają obsługę błędów. Systemy nie powinny padać katastrofalnie. Nie powinny być tracone dane. l Szczególnie istotne w przypadku systemów rozproszonych

37 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 37 l Komponentami testowanymi są klasy i obiekty l Obiekty mają zazwyczaj większą funkcjonalność niż pojedyncze metody, więc konieczna jest lepsza analiza źródeł l Nie ma oczywistego wierzchołka w przypadku testów zstępujących Testowanie obiektowe

38 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 38 Poziomy testowania l Testowanie poszczególnych operacji l testowanie klas l Testowanie gron obiektów l Testowanie systemu obiektowego

39 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 39 Testowanie klas obiektów l Pełen test klasy zawiera Testowanie wszystkich operacji związanych z obiektem Ustalanie i odczytywanie wszystkich atrybutów Badanie obiektu we wszystkich możliwych stanach l Dziedziczenie sprawia trudności w testowaniu, gdyż informacje o obiekcie są porozrzucane po wielu miejscach

40 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 40 Interfejs stacji meteorologicznej l Przypadki testowe dla wszystkich operacji l Użycie diagramu stanów do znalezienia wszystkich stanów l Przykładowe ciągi stanów Shutdown Waiting Shutdown Waiting Calibrating Testing Transmitting Waiting Waiting Collecting Waiting Summarising Transmitting Waiting

41 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 41 Integracja obiektów l W systemach obiektowych poziomy integracji są słabiej widoczne l Testowanie gron polega na testowaniu grup obiektów współpracujących ze sobą l Do identyfikacji gron konieczna jest znajomość operacji związanych z tymi obiektami i funkcji systemu

42 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 42 Podejścia do testowania gron l Testowanie scenariuszy lub przypadków użycia Testowanie jest oparte na interakcji z systemem Ma większy sens jeśli przypadków testowych dostarczają bezpośrednio użytkownicy l Testowanie wątków Testowanie reakcji systemu na konkretne zbiory zdarzeń wejściowych l Testowanie interakcji obiektów Testy polegają na śledzeniu interakcji pomiędzy obiektami od początku, aż do zakończenia przetwarzania

43 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 43 Testowanie oparte na scenariuszach l Scenariusze tworzy się na podstawie przypadków użycia i uzupełnia o diagramy pokazujące interakcje pomiędzy obiektami użytymi w scenariuszu l Rozważmy scenariusz zbierania danych o pogodzie

44 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 44 Zbieranie danych o pogodzie

45 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 45 testowanie stacji pogodowej l Wątek wykonywanych metod CommsController:request WeatherStation:report WeatherData:summarise l Wejścia i wyjścia Żądanie raportu, potwierdzenia i raport końcowy Może być testowane poprzez przygotowanie danych surowych i sprawdzenie czy są poprawnie podsumowywane Surowe dane mogą być używane do testowania obiektu WeatherData

46 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 46 Warsztaty do testowania l Testowanie jest kosztowną częścią procesu tworzenia oprogramowania. Warsztaty do testowania udostępniają narzędzi do zredukowania całkowitego czasu i kosztów testowania l Większość warsztatów jest narzędziami otwartymi l Jest je trudno zintegrować z zamkniętymi narzędziami do analizy i projektowania

47 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 47 Warsztat testowy

48 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 48 Adaptowanie warsztatów testowych l Tworzenie skryptów do obsługi interfejsu użytkownika i wzorów dla generatorów testów l Oczekiwane wyniki mogą być przygotowane ręcznie do porównania z rzeczywistymi l Można stworzyć specjalne programy do porównywania wyników

49 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 49 Główne tezy l Ważniejsze jest testowanie części często używanych niż rzadko używanych l Klasy równoważności to zbiory przypadków zachowujących się podobnie z punktu widzenia systemu l Testowanie czarnej skrzynki jest oparte na specyfikacji l testowanie strukturalne pomaga znaleźć przypadki, które przetestują wszystkie ścieżki przepływu sterowania

50 ©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 50 Główne tezy l Miary pokrycia testów służą zapewnieniu, że wszystkie przypadki są testowane l Błędy interfejsów powstają na wskutek nieporozumień w specyfikacji, błędów programistów i nieuzasadnionych założeń l Aby przetestować klasę należy przetestować wszystkie metody, pola i stany l Systemy obiektowe należy integrować wokół naturalnych gron


Pobierz ppt "©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 20 Slide 1 Wyszukiwanie błędów l Testowanie programów w celu wyszukania błędów."

Podobne prezentacje


Reklamy Google