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

Slides:



Advertisements
Podobne prezentacje
Programowanie Ekstemalne
Advertisements

Rodzaje testów oprogramowania
Programowanie Ekstremalne
Projektowanie Aplikacji Komputerowych
Próba eksperymentalnej oceny metody PROBE
Przetwarzanie tekstów i AWK Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do.
Lekkie metodyki programowania: Szansa czy zagrożenie?
Organizacja Przedsięwzięć Programistycznych Wykład 7, 27.II.03
Inżynieria oprogramowania II Wykład 5 Standardy serii ISO 9000
Inżynieria oprogramowania II Wykład 4 Normy serii ISO 9000
Inżynieria oprogramowania Copyright, 2000 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Zwinne metodyki programowania
Szacowanie rozmiaru i pracochłonności
Przetwarzanie tekstów i AWK Copyright, 2001 © Jerzy R. Nawrocki Wprowadzenie do.
Inżynieria oprogramowania II Wykład 12 Projekty dyplomowe
Zarządzanie konfiguracją Doskonalenie Procesów Programowych Wykład 6 Copyright, 2001 © Jerzy.
Wprowadzenie do przedmiotu
Zasady skutecznego działania
Model dojrzałości CMMI
Copyright © Jerzy R. Nawrocki Standardy serii ISO Inżynieria oprogramowania II Wykład.
Zwinne metodyki programowania Copyright, 2006 © Jerzy R. Nawrocki Inżynieria oprogramowania.
Copyright © Jerzy R. Nawrocki Kontrola jakości oprogramowania Inżynieria oprogramowania.
Wykład 1 Inżynieria oprogramowania II Wykład 1 Wprowadzenie
Inżynieria Oprogramowania Copyright, 2002 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Szacowanie rozmiaru i pracochłonności
Personal Software Process
XPrince: Równoważenie zwinności i dyscypliny
J. Nawrocki, Inżynieria oprog. Plan wykładu Praktyki XP Wcześniejsze badania Personal Software Process eXtremme Programming Opis eksperymentu WynikiPodsumowanie.
Analiza i walidacja wymagań
Copyright © Jerzy R. Nawrocki Zbieranie wymagań Analiza systemów informatycznych Wykład.
Copyright © Jerzy R. Nawrocki Wprowadzenie Analiza systemów informatycznych Wykład.
Inżynieria oprogramowania II Wykład 10 PRINCE2 i TSP
Testy akceptacyjne Analiza systemów informatycznych Wykład 9
Szacowanie pracochłonności
Modelowanie i język UML
Dokument specyfikacji wymagań
Dyscyplina i zwinność w projektach informatycznych
Dyscyplina i zwinność w projektach informatycznych (cz. 2)
Wprowadzenie do przedmiotu
Metody numeryczne Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Przetwarzanie tekstów i AWK
Programowanie imperatywne i język C
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Modularyzacja i struktury danych w C Copyright, 2005 © Jerzy R. Nawrocki Wprowadzenie.
Programowanie imperatywne i język C Copyright, 2005 © Jerzy R. Nawrocki Wstęp.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Copyright © Jerzy R. Nawrocki Personal Software Process Inżynieria oprogramowania II Wykład.
Testowanie oprogramowania
Copyright © Jerzy R. Nawrocki Szacowanie rozmiaru i pracochłonności Inżynieria oprogramowania.
Język C – Część II Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie do informatyki.
Wyrażenia regularne i język AWK
Zarządzanie przedsięwzięciami i PRINCE2
Szacowanie rozmiaru oprogramowania
Pomiary w inżynierii oprogramowania
Pomiary w inżynierii oprogramowania
Wykład 2 Cykl życia systemu informacyjnego
Programowanie imperatywne i język C Copyright, 2006 © Jerzy R. Nawrocki Wstęp do.
Copyright © Jerzy R. Nawrocki Metody formalne Inżynieria oprogramowania II Wykład 5.
Pomiary procesów programistycznych Copyright, 2002 © Jerzy R. Nawrocki Zarządzanie jakością.
Inżynieria oprogramowania
Przetwarzanie tekstów i AWK Copyright, 2007 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład 5
Języki formalne Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
Copyright © Jerzy R. Nawrocki Team Software Process Inżynieria oprogramowania II Wykład.
7/1/ Projektowanie Aplikacji Komputerowych Piotr Górczyński Cykl życia systemu.
Innowacyjne metody zarządzania jakością oprogramowania Przeglądy oprogramowania i standard IEEE 1028 Bartosz Michalik
Inżynieria oprogramowania
Zarządzanie projektami informatycznymi
Kontrola jakości Inżynieria oprogramowania II
Zapis prezentacji:

Copyright © Jerzy R. Nawrocki Kontrola jakości oprogramowania Inżynieria oprogramowania II Wykład 3

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

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

J.Nawrocki, Kontrola jakości... Jakość oprogramowaniaCrosby: 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 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

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łę

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 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 David A. Garvin Harvard Business School

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

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 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

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.

J.Nawrocki, Kontrola jakości... Pracochłonność testowania 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 Wykonanie ręczne XPWykonanie automat. Dane ręczneDane automat.Testy

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

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

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

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

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 Testowana funkcja Oprogramowanie korzystające z tej funkcji #include... Program testujący #include... Dane testowe

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... Wszystko OK. Brawo! Dane testowe dla LiczbaCyfr Testowana funkcja Program testujący #include

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

J.Nawrocki, Kontrola jakości... Kto testuje? { n+=NF; } { 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 Testowaniem nie można wykazać braku błędów, można w ten sposób jedynie wykazać ich obecność. -- E.W Powiedzenie Dijkstra Dijkstry

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

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

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

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

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

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

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

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

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

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

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