๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๐ŸŒˆ Chapter 7: ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์˜ ๋‹ฌ์„ฑ

๐Ÿ“š ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์„ค๊ณ„์— ์–ด๋–ป๊ฒŒ ๋„์›€์ด ๋˜๋Š”๊ฐ€โ€‹

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

๐Ÿ“š ๋ถ„๋ฅ˜๋ณด๋‹ค ์˜์‚ฌ์†Œํ†ตโ€‹

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

๐Ÿ“š ๊ฐ’ ํƒ€์ž…โ€‹

  • ๊ฐ’ ํƒ€์ž…์„ ๋„์ž…ํ•  ๋•Œ ์„ธ ๊ฐ€์ง€ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜๋Š”๋ฐ, ๋ฐ”๋กœ ๋ถ„ํ•ด, ํŒŒ์ƒ, ํฌ์žฅ์ด ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค.

๐Ÿถ ๋ถ„ํ—ค(breaking out)โ€‹

  • ์–ด๋–ค ๊ฐ์ฒด์˜ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ณ  ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ๋‹ค์ˆ˜์˜ ๊ด€์‹ฌ์‚ฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋‹ˆ ์ด๋ฅผ ์‘์ง‘๋ ฅ ์žˆ๋Š” ํ–‰์œ„์˜ ๋‹จ์œ„๋กœ ๋ถ„ํ•ดํ•ด ๋„์›€์ด ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค์–ด๋‚ด๋ผ๋Š” ์‹ ํ˜ธ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿถ ํŒŒ์ƒ(budding off)โ€‹

  • ์ฝ”๋“œ์—์„œ ์ƒˆ๋กœ์šด ๋„๋ฉ”์ธ ๊ฐœ๋…์„ ํ‘œ๊ธฐํ•˜๊ณ  ์‹ถ์„ ๋•Œ ํ•„๋“œ ํ•˜๋‚˜๋งŒ ์žˆ๊ฑฐ๋‚˜ ํ•„๋“œ๊ฐ€ ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ์œ„์น˜์ง€์ •์ž ํƒ€์ž…์„ ๋„์ž…ํ•œ๋‹ค. ์ฝ”๋“œ์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง์— ๋”ฐ๋ผ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด ์ƒˆ๋กœ์šด ํƒ€์ž…์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์œผ๋กœ ์ฑ„์šฐ๊ณ  ์ถ”๊ฐ€ํ•œ ๊ฐ ํƒ€์ž…์„ ์ด์šฉํ•ด ์ฝ”๋“œ ์ถ”์ƒํ™” ์ˆ˜์ค€์„ ๋†’์ธ๋‹ค.

๐Ÿถ ํฌ์žฅ(bundling up)โ€‹

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

๐Ÿ“š ๊ฐ์ฒด๋Š” ์–ด๋””์—์„œ ์˜ค๋Š”๊ฐ€?โ€‹

๐ŸŽˆ ๋ถ„ํ•ด: ํฐ ๊ฐ์ฒด๋ฅผ ํ˜‘๋ ฅ ๊ฐ์ฒด์˜ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„๊ธฐโ€‹

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

๐ŸŽˆ ํŒŒ์ƒ: ๊ฐ์ฒด๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ์‹ ๊ทœ ์„œ๋น„์Šค ์ •์˜์™€ ํ•ด๋‹น ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ ๊ฐ์ฒด ์ถ”๊ฐ€โ€‹

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

๐ŸŽˆ ํฌ์žฅ: ๊ด€๋ จ ๊ฐ์ฒด๋ฅผ ํฌํ•จ ๊ฐ์ฒด๋กœ ๊ฐ์ถ”๊ธฐโ€‹

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

๐Ÿ“š ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ด€๊ณ„๋ฅผ ์‹๋ณ„ํ•˜๋ผโ€‹

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

๐Ÿ“š ์ธํ„ฐํŽ˜์ด์Šค๋„ ๋ฆฌํŒฉํ„ฐ๋งํ•˜๋ผโ€‹

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

๐Ÿ“š ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑํ•ด ์‹œ์Šคํ…œ์˜ ํ–‰์œ„๋ฅผ ๊ธฐ์ˆ ํ•˜๋ผโ€‹

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

