216.73.216.141 TODAY : 65,797

PHP ์˜จ๋ผ์ธ ๊ฐ•์˜

 > 

PHP - ์ตœ์ƒ๊ธ‰

๐Ÿ“š PHP ์ตœ์ƒ๊ธ‰ - 6์ฃผ์ฐจ: ํ…Œ์ŠคํŠธ ์ž๋™ํ™” (๋‹จ์œ„/ํ†ตํ•ฉ/E2E ํ…Œ์ŠคํŠธ)- 04 ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ (TDD) ์†Œ๊ฐœ

๐Ÿ“š PHP ์ตœ์ƒ๊ธ‰ - 6์ฃผ์ฐจ: ํ…Œ์ŠคํŠธ ์ž๋™ํ™” (๋‹จ์œ„/ํ†ตํ•ฉ/E2E ํ…Œ์ŠคํŠธ)- 04 ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ (TDD) ์†Œ๊ฐœ

์ฃผ์š” ํ”„๋กœ๊ทธ๋žจ ์ŠคํŽ™

  • ํ‰์ : 10.0
  • ๋ผ์ด์„ ์Šค: free
  • ์šด์˜์ฒด์ œ:
  • ํŒŒ์ผ ํฌ๊ธฐ: 0

ํ”ผ๋“œ๋ฐฑ ๋ฐ ๋‹ค์šด๋กœ๋“œ

  • ์‚ฌ์šฉ์ž ํ‰์ : 10.0
  • ๋‹ค์šด๋กœ๋“œ ์ˆ˜: 0
  • ์กฐํšŒ์ˆ˜: 5

์ œ์กฐ์‚ฌ ๋ฐ ๋“ฑ๋ก ์ •๋ณด

  • ์ œ์ž‘์‚ฌ: LUZENSOFT
  • ๋“ฑ๋ก์ผ: 2025-10-22 08:47:33
  •  

- ์„ค๋ช…

ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ(TDD)์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

uploadImage

#ํ…Œ์ŠคํŠธ #์ฃผ๋„ #๊ฐœ๋ฐœ(#TDD: Test-Driven Development)์€ #์†Œํ”„ํŠธ์›จ์–ด #๊ฐœ๋ฐœ #๋ฐฉ๋ฒ•๋ก  ์ค‘ ํ•˜๋‚˜๋กœ, ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์ „์— ์‹คํŒจํ•˜๋Š” #ํ…Œ์ŠคํŠธ #์ผ€์ด์Šค๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ํ•ต์‹ฌ์œผ๋กœ ํ•ด์š”. TDD๋Š” ๋‹จ์ˆœํžˆ #ํ…Œ์ŠคํŠธ๋ฅผ #์ž๋™ํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋„˜์–ด, #์„ค๊ณ„(#Design)์— ์ค‘์ ์„ ๋‘๊ณ  #๊ฐœ๋ฐœ #ํ”„๋กœ์„ธ์Šค๋ฅผ ์ด๋Œ์–ด๊ฐ€๋Š” ์ฒด๊ณ„์ ์ธ ๋ฐฉ์‹์ด์—์š”.

TDD์˜ ๋ชฉ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์š”.

  • #์ฝ”๋“œ #ํ’ˆ์งˆ ํ–ฅ์ƒ: ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋„๋ก ๊ฐ•์ œํ•˜์—ฌ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ชจ๋“ˆํ™”๊ฐ€ ์ž˜ ๋œ, ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์€ #์„ค๊ณ„๋ฅผ ์œ ๋„ํ•ด์š”.

  • #๋ฒ„๊ทธ #๊ฐ์†Œ: ์ฝ”๋“œ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š” ์ˆœ๊ฐ„๋ถ€ํ„ฐ #๊ฒ€์ฆ์ด ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— #๊ฒฐํ•จ(#Defect)์„ ์ดˆ๊ธฐ์— ๋ฐœ๊ฒฌํ•˜๊ณ  ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์–ด์š”.

  • #๊ฐœ๋ฐœ #์†๋„ ์œ ์ง€: #์ž๋™ํ™”๋œ #ํ…Œ์ŠคํŠธ #์Šค์œ„ํŠธ(#Test_Suite)๋Š” #๋ฆฌํŒฉํ† ๋ง ์‹œ ๊ธฐ์กด ๊ธฐ๋Šฅ์ด ๋ง๊ฐ€์ง€์ง€ ์•Š์Œ์„ ๋ณด์žฅํ•˜๋Š” #์•ˆ์ „๋ง ์—ญํ• ์„ ํ•˜์—ฌ, ์žฅ๊ธฐ์ ์œผ๋กœ #๊ฐœ๋ฐœ #์†๋„๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค˜์š”.



