E D R , A S I H C RSS

Unit Test

•ด๋‹น ‹ค–‰ ๊ธฐ๋Šฅด  œ๋Œ€๋กœ ๋Œ•„๊ฐ€๋Š”ง€๋ฅผ …ŒŠคŠธ•˜๋Š” ฝ”๋“œ. ๋ณด†ต SE—„œ๋Š” ๋ชจ๋“ˆ๋‹จœ„˜ …ŒŠคŠธ๋ฅผ ง€นญ•œ๋‹ค.

ExtremeProgramming —„œ๋Š” TestFirstProgramming „ •œ๋‹ค. TestFirstProgramming —„œ๋Š” •ด๋‹น ๊ธฐ๋Šฅ— ๋Œ€•œ …ŒŠคŠธ ”„๋กœ๊ทธ๋žจ„ ๋จผ € ๋งŒ๋“ค๊ณ , ‹ค œ ”„๋กœ๊ทธ๋ž˜๋ฐ„ •œ๋‹ค.

TestFirstProgramming „ •˜๊ฒŒ ๋˜๋ฉด •ด๋‹น ”„๋กœ๊ทธ๋žจ„ ž‘„•ด ๋‚˜๊ฐ€๋Š” ๊ณผ •ด UnitTest ž‘„ค‘ ๋‚จ๊ฒŒ ๋œ๋‹ค. ด๋Š” ผข…˜ WhiteBoxTesting ด ๋œ๋‹ค. ๋˜•œ, •ด๋‹น ๋ชจ๋“ˆด  œ๋Œ€๋กœ ๋Œ•„๊ฐ€๋Š”ง€— ๋Œ€•œ ๊ฒฐ๊ณผ๋„ ฒดฌ•˜๋ฏ€๋กœ BlackBoxTesting ˜ —ญ• „ •œ๋‹ค. ฆ‰, ExtremeProgramming —„œ˜ UnitTest ๋Š” ๋‘๊ฐ€ง€ …ŒŠคŠธ˜ „๊ฒฉ„ ๊ฐ™ด ฌ•จ•˜๊ณ  žˆ๋‹ค. (Gray Box Testing)

๋ณด†ต …ŒŠคŠธ ฝ”๋“œ๋ฅผ ž‘„• ๋•Œ๋Š” UnitTestFramework Library๋“ค„ ดšฉ•œ๋‹ค. ๊ฐ Language ๋ณ„๋กœ ๋‹ค–‘•œ๋ฐ, C++ ‚ฌšฉž๋Š” CppUnit, Java ๋Š” JUnit, Python € PyUnit ๋“„ ดšฉ•  ˆ˜ žˆ๋‹ค. PyUnit ˜ ๊ฒฝšฐ๋Š” 2.1๋ถ€„ฐ ๊ธฐ๋ณธ ๋ชจ๋“ˆ— ฌ•จ๋˜–ดžˆ๋‹ค.


SoftwareEngineering — žˆ–ด„œ UnitTest ๋Š” '๋‹จœ„ ๋ชจ๋“ˆ— ๋Œ€•œ …ŒŠคŠธ' ด๋‹ค. ฆ‰, •ด๋‹น ๊ธฐ๋Šฅด  œ๋Œ€๋กœ ๋Œ•„๊ฐ„ ™•ธ•˜๋Š” …ŒŠคŠธ๊ฐ€ UnitTest ด๋‹ค.

šฐ๋ฆฌ๋Š” ‹ค œ๋กœ ”„๋กœ๊ทธ๋ž˜๋ฐ„ •˜๋Š” ค‘๊ฐ„ค‘๊ฐ„— ๊ฒฐ๊ณผ๊ฐ’„ ถœ๋ ฅ•ด๋ด„œผ๋กœ„œ  œ๋Œ€๋กœ ๋Œ•„๊ฐ„ ™•ธ•œ๋‹ค. ด ๋˜•œ UnitTest ๋ผ •  ˆ˜ žˆ๊ฒ ๋‹ค. (๋‹จ, Manual Test ๋กœ ๋ถ„๋ฅ˜•ด•ผ •˜๊ฒ ๋‹ค.) ˜ฌ๋ฐ”๋ฅธ ๊ฒฐ๊ณผ๊ฐ’ธง€ ™•ธ•˜๋Š” ๊ณผ •„ ฝ”๋“œ๋กœ„œ ๋งŒ๋“ค–ด ๋„ฃ๋Š”๋‹ค๋ฉด ด …ŒŠคŠธ๋Š” ž๋™™”‹œ‚ฌˆ˜ žˆ„ ๊ฒƒด๋‹ค.

˜ˆ๋ฅผ ๋“ ๋‹ค๋ฉด, ๋‹คŒ๊ณผ ๊ฐ™€ ๊ฒƒด UnitTest Code ๊ฐ€ ๋  ˆ˜ žˆ๊ฒ ๋‹ค.
void testFactorial ()
{
	expected = 3 * 2 * 1;
	actual = factorial (3);
	if (expected == actual) printf ("okok!\n");
	else printf ("error!\n");
}

ด๋ฅผ assert ๋ฌธœผ๋กœ ๋ฐ”๊พธ๋ฉด ๋‹คŒ๊ณผ ๊ฐ™ด ๊ฐ€๋Šฅ•˜๋‹ค. ๊ฒฐ๊ณผ๊ฐ’ด ๊ฐ™ง€ •Šœผ๋ฉด 'abnormal program termination' ด ผ–ด๋‚œ๋‹ค.
 
