Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Testowanie oprogramowania
Jerzy 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, Wprowadzenie
Z 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 pierwsze
Z 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 Model
Z 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, Wprowadzenie
Z pierwszego wykładu.. PSP 1 PSP Estymacja rozmiaru Raporty testowania Planowanie zadań Planowanie harmonogramu J. Nawrocki, Wprowadzenie
6
Doskonalenie wytwarzania
Z 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, Wprowadzenie
Jerzy 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ść oprogramowania
Jerzy 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ść oprogramowania
Rodzaje wymagań Techniczne Nie-techniczne Funkcjonalne Poza-funkcjonalne J. Nawrocki, Wprowadzenie
10
Jakość oprogramowania
Metody zapewniania jakości Przeglądy Testowanie { n+=NF; } END { print n; } J. Nawrocki, Wprowadzenie
11
Jakość oprogramowania
Przeglądy Inspekcje Prezentacje Recenzje { n+=NF; } END { print n; } J. Nawrocki, Wprowadzenie
12
Jakość oprogramowania
Testowanie Testy akceptacyjne Testy systemowe Testy integracyjne Testy jednostkowe { n+=NF; } END { print n; } J. Nawrocki, Wprowadzenie
13
J. Nawrocki, Wprowadzenie
Jerzy 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 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
15
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
16
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
17
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
18
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
19
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
20
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
21
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
22
Wprowadzenie do testowania
Jerzy 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 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
24
J. Nawrocki, Wprowadzenie
Jerzy 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 skrzynki
Graf 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 skrzynki
1 2 3 void PrintGraph(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"); 0: 1 2 3 1: 0 2: 0 3: 0 J. Nawrocki, Wprowadzenie
27
Testowanie białej skrzynki
if r>=n goto .. void PrintGraph(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"); 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 skrzynki
if r>=n goto .. void PrintGraph(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"); 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 skrzynki
if 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 skrzynki
if 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 skrzynki
if 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 skrzynki
if 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 skrzynki
if 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 skrzynki
if 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 skrzynki
if 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, Wprowadzenie
Jerzy 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 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
38
Testowanie czarnej skrzynki
void 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 skrzynki
Zupeł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, Wprowadzenie
Jerzy 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.00
Program: 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, Wprowadzenie
Podsumowanie 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, Wprowadzenie
Literatura 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, Wprowadzenie
Jerzy 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, Wprowadzenie
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
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.