510 likes | 674 Views
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ładów. 11.03 Zasady skutecznego działania 18.03 Kontrola jakości oprogramowania 1.04 Szacowanie rozmiaru i pracochłonności
E N D
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ładów 11.03 Zasady skutecznego działania 18.03 Kontrola jakości oprogramowania 1.04 Szacowanie rozmiaru i pracochłonności 8.04 Standardy serii ISO 9000 15.04 Modele CMMI 22.04 Inżynieria wymagań 29.04 Zarządzanie projektami i PRINCE2 6.05 Personal Software Process 13.05 Team Software Process 20.05 Rational Unified Process 3+10.06 Zwinne metodyki programowania 17.06 Projekty dyplomowe i XPrince J.Nawrocki, Kontrola jakości ...
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 ...
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 ...
Jakość oprogramowania • Crosby: • Jakość = zgodność z wymaganiami • Prewencja > Sprawdzanie Philip Crosby (1926 – 2001) J.Nawrocki, Kontrola jakości ...
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 ...
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 ...
Jakość oprogramowania Jakość projektu (wymagania a projekt) Jakość wykonania (projekt a implementacja) J.Nawrocki, Kontrola jakości ...
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 ...
Cztery filary zapewniania jakości Jakość oprogramowania Testowanie Refaktoryzacja Zarz. konfiguracją Przeglądy 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ł J.Nawrocki, Kontrola jakości ...
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 ...
Cele testowania • Testowanie = wykonanie programu celem znalezienia błędu. • Jakość przypadku testowego: prawdopodobieństwo znalezienia jeszcze nie wykrytego błędu. • Udany test to taki, który wykrywa jeszcze nie wykryty błąd. • -- Glen Myers’79 J.Nawrocki, Kontrola jakości ...
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 ...
Rodzaje testowania J.Nawrocki, Kontrola jakości ...
Rodzaje testowania J.Nawrocki, Kontrola jakości ...
Rodzaje testowania J.Nawrocki, Kontrola jakości ...
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 ...
Organizacja plików Program testujący #include ... Oprogramowanie korzystające z tej funkcji #include ... Testowana funkcja 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; } 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 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 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; } 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; } 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; } 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; } J.Nawrocki, Kontrola jakości ...
Testowanie sterowane danymi Program testujący #include ... Dane testowe Oprogramowanie korzystające z tej funkcji #include ... Testowana funkcja 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; } 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 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; } J.Nawrocki, Kontrola jakości ...
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 ...
Rodzaje testów { n+=NF; } END { print n; } Testy systemowe Testy integracyjne Testy jednostkowe J.Nawrocki, Kontrola jakości ...
Kto testuje? { n+=NF; } END { print n; } Programista Tester dostawcy Klient/użytkownik 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). 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ę. J.Nawrocki, Kontrola jakości ...
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 ...
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 ...
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 ...
Rola przeglądów • Zapewnianie jakości • Przekazywanie informacji J.Nawrocki, Kontrola jakości ...
Inspekcje Fagana Projektant Implementator Moderator Tester Sesja przeglądu J.Nawrocki, Kontrola jakości ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
Pytania? ? J.Nawrocki, Kontrola jakości ...
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 ...
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 ...