์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์˜์—ญ์—์„œ ๋ฐฉ๋ฒ•๋ก ๊ณผ ์‹ค๋ฌด๋Š” ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ˜•์„ฑํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ๋ฐฉ๋ฒ•๋ก  ์ค‘ ํ•˜๋‚˜๊ฐ€ ์‹ค์ œ ๊ตฌํ˜„์ด ์‹œ์ž‘๋˜๊ธฐ ์ „์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ์— ์ค‘์ ์„ ๋‘๋Š” TDD(ํ…Œ์ŠคํŠธ ์ค‘์‹ฌ ๊ฐœ๋ฐœ)์ž…๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ํŠน์ • ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅํ•œ ์ตœ์†Œ๋Ÿ‰์˜ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ ๋‹ค์Œ, ์ฝ”๋“œ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ๊ณ ํ’ˆ์งˆ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ง€์†์ ์ธ ๋ฆฌํŒฉํ† ๋ง ์›์น™์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

TDD์˜ ํ•ต์‹ฌ์—๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ์™€ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ๋ชจ๋‘ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ์ ์šฉํ•˜๋Š” ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ ์ฃผ๊ธฐ ๊ฐœ๋…์ด ์žˆ์Šต๋‹ˆ๋‹ค. TDD์˜ ์ฃผ์š” ์ž‘์—… ํ๋ฆ„์€ ์‹คํŒจํ•œ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ, ํ…Œ์ŠคํŠธ ํ†ต๊ณผ๋ฅผ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ ๊ตฌํ˜„, ๋” ๋‚˜์€ ๊ตฌ์กฐ์™€ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ ๋ฆฌํŒฉํ„ฐ๋ง ๋“ฑ์˜ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด ์ฃผ๊ธฐ๋Š” ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ๋‹ฌ์„ฑ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์ง„ํ–‰ํ•˜๋ฉด์„œ ์—…๋ฐ์ดํŠธ๋œ ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€๋ฅผ ์ง€์†์ ์œผ๋กœ ๊ฒ€์ฆํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ตฌํ˜„์œผ๋กœ ์ธํ•ด ํšŒ๊ท€๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

TDD๋Š” ๊ทธ ํšจ์œจ์„ฑ์„ ๋’ท๋ฐ›์นจํ•˜๋Š” ๋‹ค์–‘ํ•œ ์—ฐ๊ตฌ๋ฅผ ํ†ตํ•ด ์ˆ˜๋…„ ๋™์•ˆ ํ•ต์‹ฌ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐฉ์‹์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Nagappan et al.์ด ์‹ค์‹œํ•œ 2013๋…„ ์—ฐ๊ตฌ์ž…๋‹ˆ๋‹ค. TDD๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด TDD๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ”„๋กœ์ ํŠธ์— ๋น„ํ•ด ์ถœ์‹œ ํ›„ ๊ฒฐํ•จ ๋ฐ€๋„๊ฐ€ 25% ๊ฐ์†Œํ•œ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ฆ๊ฑฐ ๊ธฐ๋ฐ˜ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ง(EBSE) ์—ฐ๊ตฌ์— ๋”ฐ๋ฅด๋ฉด TDD๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์ด 15~40% ์ฆ๊ฐ€ํ•˜์ง€๋งŒ ์ „๋ฐ˜์ ์ธ ๊ฒฐํ•จ์ด ํฌ๊ฒŒ ๊ฐ์†Œํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์—ฐ๊ตฌ ๊ฒฐ๊ณผ๋Š” ๋†’์€ ์ฝ”๋“œ ํ’ˆ์งˆ๊ณผ ์œ ์ง€ ๊ด€๋ฆฌ ์šฉ์ด์„ฑ์œผ๋กœ ์œ ๋ช…ํ•œ Eclipse IDE ๋ฐ JUnit ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๊ฐ™์ด TDD๋ฅผ ์‚ฌ์šฉํ•œ ์„ฑ๊ณต์ ์ธ ํ”„๋กœ์ ํŠธ์˜ ์‹ค์ œ ์‚ฌ๋ก€๋ฅผ ํ†ตํ•ด ๋’ท๋ฐ›์นจ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ TDD์˜ ์„ฑ๊ณต์€ ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ, ํŒ€ ๊ฒฝํ—˜, ํ…Œ์ŠคํŠธ ์›์น™์— ๋Œ€ํ•œ ์ดํ•ด ๋“ฑ์˜ ์š”์†Œ์— ์˜ํ•ด ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

