Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Copyright © Jerzy R. Nawrocki Kontrola jakości oprogramowania Inżynieria oprogramowania.

Podobne prezentacje


Prezentacja na temat: "Copyright © Jerzy R. Nawrocki Kontrola jakości oprogramowania Inżynieria oprogramowania."— Zapis prezentacji:

1 Copyright © Jerzy R. Nawrocki Kontrola jakości oprogramowania Jerzy.Nawrocki@put.poznan.pl www.cs.put.poznan.pl/jnawrocki/io Inżynieria oprogramowania II Wykład 3

2 J.Nawrocki, Kontrola jakości... Plan wykładu Pojęcie jakości Pojęcie jakości Testowanie Testowanie Przeglądy Przeglądy Kontrola jakości Szacowanie rozmiaru i Standardy serii ISO 9000 Modele CMM/CMMI Inżynieria wymagań Zarządzanie projektami Personal Software Process Team Software Process Zwinne metodyki Rational Unified Process Projekty dyplomowe

3 J.Nawrocki, Kontrola jakości... Plan wykładu Pojęcie jakości Testowanie Przeglądy Kontrola jakości Szacowanie rozmiaru i Standardy serii ISO 9000 Modele CMM/CMMI Inżynieria wymagań Zarządzanie projektami Personal Software Process Team Software Process Zwinne metodyki Rational Unified Process Projekty dyplomowe

4 J.Nawrocki, Kontrola jakości... Jakość oprogramowaniaCrosby: Jakość = zgodność z wymaganiami Prewencja > Sprawdzanie Philip Crosby (1926 – 2001)

5 J.Nawrocki, Kontrola jakości... Koszt naprawy błędu Względny czas identyfikacji błędu ( IBM ): w trakcie przeglądu projektu: 1 w trakcie przeglądu projektu: 1 w trakcie inspekcji kodu: 20 w trakcie inspekcji kodu: 20 w trakcie testów maszynowych: 82 w trakcie testów maszynowych: 82

6 J.Nawrocki, Kontrola jakości... Zasady skutecznego działania Bądź proaktywny Zaczynaj mając koniec na względzie Aby rzeczy pierwsze były pierwsze Myśl o obopólnej korzyści Najpierw staraj się zrozumieć Dbaj o synergię Ostrz piłę

7 J.Nawrocki, Kontrola jakości... Jakość oprogramowania Jakość projektu (wymagania a projekt) Jakość wykonania (projekt a implementacja)

8 J.Nawrocki, Kontrola jakości... Osiem wymiarów jakości 1. Wydajność (szybkość,..) 2. Niezawodność (częst. błędów) 3. Wytrzymałość (jak długo) 4. Łatwość naprawy 5. Estetyka 6. Cechy funkcjonalne 7. Reputacja 8. Zgodność ze standardami i wymaganiami D.A. Garvin, Competing in the Eight Dimensions of Quality, Harvard Business Review, Sept.-Oct. 1987. David A. Garvin Harvard Business School

9 J.Nawrocki, Kontrola jakości... Refaktoryzacja Cztery filary zapewniania jakości Testowanie Zarz. konfiguracją Przeglądy Jakość oprogramowania

10 J.Nawrocki, Kontrola jakości... Przetargi dot. kontroli jakości SI Platforma Wyborcza: ok. 1 mln zł SI GIIF (MF): kilkaset tysięcy złotych System Zintegrowanej Taryfy Celnej ISZTAR2: 600 godz. x 300 zł/godz.  200 tys. zł

11 J.Nawrocki, Kontrola jakości... Plan wykładu Pojęcie jakości Testowanie Przeglądy Kontrola jakości Szacowanie rozmiaru i Standardy serii ISO 9000 Modele CMM/CMMI Inżynieria wymagań Zarządzanie projektami Personal Software Process Team Software Process Zwinne metodyki Rational Unified Process Projekty dyplomowe

12 J.Nawrocki, Kontrola jakości... Cele testowania wg Glena Myersa (1979) Testowanie = Jakość przypadku testowego : Udany test : wykonanie programu celem znalezienia błędu. prawdopodob. znalezienia jeszcze nie wykrytego błędu. taki, który wykrywa jeszcze nie wykryty błąd.

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

14 J.Nawrocki, Kontrola jakości... Rodzaje testowania Wykonanie ręczne XPWykonanie automat. Dane ręczneDane automat.Testy

15 J.Nawrocki, Kontrola jakości... Rodzaje testowania Wykonanie ręczne XPWykonanie automat. Dane ręczneDane automat. Testy

16 J.Nawrocki, Kontrola jakości... Rodzaje testowania Wykonanie ręczne XPWykonanie automat. Dane ręczneDane automat. Testy

