1 / 49

Kontrola jakości oprogramowania

Inżynieria oprogramowania II Wykład 3. Kontrola jakości oprogramowania. Jerzy.Nawrocki@put.poznan.pl www.cs.put.poznan.pl/jnawrocki/io. Plan wykładu. Kontrola jakości Szacowanie rozmiaru i Standardy serii ISO 9000 Modele CMM/CMMI Inżynieria wymagań Zarządzanie projektami

Download Presentation

Kontrola jakości oprogramowania

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Plan wykładu • 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 • Pojęcie jakości • Testowanie • Przeglądy J.Nawrocki, Kontrola jakości ...

  3. Plan wykładu • 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 • Pojęcie jakości • Testowanie • Przeglądy J.Nawrocki, Kontrola jakości ...

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

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

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

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

  8. Osiem wymiarów jakości D.A. Garvin, Competing in the Eight Dimensions of Quality, Harvard Business Review, Sept.-Oct. 1987. 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 David A. Garvin Harvard Business School J.Nawrocki, Kontrola jakości ...

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

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

  11. Plan wykładu • 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 • Pojęcie jakości • Testowanie • Przeglądy J.Nawrocki, Kontrola jakości ...

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

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

  14. Rodzaje testowania J.Nawrocki, Kontrola jakości ...

  15. Rodzaje testowania J.Nawrocki, Kontrola jakości ...

  16. Rodzaje testowania J.Nawrocki, Kontrola jakości ...

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

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

  19. 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; } J.Nawrocki, Kontrola jakości ...

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

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

  22. 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; } J.Nawrocki, Kontrola jakości ...

  23. 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; } J.Nawrocki, Kontrola jakości ...

  24. 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; } J.Nawrocki, Kontrola jakości ...

  25. 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; } J.Nawrocki, Kontrola jakości ...

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

  27. 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; } J.Nawrocki, Kontrola jakości ...

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

  29. 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; } J.Nawrocki, Kontrola jakości ...

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

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

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

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

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

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

  36. Plan wykładu • 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 • Pojęcie jakości • Testowanie • Przeglądy J.Nawrocki, Kontrola jakości ...

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

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

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

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

  41. Inspekcje Fagana Cykl życia Specyfikacje zewnętrzne (funkcje) Specyfikacje wewnętrzne (moduł) -I0 Specyfikacje logiki przetw - I1 inspek projek Projekt Kodowanie (logika) - I2 inspek kodu Testowanie jednostkowe Kod Test funkcji (zewn.), składnika, systemu Test J.Nawrocki, Kontrola jakości ...

  42. Inspekcje Fagana Design I1 Code I2 Unit test I3 Oszczędności (godz/KLOC): I1: 94 I2 : 51 I3 : -20 J.Nawrocki, Kontrola jakości ...

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

  44. Inspekcje Fagana Lista kontrolna dla inspekcji projektu • 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 Missing Wr Ex J.Nawrocki, Kontrola jakości ...

  45. Plan wykładu • 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 • Pojęcie jakości • Testowanie • Przeglądy J.Nawrocki, Kontrola jakości ...

  46. Zapewnianie jakości Ostrzeżenie • 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 J.Nawrocki, Kontrola jakości ...

  47. Pytania? ? J.Nawrocki, Kontrola jakości ...

  48. 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, Kontrola jakości ...

  49. Plan wykładu • 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 • Pojęcie jakości • Testowanie • Przeglądy J.Nawrocki, Kontrola jakości ...

More Related