TDD(Test-Driven Development) ์๊ฐ์ ํ์ฉ ๋ฐฉ๋ฒ
1. TDD๋?
1.1 TDD์ ๊ฐ๋
TDD๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ค ํ๋๋ก, ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ํด๋น ํ ์คํธ๊ฐ ํต๊ณผ๋๋๋ก ์ค์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฐ๋ฐ ๋ฐฉ์์ ๋๋ค. ์ด๋ ์ํํธ์จ์ด์ ํ์ง ํฅ์๊ณผ ์ ์ง๋ณด์ ์ฉ์ด์ฑ์ ๋๋ชจํ๋๋ฐ ์ค์ ์ ๋ก๋๋ค.
1.2 TDD์ ์์น
TDD๋ ํฌ๊ฒ ์ธ ๊ฐ์ง ๋จ๊ณ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
- Red (๋นจ๊ฐ): ์คํจํ๋ ํ ์คํธ๋ฅผ ์์ฑํฉ๋๋ค.
- Green (์ด๋ก): ํ ์คํธ๋ฅผ ํต๊ณผํ ์ ์๋๋ก ์ต์ํ์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
- Refactor (๋ฆฌํฉํฐ): ์ฝ๋๋ฅผ ์ต์ ํํ๊ณ ์ค๋ณต์ ์ ๊ฑฐํฉ๋๋ค.
2. TDD์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
2.1 ํ์ง ํฅ์
TDD๋ ์ด๊ธฐ์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ํด๊ฒฐํจ์ผ๋ก์จ ์ํํธ์จ์ด์ ํ์ง์ ํฅ์์ํต๋๋ค. ๊ฐ๋ฐ ์ด๊ธฐ์ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ์์ ํจ์ผ๋ก์จ ๋์ค์ ๋ฐ์ํ ์ ์๋ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
2.2 ์ ์ง๋ณด์ ์ฉ์ด์ฑ
ํ ์คํธ ์ผ์ด์ค๊ฐ ์์ฑ๋์ด ์์ผ๋ฉด ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ๋ ๋ณ๊ฒฝ์ด ์์ ๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
3. TDD์ ํ์ฉ์ฑ
3.1 ์ค์ ํ๋ก์ ํธ์์์ ์ ์ฉ
์ค๋ฌด์์๋ TDD๋ฅผ ํตํด ์ฝ๋๋ฅผ ์์ ์ ์ผ๋ก ์ ์งํ๊ณ ํ์ ๊ฐ์ ํ์ ์ ๊ฐํํ ์ ์์ต๋๋ค. ํ ์คํธ ์ฝ๋๋ฅผ ํตํด ๊ธฐ๋ฅ์ ์์ ๋์์ ๋ช ํํ ์ ์ํ๊ณ ์ดํด๊ด๊ณ์ ๊ฐ์ ์์ฌ์ํต์ ์ํํ๊ฒ ํฉ๋๋ค.
3.2 TDD์ ์ฅ์
- ํ์ง ํฅ์: ์ด๊ธฐ์ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ์ฌ ํ์ง์ ํฅ์์ํต๋๋ค.
- ์ ์ง๋ณด์ ์ฉ์ด์ฑ: ๋ณ๊ฒฝ์ฌํญ์ ๋ํ ์์ ์ฑ์ ๋ณด์ฅํ๋ฉฐ ์ ์ง๋ณด์๋ฅผ ์ฝ๊ฒ ํฉ๋๋ค.
- ๋ฌธ์ํ: ํ ์คํธ ์ฝ๋๋ ์ฝ๋์ ์์ ๋์์ ๋ช ์์ ์ผ๋ก ์ ์ํ๋ฏ๋ก ๋ฌธ์ํ ํจ๊ณผ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
4. TDD์ ์ ์ฉ๊ณผ ๋จ์
4.1 TDD์ ์ ์ฉ ๋ฐฉ๋ฒ
- ํ ์คํธ ์ฝ๋ ์์ฑ: ๊ธฐ๋ฅ ๊ตฌํ ์ด์ ์ ์คํจํ๋ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
- ์ฝ๋ ์์ฑ: ํ ์คํธ๋ฅผ ํต๊ณผํ ์ ์๋๋ก ์ต์ํ์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
- ๋ฆฌํฉํฐ๋ง: ์ฝ๋์ ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ์ต์ ํํฉ๋๋ค.
4.2 TDD์ ๋จ์
- ํ์ต ๊ณก์ : ์ด๊ธฐ์๋ ์ ์์ด ํ์ํ๋ฉฐ, ์ ์ฒด ํ์ด ์ต์ํด์ง๊ธฐ๊น์ง์ ์๊ฐ์ด ์์๋ ์ ์์ต๋๋ค.
5. ํ ํ๋ก์ ํธ์ TDD ์ ์ฉํ๊ธฐ
5.1 ์ค๋น ์ฌํญ
- ํ ์คํธ ๋๊ตฌ ์ ์ : JUnit, pytest ๋ฑ์ ํ ์คํธ ๋๊ตฌ๋ฅผ ์ ํํ๊ณ ํ๋ก์ ํธ์ ํตํฉํฉ๋๋ค.
- ํ ์คํธ ์ฝ๋ ์ปจ๋ฒค์ : ์ผ๊ด๋ ํ ์คํธ ์ฝ๋ ์คํ์ผ์ ์ ์ํ๊ณ ํ์๋ค๊ณผ ๊ณต์ ํฉ๋๋ค.
5.2 ์ค์ฒ ๋ฐฉ๋ฒ
- ์๊ตฌ ์ฌํญ ๋ถ์: ๊ฐ ๊ธฐ๋ฅ์ ๋ํ ์๊ตฌ ์ฌํญ์ ๋ถ์ํ๊ณ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํฉ๋๋ค.
- ์ฝ๋ ์์ฑ: ํ ์คํธ๋ฅผ ํต๊ณผํ ์ ์๋๋ก ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค.
- ํ ์คํธ ์คํ: ์์ฑํ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์คํํ์ฌ ๊ธฐ๋ฅ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ๋์ง ํ์ธํฉ๋๋ค.
- ๋ฆฌํฉํฐ๋ง: ์ค๋ณต ์ฝ๋๋ฅผ ์ ๊ฑฐํ๊ณ ์ฝ๋๋ฅผ ์ต์ ํํฉ๋๋ค.
6. ๋ง๋ฌด๋ฆฌ
TDD๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ํ์ง๊ณผ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ ์ค ํ๋์ ๋๋ค. ํ๋ก์ ํธ ์ด๊ธฐ๋ถํฐ ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ ๋์ ํ๋ฉด ์์ ์ฑ ์๋ ์ฝ๋๋ฅผ ์ ์งํ๋ฉด์ ํ์ ์์ฐ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๊ธฐ์กด์ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์์ ๋ฒ์ด๋ TDD์ ๊ฐ์น๋ฅผ ๊ฒฝํํด๋ณด์ธ์.
'IT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CORS(Cross-Origin Resource Sharing)์ ๋ํ ์ดํด์ ๋์ ๋ฐฉ๋ฒ (0) | 2024.02.14 |
---|---|
PM2: Node.js ํ๋ก์ธ์ค ๊ด๋ฆฌ์ (0) | 2024.02.14 |
Hadoop Ecosystem: ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํต์ฌ (0) | 2024.02.13 |
Open API: ์๊ฐ, ์ฅ/๋จ์ , ํ์ฉ๋ ์๋น์ค๋ค (0) | 2024.02.10 |
jHipster: Modern Java Development์ ์ ๋์ฃผ์ (0) | 2024.02.10 |
๋๊ธ