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