Testowanie oprogramowania

1 Testowanie oprogramowaniaJerzy Nawrocki Doskonalenie pr...
Author: Kołek Ziegert
0 downloads 0 Views

1 Testowanie oprogramowaniaJerzy Nawrocki Doskonalenie procesów programowych Wykład 3 Testowanie oprogramowania Copyright, 2001 © Jerzy R. Nawrocki Doskonalenie Procesów Programowych, Wykład 1

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

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

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

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

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

7 J. Nawrocki, WprowadzenieJerzy Nawrocki Plan wykładu Z pierwszego wykładu.. Jakość oprogramowania Wprowadzenie do testowania Testowanie białej skrzynki Testowanie czarnej skrzynki Raporty testowania J. Nawrocki, Wprowadzenie Doskonalenie Procesów Programowych, Wykład 1

8 Jakość oprogramowaniaJerzy Nawrocki Jakość oprogramowania Philip Crosby’83: zgodność z wymaganiami Jakość projektu (wymagania a projekt) Jakość wykonania (projekt a implementacja) J. Nawrocki, PSP, Lecture 7 Doskonalenie Procesów Programowych, Wykład 1

9 Jakość oprogramowaniaRodzaje wymagań Techniczne Nie-techniczne Funkcjonalne Poza-funkcjonalne J. Nawrocki, Wprowadzenie

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

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

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

13 J. Nawrocki, WprowadzenieJerzy Nawrocki Plan wykładu Z pierwszego wykładu.. Jakość oprogramowania Wprowadzenie do testowania Testowanie białej skrzynki Testowanie czarnej skrzynki Raporty testowania J. Nawrocki, Wprowadzenie Doskonalenie Procesów Programowych, Wykład 1

14 Wprowadzenie do testowaniaRola 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

15 Wprowadzenie do testowaniaCele 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

16 Wprowadzenie do testowaniaPowiedzenie 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

17 Wprowadzenie do testowaniaPracochł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

18 Wprowadzenie do testowaniaDobry 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

19 Wprowadzenie do testowaniaZasady 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

20 Wprowadzenie do testowaniaZasady 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

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

22 Wprowadzenie do testowaniaJerzy Nawrocki 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 Doskonalenie Procesów Programowych, Wykład 1

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

24 J. Nawrocki, WprowadzenieJerzy Nawrocki Plan wykładu Z pierwszego wykładu.. Jakość oprogramowania Wprowadzenie do testowania Testowanie białej skrzynki Testowanie czarnej skrzynki Raporty testowania J. Nawrocki, Wprowadzenie Doskonalenie Procesów Programowych, Wykład 1

25 Testowanie białej skrzynkiGraf przepływu Liczba niezależnych ścieżek (złożoność cyklomatyczna - McCabe’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

26 Testowanie białej skrzynki1 2 3 void PrintGraph(int n){ int r, c; for(r=0; r printf("\n%d:", r); for(c=0; c if(Connected(r, c)) printf(" %d", c); } printf("\n"); 0: 1 2 3 1: 0 2: 0 3: 0 J. Nawrocki, Wprowadzenie

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

28 Testowanie białej skrzynkiif r>=n goto .. void PrintGraph(int n){ int r, c; for(r=0; r printf("\n%d:", r); for(c=0; c if(Connected(r, c)) printf(" %d", c); } printf("\n"); printf(“”, r); c=0; if c>=n goto .. if not Connected goto .. printf(“”, c) c++; r++; V(G) = = 4 printf(“\n”); J. Nawrocki, Wprowadzenie

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

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

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

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

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

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

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

36 J. Nawrocki, WprowadzenieJerzy Nawrocki Plan wykładu Z pierwszego wykładu.. Jakość oprogramowania Wprowadzenie do testowania Testowanie białej skrzynki Testowanie czarnej skrzynki Raporty testowania J. Nawrocki, Wprowadzenie Doskonalenie Procesów Programowych, Wykład 1

37 Testowanie czarnej skrzynkiCele 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

38 Testowanie czarnej skrzynkivoid PrintGraph( int n ) n = 1 1 n = 2 1 n = 2 n = 3 1 2 n = 3 1 2 n = 3 1 2 n = 3 1 2 J. Nawrocki, Wprowadzenie

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

40 J. Nawrocki, WprowadzenieJerzy Nawrocki Plan wykładu Z pierwszego wykładu.. Jakość oprogramowania Wprowadzenie do testowania Testowanie białej skrzynki Testowanie czarnej skrzynki Raporty testowania J. Nawrocki, Wprowadzenie Doskonalenie Procesów Programowych, Wykład 1

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

42 Raporty testowania Tester: J. Nawrocki Data: 18.01.00Program: GraphCol Symbol testu: N2Full Cel testu: Sprawdzić program dla grafu składającego się z 2 węzłów. Warunki testowania: - Wejście Oczekiwane wyj 0: 1 1: 0 Faktyczne wyj 0: 1 1: 0 J. Nawrocki, Wprowadzenie

43 J. Nawrocki, WprowadzeniePodsumowanie Testowanie jest działalnością destrukcyjną. Testowanie nie 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. Wreszcie! J. Nawrocki, Wprowadzenie

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

45 J. Nawrocki, WprowadzenieJerzy Nawrocki Zadania domowe Wybierz 5 najważniejszych z Twojego punktu widzenia zasad zarządzania czasem i spróbuj je wdrożyć. Zredaguj afirmację dotyczącą Twoich studiów. Napisz swoją misję. J. Nawrocki, Wprowadzenie Doskonalenie Procesów Programowych, Wykład 1

46 J. Nawrocki, WprowadzenieOcena 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