[๐Ÿ“š๋…ํ›„๊ฐ ] Clean Code_9. ๋‹จ์œ„ํ…Œ์ŠคํŠธ

ํ˜ธ๋žญ์ดยท2022๋…„ 9์›” 29์ผ
0

๐Ÿ“š๋…ํ›„๊ฐ

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

๋Š๋‚€ ์  ๋จผ์ €

๋ฐ”๋กœ ์–ผ๋งˆ ์ „ TDD๋ฅผ ์ด์šฉํ•œ ํ† ์ดํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•œ ์ ์ด ์žˆ์–ด์„œ ๋” ๊ด€์‹ฌ์žˆ๊ฒŒ ์ฝ์—ˆ๋‹ค.

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

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

๊ฐ€๋…์„ฑ?

๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์˜€๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์—ญ์‹œ ๊ฐ€๋…์„ฑ์€ ๋‚˜์˜์ง€ ์•Š์•˜๋‹ค.

์ตœ์†Œํ•œ์˜ assert?

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

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

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

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


์˜ค๋Š˜ ์ฝ์€ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ TDD ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•œ๋ฒˆ ๋” ์ง„ํ–‰ํ•ด๋ณด๊ณ  ์‹ถ์–ด์กŒ๋‹ค.

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

๋ฐ˜์„ฑ์˜ ์‹œ๊ฐ„...



๋‚ด์šฉ ์š”์•ฝ

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

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

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

๊นจ๋—ํ•œ ์ฝ”๋“œ ์œ ์ง€ํ•˜๊ธฐ

์ง€์ €๋ถ„ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ์˜คํžˆ๋ ค ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๋ณด๋‹ค ๋ชปํ•˜๋‹ค.

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

ํ•˜์ง€๋งŒ ํ…Œ์ŠคํŠธ๊ฐ€ ์—†์œผ๋ฉด ๊ฒฐํ•จ์„ ์ฐพ์•„๋‚ด๊ณ  ์ฝ”๋“œ๋ฅผ ๊ฒ€์ฆํ•  ์ˆ˜ ์—†๊ณ , ๊ฒฐํ•จ์œจ์ด ๋†’์•„์ง„๋‹ค. ๊ฒฐํ•จ์ด ๋งŽ์•„์ง€๋ฉด ๊ฐœ๋ฐœ์ž๋Š” ๋ณ€๊ฒฝ์„ ์ฃผ์ €ํ•˜๊ฒŒ ๋˜๊ณ  ์ฝ”๋“œ๊ฐ€ ์ ์ฐจ ๋ง๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

๊ฒฐ๋ก ์€, ๊นจ๋—ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์งœ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ์‚ฌ๊ณ ์™€ ์„ค๊ณ„์™€ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์‹ค์ œ ์ฝ”๋“œ ๋ชป์ง€ ์•Š๊ฒŒ ๊นจ๋—ํ•ด์•ผํ•œ๋‹ค.

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

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

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

๊นจ๋—ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋ ค๋ฉด ๊ฐ€๋…์„ฑ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค.
๊ฐ€๋…์„ฑ์€ ์‹ค์ œ ์ฝ”๋“œ๋ณด๋‹ค ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์—์„œ ๋”์šฑ ์ค‘์š”ํ•˜๋‹ค. ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด์„œ๋Š”? ๋ช…๋ฃŒ์„ฑ, ๋‹จ์ˆœ์„ฑ, ํ‘œํ˜„๋ ฅ์ด ํ•„์š”ํ•˜๋‹ค.
ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ์ตœ์†Œ์˜ ํ‘œํ˜„์œผ๋กœ ๋งŽ์€ ๊ฒƒ์„ ๋‚˜ํƒ€๋‚ด์•ผ ํ•œ๋‹ค.

ํ…Œ์ŠคํŠธ ๋‹น assert์€ ์ตœ๋Œ€ํ•œ ์ค„์ธ๋‹ค

ํ…Œ์ŠคํŠธ ๋‹น assert์€ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•˜๋Š” ์˜๊ฒฌ์ด ์žˆ๋Š”๋ฐ, ๊ฐ€ํ˜นํ•˜๋‹ค๊ณ  ๋Š๊ปด์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ํ™•์‹คํžˆ ์žฅ์ ์ด ์žˆ๋‹ค. assert๋ฌธ์ด ๋‹จ ํ•˜๋‚˜์ธ ํ•จ์ˆ˜๋Š” ๊ฒฐ๋ก ์ด ํ•˜๋‚˜๋ผ์„œ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ๋น ๋ฅด๋‹ค.
์ด๋ ‡๊ฒŒ ํ…Œ์ŠคํŠธ๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉด ์ฝ”๋“œ์˜ ์ค‘๋ณต์ด ๋งŽ์•„์ง„๋‹ค. ์ด๊ฒƒ์€ TEAMPLATE METHOD ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๋ณต์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค. givem/when ๋ถ€๋ถ„์„ ๋ถ€๋ชจ ํด๋ž˜์Šค์— ๋‘๊ณ  then ๋ถ€๋ถ„์„ ์ž์‹ ํด๋ž˜์Šค์— ๋‘๋ฉด ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๋ฐฉ์‹์€ ์ฝ”๋“œ๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ๋งŽ์•„์งˆ ์ˆ˜ ์žˆ๋‹ค.
์ด์ฒ˜๋Ÿผ ํ•„์š”์„ฑ์— ๋”ฐ๋ผ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜์— ์—ฌ๋Ÿฌ assert๋ฌธ์„ ๋„ฃ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, assert๋ฌธ์˜ ๊ฐœ์ˆ˜๋Š” ์ตœ๋Œ€ํ•œ ์ค„์—ฌ์•ผ ์ข‹๋‹ค.

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