17 J.Nawrocki, Kontrola jakości... Jeden program w dwóch plikach #include "liczbacy.c" void main() { int X, C; scanf("%d", &X); C= LiczbaCyfr(X); printf("%d ma cyfr: %d \n", X, C); return; } int LiczbaCyfr(int n) { int C, G; C= 1; G= 10; while (n >= G) { C= C + 1; G= G * 10; } return C; } liczbacy.c

18 J.Nawrocki, Kontrola jakości... Organizacja plików Testowana funkcja Oprogramowanie korzystające z tej funkcji #include... Program testujący #include...

19 J.Nawrocki, Kontrola jakości... Prosty program testujący #include "liczbacy.c" void main() { int n, fWynik, oWynik, Blad; int Blad=0; n=0; oWynik=1; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } n=10; oWynik=2; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } if (Blad == 0) { printf("Wszystko OK. Brawo!\n"); } return; }

20 J.Nawrocki, Kontrola jakości... Prosty program testujący #include "liczbacy.c" void main() { int n, fWynik, oWynik, Blad; int Blad=0; n=0; oWynik=1; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } n=10; oWynik=2; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } if (Blad == 0) { printf("Wszystko OK. Brawo!\n"); } return; } Dane wejściowe Oczekiwane wyniki Faktyczne wyniki

21 J.Nawrocki, Kontrola jakości... Prosty program testujący #include "liczbacy.c" void main() { int n, fWynik, oWynik, Blad; int Blad=0; n=0; oWynik=1; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } n=10; oWynik=2; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } if (Blad == 0) { printf("Wszystko OK. Brawo!\n"); } return; } Oczekiwane wyniki Faktyczne wyniki

22 J.Nawrocki, Kontrola jakości... Prosty program testujący #include "liczbacy.c" void main() { int n, fWynik, oWynik, Blad; int Blad=0; n=0; oWynik=1; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } n=10; oWynik=2; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } if (Blad == 0) { printf("Wszystko OK. Brawo!\n"); } return; }

23 J.Nawrocki, Kontrola jakości... Prosty program testujący #include "liczbacy.c" void main() { int n, fWynik, oWynik, Blad; int Blad=0; n=0; oWynik=1; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } n=10; oWynik=2; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } if (Blad == 0) { printf("Wszystko OK. Brawo!\n"); } return; }

24 J.Nawrocki, Kontrola jakości... Prosty program testujący #include "liczbacy.c" void main() { int n, fWynik, oWynik, Blad; int Blad=0; n=0; oWynik=1; fWynik= LiczbaCyfr(n); if (fWynik != oWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } n=10; oWynik=2; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } if (Blad == 0) { printf("Wszystko OK. Brawo!\n"); } return; }

25 J.Nawrocki, Kontrola jakości... Wada prostego programu testującego #include "liczbacy.c" void main() { int n, fWynik, oWynik, Blad; int Blad=0; n=0 ; oWynik=1 ; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } n=10 ; oWynik=2 ; fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } if (Blad == 0) { printf("Wszystko OK. Brawo!\n"); } return; }

26 J.Nawrocki, Kontrola jakości... Testowanie sterowane danymi Testowana funkcja Oprogramowanie korzystające z tej funkcji #include... Program testujący #include... Dane testowe

27 J.Nawrocki, Kontrola jakości... Testowanie sterowane danymi – Program testujący #include "liczbacy.c" void main() { int n, fWynik, oWynik; int Blad=0; while (scanf("%d %d", &n, &oWynik)>0){ fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } if (Blad == 0) { printf("Wszystko OK. Brawo!\n"); } return; }

28 J.Nawrocki, Kontrola jakości... Testowanie sterowane danymi – Program testujący #include "liczbacy.c" void main() { int n, fWynik, oWynik; int Blad=0; while (scanf("%d %d", &n, &oWynik)>0){ fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } if (Blad == 0) { printf("Wszystko OK. Brawo!\n"); } return; } Jest w pliku jeszcze jeden przypadek testowy

29 J.Nawrocki, Kontrola jakości... Testowanie sterowane danymi – Program testujący #include "liczbacy.c" void main() { int n, fWynik, oWynik; int Blad=0; while (scanf("%d %d", &n, &oWynik)>0){ fWynik= LiczbaCyfr(n); if (oWynik != fWynik){ printf("LiczbaCyfr(%d)=%d a nie %d.\n", n, fWynik, oWynik); Blad=1; } if (Blad == 0) { printf("Wszystko OK. Brawo!\n"); } return; }

30 J.Nawrocki, Kontrola jakości... Wszystko OK. Brawo! Dane testowe dla LiczbaCyfr Testowana funkcja Program testujący #include... 0 1 1 1 2 1 9 1 10 2 11 2 99 2 100 3 999 3

