E D R , A S I H C RSS

Test Driven Development

1. TDD

1.1. TDD๋ฅผ •˜๋ฉด„œ –ธ œ ƒ๊ฐ„ ๋งŽด •ด•ผ•˜๋Š”ง€?

…ŒŠคŠธ๋ฅผ ๋งŒ๋“ค ๋•Œธ๊ฐ€? …ŒŠคŠธ— ๋งž๊ฒŒ ๋™ž‘„ ˆ˜–‰•˜๋Š” ฝ”๋“œ๋ฅผ ž‘„•  ๋•Œธ๊ฐ€? --Leonardong
‚ฌ๋žŒ๋งˆ๋‹ค ๋‹ค๋ฅผ๊ฒƒ ๊ฐ™๊ธด •˜ง€๋งŒ, ๋‚˜˜ ๊ฒฝšฐ๋Š” …ŒŠคŠธ๋ฅผ ž‘„•˜๊ธฐ  „ TODO List ๋ฅผ ž‘„• ๋•Œ ๊ฐ€žฅ ๊ณ ๋ฏผ„ •˜๊ณ  ‹œ๊ฐ„ด ˜ค๋ž˜๊ธ๋ฆฐ ๊ฒƒ ๊ฐ™๋‹ค. ๋ญ˜ ๋งŒ๋“ค๊ฒƒธง€— ๋Œ€•œ ด•ด๊ฐ€  œ๋Œ€๋กœ ๋˜ง€ •Š€ ƒƒœ—„œ๋Š” ๋„๋Œ€ฒด '๋ญ˜ •ด•ผ • ง€, –ด๋–ค ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋Œ€•ด•ผ • ง€'๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ. :) •œŽธ, ๋งŒผ TODO ๋ฆฌŠคŠธ ž‘„‹œ ‹œ๊ฐ„ด ๋„ˆ๋ฌด ง€ฒด๋œ๋‹ค ‹ถœผ๋ฉด ๋นจ๋ฆฌ '–ด๋–ค ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋Œ€•ด•ผ •˜๋‚˜(Test ๋””žธ)' ด๋ž€ ˆ๋ฌธ„ •˜๊ณ  …ŒŠคŠธ๋ฅผ ž‘„•ด๋ณด๋Š” ๋ฐฉ๋ฒ•„ ถ”ฒœ.  € ˆ๋ฌธด •ž—„œ˜ '๋ญ˜ • ๊นŒ?'๋ผ๋Š” ˆ๋ฌธ˜ ๋ชจ˜ธ•จ„ ๋ณด™„•ดฃผ๊ธฐ ๋•Œ๋ฌธ. ๋ฌด—‡„ •ด•ผ • ง€ ๊ฐด •ˆ˜ฌ๋•Œ๋Š” ๊ฐ€žฅ ๊ฐ„๋‹จ•œ Input-Output „ „œˆ •ด๋ด„œผ๋กœ„œ กฐ๊ธˆ”ฉ ๊ตฌฒด™”‹œผœ๋‚˜๊ฐˆ ˆ˜ žˆŒ. '˜ˆ œ— ˜•œ ๊ตฌฒด™”'๋ž€ ๋ฐฉ๋ฒ•€ ฐธ œ šฉ•จ. --1002
{{|
... „๋žต...
…ŒŠคŠธ๋ฅผ ž‘„• ๋•Œ—” 'ด๋ฏธ ™„„๋˜–ดžˆ๋Š” ž˜ ๋œ API' ๋ฅผ ƒƒ•˜๋ฉฐ ž‘„•œ๋‹ค. ž˜ ๋งŒ๋“ค–ด„ API๋Š” ๊ฐ™€ ผ„ •˜๋”๋ผ๋„ ง ‘ ˜ธถœ•ดค˜•ผ •˜๋Š” •จˆ˜˜ ๊ฐฏˆ˜๊ฐ€  ๊ณ  ด•ด•˜๊ธฐ Žธ•˜๋ฉฐ '๋ฌด—‡'„ •ดฃผ๋Š”ง€ ๊ทธ ๋ฉ”†Œ๋“œ๊ฐ€ ๋ง•ดค€๋‹ค.  ๊ฒŒ ฝ”๋“œ๋ฅผ จ๋„ ๋งŽ€ ผ„ •ดฃผ๋Š”๊ฒƒด๋‹ค. ๊ทธ๋ฆฌ๊ณ , …ŒŠคŠธ๋กœ„œ ปด“จ„˜ ปดŒŒผ๋Ÿฌ—๊ฒŒ ฝ”๋“œž‘„„ œ„•ด •ด•ผ •  ผ๋“ค„ ๋ฌป๊ณ , ธ„Ž˜ดŠค๋ฅผ ๋งŒ๋“ค๊ณ . ๊ทธ๋ฆฌ๊ณ  ๊ตฌ˜„•˜๊ณ , ๋‹ค‹œ ๊ตฌ˜„๋œ ฝ”๋“œ๋ฅผ Refactoring •œ๋‹ค.
...›„๋žต... -TestDrivenDevelopment—„œ
|}}

1.2. ๊ฐ„๋‹จ•œ C++ —„œ˜ TDD ฐธ๊ณ  •จˆ˜

~cpp

int gNumTests = 0;
int gNumFailures = 0;
void Assert(bool condition)
{
	++gNumTests;
	if(!condition)
	{
		++gNumFailures;
	}
}
#define Assert(cond)	AssertImpl(cond, #cond, __LINE__, __FILE__)

void AssertImpl( bool condition, const char* condStr, int lineNum, const char* fileName)
{
	++gNumTests;
	if(!condition)
	{
		++gNumFailures;
		printf("file %s', line %d, assert '%s' failed\n", fileName, (int)lineNum, condStr);
	}
}
void printTestResult() {
		printf("%d tests run, %d tests failed\n", (int)gNumTests,(int)gNumFailures);
}
int main(int argc, char* argv[])
{
	Assert(1==2);
	printTestResult();
	return 0;
}
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:12
Processing time 0.0113 sec