์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐœ๋…์„ ์—ฐ์†์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ธด ํ•จ์ˆ˜๋Š” ํ”ผํ•œ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ๋…์„ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋กœ ๋ชฐ์•„๋„ฃ์œผ๋ฉด ๊ฐ ์ฝ”๋“œ์˜ ์ด์œ ์™€ ๊ฐ ์ ˆ์ด ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฐœ๋…์„ ๋ชจ๋‘ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค.

F.I.R.S.T.

๊นจ๋—ํ•œ ํ…Œ์ŠคํŠธ๋Š” ๋‹ค์Œ ๋‹ค์„ฏ๊ฐ€์ง€ ๊ทœ์น™์„ ๋”ฐ๋ฅธ๋‹ค.
1. Fast
ํ…Œ์ŠคํŠธ๋Š” ๋นจ๋ผ์•ผ ํ•œ๋‹ค. ํ…Œ์ŠคํŠธ๊ฐ€ ๋Š๋ ค์„œ ์ž์ฃผ ๋Œ๋ฆฌ์ง€ ์•Š์œผ๋ฉด ์ดˆ๋ฐ˜์— ๋ฌธ์ œ๋ฅผ ์ฐพ์•„๋‚ด๊ฑฐ๋‚˜ ์‰ฝ๊ฒŒ ์ •๋ฆฌํ•˜์ง€ ๋ชปํ•œ๋‹ค.
2. Imdependent
๊ฐ ํ…Œ์ŠคํŠธ๋Š” ๋…๋ฆฝ์ ์ด์–ด์•ผ ํ•œ๋‹ค. ์„œ๋กœ ์˜์กดํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ์–ด๋–ค ์ˆœ์„œ๋กœ ์‹คํ–‰ํ•ด๋„ ๊ดœ์ฐฎ์•„์•ผ ํ•œ๋‹ค. ํ…Œ์ŠคํŠธ๊ฐ€ ์„œ๋กœ์—๊ฒŒ ์˜์กดํ•˜๋ฉด ํ•˜๋‚˜๊ฐ€ ์‹คํŒจํ•  ๋•Œ ๋‚˜๋จธ์ง€๋„ ์—ฐ๋‹ฌ์•„ ์‹คํŒจํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›์ธ์„ ์ฐพ์•„๋‚ด๊ธฐ ํž˜๋“ค๊ณ  ๊ฒฐํ•จ์ด ์ˆจ๊ฒจ์ง„๋‹ค.
3. Repeatable
ํ…Œ์ŠคํŠธ๋Š” ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ๋„ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค. ์‹ค์ œ ํ™˜๊ฒฝ, QA ํ™˜๊ฒฝ, ๋„คํŠธ์›Œํฌ๊ฐ€ ์—†๋Š” ํ™˜๊ฒฝ ๋“ฑ์—์„œ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํ™˜๊ฒฝ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค. ๋˜, ํ™˜๊ฒฝ์ด ์ง€์›๋˜์ง€ ์•Š๊ธฐ์— ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ผ์ด ์—†๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.
4. Self-Vaildating
ํ…Œ์ŠคํŠธ๋Š” ์ž๊ฐ€๊ฒ€์ฆ ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค. ํ…Œ์ŠคํŠธ๋Š” Bool ๊ฐ’์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด์•ผ ํ•œ๋‹ค. ํ†ต๊ณผ ์—ฌ๋ถ€๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด ๋กœ๊ทธ ํŒŒ์ผ์„ ์ฝ๊ฒŒ ๋˜๋ฉด ์•ˆ๋œ๋‹ค. ํ…์ŠคํŠธ๋ฅผ ์ง์ ‘ ๋น„๊ตํ•ด์„œ๋„ ์•ˆ๋œ๋‹ค. ํ…Œ์ŠคํŠธ๊ฐ€ ์Šค์Šค๋กœ ์„ฑ๊ณต๊ณผ ์‹คํŒจ๋ฅผ ๊ฐ€๋Š ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํŒ๋‹จ์€ ์ฃผ๊ด€์ ์ด ๋˜๋ฉฐ ์ˆ˜์ž‘์—…์ด ํ•„์š”ํ•˜๊ฒŒ ๋œ๋‹ค.
5. Timely
ํ…Œ์ŠคํŠธ๋Š” ์ ์‹œ์— ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ํ…Œ์ŠคํŠธํ•˜๋ ค๋Š” ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์ง์ „์— ๊ตฌํ˜„ํ•œ๋‹ค. ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ ๋’ค์— ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๋ฉด ์‹ค์ œ ์ฝ”๋“œ๊ฐ€ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ค์šด ์ฝ”๋“œ๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ๋‹ค. ์‹ค์ œ ์ฝ”๋“œ๊ฐ€ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋„๋ก ๋จผ์ € ์งœ์—ฌ์งˆ ์ˆ˜ ์žˆ๋‹ค.

๊ฒฐ๋ก 

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

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