31 J.Nawrocki, Kontrola jakości... Rodzaje testów { n+=NF; } { n+=NF; } END { print n; } Testy systemowe Testy integracyjne Testy jednostkowe

32 J.Nawrocki, Kontrola jakości... Kto testuje? { n+=NF; } { n+=NF; } END { print n; } Programista Tester dostawcy Klient/użytkownik

33 J.Nawrocki, Kontrola jakości... 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).

34 J.Nawrocki, Kontrola jakości... 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ę.

35 J.Nawrocki, Kontrola jakości... Słabości testowania Testowaniem nie można wykazać braku błędów, można w ten sposób jedynie wykazać ich obecność. -- E.W................ Powiedzenie Dijkstra Dijkstry

36 J.Nawrocki, Kontrola jakości... Plan wykładu Pojęcie jakościPojęcie jakości TestowanieTestowanie Przeglądy Przeglądy Kontrola jakości Szacowanie rozmiaru i Standardy serii ISO 9000 Modele CMM/CMMI Inżynieria wymagań Zarządzanie projektami Personal Software Process Team Software Process Zwinne metodyki Rational Unified Process Projekty dyplomowe

37 J.Nawrocki, Kontrola jakości... Artefakt Przegląd Przegląd (review) = Analiza artefaktu (np.kodu, dokumentu) realizowana przez grupę osób. Inspekcja (inspection) = Najbardziej sformalizowana postać przeglądu

38 J.Nawrocki, Kontrola jakości... Rola przeglądów Zapewnianie jakości Przekazywanie informacji

39 J.Nawrocki, Kontrola jakości... Projektant Inspekcje FaganaImplementator Moderator Tester Sesja przeglądu

40 J.Nawrocki, Kontrola jakości... Inspekcje Fagana 1. Omówienie (cały zespół) 2. Przygot. (indywidualnie) 3. Inspekcja (cały zespół) 4. Naprawa 5. Sprawdzenie Proktant Implem. Moderator Tester Review session

41 J.Nawrocki, Kontrola jakości... Inspekcje FaganaProjekt Kod Test Specyfikacje zewnętrzne (funkcje) Specyfikacje wewnętrzne (moduł) - I 0 Specyfikacje logiki przetw - I 1 inspek projek Kodowanie (logika) - I 2 inspek kodu Testowanie jednostkowe Cykl życia Test funkcji (zewn.), składnika, systemu

42 J.Nawrocki, Kontrola jakości... Inspekcje FaganaDesignDesignCodeCodeUnittestUnittest I1I1 I2I2 I3I3 Oszczędności (godz/KLOC): I 1 : 94 I 2 : 51 I 3 : -20

43 J.Nawrocki, Kontrola jakości... Inspekcje Fagana Omówienie (zespół) 500 niepotrzebne Przygotowanie (indyw.) 100 125 Inspekcja (zespół) 130 150 Naprawa 50 60 Sprawdzenie - - I1I1I1I1 I2I2I2I2 Prędkość (loc/h) Spotkanie inspekcyjne <= 2 godz 1 - 2 spotkania na dzień

44 J.Nawrocki, Kontrola jakości... Inspekcje Fagana Czy wszystkie stałe są zdefiniowane? Czy w trakcie manipulacji kolejką może wystąpić przerwanie? Jeśli tak, to czy kolejka jest ujęta w rejon krytyczny? Czy rejestry są odtwarzane przy wyjściu? Czy wszystkie liczniki są odpowiednio inicjowane (0 lub 1)? Czy są literały numeryczne, które powinny być zastąpione stałymi symbolicznymi? Czy wszystkie bloki na schemacie są potrzebne Lista kontrolna dla inspekcji projektu Ex Wr Missing

45 J.Nawrocki, Kontrola jakości... Plan wykładu Pojęcie jakości Pojęcie jakości Testowanie Testowanie Przeglądy Przeglądy Kontrola jakości Szacowanie rozmiaru i Standardy serii ISO 9000 Modele CMM/CMMI Inżynieria wymagań Zarządzanie projektami Personal Software Process Team Software Process Zwinne metodyki Rational Unified Process Projekty dyplomowe

46 J.Nawrocki, Kontrola jakości... Zapewnianie jakości Pewien dyrektor w Sopocie Pracując w PZJ-cie Chcąc robić coś w robocie Wymyślał standardy na krocie Za co dostanie w XXXX po robocie. -- Anonim Ostrzeżenie


Pobierz ppt "Copyright © Jerzy R. Nawrocki Kontrola jakości oprogramowania Inżynieria oprogramowania."

Podobne prezentacje


Reklamy Google