void testFactorial ()
{
	expected = 3 * 2 * 1;
	actual = factorial (3);
	assert (actual == expected);
}
C —„œ˜ UnitTest Code ž‘„‹œ—๋Š” assert ๋ฌธœผ๋กœ ๋น„Šท•œ ๊ธฐ๋Šฅ„ ๊ตฌ˜„ •  ˆ˜ žˆ๋‹ค.


Thread

Q: •œ๊ฐ€ง€ ˜๋ฌธ๋‚˜๋Š”  ด žˆ–ด„œ , ‚ฌšฉž๊ฐ€ ž„˜๋กœ ƒ„•  ˆ˜ —†๋Š”(˜ˆ๋ฅผ๋“ค๋ฉด Socket๊ณผ ๊ฐ™€ ‹œŠค…œด ƒ„•ดฃผ๋Š” ๋ฐดƒ€ ƒ€ž…) ๋ฐดƒ€ ˜•ด ŒŒ๋ผ๋ฏธ„ฐ๋กœ žˆ„ ๋•Œ๋Š” –ด๋–ป๊ฒŒ …ŒŠคŠธ •˜๋Š” ๊ฒƒด ข‹„๊นŒš”?

A: Socket ด๋‚˜ Database๋ฅผ ดšฉ•˜๋Š” ๊ฒฝšฐ—๋Š” ๋ฌธ œ๊ฐ€ ๋˜๊ฒ ฃ . ๊ทธ๋Ÿด๋•Œ MockObjects๋ฅผ ดšฉ•˜๋Š” ๋ฐฉ๋ฒ•ด žˆ—ˆ๋˜๊ธ๋กœ ๊ธฐ–ต•˜๋Š”๋ฐ, •„ง ‹ค œ๋กœ  œ๊ฐ€ •ด๋ณดง€๋Š” •Š•„„œš”. ๋Œ€๊ฐ• ๊ฐœ๋…„ ๋ณด๋ฉด MockObjects๋Š” ผข…˜ ๊ฐ€งœ ๊ฐฒด๋กœ ‹ค œ ๊ฐฒด๊ฐ€ •˜๋Š” ผ„ ‹œ๋ฎฌ๋ ˆด…˜ •ดฃผ๋Š” ๊ฐฒดž…๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ MockObjects ๋ฅผ …‹Œ…„ •ด๋‘๊ณ  •ด๋‹น •จˆ˜๊ฒฐ๊ณผ˜ ๋ฆฌ„š”๊ตฌ‹œ—๋Š” ˜ˆธก•  ˆ˜ žˆ๋Š” ๋ฐด„ฐ๋ฅผ ๋ฆฌ„•˜๊ฒŒ๋” •˜๋Š” ๊ฒƒดง€š”. ๋‚˜ค‘— ๋ณธ ”„๋กœ๊ทธ๋žจ—„œ MockObjects๋“ค„ † ๋Œ€๋กœ ‹ค œ˜ ๊ฐฒด๋ฅผ ๋งŒ๋“ ๋‹ค.. ‹˜ ๊ฐœ๋…œผ๋กœ ๊ธฐ–ต•˜๊ณ  žˆ๊ธด •œ๋ฐ,  €˜ ๊ฒฝšฐ๋Š” ๊ณต๋ถ€๋งŒ •˜๊ณ   šฉ•ด๋ณธ  € —†Šต๋‹ˆ๋‹ค. --„ฒœ

A: MockObjects๊ฐ€ ตœ ž…๋‹ˆ๋‹ค. Socketด๋‚˜ Database Connection๊ณผ ๋™ผ•œ ธ„Ž˜ดŠค˜ "๊ฐ€งœ ๊ฐฒด"๋ฅผ ๋งŒ๋“ค–ด ๋‚ด๋Š” ๊ฒ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Socket —๋Ÿฌ ๊ฐ™€ ๊ฒƒ๋„ ž„˜๋กœ ๋งŒ๋“ค–ด ๋‚ผ ˆ˜ žˆ๊ณ ,  „ฒด …ŒŠคŒ… ‹œ๊ฐ„๋„ ›”ฌ งง•„ง‘๋‹ˆ๋‹ค. •˜ง€๋งŒ "„งœ ๊ฐฒด"๋ฅผ †ต•œ …ŒŠคŠธ๋„ ค‘š”•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ„œ, Socket —ฐ๊ฒฐด  œ๋Œ€๋กœ ๋˜๋Š”๊ฐ€ •˜๋Š”  •๋„๋งŒ(ตœ†Œ•œ๋„๋กœ) "„งœ ๊ฐฒด"๋กœ …ŒŠคŒ…„ •˜๊ณ  ๋‚˜๋จธง€๋Š” "๊ฐ€งœ ๊ฐฒด"๋กœ …ŒŠคŒ…„ ๋Œ€ฒด•  ˆ˜ žˆŠต๋‹ˆ๋‹ค. ‚ฌ‹ค ด๋Ÿฐ ๊ฒฝšฐ, MockObjects๋ฅผ “ฐง€ •Šœผ๋ฉด Test Code Cycle„ †ต•œ ๊ฐœ๋ฐœ€ ๊˜ ˜„‹ค„ด —†๊ฐ๋‚˜ ๋งคšฐ ๋น„šจœจ ž…๋‹ˆ๋‹ค. --๊น€ฐฝค€

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:20
Processing time 0.0138 sec