๐Ÿ“9์žฅ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ

๊น€์ข…์™„ยท2023๋…„ 5์›” 7์ผ
1

CleanCode

๋ชฉ๋ก ๋ณด๊ธฐ
6/6

TDD ๋ฒ•์น™ ์„ธ ๊ฐ€์ง€

  • ์ฒซ์งธ ๋ฒ•์น™: ์‹คํŒจํ•˜๋Š” ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๊นŒ์ง€ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋‘˜์งธ ๋ฒ•์น™: ์ปดํŒŒ์ผ์€ ์‹คํŒจํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ์‹คํ–‰์ด ์‹คํŒจํ•˜๋Š” ์ •๋„๋กœ๋งŒ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.
  • ์…‹์งธ ๋ฒ•์น™: ํ˜„์žฌ ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•  ์ •๋„๋กœ๋งŒ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

๊นจ๋—ํ•œ ํ…Œ์ŠคํŠธ ์œ ์ง€ํ•˜๊ธฐ

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

ํ…Œ์ŠคํŠธ๋Š” ์œ ์—ฐ์„ฑ, ์œ ์ง€๋ณด์ˆ˜์„ฑ, ์žฌ์‚ฌ์šฉ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

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

๊นจ๋—ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ๊ฐ€๋…์„ฑ์ด ์ค‘์š”ํ•˜๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ์ตœ์†Œ์˜ ํ‘œํ˜„์œผ๋กœ ๋งŽ์€ ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด์•ผ ํ•œ๋‹ค.

BUILD-OPERATE-CHECK ํŒจํ„ด ์ฒซ ๋ถ€๋ถ„์€ ํ…Œ์ŠคํŠธ ์ž๋ฃŒ๋ฅผ ๋งŒ๋“ ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ถ€๋ถ„์€ ํ…Œ์ŠคํŠธ ์ž๋ฃŒ๋ฅผ ์กฐ์ž‘ํ•˜๋ฉฐ, ์„ธ ๋ฒˆ์งธ ๋ถ€๋ถ„์€ ์กฐ์ž‘ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธํ•œ๋‹ค. ์œ„์™€ ๊ฐ™์€ ํŒจํ„ด์€ ์žก๋‹คํ•œ ์ฝ”๋“œ๋ฅผ ์—†์• ๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ๋ณธ๋ก ์— ๋Œ์ž…ํ•ด ์ง„์งœ ํ•„์š”ํ•œ ์ž๋ฃŒ ์œ ํ˜•๊ณผ ํ•จ์ˆ˜๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.

์ด์ค‘ ํ‘œ์ค€

ํ…Œ์ŠคํŠธ API ์ฝ”๋“œ์— ์ ์šฉํ•˜๋Š” ํ‘œ์ค€์€ ์‹ค์ œ ์ฝ”๋“œ์— ์ ์šฉํ•˜๋Š” ํ‘œ์ค€๊ณผ ํ™•์‹คํžˆ ๋‹ค๋ฅด๋‹ค. ๋‹จ์ˆœํ•˜๊ณ , ๊ฐ„๊ฒฐํ•˜๊ณ , ํ‘œํ˜„๋ ฅ์ด ํ’๋ถ€ํ•ด์•ผ ํ•˜์ง€๋งŒ, ์‹ค์ œ ์ฝ”๋“œ๋งŒํผ ํšจ์œจ์ ์ผ ํ•„์š”๋Š” ์—†๋‹ค. ๋‹จ์ˆœํ•˜๊ณ , ๊ฐ„๊ฒฐํ•˜๊ณ , ํ‘œํ˜„๋ ฅ์ด ํ’๋ถ€ํ•ด์•ผ ํ•˜์ง€๋งŒ, ์‹ค์ œ ์ฝ”๋“œ๋งŒํผ ํšจ์œจ์ ์ผ ํ•„์š”๋Š” ์—†๋‹ค. ์‹ค์ œ ํ™˜๊ฒฝ์ด ์•„๋‹ˆ๋ผ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ๋Œ์•„๊ฐ€๋Š” ์ฝ”๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ…Œ์ŠคํŠธ ๋‹น assert ํ•˜๋‚˜

assert ๋ฌธ์ด ๋‹จ ํ•˜๋‚˜์ธ ํ•จ์ˆ˜๋Š” ๊ฒฐ๋ก ์ด ํ•˜๋‚˜๋ผ์„œ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ๋น ๋ฅด๋‹ค. ํ•˜์ง€๋งŒ assert ๋ฌธ์„ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜๋ ค ํ•  ๊ฒฝ์šฐ ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋งŽ์•„์งˆ ์ˆ˜ ์žˆ๊ณ  ์‹œ๊ฐ„์ด ๋งŽ์ด ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋งŽ์•„์งˆ ๊ฒฝ์šฐ TEMPALTE METHOD ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๋ณต์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค. assert ๋ฌธ ๊ฐœ์ˆ˜๋Š” ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์ผ ํ•„์š”๋Š” ์—†์ง€๋งŒ ์ตœ๋Œ€ํ•œ ๊ฐœ์ˆ˜๋ฅผ ์ค„์—ฌ์•ผ ํ•œ๋‹ค.

ํ…Œ์ŠคํŠธ ๋‹น ๊ฐœ๋… ํ•˜๋‚˜

ํ•œ ํ…Œ์ŠคํŠธ ๋ฉ”์†Œ๋“œ์— ๊ฐœ๋…์ด ์—ฌ๋Ÿฌ๊ฐœ์ผ ๊ฒฝ์šฐ ์žฅํ™ฉํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์†์—์„œ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ํ…Œ์ŠคํŠธ๋‹น ๊ฐœ๋…์€ ํ•˜๋‚˜๋กœ ํ•œ๋‹ค.

F.I.R.S.T

๋น ๋ฅด๊ฒŒ: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ์ดˆ๋ฐ˜์—๋Š” ๋น ๋ฅด๊ฒŒ ์ž์ฃผ ๋Œ๋ ค์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋นจ๋ผ์•ผํ•œ๋‹ค.

๋…๋ฆฝ์ ์œผ๋กœ: ๊ฐ ํ…Œ์ŠคํŠธ๋Š” ์„œ๋กœ ์˜์กดํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ๋Š” ์–ด๋–ค ์ˆœ์„œ์—ฌ๋„ ์‹คํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค.

๋ฐ˜๋ณต๊ฐ€๋Šฅํ•˜๊ฒŒ: ํ…Œ์ŠคํŠธ๋Š” ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ๋„ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค.

์ž๊ฐ€๊ฒ€์ฆํ•˜๋Š”: ํ…Œ์ŠคํŠธ๋Š” ๋ถ€์šธ(bool) ๊ฐ’์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด์•ผํ•œ๋‹ค.

์ ์‹œ์—: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ํ…Œ์ŠคํŠธํ•˜๋ ค๋Š” ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์ง์ „์— ๊ตฌํ˜„ํ•œ๋‹ค. ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ ๋‹ค์Œ์— ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๋ฉด ์‹ค์ œ ์ฝ”๋“œ๊ฐ€ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ• ์ง€ ๋ชจ๋ฅธ๋‹ค.

profile
๊ฐœ๋ฐœ์— ์žฌ๋ฏธ๋ฅผ ๋Š๋ผ๋ฉฐ ๊พธ์ค€ํžˆ ์„ฑ์žฅํ•˜๋Š” ๊ฐœ๋ฐœ์ž ๊น€์ข…์™„ ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€