๐Ÿ“š ๊ณ ์ˆ˜์ค€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ๋Œ€๋น„โ€‹

  • ์šฐ๋ฆฌ๋Š” ์ฝ”๋“œ๋ฅผ ๋‘ ๊ฐ€์ง€ ๊ณ„์ธต์œผ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.
    • ํ•˜๋‚˜๋Š” ๊ฐ์ฒด์˜ ๊ทธ๋ž˜ํ”„์— ํ•ด๋‹นํ•˜๋Š” ๊ตฌํ˜„ ๊ณ„์ธต(implementation layer)์œผ๋กœ ์ด ๊ณ„์ธต์˜ ํ–‰์œ„๋Š” ํ•ด๋‹น ๊ณ„์ธต์— ์†ํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์ด๋ฒคํŠธ์— ์–ด๋–ป๊ฒŒ ๋ฐ˜์‘ํ•˜๋Š”๊ฐ€๋กœ ๊ฒฐ์ •๋œ๋‹ค.
    • ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๊ตฌํ˜„ ๊ณ„์ธต์˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ์„ ์–ธ์  ๊ณ„์ธต(declarative layer)์œผ๋กœ ์ž๊ทธ๋งˆํ•œ ํŽธ์˜์„ฑ ๋ฉ”์„œ๋“œ์™€ ๋ฌธ๋ฒ•์„ ์ด์šฉํ•ด ๊ฐ ๋ถ€๋ถ„์˜ ์šฉ๋„๋ฅผ ๊ธฐ์ˆ ํ•œ๋‹ค.
  • ์„ ์–ธ์  ๊ณ„์ธต์€ ์ฝ”๋“œ์—์„œ ํ•˜๋ ค๋Š” ์ผ์ด ๋ฌด์—‡์ธ์ง€๋ฅผ ๊ธฐ์ˆ ํ•˜๋Š” ๋ฐ˜๋ฉด, ๊ตฌํ˜„ ๊ณ„์ธต์—์„œ๋Š” ์ฝ”๋“œ๊ฐ€ ๊ทธ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€๋ฅผ ๊ธฐ์ˆ ํ•œ๋‹ค.
  • ๊ตฌํ˜„ ๊ณ„์ธต์—์„œ๋Š” ๊ด€๋ก€์ ์ธ ๊ฐ์ฒด ์ง€ํ–ฅ ์Šคํƒ€์ผ ์ง€์นจ์„ ๊ณ ์ˆ˜ํ•˜๋Š” ๋ฐ˜๋ฉด, ์„ ์–ธ์  ๊ณ„์ธต์˜ ๊ฒฝ์šฐ์—๋Š” ์ข€ ๋” ์œตํ†ต์„ฑ์ด ์žˆ๋‹ค. ์ฆ‰, ์—ด์ฐจ ์ „๋ณต๊ณผ ๊ฐ™์€ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์—ฐ์‡„๋‚˜ ์ •์  ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
// jMock
context.checking(new Expectations() {{
oneOf(example).doSomething(with(any(String.class)));
}});
  • ๊ฒฐ๊ตญ ๋ชฉํ‘œ๋Š” ๋” ์ ์€ ์ฝ”๋“œ๋กœ ๋” ๋งŽ์€ ์ผ์„ ํ•ด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ์Šค์Šค๋กœ๊ฐ€ ์ œ์–ด ํ๋ฆ„๊ณผ ๋ฐ์ดํ„ฐ ์กฐ์ž‘์ด๋ผ๋Š” ์ธก๋ฉด์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋” ์ž‘์€ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐ€์ง€๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š”, ์ฆ‰ ๊ฐ์ฒด๊ฐ€ ๋” ์ž‘์€ ํ–‰์œ„์˜ ๋‹จ์œ„๋ฅผ ํ˜•์„ฑํ•˜๋Š” ์ˆ˜์ค€์— ์ด๋ฅด๊ธฐ๋ฅผ ๊ฐˆ๊ตฌํ•œ๋‹ค.

๐Ÿ“š ๊ทธ๋Ÿผ ํด๋ž˜์Šค๋Š”?โ€‹

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