Doskonalenie procesw programowych Wykad 3 Testowanie oprogramowania Jerzy

  • Slides: 45
Download presentation
Doskonalenie procesów programowych Wykład 3 Testowanie oprogramowania Jerzy. Nawrocki@put. poznan. pl http: //www. cs.

Doskonalenie procesów programowych Wykład 3 Testowanie oprogramowania Jerzy. Nawrocki@put. poznan. pl http: //www. cs. put. poznan. pl/jnawrocki/psp J. Nawrocki, Wprowadzenie Copyright, 2001 © Jerzy R. Nawrocki

Z pierwszego wykładu. . Syndrom LOOP Loop L ate (późno) Over budget (przekroczony budżet)

Z pierwszego wykładu. . Syndrom LOOP Loop L ate (późno) Over budget (przekroczony budżet) O vertime (nadgodziny) P oor quality (kiepska jakość) + niechęć do zmian J. Nawrocki, Wprowadzenie

Z pierwszego wykładu. . Aby rzeczy pierwsze były pierwsze Nie ważne Ważne Pilne Nie

Z pierwszego wykładu. . Aby rzeczy pierwsze były pierwsze Nie ważne Ważne Pilne Nie pilne I II “Gaszenie pożarów”, walka z czasem, robienie rzeczy na wczoraj Zapobieganie, planowanie, szkolenia, penetracja możliwości III IV Przerwania, telefony, niektóre spotkania, . . . Oglądanie stron www, niektóre listy dyskusyjne, gazety, programy TV. . J. Nawrocki, Wprowadzenie

Z pierwszego wykładu. . CMM: Capability Maturity Model • Zarządzanie wymaganiami • Planowanie przedsięwzięcia

Z pierwszego wykładu. . CMM: Capability Maturity Model • Zarządzanie wymaganiami • Planowanie przedsięwzięcia 5. Optymalizujący • Śledzenie postępów • Zarządzanie 4. Zarządzany ilościowo podzleceniami 3. Zdefiniowany • Zapewnienie jakości 2. Zarządzany (powtarzalny) • Zarządzanie 1. Początkowy konfiguracją J. Nawrocki, Wprowadzenie

Z pierwszego wykładu. . PSP 1 Estymacja rozmiaru Raporty testowania Planowanie zadań Planowanie harmonogramu

Z pierwszego wykładu. . PSP 1 Estymacja rozmiaru Raporty testowania Planowanie zadań Planowanie harmonogramu J. Nawrocki, Wprowadzenie

Z pierwszego wykładu. . Doskonalenie wytwarzania Wykrywanie defektów Metody formalne Przeglądy artefaktów Testy automatyczne

Z pierwszego wykładu. . Doskonalenie wytwarzania Wykrywanie defektów Metody formalne Przeglądy artefaktów Testy automatyczne Testowanie przypadkowe J. Nawrocki, Wprowadzenie Zarządzanie zmianami Narzędzia zarz. konfig Zarządz. zmianami Konfiguracje w katalogach Chaos i anarchia

Plan wykładu Z pierwszego wykładu. . Jakość oprogramowania Wprowadzenie do testowania Testowanie białej skrzynki

Plan wykładu Z pierwszego wykładu. . Jakość oprogramowania Wprowadzenie do testowania Testowanie białej skrzynki Testowanie czarnej skrzynki Raporty testowania J. Nawrocki, Wprowadzenie

Jakość oprogramowania Philip Crosby’ 83: zgodność z wymaganiami Jakość projektu (wymagania a projekt) Jakość

Jakość oprogramowania Philip Crosby’ 83: zgodność z wymaganiami Jakość projektu (wymagania a projekt) Jakość wykonania (projekt a implementacja) J. Nawrocki, PSP, Lecture 7

Jakość oprogramowania Rodzaje wymagań Techniczne Funkcjonalne J. Nawrocki, Wprowadzenie Nie-techniczne Pozafunkcjonalne

