ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

CS/Design Pattern

[Design Pattern] TDD(ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ)

๊ฐœ๋ฐœ๊ฐœ๊ตด๐Ÿธ 2022. 7. 4. 20:19

TDD๋ž€?

TDD๋ž€ Test Driven Development์˜ ์•ฝ์ž๋กœ 'ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ'์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋ณต ํ…Œ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ ์ž‘์€ ๋‹จ์œ„์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰,  ์งง์€ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ์˜ ๋ฐ˜๋ณต์— ์˜์กดํ•˜๋Š” ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์ด๋ฉฐ ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก  ์ค‘ ํ•˜๋‚˜์ธ eXtream Programming(XP)์˜ 'Test-First'๊ฐœ๋…์— ๊ธฐ๋ฐ˜์„ ๋‘” ๋‹จ์ˆœํ•œ ์„ค๊ณ„๋ฅผ ์ค‘์š”์‹œํ•ฉ๋‹ˆ๋‹ค.

 

**eXtream Programming(XP) : ๋ฏธ๋ž˜์— ๋Œ€ํ•œ ์˜ˆ์ธก์„ ์ตœ๋Œ€ํ•œ ํ•˜์ง€ ์•Š๊ณ  ์ง€์†์ ์œผ๋กœ ํ”„๋กœํ† ํƒ€์ž…์„ ์™„์„ฑํ•˜๋Š” ์• ์ž์ผ ๊ธฐ๋ฐฉ๋ฒ•๋ก  ์ค‘ ํ•˜๋‚˜๋กœ, ์ถ”๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์ด ์ƒ๊ธฐ๋”๋ผ๋„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Œ

 

TDD์˜ ์ ˆ์ฐจ

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

 

TDD์˜ ๊ฐœ๋ฐœ์ฃผ๊ธฐ

[TDD ๊ฐœ๋ฐœ ์ฃผ๊ธฐ]

  • { Red } ๋‹จ๊ณ„์—์„œ๋Š” ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•œ๋‹ค.
  • { Green } ๋‹จ๊ณ„์—์„œ๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์„ฑ๊ณต์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.
  • { Blue } ๋‹จ๊ณ„์—์„œ๋Š” ์ค‘๋ณต ์ฝ”๋“œ ์ œ๊ฑฐ, ์ผ๋ฐ˜ํ™” ๋“ฑ์˜ ๋ฆฌํŒฉํ† ๋ง์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์ค‘์š”ํ•œ ๊ฒƒ์€ ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๊นŒ์ง€ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๊ณผ, ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•  ์ •๋„์˜ ์ตœ์†Œ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

TDD์˜ ์žฅ์ 

 

๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ์ฝ”๋“œ ๊ฐœ๋ฐœ

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

 

์„ค๊ณ„ ์ˆ˜์ • ์‹œ๊ฐ„์˜ ๋‹จ์ถ•

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

๋””๋ฒ„๊น… ์‹œ๊ฐ„์˜ ๋‹จ์ถ•

๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”ํ›„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์„ ๋•Œ ๊ฐ๊ฐ์˜ ๋ชจ๋“ˆ๋ณ„๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด๋ณด๋ฉด ๋ฌธ์ œ์˜ ์ง€์ ์„ ์‰ฝ๊ฒŒ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์ ์€ DB์˜์—ญ, Application์˜์—ญ, Data์˜์—ญ, Memory์˜์—ญ ๋“ฑ ๋‹ค์–‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์˜์—ญ์„ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธํ•˜๊ฒŒ ๋˜๋ฉด ์‰ฝ๊ฒŒ ๋ฌธ์ œ ์ง€์ ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

**๋‹จ์œ„ ํ…Œ์ŠคํŠธ : ํ•œ ๋‹จ์œ„(์ผ๋ฐ˜์ ์œผ๋กœ class)๋งŒ์„ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๊ฒƒ

 

์œ ์ง€ ๋ณด์ˆ˜์˜ ์šฉ์ด์„ฑ

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

 

