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