Jakość oprogramowania Rodzaje wymagań Techniczne Funkcjonalne J. Nawrocki, Wprowadzenie Nie-techniczne Pozafunkcjonalne

Jakość oprogramowania Metody zapewniania jakości Przeglądy Testowanie { n+=NF; } END { print n;

Jakość oprogramowania Metody zapewniania jakości Przeglądy Testowanie { n+=NF; } END { print n; } J. Nawrocki, Wprowadzenie

Jakość oprogramowania Przeglądy • Inspekcje • Prezentacje • Recenzje { n+=NF; } END {

Jakość oprogramowania Przeglądy • Inspekcje • Prezentacje • Recenzje { n+=NF; } END { print n; } J. Nawrocki, Wprowadzenie

Jakość oprogramowania Testowanie Testy akceptacyjne Testy systemowe Testy integracyjne Testy jednostkowe { n+=NF; }

Jakość oprogramowania Testowanie Testy akceptacyjne Testy systemowe Testy integracyjne Testy jednostkowe { n+=NF; } END { print n; } J. Nawrocki, Wprowadzenie

Plan wykładu Z pierwszego wykładu. . Jakość oprogramowania Wprowadzenie do testowania Testowanie białej skrzynki

Plan wykładu Z pierwszego wykładu. . Jakość oprogramowania Wprowadzenie do testowania Testowanie białej skrzynki Testowanie czarnej skrzynki Raporty testowania J. Nawrocki, Wprowadzenie

Wprowadzenie do testowania Rola testowania Testowanie oprogramowania jest zasadniczym elementem systemu zapewnienia jakości i

Wprowadzenie do testowania Rola testowania Testowanie oprogramowania jest zasadniczym elementem systemu zapewnienia jakości i stanowi ostateczny przegląd specyfikacji, projektu i kodowania. -- Roger Pressman’ 97 J. Nawrocki, Wprowadzenie

Wprowadzenie do testowania Cele testowania Testowanie = wykonanie programu celem znalezienia błędu. Jakość przypadku

Wprowadzenie do testowania Cele testowania Testowanie = wykonanie programu celem znalezienia błędu. Jakość przypadku testowego: prawdopodobieństwo znalezienie jeszcze nie wykrytego błędu. Udany test to taki, który wykrywa jeszcze nie wykryty błąd. -- Glen Myers’ 79 J. Nawrocki, Wprowadzenie

Wprowadzenie do testowania Powiedzenie Dijkstry Testowaniem nie można wykazać brak błędów, można w ten

Wprowadzenie do testowania Powiedzenie Dijkstry Testowaniem nie można wykazać brak błędów, można w ten sposób jedynie wykazać ich obecność. -- E. W. Dijkstra J. Nawrocki, Wprowadzenie

Wprowadzenie do testowania Pracochłonność testowania Testowanie: ~ 30% - 40% całkowitej pracochłonności. Testowanie systemów

Wprowadzenie do testowania Pracochłonność testowania Testowanie: ~ 30% - 40% całkowitej pracochłonności. Testowanie systemów krytycznych: 70% - 80% całkowitej pracochłonności (!) -- Roger Pressman’ 97 J. Nawrocki, Wprowadzenie

Wprowadzenie do testowania Dobry test. . ma duże prawdopodobieństwo znalezienia błędu, . . nie

Wprowadzenie do testowania Dobry test. . ma duże prawdopodobieństwo znalezienia błędu, . . nie jest nadmiarowy, . . powinien być najlepszy w swoim rodzaju, . . nie powinien być ani zbyt prosty ani zbyt skomplikowany. J. Nawrocki, Wprowadzenie

Wprowadzenie do testowania Zasady testowania • Wszystkie testy powinny być powiązane z wymaganiami użytkownika

Wprowadzenie do testowania Zasady testowania • Wszystkie testy powinny być powiązane z wymaganiami użytkownika • Testowanie należy planować na długo przed jego rozpoczęciem • W przypadku testowania obowiązuje zasada Pareto (80 /20) J. Nawrocki, Wprowadzenie

Wprowadzenie do testowania Zasady testowania • Testowanie należy przeprowadzać “od dołu do góry”. •

Wprowadzenie do testowania Zasady testowania • Testowanie należy przeprowadzać “od dołu do góry”. • Testowanie wyczerpujące nie jest możliwe • Pewne testy powinny być wykonane przez niezależną trzecią stronę. J. Nawrocki, Wprowadzenie

Wprowadzenie do testowania Nawyki skutecznego działania Aby rzeczy pierwsze były pierwsze Zaczynaj mając koniec

Wprowadzenie do testowania Nawyki skutecznego działania Aby rzeczy pierwsze były pierwsze Zaczynaj mając koniec na względzie Bądź proaktywny J. Nawrocki, Wprowadzenie

Wprowadzenie do testowania Praktyki XP A ja tam lubię ręcznie potestować! • Opracuj przypadki

Wprowadzenie do testowania Praktyki XP A ja tam lubię ręcznie potestować! • Opracuj przypadki testowe możliwie jak najwcześniej • Stosuj testowanie automatyczne J. Nawrocki, Wprowadzenie

Wprowadzenie do testowania Testowanie porównawcze • Wielokrotne implementacje • Czasami filtry interfejsu mogą być

Wprowadzenie do testowania Testowanie porównawcze • Wielokrotne implementacje • Czasami filtry interfejsu mogą być pomocne (dwa moduły implementują nie te same ale bardzo podobne funkcje) J. Nawrocki, Wprowadzenie

Plan wykładu Z pierwszego wykładu. . Jakość oprogramowania Wprowadzenie do testowania Testowanie białej skrzynki

Plan wykładu Z pierwszego wykładu. . Jakość oprogramowania Wprowadzenie do testowania Testowanie białej skrzynki Testowanie czarnej skrzynki Raporty testowania J. Nawrocki, Wprowadzenie

Testowanie białej skrzynki • Graf przepływu • Liczba niezależnych ścieżek (złożoność cyklomatyczna - Mc.

Testowanie białej skrzynki • Graf przepływu • Liczba niezależnych ścieżek (złożoność cyklomatyczna - Mc. Cabe’ 76): V(G) = P + 1 P: liczba węzłów decyzyjnych • Utwórz zbiór podstawowy niezależnych ścieżek • Przygotuj przypadki testowe: każdą ścieżkę ze zbioru podstawowego należy przejść przynajmniej raz. J. Nawrocki, Wprowadzenie

Testowanie białej skrzynki 0 1 2 3 0: 1 2 3 1: 0 2:

Testowanie białej skrzynki 0 1 2 3 0: 1 2 3 1: 0 2: 0 3: 0 J. Nawrocki, Wprowadzenie void Print. Graph(int n){ int r, c; for(r=0; r<n; r++){ printf("n%d: ", r); for(c=0; c<n; c++) if(Connected(r, c)) printf(" %d", c); } printf("n"); }

Testowanie białej skrzynki void Print. Graph(int n){ int r, c; for(r=0; r<n; r++){ printf("n%d:

Testowanie białej skrzynki void Print. Graph(int n){ int r, c; for(r=0; r<n; r++){ printf("n%d: ", r); for(c=0; c<n; c++) if(Connected(r, c)) printf(" %d", c); } printf("n"); } r=0; if r>=n goto. . printf(“”, r); c=0; if c>=n goto. . if not Connected goto. . printf(“”, c) c++; r++; J. Nawrocki, Wprowadzenie printf(“n”);

Testowanie białej skrzynki void Print. Graph(int n){ int r, c; for(r=0; r<n; r++){ printf("n%d:

Testowanie białej skrzynki void Print. Graph(int n){ int r, c; for(r=0; r<n; r++){ printf("n%d: ", r); for(c=0; c<n; c++) if(Connected(r, c)) printf(" %d", c); } printf("n"); } V(G) = 3 + 1 = 4 J. Nawrocki, Wprowadzenie r=0; if r>=n goto. . printf(“”, r); c=0; if c>=n goto. . if not Connected goto. . printf(“”, c) c++; r++; printf(“n”);

Testowanie białej skrzynki A-G r=0; A if r>=n goto. . printf(“”, r); B c=0;

Testowanie białej skrzynki A-G r=0; A if r>=n goto. . printf(“”, r); B c=0; if c>=n goto. . if !Connected goto. . C printf(“”, c) D J. Nawrocki, Wprowadzenie c++; E r++; F printf(“n”); G

Testowanie białej skrzynki A-G A-B-F-A-G r=0; A if r>=n goto. . printf(“”, r); B

Testowanie białej skrzynki A-G A-B-F-A-G r=0; A if r>=n goto. . printf(“”, r); B c=0; if c>=n goto. . if !Connected goto. . C printf(“”, c) D J. Nawrocki, Wprowadzenie c++; E r++; F printf(“n”); G

Testowanie białej skrzynki A-G A-B-F-A-G A-B-C-E-B-F-A-G r=0; A if r>=n goto. . printf(“”, r);

Testowanie białej skrzynki A-G A-B-F-A-G A-B-C-E-B-F-A-G r=0; A if r>=n goto. . printf(“”, r); B c=0; if c>=n goto. . if !Connected goto. . C printf(“”, c) D J. Nawrocki, Wprowadzenie c++; E r++; F printf(“n”); G

Testowanie białej skrzynki r=0; A if r>=n goto. . A-G A-B-F-A-G A-B-C-E-B-F-A-G A-B-C-D-E-B-F-A-G J.

Testowanie białej skrzynki r=0; A if r>=n goto. . A-G A-B-F-A-G A-B-C-E-B-F-A-G A-B-C-D-E-B-F-A-G J. Nawrocki, Wprowadzenie printf(“”, r); B c=0; if c>=n goto. . if !Connected goto. . C printf(“”, c) D c++; E r++; F printf(“n”); G

Testowanie białej skrzynki A-G n=0 r=0; A if r>=n goto. . printf(“”, r); B

Testowanie białej skrzynki A-G n=0 r=0; A if r>=n goto. . printf(“”, r); B c=0; if c>=n goto. . if !Connected goto. . C printf(“”, c) D J. Nawrocki, Wprowadzenie c++; E r++; F printf(“n”); G

Testowanie białej skrzynki r=0; A if r>=n goto. . A-B-F-A-G 0 < n and

Testowanie białej skrzynki r=0; A if r>=n goto. . A-B-F-A-G 0 < n and 0 >= n ? ? ? printf(“”, r); B c=0; if c>=n goto. . if !Connected goto. . C printf(“”, c) D J. Nawrocki, Wprowadzenie c++; E r++; F printf(“n”); G

Testowanie białej skrzynki r=0; A if r>=n goto. . A test case for: A-B-F-A-G

Testowanie białej skrzynki r=0; A if r>=n goto. . A test case for: A-B-F-A-G printf(“”, r); B c=0; if c>=n goto. . if !Connected goto. . C 0 printf(“”, c) D n=2 1 A-B-C-E-B-C-D-E-B-F-A-. . -A-G J. Nawrocki, Wprowadzenie c++; E r++; F printf(“n”); G

Plan wykładu Z pierwszego wykładu. . Jakość oprogramowania Wprowadzenie do testowania Testowanie białej skrzynki

Plan wykładu Z pierwszego wykładu. . Jakość oprogramowania Wprowadzenie do testowania Testowanie białej skrzynki Testowanie czarnej skrzynki Raporty testowania J. Nawrocki, Wprowadzenie

Testowanie czarnej skrzynki Cele • • • niepoprawne lub brakujące funkcje błędy interfesju błędy

Testowanie czarnej skrzynki Cele • • • niepoprawne lub brakujące funkcje błędy interfesju błędy w strukturach danych błędy dotyczące wydajności błedy inicjowania i kończenia J. Nawrocki, Wprowadzenie

Testowanie czarnej skrzynki n=0 n=1 void Print. Graph( int n ) 0 n=2 0

Testowanie czarnej skrzynki n=0 n=1 void Print. Graph( int n ) 0 n=2 0 1 n=3 0 1 2 n=3 0 1 J. Nawrocki, Wprowadzenie 2

Testowanie czarnej skrzynki n=0 n=1 Zupełność Mc. Cabe’a 0 n=2 0 1 n=3 n=3

Testowanie czarnej skrzynki n=0 n=1 Zupełność Mc. Cabe’a 0 n=2 0 1 n=3 n=3 0 0 0 1 1 1 J. Nawrocki, Wprowadzenie r=0; A if r>=n goto. . printf(“”, r); B c=0; if c>=n goto. . 2 2 if !Connected goto. . C printf(“”, c) D c++; E r++; F printf(“n”); G

Plan wykładu Z pierwszego wykładu. . Jakość oprogramowania Wprowadzenie do testowania Testowanie białej skrzynki

Plan wykładu Z pierwszego wykładu. . Jakość oprogramowania Wprowadzenie do testowania Testowanie białej skrzynki Testowanie czarnej skrzynki Raporty testowania J. Nawrocki, Wprowadzenie

Raporty testowania Tester: . . . Program: . . . . Data: . .

Raporty testowania Tester: . . . Program: . . . . Data: . . . Symbol testu: . . Cel testu: . . . . . . . . . Warunki testowania: . . . . . . . . Wejście J. Nawrocki, Wprowadzenie Oczekiwane wyj Faktyczne wyj

Raporty testowania Tester: J. Nawrocki Program: Graph. Col Data: 18. 01. 00 Symbol testu:

Raporty testowania Tester: J. Nawrocki Program: Graph. Col Data: 18. 01. 00 Symbol testu: N 2 Full Cel testu: Sprawdzić program dla grafu składającego się z 2 węzłów. Warunki testowania: Wejście Oczekiwane wyj Faktyczne wyj 0: 1 1: 0 J. Nawrocki, Wprowadzenie

Podsumowanie Testowanie jest działalnością destrukcyjną. Testowanie może wykazać braku błędów. Testowanie > 30% całkowitego

Podsumowanie Testowanie jest działalnością destrukcyjną. Testowanie może wykazać braku błędów. Testowanie > 30% całkowitego nakładu pracy. Wszystkie testy powinny być powiązane z wymaganiami użytkownika. Testowanie na zasadzie białej i czarnej skrzynki. J. Nawrocki, Wprowadzenie

Literatura • W. S. Humphrey, A Discipline for Software Engineering, Addison-Wesley, Reading, 1995. •

Literatura • W. S. Humphrey, A Discipline for Software Engineering, Addison-Wesley, Reading, 1995. • R. S. Pressman, Software Engineering. A Practitioner’s Approach, Mc. Graw-Hill, New York, 1997. • J. Nawrocki, W. Complak, Wprowadzenie do przetwarzania tekstów w języku AWK, Pro Dialog 2 (1994), 23 -46. J. Nawrocki, Wprowadzenie

Ocena wykładu 1. Wrażenie ogólne (1 - 6) 2. Za szybko czy za wolno?

Ocena wykładu 1. Wrażenie ogólne (1 - 6) 2. Za szybko czy za wolno? 3. Czy dowiedziałeś się czegoś ważnego? 4. Co i jak poprawić? J. Nawrocki, Wprowadzenie