AppMasterno-code ํ”Œ๋žซํผ์€ TDD ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜์—ฌ ๊ณ ๊ฐ์ด ์ง๊ด€์ ์ด๊ณ  ๋น ๋ฅธ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ๊ณ ํ’ˆ์งˆ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. AppMaster ์ฝ”๋“œ ์ƒ์„ฑ, ์ปดํŒŒ์ผ, ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌ๋ฅผ ํฌํ•จํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์˜ ๊ธฐ๋ณธ ๋ณต์žก์„ฑ์„ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค. TDD ์›์น™์„ ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์— ํ†ตํ•ฉํ•จ์œผ๋กœ์จ AppMaster ๊ฒฐํ•จ์„ ์‹ ์†ํ•˜๊ฒŒ ๊ฐ์ง€ํ•˜๊ณ  ํ•ด๊ฒฐํ•˜์—ฌ ์•ˆ์ •์„ฑ๊ณผ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

AppMaster ํ”Œ๋žซํผ์˜ ๋งฅ๋ฝ์—์„œ TDD๋Š” ์ƒ์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊นŒ๋‹ค๋กœ์šด ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. Go ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•  ๋•Œ AppMaster ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์„œ๋ฒ„ API๊ฐ€ ๊ณ ๊ฐ ์‚ฌ์–‘์— ๋”ฐ๋ผ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. Vue3 ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ Kotlin ๋˜๋Š” SwiftUI ํ™œ์šฉํ•˜๋Š” ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ AppMaster UI ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ธฐ๋Šฅ์˜ ์„ฑ๊ณต์ ์ธ ์‹คํ–‰์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

AppMaster ์— ๋‚ด์žฅ๋œ TDD ์›Œํฌํ”Œ๋กœ์šฐ๋Š” ํŒ€ ๊ตฌ์„ฑ์› ๊ฐ„์˜ ํ˜‘์—…์„ ์ด‰์ง„ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ๊ฐœ์„  ์˜์—ญ์„ ์‰ฝ๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ค‘์†Œ๊ธฐ์—…์ด๋“  ๋Œ€๊ธฐ์—…์ด๋“  ๊ด€๊ณ„์—†์ด AppMaster ์˜ TDD ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋Š” ์กฐ์ง์ด ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ํ™•์‹ ์„ ๊ฐ–๊ณ  ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ AppMaster OpenAPI(swagger) ๋ฌธ์„œ ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์Šคํฌ๋ฆฝํŠธ์™€ ๊ฐ™์€ ์•ก์„ธ์Šค ๊ฐ€๋Šฅํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํฌ๊ด„์ ์ธ ๋ฌธ์„œํ™”์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. ๊ณ ๊ฐ์ด ํ”„๋กœ์ ํŠธ ์ฒญ์‚ฌ์ง„์„ ๋ณ€๊ฒฝํ•˜๋ฉด AppMaster ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์žฌ์ƒ์„ฑํ•˜์—ฌ ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๊น”๋”ํ•œ ์ตœ์‹  ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. TDD ๋ฐฉ์‹์˜ ์˜ํ–ฅ์„ ๋ฐ›์€ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ†ตํ•ด AppMaster ๊ณ ๊ฐ์€ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋„ ๊ณ ํ’ˆ์งˆ์˜ ์˜ค๋ฅ˜ ์—†๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์•ฝํ•˜๋ฉด, ํ…Œ์ŠคํŠธ ์ค‘์‹ฌ ๊ฐœ๋ฐœ์€ ๋ฐ˜๋ณต์ ์ธ ๊ฐœ์„ ๊ณผ ์‹ ์†ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ๊ณ ํ’ˆ์งˆ์˜ ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์ƒ์„ฑ์„ ์ด‰์ง„ํ•˜๋Š” ํ•„์ˆ˜ ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. TDD๋ฅผ ๊ฐœ๋ฐœ ์›Œํฌํ”Œ๋กœ์— ํ†ตํ•ฉํ•จ์œผ๋กœ์จ AppMasterno-code ํ”Œ๋žซํผ์€ ๋‹ค์–‘ํ•œ ๊ทœ๋ชจ์˜ ์กฐ์ง์ด ์•ˆ์ •์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž์‹  ์žˆ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ํšจ์œจ์„ฑ๊ณผ ํ’ˆ์งˆ์ด ๋ชจ๋‘ ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์กฐ์„ฑํ•ฉ๋‹ˆ๋‹ค.