1
8
8
Jerzy R. Jaworowski,
Jerzy R. Jaworowski,
dr in
dr in
ż
ż
.
.
Instytut Teleinformatyki PK
Instytut Teleinformatyki PK
Zaawansowane techniki
Zaawansowane techniki
programowania
programowania
2013 / 2014
2013 / 2014
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
2
2
8
8
Zarys
Zarys
•
•
Definicja
Definicja
•
•
Development
Development
•
•
Prosty przyk
Prosty przyk
ł
ł
ad
ad
•
•
Zalety i wady
Zalety i wady
•
•
Framework
Framework
’
’
i
i
•
•
Do
Do
ś
ś
wiadczenia praktyczne
wiadczenia praktyczne
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
3
3
8
8
Test Driven Development
Test Driven Development
(TDD)
(TDD)
•
•
Ewolucyjne podej
Ewolucyjne podej
ś
ś
cie do technik
cie do technik
programowania (tworzenia aplikacji) w
programowania (tworzenia aplikacji) w
kt
kt
ó
ó
rym zobowi
rym zobowi
ą
ą
zani jeste
zani jeste
ś
ś
my stworzy
my stworzy
ć
ć
w pierwszym kroku test, kt
w pierwszym kroku test, kt
ó
ó
ry nie ma
ry nie ma
prawa zako
prawa zako
ń
ń
czy
czy
ć
ć
si
si
ę
ę
pomy
pomy
ś
ś
lnie dop
lnie dop
ó
ó
ki
ki
nie dopiszemy w kroku drugim nowego
nie dopiszemy w kroku drugim nowego
fragmentu kodu funkcjonalnego
fragmentu kodu funkcjonalnego
.
.
•
•
Istotnie r
Istotnie r
ó
ó
ż
ż
ni si
ni si
ę
ę
od podej
od podej
ś
ś
cia
cia
tradycyjnego w kt
tradycyjnego w kt
ó
ó
rym tworzymy kod, a
rym tworzymy kod, a
nast
nast
ę
ę
pnie go testujemy (by
pnie go testujemy (by
ć
ć
mo
mo
ż
ż
e !)
e !)
.
.
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
4
4
8
8
Development Cycle
Development Cycle
add functionality
add a test
run the test
everything ?
[Pass]
[Fail]
[Development
continues]
[Development stops]
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
5
5
8
8
Przyk
Przyk
ł
ł
ad
ad
•
•
Projektujemy elementarn
Projektujemy elementarn
ą
ą
metod
metod
ę
ę
,
,
kt
kt
ó
ó
ra posiadaj
ra posiadaj
ą
ą
c dwa argumenty
c dwa argumenty
Integer
Integer
, zwraca obiekt
, zwraca obiekt
Integer
Integer
stanowi
stanowi
ą
ą
cy ich sum
cy ich sum
ę
ę
.
.
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
6
6
8
8
Przyk
Przyk
ł
ł
ad
ad
•
•
Test
Test
Integer i =
Integer i =
new Integer(5);
new Integer(5);
Integer j = new Interger(2);
Integer j = new Interger(2);
Object
Object
o =
o =
sum(i,j
sum(i,j
);
);
•
•
Method
Method
2
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
7
7
8
8
Przyk
Przyk
ł
ł
ad
ad
•
•
Test
Test
Integer i =
Integer i =
new Integer(5);
new Integer(5);
Integer j = new Interger(2);
Integer j = new Interger(2);
Object
Object
o =
o =
sum(i,j
sum(i,j
);
);
•
•
Method
Method
public static Object
public static Object
sum(Integer
sum(Integer
i,
i,
I
I
nteger
nteger
j)
j)
{
{
return new Object();
return new Object();
}
}
true
true
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
8
8
8
8
Przyk
Przyk
ł
ł
ad
ad
•
•
Test
Test
Integer i =
Integer i =
new Integer(5);
new Integer(5);
Integer j = new Interger(2);
Integer j = new Interger(2);
Object
Object
o =
o =
sum(i,j
sum(i,j
);
);
return
return
(o
(o
instanceof
instanceof
Integer)
Integer)
;
;
•
•
Method
Method
public static Object
public static Object
sum(Integer
sum(Integer
i,
i,
I
I
nteger
nteger
j)
j)
{
{
return new Object();
return new Object();
}
}
false
false
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
9
9
8
8
Przyk
Przyk
ł
ł
ad
ad
•
•
Test
Test
Integer i =
Integer i =
new Integer(5);
new Integer(5);
Integer j = new Interger(2);
Integer j = new Interger(2);
Object
Object
o =
o =
sum(i,j
sum(i,j
);
);
return
return
(o
(o
instanceof
instanceof
Integer)
Integer)
;
;
•
•
Method
Method
public static Object
public static Object
sum(Integer
sum(Integer
i,
i,
I
I
nteger
nteger
j)
j)
{
{
return new
return new
Integer
Integer
();
();
}
}
true
true
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
10
10
8
8
Przyk
Przyk
ł
ł
ad
ad
•
•
Test
Test
Integer i =
Integer i =
new Integer(5);
new Integer(5);
Integer j = new Interger(2);
Integer j = new Interger(2);
Object
Object
o =
o =
sum(i,j
sum(i,j
);
);
return
return
(o
(o
instanceof
instanceof
Integer)
Integer)
&&
&&
((new Integer(7)).equals(o))
((new Integer(7)).equals(o))
;
;
•
•
Method
Method
public static Object
public static Object
sum(Integer
sum(Integer
i,
i,
I
I
nteger
nteger
j)
j)
{
{
return new
return new
Integer
Integer
();
();
}
}
false
false
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
11
11
8
8
Przyk
Przyk
ł
ł
ad
ad
•
•
Test
Test
Integer i =
Integer i =
new Integer(5);
new Integer(5);
Integer j = new Interger(2);
Integer j = new Interger(2);
Object
Object
o =
o =
sum(i,j
sum(i,j
);
);
return
return
(o
(o
instanceof
instanceof
Integer)
Integer)
&&
&&
((new Integer(7)).equals(o))
((new Integer(7)).equals(o))
;
;
•
•
Method
Method
public static Object
public static Object
sum(Integer
sum(Integer
i,
i,
I
I
nteger
nteger
j)
j)
{
{
return new
return new
Integer
Integer
(
(
i.intValue
i.intValue
() +
() +
j.intValue
j.intValue
()
()
);
);
}
}
true
true
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
12
12
8
8
Korzy
Korzy
ś
ś
ci
ci
•
•
Zasadnicza redukcja odst
Zasadnicza redukcja odst
ę
ę
pu czasu
pu czasu
pomi
pomi
ę
ę
dzy podj
dzy podj
ę
ę
ciem decyzji
ciem decyzji
(projektowej, implementacyjnej) a
(projektowej, implementacyjnej) a
obserwowanym efektem (szybkie
obserwowanym efektem (szybkie
sprz
sprz
ęż
ęż
enie zwrotne)
enie zwrotne)
•
•
Zmusza niejako developer
Zmusza niejako developer
ó
ó
w do
w do
tworzenia kodu podatnego na
tworzenia kodu podatnego na
testowanie
testowanie
•
•
Stwarza naturaln
Stwarza naturaln
ą
ą
platform
platform
ę
ę
gruntownego testowania kodu
gruntownego testowania kodu
3
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
13
13
8
8
Wady
Wady
•
•
Niew
Niew
ą
ą
tpliwie potrzebna jest pewna
tpliwie potrzebna jest pewna
dodatkowa ilo
dodatkowa ilo
ść
ść
czasu wyd
czasu wyd
ł
ł
u
u
ż
ż
aj
aj
ą
ą
ca
ca
proces tworzenia rozwi
proces tworzenia rozwi
ą
ą
zania
zania
•
•
Pewne elementy kodu (pewne
Pewne elementy kodu (pewne
konstrukcje) s
konstrukcje) s
ą
ą
trudne do testowania
trudne do testowania
analogiczn
analogiczn
ą
ą
metod
metod
ą
ą
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
14
14
8
8
F
F
rameworks
rameworks
•
•
JUnit
JUnit
–
–
Definicja struktury kodu testuj
Definicja struktury kodu testuj
ą
ą
cego
cego
–
–
Narz
Narz
ę
ę
dzia wspomagaj
dzia wspomagaj
ą
ą
ce proces
ce proces
testowania
testowania
•
•
A Simple and Practical Approach to
A Simple and Practical Approach to
Unit Testing: The JML and
Unit Testing: The JML and
JUnit
JUnit
Way
Way
by Y.
by Y.
Cheon
Cheon
and G. T. Leavens
and G. T. Leavens
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
15
15
8
8
JUnit
JUnit
http://junit.sourceforge.net/doc/cookstour/cookstour.htm
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
16
16
8
8
JUnit
JUnit
•
•
assertArrayEquals
assertArrayEquals
()
()
•
•
assertEquals
assertEquals
()
()
•
•
assertTrue
assertTrue
() +
() +
assertFalse
assertFalse
()
()
•
•
assertNull
assertNull
() +
() +
assertNotNull
assertNotNull
()
()
•
•
assertSame
assertSame
() +
() +
assertNotSame
assertNotSame
()
()
•
•
assertThat
assertThat
()
()
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
17
17
8
8
Case Study: TDD Results
Case Study: TDD Results
•
•
Stopa b
Stopa b
łę
łę
d
d
ó
ó
w
w
–
–
50%
50%
redukcji
redukcji
•
•
Produktywno
Produktywno
ść
ść
–
–
Poni
Poni
ż
ż
ej szacunk
ej szacunk
ó
ó
w pocz
w pocz
ą
ą
tkowych
tkowych
•
•
Cz
Cz
ę
ę
stotliwo
stotliwo
ść
ść
test
test
ó
ó
w
w
–
–
86%
86%
test
test
ó
ó
w zautomatyzowana
w zautomatyzowana
•
•
Projektowanie
Projektowanie
–
–
Du
Du
ż
ż
e u
e u
ł
ł
atwienia w przypadku p
atwienia w przypadku p
ó
ó
ź
ź
niejszych zmian
niejszych zmian
•
•
Integra
Integra
cja
cja
–
–
Testowanie ujawni
Testowanie ujawni
ł
ł
o spodziewane problemy z
o spodziewane problemy z
pewnym wyprzedzeniem
pewnym wyprzedzeniem
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
18
18
8
8
Pewne aspekty TDD
Pewne aspekty TDD
•
•
Testowanie z
Testowanie z
ł
ł
o
o
ż
ż
onych hierarchii
onych hierarchii
obiekt
obiekt
ó
ó
w
w
•
•
Obiekty imituj
Obiekty imituj
ą
ą
ce (
ce (
mock
mock
objects
objects
)
)
•
•
Dobre praktyki
Dobre praktyki
•
•
Testowanie w warunkach pracy
Testowanie w warunkach pracy
grupowej (team
grupowej (team
testing
testing
)
)
•
•
Testowanie kodu obcego (
Testowanie kodu obcego (
legacy
legacy
code
code
)
)
4
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
19
19
8
8
TDD w praktyce
TDD w praktyce
•
•
Metodologie in
Metodologie in
ż
ż
ynierii oprogramowania
ynierii oprogramowania
(
(
np
np
.
.
‘
‘
waterfall
waterfall
’
’
)
)
•
•
Zwinne (lekkie)
Zwinne (lekkie)
metodyki
metodyki
–
–
XP
XP
(
(
Test Driven Development
Test Driven Development
)
)
–
–
The Crystal family
The Crystal family
–
–
MSF
MSF
-
-
Agile
Agile
–
–
Highsmith's
Highsmith's
ASD (Adaptive Software Development)
ASD (Adaptive Software Development)
–
–
Scrum
Scrum
–
–
Feature Driven Development
Feature Driven Development
–
–
DSDM (Dynamic Systems Development Method)
DSDM (Dynamic Systems Development Method)
–
–
Rational Unified Process
Rational Unified Process
–
–
&
&
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
20
20
8
8
Unit Testing
Unit Testing
–
–
u
u
ł
ł
atwienie
atwienie
ż
ż
ycia developera
ycia developera
•
•
U
U
ł
ł
atwienie procesu wykrywania
atwienie procesu wykrywania
b
b
łę
łę
d
d
ó
ó
w
w
•
•
U
U
ł
ł
atwienie utrzymania kodu
atwienie utrzymania kodu
•
•
U
U
ł
ł
atwienie interpretacji
atwienie interpretacji
(rozumienia) kodu
(rozumienia) kodu
•
•
U
U
ł
ł
atwienie procesu rozwoju kodu
atwienie procesu rozwoju kodu
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
21
21
8
8
Poprzednio
Poprzednio
T
T
•
•
Testy nie posiada
Testy nie posiada
ł
ł
y najcz
y najcz
ęś
ęś
ciej
ciej
jednolitej struktury
jednolitej struktury
•
•
Nie by
Nie by
ł
ł
y zwykle powtarzalne
y zwykle powtarzalne
•
•
Nie obejmowa
Nie obejmowa
ł
ł
y du
y du
ż
ż
ych obszar
ych obszar
ó
ó
w
w
kodu
kodu
•
•
Nie spe
Nie spe
ł
ł
nia
nia
ł
ł
y naszych oczekiwa
y naszych oczekiwa
ń
ń
co
co
do
do
ł
ł
atwo
atwo
ś
ś
ci ich tworzenia (by
ci ich tworzenia (by
ł
ł
o
o
pracoch
pracoch
ł
ł
onne i wymaga
onne i wymaga
ł
ł
o
o
najcz
najcz
ęś
ęś
ciej specyficznej wiedzy)
ciej specyficznej wiedzy)
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
22
22
8
8
Jak u
Jak u
ż
ż
ywamy
ywamy
frameworku
frameworku
•
•
Tworzenie test
Tworzenie test
ó
ó
w
w
•
•
Wsparcie dla tworzenia (implementacji) i zarz
Wsparcie dla tworzenia (implementacji) i zarz
ą
ą
dzania
dzania
zbiorem test
zbiorem test
ó
ó
w
w
•
•
Odniesienia do kodu wynikowego, zarz
Odniesienia do kodu wynikowego, zarz
ą
ą
dzanie
dzanie
atrybutami
atrybutami
•
•
Wykonanie test
Wykonanie test
ó
ó
w
w
•
•
Umo
Umo
ż
ż
liwia wykonanie wszystkich test
liwia wykonanie wszystkich test
ó
ó
w, pewnej grupy
w, pewnej grupy
lub okre
lub okre
ś
ś
lonego pojedynczego testu
lonego pojedynczego testu
.
.
•
•
Z wykorzystaniem linii komend lub GUI.
Z wykorzystaniem linii komend lub GUI.
•
•
Prezentacja wynik
Prezentacja wynik
ó
ó
w
w
•
•
Bezpo
Bezpo
ś
ś
rednio wynik typu Pass/
rednio wynik typu Pass/
Fail
Fail
•
•
Szczeg
Szczeg
ó
ó
ł
ł
y poszczeg
y poszczeg
ó
ó
lnych przebieg
lnych przebieg
ó
ó
w b
w b
łę
łę
dnych
dnych
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
23
23
8
8
TDD
TDD
/
/
JUnit
JUnit
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
24
24
8
8
.NET Test Frameworks
.NET Test Frameworks
•
•
NUnit
NUnit
•
•
Csunit
Csunit
•
•
ZaneBug
ZaneBug
•
•
MbUnit
MbUnit
•
•
Team System Unit Testing
Team System Unit Testing
5
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
25
25
8
8
Scenariusz
Scenariusz
T
T
•
•
Implementation
Implementation
–
–
7d
7d
•
•
Testing
Testing
–
–
3d
3d
•
•
Fix Bugs
Fix Bugs
–
–
3d
3d
•
•
Testing
Testing
–
–
3d
3d
•
•
Fix Bugs
Fix Bugs
–
–
2d
2d
•
•
Testing
Testing
–
–
1d
1d
•
•
Release(19d)
Release(19d)
•
•
Implementation
Implementation
–
–
14d
14d
•
•
Testing
Testing
–
–
3d
3d
•
•
Fix Bugs
Fix Bugs
–
–
2d
2d
•
•
Testing
Testing
–
–
1d
1d
•
•
Fix Bugs
Fix Bugs
–
–
1d
1d
•
•
Testing
Testing
–
–
1d
1d
•
•
Release(22d)
Release(22d)
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
26
26
8
8
Scen
Scen
ariusz
ariusz
•
•
Implementation
Implementation
–
–
7d
7d
•
•
Integration
Integration
–
–
7d
7d
•
•
Testing
Testing
–
–
3d
3d
•
•
Fix Bugs
Fix Bugs
–
–
3d
3d
•
•
Testing
Testing
–
–
3d
3d
•
•
Fix Bugs
Fix Bugs
–
–
2d
2d
•
•
Testing
Testing
–
–
1d
1d
•
•
Release(26d)
Release(26d)
•
•
Implementation
Implementation
–
–
14d
14d
•
•
Integration
Integration
–
–
2d
2d
•
•
Testing
Testing
–
–
3d
3d
•
•
Fix Bugs
Fix Bugs
–
–
2d
2d
•
•
Testing
Testing
–
–
1d
1d
•
•
Fix Bugs
Fix Bugs
–
–
1d
1d
•
•
Testing
Testing
–
–
1d
1d
•
•
Release(24d)
Release(24d)
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
27
27
8
8
Najlepsze praktyki
Najlepsze praktyki
•
•
Test
Test
uj
uj
to, co trzeba testowa
to, co trzeba testowa
ć
ć
•
•
Rezygnuj z test
Rezygnuj z test
ó
ó
w lub modyfikuj je, gdy
w lub modyfikuj je, gdy
zachodzi taka potrzeba
zachodzi taka potrzeba
•
•
Zwracaj uwag
Zwracaj uwag
ę
ę
na
na
‘
‘
pokrycie kodu
pokrycie kodu
’
’
•
•
Unikaj skomplikowanych rozwi
Unikaj skomplikowanych rozwi
ą
ą
za
za
ń
ń
w
w
zakresie logiki testowania
zakresie logiki testowania
•
•
Tw
Tw
ó
ó
rz testy proste i
rz testy proste i
ł
ł
atwe w wykonaniu
atwe w wykonaniu
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
28
28
8
8
Najlepsze praktyki
Najlepsze praktyki
•
•
Konwencje nazewnictwa jednostek
Konwencje nazewnictwa jednostek
testowania
testowania
•
•
Konwencje nazewnictwa zmiennych
Konwencje nazewnictwa zmiennych
•
•
Staranna separacja asercji oraz akcji
Staranna separacja asercji oraz akcji
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
29
29
8
8
T
T
rzeczywisto
rzeczywisto
ść
ść
•
•
Nie jest wcale
Nie jest wcale
ł
ł
atwe do nauczenia si
atwe do nauczenia si
ę
ę
•
•
Praca z kodem odziedziczonym
Praca z kodem odziedziczonym
(obcym)
(obcym)
•
•
Wymaga pewnej samodyscypliny
Wymaga pewnej samodyscypliny
•
•
Trzeba chcie
Trzeba chcie
ć
ć
stosowa
stosowa
ć
ć
T
T
•
•
Ale je
Ale je
ż
ż
eli ju
eli ju
ż
ż
umiesz i u
umiesz i u
ż
ż
ywasz to
ywasz to
T
T
•
•
Idzie z czasem coraz
Idzie z czasem coraz
ł
ł
atwiej i
atwiej i
ł
ł
atwiej
atwiej
•
•
Staje si
Staje si
ę
ę
na
na
ł
ł
ogiem, z kt
ogiem, z kt
ó
ó
rego
rego
ł
ł
atwo nie
atwo nie
rezygnujemy
rezygnujemy
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
30
30
8
8
ROI
ROI
•
•
Potencjalne
Potencjalne
“
“
b
b
łę
łę
dy produkcyjne
dy produkcyjne
”
”
zredukowane nawet do
zredukowane nawet do
90%
90%
-
-
>
>
bardziej stabilny produkt ko
bardziej stabilny produkt ko
ń
ń
cowy
cowy
•
•
Lepiej zaprojektowane interfejsy
Lepiej zaprojektowane interfejsy
•
•
Naturalna dokumentacja API
Naturalna dokumentacja API
•
•
‘
‘
Strategia bezpiecze
Strategia bezpiecze
ń
ń
stwa
stwa
’
’
w
w
przesz
przesz
ł
ł
o
o
ś
ś
ci i na przysz
ci i na przysz
ł
ł
o
o
ść
ść
•
•
Zadowolenie Klienta
Zadowolenie Klienta
•
•
Zadowolenie zespo
Zadowolenie zespo
ł
ł
u
u
6
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
31
31
8
8
IBM: XP
IBM: XP
-
-
Adherence Metrics
Adherence Metrics
XP
XP
-
-
am
am
Metric
Metric
Practice
Practice
Old
Old
New
New
Automated test class per user
Automated test class per user
story
story
Testing
Testing
0.11
0.11
0.45
0.45
Test coverage (statement)
Test coverage (statement)
Testing
Testing
30%
30%
46%
46%
Unit test runs per person day
Unit test runs per person day
Testing
Testing
14%
14%
11%
11%
Test LOC/Source LOC
Test LOC/Source LOC
Testing
Testing
0.26
0.26
0.42
0.42
Accept test execute
Accept test execute
Testing
Testing
Manual
Manual
Manual
Manual
Did customers run your
Did customers run your
acceptance tests?
acceptance tests?
Testing
Testing
No
No
No
No
Pairing Frequency
Pairing Frequency
Pair Programming
Pair Programming
<5%
<5%
48%
48%
Release Length
Release Length
Short Release
Short Release
10 months
10 months
5 months
5 months
Iteration Length
Iteration Length
Short Release
Short Release
Weekly
Weekly
Weekly
Weekly
© Laurie Williams 2007
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
32
32
8
8
© Laurie Williams 2007
IBM: XP
IBM: XP
-
-
Outcome Measures
Outcome Measures
XP Outcome Measures
XP Outcome Measures
Old
Old
New
New
Response to Customer Change
Response to Customer Change
(Ratio (user stories in + out) /total)
(Ratio (user stories in + out) /total)
NA
NA
0.23
0.23
Pre
Pre
-
-
release Quality
release Quality
(test defects/KLOEC of code)
(test defects/KLOEC of code)
1.0
1.0
0.50
0.50
Post
Post
-
-
release Quality
release Quality
(released defects/KLOEC of code)
(released defects/KLOEC of code)
1.0
1.0
0.61
0.61
Productivity (stories / PM)
Productivity (stories / PM)
Relative KLOEC / PM
Relative KLOEC / PM
Putnam Product. Parameter
Putnam Product. Parameter
1.0
1.0
1.0
1.0
1.0
1.0
1.34
1.34
1.70
1.70
1.92
1.92
Customer Satisfaction
Customer Satisfaction
NA
NA
High (qualitative)
High (qualitative)
Morale (via survey)
Morale (via survey)
1.0
1.0
1.11
1.11
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
33
33
8
8
Chwila na refleksj
Chwila na refleksj
ę
ę
...
...
•
•
Czy dowiedzia
Czy dowiedzia
ł
ł
e
e
ś
ś
si
si
ę
ę
czego
czego
ś
ś
nowego ?
nowego ?
•
•
Czy dowiedzia
Czy dowiedzia
ł
ł
e
e
ś
ś
si
si
ę
ę
czego
czego
ś
ś
Twym zdaniem
Twym zdaniem
wa
wa
ż
ż
nego ?
nego ?
•
•
Czy dostrzegasz zwi
Czy dostrzegasz zwi
ą
ą
zek i przydatno
zek i przydatno
ść
ść
przekazanych tre
przekazanych tre
ś
ś
ci w zawodzie, kt
ci w zawodzie, kt
ó
ó
ry sobie
ry sobie
wybra
wybra
ł
ł
e
e
ś
ś
?
?
•
•
Masz ewentualne uwagi b
Masz ewentualne uwagi b
ą
ą
d
d
ź
ź
sugestie,
sugestie,
podziel si
podziel si
ę
ę
nimi ...
nimi ...
jrj@pk.edu.pl
jrj@pk.edu.pl
2014
2014
-
-
02
02
-
-
06
06
©
©
2014, Jerzy R. Jaworowski
2014, Jerzy R. Jaworowski
34
34
8
8
Dzi
Dzi
ę
ę
kuj
kuj
ę
ę
za uwag
za uwag
ę
ę