TDD์˜ ํ•ต์‹ฌ ์ฃผ๊ธฐ: Red-Green-Refactor

uploadImage

TDD๋Š” ์„ธ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ˜๋ณต์ ์ธ ์ฃผ๊ธฐ๋ฅผ ๋”ฐ๋ผ์š”. ์ด ์ฃผ๊ธฐ๋Š” ํ”ํžˆ #Red-Green-Refactor๋ผ๊ณ  ๋ถˆ๋ ค์š”.


1. Red (์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ž‘์„ฑ)


  • ๋ชฉํ‘œ: ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ์ˆ˜์ • ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์‹คํŒจํ•  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒ๋˜๋Š” #ํ…Œ์ŠคํŠธ #์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•ด์š”.

  • ์›์น™: ์ด๋•Œ๋Š” ์‹ค์ œ ๊ตฌํ˜„ ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์•„์•ผ ํ•ด์š”. ์ฆ‰, #ํ…Œ์ŠคํŠธ๋ฅผ #์‹คํ–‰ํ•˜๋ฉด ๋ฐ˜๋“œ์‹œ **#์‹คํŒจ(#Red)**ํ•ด์•ผ ํ•ด์š”. ์ด ๋‹จ๊ณ„๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ๋ฌด์—‡์„ ๋งŒ๋“ค ๊ฒƒ์ธ์ง€ ๋ช…ํ™•ํžˆ ์ •์˜ํ•˜๊ฒŒ ๋ผ์š”.


2. Green (ํ…Œ์ŠคํŠธ ํ†ต๊ณผ๋ฅผ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ ์ž‘์„ฑ)


  • ๋ชฉํ‘œ: ์•ž์„œ ์ž‘์„ฑํ•œ #ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๊ธฐ ์œ„ํ•œ #์ตœ์†Œํ•œ์˜ #์‹ค์ œ #์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์š”.

  • ์›์น™: ์˜ค์ง #ํ…Œ์ŠคํŠธ๋ฅผ #ํ†ต๊ณผ(#Green)์‹œํ‚ค๋Š” ๊ฒƒ์—๋งŒ ์ง‘์ค‘ํ•ด์š”. ์ด ๋‹จ๊ณ„์—์„œ๋Š” ์•„์ง #์„ค๊ณ„์˜ #์™„๋ฒฝํ•จ์ด๋‚˜ #์ฝ”๋“œ์˜ #์ตœ์ ํ™”๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋ผ์š”.


3. Refactor (์ฝ”๋“œ ๊ฐœ์„ )


  • ๋ชฉํ‘œ: #ํ…Œ์ŠคํŠธ๊ฐ€ ๋ชจ๋‘ #ํ†ต๊ณผํ•œ(#Green) ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ, ์ฝ”๋“œ์˜ #์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ , #๊ฐ€๋…์„ฑ์„ ๋†’์ด๋ฉฐ, #์„ค๊ณ„๋ฅผ #๊ฐœ์„ ํ•ด์š”.

  • ์›์น™: ํ…Œ์ŠคํŠธ๊ฐ€ #์•ˆ์ „๋ง ์—ญํ• ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ๋ฅผ ์ž์‹ ๊ฐ ์žˆ๊ฒŒ #๋ฆฌํŒฉํ† ๋งํ•  ์ˆ˜ ์žˆ์–ด์š”. #Green ์ƒํƒœ์—์„œ๋งŒ #๋ฆฌํŒฉํ† ๋ง์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋ฉฐ, ๋ฆฌํŒฉํ† ๋ง ํ›„์—๋„ ๋ชจ๋“  #ํ…Œ์ŠคํŠธ๊ฐ€ #Green์„ ์œ ์ง€ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ด์š”.

