์ํํธ์จ์ด ๊ฐ๋ฐ ์์ญ์์ ๋ฐฉ๋ฒ๋ก ๊ณผ ์ค๋ฌด๋ ๊ฐ๋ฐ ํ๋ก์ ํธ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ฑํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ๊ทธ๋ฌํ ๋ฐฉ๋ฒ๋ก ์ค ํ๋๊ฐ ์ค์ ๊ตฌํ์ด ์์๋๊ธฐ ์ ์ ํ ์คํธ ์ผ์ด์ค ์์ฑ์ ์ค์ ์ ๋๋ 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 ํ๋ซํผ์ ๋ค์ํ ๊ท๋ชจ์ ์กฐ์ง์ด ์์ ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์๊ฒ ๋ง๋ค ์ ์๋๋ก ํ์ฌ ํจ์จ์ฑ๊ณผ ํ์ง์ด ๋ชจ๋ ์ฑ๊ณตํ ์ ์๋ ํ๊ฒฝ์ ์กฐ์ฑํฉ๋๋ค.