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

๐Ÿญ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ

์ „์ฒด ์ •๋ฆฌ ์ฐธ๊ณ : https://saseungmin.github.io/reading_books_record_repository/docs/test/unit-test/table-of-contents

๐Ÿค Chapter 1: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์˜ ๋ชฉํ‘œโ€‹

๋‹จ์œ„ ํ…Œ์ŠคํŠธ์˜ ๋ชฉํ‘œ๋Š” ๋ฌด์—‡์ธ๊ฐ€? ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ์ ํŠธ์˜ ์ง€์† ๊ฐ€๋Šฅํ•œ ์„ฑ์žฅ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด๋‹ค. ์ง€์† ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ด๋‹ค.

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

ํ…Œ์ŠคํŠธ๋Š” ์ดˆ๋ฐ˜์— ๋…ธ๋ ฅ(์–ด์ฉŒ๋ฉด ์ƒ๋‹นํ•œ ๋…ธ๋ ฅ)์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ์ ํŠธ ํ›„๋ฐ˜์—๋„ ์ž˜ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ฏ€๋กœ ์žฅ๊ธฐ์ ์œผ๋กœ ๋ณด๋ฉด ๊ทธ ๋น„์šฉ์„ ๋ฉ”์šธ ์ˆ˜ ์žˆ๋‹ค.

์ง€์†์„ฑ๊ณผ ํ™•์žฅ์„ฑ์ด ํ•ต์‹ฌ์ด๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ์žฅ๊ธฐ์ ์œผ๋กœ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

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

ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ ํ’ˆ์งˆ์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์–ด๋–ค ์ปค๋ฒ„๋ฆฌ์ง€ ์ง€ํ‘œ๋„ ์˜์กดํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ์‹œ์Šคํ…œ์˜ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€์ฆํ•œ๋‹ค๊ณ  ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค.
  • ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฝ”๋“œ ๊ฒฝ๋กœ๋ฅผ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋ฒ„๋ฆฌ์ง€ ์ง€ํ‘œ๋Š” ์—†๋‹ค.

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

์„ฑ๊ณต์ ์ธ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์„ฑ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.

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

๐Ÿค Chapter 2: ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ž€ ๋ฌด์—‡์ธ๊ฐ€โ€‹

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

์ข…ํ•ฉํ•˜๋ฉด ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์˜๊ฒฌ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

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

๋Ÿฐ๋˜ํŒŒ์˜ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์ ์„ ์ œ๊ณตํ•œ๋‹ค.

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

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

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

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

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

์—”๋“œ ํˆฌ ์—”๋“œ ํ…Œ์ŠคํŠธ๋Š” ์œ ์ง€ ๋ณด์ˆ˜ ์ธก๋ฉด์—์„œ ๊ฐ€์žฅ ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•œ ํ›„ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค ํ›„๋ฐ˜์— ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.