Community

TDD, BDD, DDD๊ฐ€ ๋ญ์•ผ? โœจ

๐Ÿ“ TDD (Test Driven Development) - ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ - ๋งค์šฐ ์งง์€ ๊ฐœ๋ฐœ ์„œํด์˜ ๋ฐ˜๋ณต์„ ๊ฐ–๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค - ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ํ•ด๋‹น ์ผ€์ด์Šค๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๊ฐ€์žฅ ์งง๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ - ๋›ฐ์–ด๋‚œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ - ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋จผ์ € ์ž‘์„ฑ ํ›„ ํ†ต๊ณผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๊ทธ ์ดํ›„ ๋ฆฌํŒฉํ† ๋ง ์žฅ์  - ์š”๊ตฌ์‚ฌํ•ญ ์ดํ•ด๋„ ํ–ฅ์ƒ - ๊ธฐ์กด ๊ธฐ๋Šฅ ์ •์ƒ ๋™์ž‘ ํ™•์ธ ๊ฐ€๋Šฅ - ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง ๋‹จ์  - ์ฝ”๋“œ๋Ÿ‰ ์ฆ๊ฐ€ - ์ง„์ž…์žฅ๋ฒฝ - ์ฃผ๊ฐ์ „๋„ ๐Ÿ“ DDD (Domain Driven Design) - ๋„๋ฉ”์ธ ์ฃผ๋„ ๊ฐœ๋ฐœ - ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ณต์žก์„ฑ ์ตœ์†Œํ™” - ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ์˜ ์ ‘๊ทผ๋ฒ•์„ ํƒˆํ”ผํ•˜์—ฌ ์ˆœ์ˆ˜ํ•œ ๋„๋ฉ”์ธ์˜ ๋ชจ๋ธ๊ณผ ๋กœ์ง์— ์ง‘์ค‘ - ๋ชจ๋“  ๋ฌธ์„œ์™€ ์ฝ”๋“œ์— ๋™์ผํ•œ ํ‘œํ˜„๊ณผ ๋‹จ์–ด๋กœ ๊ตฌ์„ฑ๋œ ๋‹จ์ผํ™”๋œ ์–ธ์–ด์ฒด๊ณ„ ๊ตฌ์ถ• - ๋ถ„์„, ์„ค๊ณ„, ๊ตฌํ˜„๊นŒ์ง€ ํ†ต์ผ๋œ ๋ฐฉ์‹์œผ๋กœ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๊ฐ€๋Šฅ - DDD์˜ ํ•ต์‹ฌ ๋ชฉํ‘œ๋Š” "Loosly coupling", "High cohesion" - ๊ธฐ์ˆ ๋ณด๋‹ค ๋„๋ฉ”์ธ์ด ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ ธ์•ผํ•จ - ๋ถ„์„ ๋ชจ๋ธ๋ง๋ถ€ํ„ฐ ์ฝ”๋“œ๊นŒ์ง€ ํ•ญ์ƒ ๊ฐ™์ด ์›€์ง์ด๋Š” ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ์ง€ํ–ฅ ๐Ÿ“ BDD (Behavior Driven Development) - ํ–‰๋™ ์ฃผ๋„ ๊ฐœ๋ฐœ - TDD์— DDD์˜ ์Šคํƒ€์ผ์„ ์ ์šฉํ•˜์—ฌ ํƒ„์ƒ - ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž์ฒด๊ฐ€ ์š”๊ตฌ์‚ฌ์–‘์ด ๋˜๋„๋ก ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ์‹ - TDD์—์„œ๋Š” ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋กœ ์ž‘์„ฑ๋œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’๊ณ  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ–ˆ์œผ๋‚˜, BDD๋Š” ์ด๊ฒƒ์„ ํ†ตํ•ฉํ…Œ์ŠคํŠธ์™€ ์‹œ๋‚˜๋ฆฌ์˜ค ํ…Œ์ŠคํŠธ๊นŒ์ง€ ํ™•์žฅํ•˜์—ฌ ๊ฐ๊ฐ์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ๋Œ€์ฒด

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค