SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Test Driven Development. Ïðàêòèêà

Âëàä 'mend0za' Øàõîâ
Linux and Embedded department
SaM Solutions

March 2012

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Outline: Êðàòêîå ñîäåðæàíèå è òåìû

þíèò-òåñòèðîâàíèå
ôóíêöèîíàëüíîå òåñòèðîâàíèå
çàïóñê òåñòîâ è ïðîâåðêà ðåçóëüòàòîâ
êîíòðîëü ïîêðûòèÿ òåñòàìè êîäà
óòèëèòû è áèáëèîòåêè (Free Software)
íà ïðèìåðå 2õ ðåàëüíûõ embedded ïðîåêòîâ
äëÿ ÿçûêà ïðîãðàììèðîâàíèÿ Ñè

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

À íàäî ëè âîîáùå òåñòèðîâàòü?

Çà÷åì êîçå áàÿí TDD ?

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Ïðè÷èíû ïî÷åìó ÄÀ

òåñòèðóåò ñàì ðàçðàáîò÷èê
ýòî òîæå ïðîãðàììèðîâàíèå

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Ïðè÷èíû ïî÷åìó ÄÀ

òåñòèðóåò ñàì ðàçðàáîò÷èê
ýòî òîæå ïðîãðàììèðîâàíèå
ñîîòâåñòâèå òðåáîâàíèÿì
ãàðàíòèÿ, ÷òî âàø êîä äåëàåò âñ¼ êàê íàäî

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Ïðè÷èíû ïî÷åìó ÄÀ

òåñòèðóåò ñàì ðàçðàáîò÷èê
ýòî òîæå ïðîãðàììèðîâàíèå
ñîîòâåñòâèå òðåáîâàíèÿì
ãàðàíòèÿ, ÷òî âàø êîä äåëàåò âñ¼ êàê íàäî
êîíòðîëü êîððåêòíîñòè èçìåíåíèé
èñïðàâëåíèÿ ëåãêî ïðîâåðèòü ïðîñòî çàïóñòèâ òåñòû

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Ïðè÷èíû ïî÷åìó ÄÀ

òåñòèðóåò ñàì ðàçðàáîò÷èê
ýòî òîæå ïðîãðàììèðîâàíèå
ñîîòâåñòâèå òðåáîâàíèÿì
ãàðàíòèÿ, ÷òî âàø êîä äåëàåò âñ¼ êàê íàäî
êîíòðîëü êîððåêòíîñòè èçìåíåíèé
èñïðàâëåíèÿ ëåãêî ïðîâåðèòü ïðîñòî çàïóñòèâ òåñòû
ìåíåäæåðü¼ è çàêàç÷èêè ëþáÿò êðàñèâûå öèôðû
TDD äàñò öèôðû äëÿ îò÷¼òà

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Ïðè÷èíû ïî÷åìó ÄÀ

òåñòèðóåò ñàì ðàçðàáîò÷èê
ýòî òîæå ïðîãðàììèðîâàíèå
ñîîòâåñòâèå òðåáîâàíèÿì
ãàðàíòèÿ, ÷òî âàø êîä äåëàåò âñ¼ êàê íàäî
êîíòðîëü êîððåêòíîñòè èçìåíåíèé
èñïðàâëåíèÿ ëåãêî ïðîâåðèòü ïðîñòî çàïóñòèâ òåñòû
ìåíåäæåðü¼ è çàêàç÷èêè ëþáÿò êðàñèâûå öèôðû
TDD äàñò öèôðû äëÿ îò÷¼òà
èòîãî
êà÷åñòâî è óïðàâëÿåìîñòü ðàçðàáîòêè óëó÷øèòñÿ

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Âíåäðåíèå. Ïðîñòûå ðåöåïòû

Òåñòû áåç ïðîâåðêè ïîêðûòèÿ - áåñïîëåçíû
Sad but true
a

a

Metallica c 1993 Sad but true single

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Âíåäðåíèå. Ïðîñòûå ðåöåïòû

Òåñòû áåç ïðîâåðêè ïîêðûòèÿ - áåñïîëåçíû
Sad but true
a

a

Metallica c 1993 Sad but true single

Ìàëåíüêèé ïðîåêò - ïðîñòûå ïðîöåññû

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Âíåäðåíèå. Ïðîñòûå ðåöåïòû

