
PHP ์จ๋ผ์ธ ๊ฐ์
>PHP - ์ต์๊ธ
๐ PHP ์ต์๊ธ - 6์ฃผ์ฐจ: ํ ์คํธ ์๋ํ (๋จ์/ํตํฉ/E2E ํ ์คํธ)- 04 ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ (TDD) ์๊ฐ

์ฃผ์ ํ๋ก๊ทธ๋จ ์คํ
- ํ์ : 10.0
- ๋ผ์ด์ ์ค: free
- ์ด์์ฒด์ :
- ํ์ผ ํฌ๊ธฐ: 0
ํผ๋๋ฐฑ ๋ฐ ๋ค์ด๋ก๋
- ์ฌ์ฉ์ ํ์ : 10.0
- ๋ค์ด๋ก๋ ์: 0
- ์กฐํ์: 5
์ ์กฐ์ฌ ๋ฐ ๋ฑ๋ก ์ ๋ณด
- ์ ์์ฌ: LUZENSOFT
- ๋ฑ๋ก์ผ: 2025-10-22 08:47:33
- ์ค๋ช
ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ(TDD)์ด๋ ๋ฌด์์ธ๊ฐ?
#ํ ์คํธ #์ฃผ๋ #๊ฐ๋ฐ(#TDD: Test-Driven Development)์ #์ํํธ์จ์ด #๊ฐ๋ฐ #๋ฐฉ๋ฒ๋ก ์ค ํ๋๋ก, ์ค์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์ ์คํจํ๋ #ํ ์คํธ #์ผ์ด์ค๋ฅผ ๋จผ์ ์์ฑํ๋ ๊ฒ์ ํต์ฌ์ผ๋ก ํด์. TDD๋ ๋จ์ํ #ํ ์คํธ๋ฅผ #์๋ํํ๋ ๊ฒ์ ๋์ด, #์ค๊ณ(#Design)์ ์ค์ ์ ๋๊ณ #๊ฐ๋ฐ #ํ๋ก์ธ์ค๋ฅผ ์ด๋์ด๊ฐ๋ ์ฒด๊ณ์ ์ธ ๋ฐฉ์์ด์์.
TDD์ ๋ชฉ์ ์ ๋ค์๊ณผ ๊ฐ์์.
#์ฝ๋ #ํ์ง ํฅ์: ํ ์คํธ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์ฑํ๋๋ก ๊ฐ์ ํ์ฌ ์์ฐ์ค๋ฝ๊ฒ ๋ชจ๋ํ๊ฐ ์ ๋, ๊ฒฐํฉ๋๊ฐ ๋ฎ์ #์ค๊ณ๋ฅผ ์ ๋ํด์.
#๋ฒ๊ทธ #๊ฐ์: ์ฝ๋๊ฐ ๋ง๋ค์ด์ง๋ ์๊ฐ๋ถํฐ #๊ฒ์ฆ์ด ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ #๊ฒฐํจ(#Defect)์ ์ด๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ ์ ๊ฑฐํ ์ ์์ด์.
#๊ฐ๋ฐ #์๋ ์ ์ง: #์๋ํ๋ #ํ ์คํธ #์ค์ํธ(#Test_Suite)๋ #๋ฆฌํฉํ ๋ง ์ ๊ธฐ์กด ๊ธฐ๋ฅ์ด ๋ง๊ฐ์ง์ง ์์์ ๋ณด์ฅํ๋ #์์ ๋ง ์ญํ ์ ํ์ฌ, ์ฅ๊ธฐ์ ์ผ๋ก #๊ฐ๋ฐ #์๋๋ฅผ ์ ์งํ๋ ๋ฐ ๋์์ ์ค์.
TDD์ ํต์ฌ ์ฃผ๊ธฐ: Red-Green-Refactor
TDD๋ ์ธ ๊ฐ์ง ๊ฐ๋จํ ๋จ๊ณ๋ก ์ด๋ฃจ์ด์ง ๋ฐ๋ณต์ ์ธ ์ฃผ๊ธฐ๋ฅผ ๋ฐ๋ผ์. ์ด ์ฃผ๊ธฐ๋ ํํ #Red-Green-Refactor๋ผ๊ณ ๋ถ๋ ค์.
1. Red (์คํจํ๋ ํ ์คํธ ์์ฑ)
๋ชฉํ: ๊ตฌํํ๊ณ ์ ํ๋ ์๋ก์ด ๊ธฐ๋ฅ์ด๋ ์์ ์ฌํญ์ ๋ํด ์คํจํ ๊ฒ์ด๋ผ๊ณ ์์๋๋ #ํ ์คํธ #์ฝ๋๋ฅผ ๋จผ์ ์์ฑํด์.
์์น: ์ด๋๋ ์ค์ ๊ตฌํ ์ฝ๋๊ฐ ์กด์ฌํ์ง ์๊ฑฐ๋, ํ ์คํธ๋ฅผ ํต๊ณผํ๊ธฐ์ ์ถฉ๋ถํ์ง ์์์ผ ํด์. ์ฆ, #ํ ์คํธ๋ฅผ #์คํํ๋ฉด ๋ฐ๋์ **#์คํจ(#Red)**ํด์ผ ํด์. ์ด ๋จ๊ณ๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋ฌด์์ ๋ง๋ค ๊ฒ์ธ์ง ๋ช ํํ ์ ์ํ๊ฒ ๋ผ์.
2. Green (ํ ์คํธ ํต๊ณผ๋ฅผ ์ํ ์ต์ํ์ ์ฝ๋ ์์ฑ)
๋ชฉํ: ์์ ์์ฑํ #ํ ์คํธ๋ฅผ ํต๊ณผํ๊ธฐ ์ํ #์ต์ํ์ #์ค์ #์ฝ๋๋ฅผ ์์ฑํด์.
์์น: ์ค์ง #ํ ์คํธ๋ฅผ #ํต๊ณผ(#Green)์ํค๋ ๊ฒ์๋ง ์ง์คํด์. ์ด ๋จ๊ณ์์๋ ์์ง #์ค๊ณ์ #์๋ฒฝํจ์ด๋ #์ฝ๋์ #์ต์ ํ๋ ๊ณ ๋ คํ์ง ์์๋ ๋ผ์.
3. Refactor (์ฝ๋ ๊ฐ์ )
๋ชฉํ: #ํ ์คํธ๊ฐ ๋ชจ๋ #ํต๊ณผํ(#Green) ์ํ๋ฅผ ์ ์งํ๋ฉด์, ์ฝ๋์ #์ค๋ณต์ ์ ๊ฑฐํ๊ณ , #๊ฐ๋ ์ฑ์ ๋์ด๋ฉฐ, #์ค๊ณ๋ฅผ #๊ฐ์ ํด์.
์์น: ํ ์คํธ๊ฐ #์์ ๋ง ์ญํ ์ ํ๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์๋ ์ฝ๋๋ฅผ ์์ ๊ฐ ์๊ฒ #๋ฆฌํฉํ ๋งํ ์ ์์ด์. #Green ์ํ์์๋ง #๋ฆฌํฉํ ๋ง์ ์ํํด์ผ ํ๋ฉฐ, ๋ฆฌํฉํ ๋ง ํ์๋ ๋ชจ๋ #ํ ์คํธ๊ฐ #Green์ ์ ์งํ๋์ง ํ์ธํด์ผ ํด์.
์ด ์ธ ๋จ๊ณ๋ฅผ ์์ ๋จ์๋ก ๋น ๋ฅด๊ฒ ๋ฐ๋ณตํจ์ผ๋ก์จ ๊ธฐ๋ฅ์ด ์ ์ง์ ์ผ๋ก ์์ฑ๋๊ณ , ๊ทธ ๊ณผ์ ์์ ์ฝ๋์ ํ์ง๋ ์ง์์ ์ผ๋ก ๊ฐ์ ๋ผ์.
PHP ํ๊ฒฝ์์์ TDD ์ ์ฉ
#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 ์๋น์ค