Использование TDD в Embedded Linux разработке.
Смешивание unit-тестирования и функционального тестирования.
Инструменты : cunit/check, интеграция с make, gcov/ggcov
11. 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. Ïðàêòèêà
12. 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. Ïðàêòèêà
13. 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. Ïðàêòèêà
14. 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. Ïðàêòèêà
15. 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. Ïðàêòèêà