Òåñòû áåç ïðîâåðêè ïîêðûòèÿ - áåñïîëåçíû
Sad but true
a

a

Metallica c 1993 Sad but true single

Ìàëåíüêèé ïðîåêò - ïðîñòûå ïðîöåññû

Áîëüøîé ïðîåêò - ãåìîððîéíûå èíñòðóìåíòû
Rational

R

Purify

R

íàïðèìåð

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Âíåäðåíèå. Ïðîñòûå ðåöåïòû

Òåñòû áåç ïðîâåðêè ïîêðûòèÿ - áåñïîëåçíû
Sad but true
a

a

Metallica c 1993 Sad but true single

Ìàëåíüêèé ïðîåêò - ïðîñòûå ïðîöåññû

Áîëüøîé ïðîåêò - ãåìîððîéíûå èíñòðóìåíòû
Rational

R

Purify

R

íàïðèìåð

Ôèçèêà

çàêîíû ìàêðîìèðà è ìèêðîìèðà îòëè÷àþòñÿ
êîðåííûì îáðàçîì
SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Ñáîðî÷íàÿ ñèñòåìà

1

Äîáàâëÿåì êîìïèëÿöèþ òåñòîâ â ñáîðêó

2

Âêëþ÷àåì ïîäñ÷¼ò ïîêðûòèÿ gcov :
CFLAGS+= - -coverage

1

CFLAGS +
=

−DDEBUG (DEBUG) −g −− c o v e r a g e
=$

BINARY_TEST =

unit_test

3

OBJ_TEST =

5

$ (BINARY_TEST) :
$ (CC)

test / test . o

$ ( OBJ)

$ (CFLAGS)

source / fts_binsearchtree . o

$ (OBJ_TEST)
$ (LDFLAGS)

−o

$@

$^

/ usr / l i b /

libcheck . a
7

check :
9

$ (BINARY_TEST)
. / $ (BINARY_TEST)

$ (CONFIG_SPACE_PATH)
$ (CONFIG_SPACE_PATH)