์ด ์„ธ ๋‹จ๊ณ„๋ฅผ ์ž‘์€ ๋‹จ์œ„๋กœ ๋น ๋ฅด๊ฒŒ ๋ฐ˜๋ณตํ•จ์œผ๋กœ์จ ๊ธฐ๋Šฅ์ด ์ ์ง„์ ์œผ๋กœ ์™„์„ฑ๋˜๊ณ , ๊ทธ ๊ณผ์ •์—์„œ ์ฝ”๋“œ์˜ ํ’ˆ์งˆ๋„ ์ง€์†์ ์œผ๋กœ ๊ฐœ์„ ๋ผ์š”.



PHP ํ™˜๊ฒฝ์—์„œ์˜ TDD ์ ์šฉ

uploadImage

#PHP ๊ฐœ๋ฐœ์—์„œ TDD๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ํšจ๊ณผ์ ์ด์—์š”. #PHPUnit๊ณผ ๊ฐ™์€ #๋‹จ์œ„ #ํ…Œ์ŠคํŒ… #ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ TDD ์‚ฌ์ดํด์„ ์ง€์›ํ•˜๋Š” ๋ฐ ์ตœ์ ํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์—์š”.


1. ๋„๊ตฌ ํ™œ์šฉ


  • #PHPUnit: #๋‹จ์œ„ #ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” #PHP์˜ #ํ‘œ์ค€ #ํ…Œ์ŠคํŒ… #๋„๊ตฌ์˜ˆ์š”. TDD์˜ #Red ๋ฐ #Green ๋‹จ๊ณ„๋ฅผ ์ง€์›ํ•ด์š”.

  • #IDE/์—๋””ํ„ฐ: #PhpStorm๊ณผ ๊ฐ™์€ #ํ†ตํ•ฉ #๊ฐœ๋ฐœ #ํ™˜๊ฒฝ(#IDE)์ด๋‚˜ #VSCode ๊ฐ™์€ ์—๋””ํ„ฐ๋Š” #PHPUnit๊ณผ์˜ #์—ฐ๋™์„ ์ง€์›ํ•˜์—ฌ, ์ฝ”๋“œ๋ฅผ ์ €์žฅํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ #ํ…Œ์ŠคํŠธ๋ฅผ #์‹คํ–‰ํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ #TDD #์‚ฌ์ดํด์„ ๊ฐ€์†ํ™”ํ•  ์ˆ˜ ์žˆ์–ด์š”.


2. Mock ๊ฐ์ฒด์˜ ์ค‘์š”์„ฑ


TDD ๊ณผ์ •์—์„œ #๋‹จ์œ„ #ํ…Œ์ŠคํŠธ์˜ #๋…๋ฆฝ์„ฑ(#Isolation)์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ด์š”. #ํ…Œ์ŠคํŠธ #๋Œ€์ƒ #๋ชจ๋“ˆ์ด #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ #์™ธ๋ถ€ #API์™€ ๊ฐ™์€ #์™ธ๋ถ€ #์˜์กด์„ฑ(#External_Dependency)์„ ๊ฐ€์งˆ ๊ฒฝ์šฐ, ์‹ค์ œ ์˜์กด์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ…Œ์ŠคํŠธ๊ฐ€ ๋А๋ ค์ง€๊ณ  ๋ถˆ์•ˆ์ •ํ•ด์ ธ์š”. ์ด๋•Œ #PHPUnit์˜ #Mock #๊ฐ์ฒด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜์กด์„ฑ์„ ๋Œ€์ฒดํ•˜๊ณ  ํ…Œ์ŠคํŠธ์˜ ์†๋„์™€ ์‹ ๋ขฐ์„ฑ์„ ํ™•๋ณดํ•ด์š”.


3. TDD๋Š” ์Šต๊ด€์ด๋‹ค


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

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



๋ฌด๋ฃŒ์ฒดํ—˜, ๋Š๊น€์—†์ด ๋น ๋ฅธVPN VPN, ๊ตญ๋‚ด ๋‹ค๋Ÿ‰IP, ๋ชจ๋ฐ”์ผ๊ฐ€๋Šฅ, ๋ณธ์‚ฌ ํ’ˆ์งˆ๊ด€๋ฆฌ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ณด์•ˆ์„ฑ ๋†’์€ VPN ์„œ๋น„์Šค

https://vpn.luzensoft.com