Kontrola jakości oprogramowania

Post on 31-Dec-2015

37 views 0 download

description

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 - PowerPoint PPT Presentation

Transcript of Kontrola jakości oprogramowania

Copyright © Jerzy R. Nawrocki

Kontrola jakości oprogramowaniaKontrola jakości oprogramowania

Jerzy.Nawrocki@put.poznan.plwww.cs.put.poznan.pl/jnawrocki/io

Inżynieria oprogramowania IIWykład 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

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

Bądź proaktywny Bądź proaktywny

Zaczynaj mając koniec na względzieZaczynaj mając koniec na względzie

Aby rzeczy pierwsze były pierwszeAby rzeczy pierwsze były pierwsze

Myśl o obopólnej korzyściMyśl o obopólnej korzyści

Najpierw staraj się zrozumiećNajpierw staraj się zrozumieć

Dbaj o synergięDbaj o synergię

Ostrz piłę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. 1987.

David A. Garvin

Harvard Business School

J.Nawrocki, Kontrola jakości ...

Refakto

ryzacja

Cztery filary zapewniania jakości

Testo

wan

ie

Zarz. ko

nfig

uracją

Przeg

lą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.

30 40

Testowanie systemów krytycznych: 70% - 80% całkowitej pracochłonności (!)

-- Roger Pressman’97

Roger S. Pressman

J.Nawrocki, Kontrola jakości ...

Rodzaje testowania

Testy Dane automat.

Dane ręczne

Wykonanie automat.

XP

Wykonanie ręczne

J.Nawrocki, Kontrola jakości ...

Rodzaje testowania

Testy Dane automat.

Dane ręczne

Wykonanie automat.

XP

Wykonanie ręczne

J.Nawrocki, Kontrola jakości ...

Rodzaje testowania

Testy Dane automat.

Dane ręczne

Wykonanie automat.

XP

Wykonanie ręczne

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 Oprogramowanie korzystające z tej korzystające z tej

funkcjifunkcji

#include ...#include ...

Program testujący

#include ...

Danetestowe

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

0 1 1 1 2 1 9 1 10 2 11 2 99 2100 3999 3

J.Nawrocki, Kontrola jakości ...

Rodzaje testów

{ n+=NF; }{ n+=NF; }

END { print n; }END { print n; }

Testy systemoweTesty integracyjneTesty jednostkowe

J.Nawrocki, Kontrola jakości ...

Kto testuje?

{ n+=NF; }{ n+=NF; }

END { print n; }END { print n; }

ProgramistaTester dostawcyKlient/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ś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 ...

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ściPrzekazywanie informacji

J.Nawrocki, Kontrola jakości ...

Projek

tant

Projek

tant

Inspekcje Fagana

Implem

entator

Implem

entator

Mod

erat

or

Mod

erat

or Tester

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. Naprawa5. Sprawdzenie

Prokta

nt

Prokta

nt Implem

.

Implem

.

Mod

erat

or

Mod

erat

or Tester

Tester

Reviewsession

J.Nawrocki, Kontrola jakości ...

Inspekcje Fagana

Pro

jekt

Pro

jekt

Kod

Kod

Tes

tT

est

Specyfikacje zewnętrzne (funkcje)

Specyfikacje wewnętrzne (moduł) - I0

Specyfikacje logiki przetw - I1 inspek projek

Kodowanie (logika) - I2 inspek kodu

Testowanie jednostkowe

Cykl życiaCykl życiaCykl życiaCykl życia

Test funkcji (zewn.), składnika, systemu

J.Nawrocki, Kontrola jakości ...

Inspekcje Fagana

DesignDesignDesignDesign CodeCodeCodeCodeUnitUnit

testtestUnitUnit

testtestI1 I2 I3

Oszczędności (godz/KLOC):

I1: 94

I2 : 51

I3 : -20

J.Nawrocki, Kontrola jakości ...

Inspekcje Fagana

Omówienie (zespół) 500 niepotrzebnePrzygotowanie (indyw.) 100 125Inspekcja (zespół) 130 150Naprawa 50 60Sprawdzenie - -

II11 II22

Prędkość (loc/h)Prędkość (loc/h)

Spotkanie inspekcyjne <= 2 godz1 - 2 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 projektuLista kontrolna dla inspekcji projektu

Ex

Ex

Wr

Wr

Mis

sing

Mis

sing

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

Zapewnianie jakości

Pewien dyrektor w SopociePracując w PZJ-cieChcąc robić coś w robocieWymyślał standardy na krocieZa co dostanie w XXXX po robocie.

-- Anonim

Ostrzeżenie

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

•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