[
SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Êàê ðàçðàáàòûâàåì 1: êîä è òåñòû

test/test.c
1

START_TEST( c o n f i g _ s p a c e _ c h e c k _ t e s t )
{
int

3

ret

=

c o n f i g _ s p a c e _ c h e c k ( nvram_basedir ,

BMCInst ) ;
fail_if ( ret
return
5

!=

−1 ,

 config_space_check ( )

must

−1 ) ;

}
END_TEST

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Êàê ðàçðàáàòûâàåì 2: êîìïèëÿöèÿ è çàïóñê

test/test.c
$ make check
96%: Checks: 27, Failures: 1, Errors: 0
test/test.c:54:F:Cong Space:test_init:0: path should not open
test/test.c:1524:P:Cong Space:cong_space_check_test:0: Passed
test/test.c:1561:P:Cong Space:string_with_zero_test:0: Passed
test/test.c:1595:P:Cong Space:migration_test:0: Passed

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Êàê ðàçðàáàòûâàåì 3: ïðîâåðêà ïîêðûòèÿ

ïðîâåðêà ïîêðûòèÿ
ãäå îòðàáîòàëè, ãäå íå âîøëè + ñòàòèñòèêà

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Êàê ðàçðàáàòûâàåì 3: ïðîâåðêà ïîêðûòèÿ

ïðîâåðêà ïîêðûòèÿ
ãäå îòðàáîòàëè, ãäå íå âîøëè + ñòàòèñòèêà
ggcov

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Ïðèìåð 1. Áèáëèîòåêà ñ âíåøíèì API

Ïðîåêò: ïðîøèâêà BMC ñåðâåðîâ Fujitsu Primergy
Íàçíà÷åíèå: óïðàâëåíèå ïåðåìåííûìè äëÿ IPMI-ñòåêà
Ðîëü TDD: òîëüêî Unit-òåñòèðîâàíèå
Èíñòðóìåíû è ëèáû TDD: check, gcc/gcov, ggcov

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Ïðèìåð 2. Óïðàâëÿþùåå ÏÎ ïðîøèâêè

Ïðîåêò: 4-õ êàíàëüíûé âèäåîðåãèñòðàòîð
Íàçíà÷åíèå: óïðàâëÿþùåå ÏÎ â user-space
Ðîëü TDD: Unit Testing, Functional Testing,
Integration Testing, ýìóëÿöèÿ îáîðóäîâàíèÿ
Èíñòðóìåíû è ëèáû TDD: cunit, make,
gcc/gcov, ggcov, Linux Kernel

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

èíñòðóìåíòû

Unit-test frameworks
1. check - http://check.sourceforge.net
2. cunit - http://cunit.sourceforge.net
Coverage tools
3. Ðàñøèðåíèå gcov - âñòðîåíî â GCC (- -coverage)
4. ggcov tool - http://ggcov.sourceforge.net
Âåñü èíñòðóìåíòàðèé - äîñòóïåí â äèñòðèáóòèâàõ, ïîä
ñâîáîäíûìè ëèöåíçèÿìè

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà
Intro
Ìîòèâàöèîííàÿ
Âíåäðåíèå
Ïðàêòèêà

Âîïðîñû?

Âàøè âîïðîñû
www: http://www.sam-solutions.com
email: v.shakhov@sam-solutions.net
jabber: mend0za@jabber.org.by

SaM Solutions: Linux and Embedded department

Test Driven Development. Ïðàêòèêà

Mais conteúdo relacionado

Destaque

Réseaux sociaux
Réseaux sociauxRéseaux sociaux
Réseaux sociaux
MissTice
 
Coup de sifflet final pour le stade de france
Coup de sifflet final pour le stade de franceCoup de sifflet final pour le stade de france
Coup de sifflet final pour le stade de france
Benjamin Helfer
 
Elevage de porcs
Elevage de porcsElevage de porcs
Elevage de porcs
Rmonde Didi
 
Mon album de famille
Mon album de famille Mon album de famille
Mon album de famille
em311
 
Les clefs de l'amincissement
Les clefs de l'amincissementLes clefs de l'amincissement
Les clefs de l'amincissement
SebRepDom
 
Metropolis LB
Metropolis LBMetropolis LB
Metropolis LB
fglowacki
 

Destaque (14)

La jounée
La jounéeLa jounée
La jounée
 
Temps forts de la conférence du 14 octobre
Temps forts de la conférence du 14 octobreTemps forts de la conférence du 14 octobre
Temps forts de la conférence du 14 octobre
 
Réseaux sociaux
Réseaux sociauxRéseaux sociaux
Réseaux sociaux
 
Coup de sifflet final pour le stade de france
Coup de sifflet final pour le stade de franceCoup de sifflet final pour le stade de france
Coup de sifflet final pour le stade de france
 
Elevage de porcs
Elevage de porcsElevage de porcs
Elevage de porcs
 
Restitution publique diagnosticterritoirealimentationdurable_cc_lescheires_5o...
Restitution publique diagnosticterritoirealimentationdurable_cc_lescheires_5o...Restitution publique diagnosticterritoirealimentationdurable_cc_lescheires_5o...
Restitution publique diagnosticterritoirealimentationdurable_cc_lescheires_5o...
 
Premiers pas
Premiers pasPremiers pas
Premiers pas
 
Issue
IssueIssue
Issue
 
Dr pierre dupont dentiste – un professionnel hautement reconnu dans sa commun...
Dr pierre dupont dentiste – un professionnel hautement reconnu dans sa commun...Dr pierre dupont dentiste – un professionnel hautement reconnu dans sa commun...
Dr pierre dupont dentiste – un professionnel hautement reconnu dans sa commun...
 
Mon album de famille
Mon album de famille Mon album de famille
Mon album de famille
 
Le document détaillant la transaction entre le FRAC et Hilde Teerlink, retraç...
Le document détaillant la transaction entre le FRAC et Hilde Teerlink, retraç...Le document détaillant la transaction entre le FRAC et Hilde Teerlink, retraç...
Le document détaillant la transaction entre le FRAC et Hilde Teerlink, retraç...
 
Les clefs de l'amincissement
Les clefs de l'amincissementLes clefs de l'amincissement
Les clefs de l'amincissement
 
Metropolis LB
Metropolis LBMetropolis LB
Metropolis LB
 
Je fais
Je faisJe fais
Je fais
 

Pragmatic Test Driving Development.