ํ…Œ์ŠคํŠธ ๋ฌธ์„œ์˜ ๋Œ€์ฒด ๊ฐ€๋Šฅ

TDD๋ฅผ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ์— ํ…Œ์ŠคํŒ…์„ ์ž๋™ํ™” ์‹œํ‚ด๊ณผ ๋™์‹œ์— ๋ณด๋‹ค ์ •ํ™•ํ•œ ํ…Œ์ŠคํŠธ ๊ทผ๊ฑฐ๋ฅผ ์‚ฐ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

TDD์˜ ๋‹จ์ 

์ƒ์‚ฐ์„ฑ ์ €ํ•˜

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

 

(์ด๋Ÿฌํ•œ ํŠน์ง• ๋•Œ๋ฌธ์— ๋‚ฉ๊ธฐ์ผ์ด ์ค‘์š”ํ•œ SI์—…์ฒด์—์„œ๋Š” TDD ๋ฐฉ์‹์„ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.)

 

 

http://clipsoft.co.kr/wp/blog/tddtest-driven-development-%EB%B0%A9%EB%B2%95%EB%A1%A0/

 

TDD(Test-Driven-Development) ๋ฐฉ๋ฒ•๋ก  - CLIPSOFT

์ž‘์„ฑ์ž : ๊ฐ•์„ฑ์›… ๋ถ€์žฅ   TDD(Test-Driven-Development) ๋ฐฉ๋ฒ•๋ก ์— ๋Œ€ํ•˜์—ฌ…     - TDD๊ฐ€ ๋ฌด์—‡ ์ผ๊นŒ? TDD๋ž€ Test Driven Development์˜ ์•ฝ์ž๋กœ ‘ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ’์ด๋ผ๊ณ  ํ•œ๋‹ค. ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ(TDD)์€ ์„ค๊ณ„ ์ดํ›„

clipsoft.co.kr

https://hanamon.kr/tdd%EB%9E%80-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A3%BC%EB%8F%84-%EA%B0%9C%EB%B0%9C/

 

TDD๋ž€? ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ - ํ•˜๋‚˜๋ชฌ

TDD๋ž€ Test Driven Development์˜ ์•ฝ์ž๋กœ 'ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ'์ด๋ผ๊ณ  ํ•œ๋‹ค.

hanamon.kr

https://media.fastcampus.co.kr/knowledge/dev/tdd/

 

TDD๋ž€? ํ…Œ์ŠคํŠธ์ฃผ๋„๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ํŽธ๊ฒฌ๊ณผ ์‹ค์ƒ, ๋ฐฉ๋ฒ•๋ก 

TDD, ์ฆ‰ ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ(Test Driven Development)์— ๋Œ€ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์˜ ์˜๊ฒฌ์€ ๋Š˜ ์—‡๊ฐˆ๋ฆฐ๋‹ค. TDD์˜ ์‹คํšจ์„ฑ์„ ์—…๋ฌด๋กœ ๊ฒฝํ—˜ํ•œ ์‚ฌ๋žŒ๋“ค์€ TDD๋ฅผ ๋” ํšจ๊ณผ์ ์œผ๋กœ ์‹ค๋ฌด์— ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ๋ฏผํ•œ๋‹ค. ๋ฐ˜๋ฉด, ํšŒ์‚ฌ

media.fastcampus.co.kr

https://m.blog.naver.com/suresofttech/221569611618

 

TDD(Test-driven Development) ์†Œ๊ฐœ

์ตœ๊ทผ ํ™”์ œ๊ฐ€ ๋˜๊ณ  ์žˆ๋Š” TDD์— ๋Œ€ํ•œ ๊ด€์‹ฌ์ด ๊ฐˆ์ˆ˜๋ก ๊นŠ์–ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณผ์—ฐ TDD๋ž€ ๋ฌด์—‡์ธ์ง€ ์ด๋ฒˆ ๊ธฐ...

blog.naver.com