๐ TDD (Test Driven Development) :: ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ
→ ๋ฐ๋ณต ํ ์คํธ๋ฅผ ์ด์ฉํ ์ํํธ์จ์ด ๋ฐฉ๋ฒ๋ก
- ์์ ๋จ์์ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ํต๊ณผํ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ์ฌ ๊ตฌํ
- ์งง์ ๊ฐ๋ฐ ์ฃผ๊ธฐ์ ๋ฐ๋ณต์ ์์กดํ๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค์ด๋ฉฐ, ์ ์์ผ ๋ฐฉ๋ฒ๋ก ์ค ํ๋์ธ eXtream Programming(XP)์ ‘Test-First’ ๊ฐ๋ ์ ๊ธฐ๋ฐ์ ๋ ๋จ์ํ ์ค๊ณ๋ฅผ ์ค์์ํจ.
๐ก eXtream Programming(XP)๋? : ๋ฏธ๋์ ๋ํ ์์ธก์ ์ต๋ํ ํ์ง ์๊ณ , ์ง์์ ์ผ๋ก ํ๋กํ ํ์ ์ ์์ฑํ๋ ์ ์์ผ ๊ธฐ๋ฐฉ๋ฒ๋ก ์ค ํ๋ : ์ถ๊ฐ ์๊ตฌ์ฌํญ์ด ์๊ธฐ๋๋ผ๋ ์ค์๊ฐ์ผ๋ก ๋ฐ์ํ ์ ์์ |
๐ก ๋จ์ ํ
์คํธ(unit Test)๋? : ๋ง ๊ทธ๋๋ก ํ ๋จ์(์ผ๋ฐ์ ์ผ๋ก class)๋ง์ ํ ์คํธํ๋ ๊ฒ |
๐ฟ TDD์ ๊ฐ๋ฐ์ฃผ๊ธฐ
- RED ๋จ๊ณ : ์คํจํ๋ ํ ์คํธ ์ฝ๋๋ฅผ ๋จผ์ ์์ฑ
- GREEN ๋จ๊ณ : ์ฑ๊ณตํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์์
- BLUE ๋จ๊ณ : ์ค๋ณต ์ฝ๋๋ฅผ ์ ๊ฑฐํ๋ ๋ฑ์ ๋ฆฌํฉํ ๋ง์ ์ํ
๐ฟ ์ผ๋ฐ ๊ฐ๋ฐ ๋ฐฉ์๊ณผ TDD ๊ฐ๋ฐ ๋ฐฉ์์ ๋น๊ต
โ ์ผ๋ฐ ๊ฐ๋ฐ ๋ฐฉ์
: ์๊ตฌ์ฌํญ ๋ถ์ → ์ค๊ณ → ๊ฐ๋ฐ → ํ ์คํธ → ๋ฐฐํฌ ์ ๊ฐ๋ฐ ์ฃผ๊ธฐ
⇒ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋๋ฆฌ๊ฒ ํ๋ ์ ์ฌ์ ์ํ์ด ์กด์ฌ
โ ์ด์
1. ์๋น์์ ์๊ตฌ์ฌํญ์ด ์ฒ์๋ถํฐ ๋ช ํํ์ง ์์ ์ ์์
2. ๋ฐ๋ผ์ ์ฒ์๋ถํฐ ์๋ฒฝํ ์ค๊ณ๋ ์ด๋ ค์
3. ์์ฒด ๋ฒ๊ทธ ๊ฒ์ถ ๋ฅ๋ ฅ ์ ํ ๋๋ ์์ค์ฝ๋์ ํ์ง์ด ์ ํ๋ ์ ์์
4. ์์ฒด ํ ์คํธ ๋น์ฉ์ด ์ฆ๊ฐํ ์ ์์
- ์ด๋ฌํ ๋ฌธ์ ์ ์ด ๋ฐ์๋๋ ์ด์ ๋ ์ด๋ ํ๋ก์ ํธ๋ ์ด๊ธฐ ์ค๊ณ๊ฐ ์๋ฒฝํ๋ค๊ณ ๋งํ ์ ์๊ธฐ ๋๋ฌธ
- ๋ณดํต ์ ์ง์ ์ผ๋ก ์๋ฒฝํ ์ค๊ณ๋ก ๋์๊ฐ๊ฒ ๋๋๋ฐ, ์ด๋ฌํ ์ฌ์ค๊ณ๋ก ์ธํด ๊ฐ๋ฐ์๋ ์ฝ๋๋ฅผ ์ฝ์ , ์์ , ์ญ์ ํ๋ ๊ณผ์ ์์ ๋ถํ์ํ ์ฝ๋๊ฐ ๋จ๊ฑฐ๋ ์ค๋ณต์ฒ๋ฆฌ๋ ๊ฐ๋ฅ์ฑ์ด ํผ
- ๊ฒฐ๋ก ์ ์ผ๋ก ์ด๋ฌํ ์ฝ๋๋ค์ ์ฌ์ฌ์ฉ ๋ฐ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ ์ ์ง๋ณด์๋ ์ด๋ ค์์ง
โ TDD ๋ฐฉ์
- ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๋ค์ ์ค์ ์ฝ๋๋ฅผ ์์ฑ
- ์ค๊ณ(๋์์ธ) ๋จ๊ณ์์ ํ๋ก๊ทธ๋๋ฐ ๋ชฉ์ ์ ๋ฐ๋์ ๋ฏธ๋ฆฌ ์ ์ํด์ผ๋ง ํ๊ณ , ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํด์ผ ํจ
- ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋์ค ๋ฐ์ํ๋ ์์ธ ์ฌํญ(๋ฒ๊ทธ ๋ฐ ์์ ์ฌํญ)์ ํ ์คํธ ์ผ์ด์ค์ ์ถ๊ฐํ๊ณ ์ค๊ณ๋ฅผ ๊ฐ์
- ํ ์คํธ๊ฐ ํต๊ณผ๋ ์ฝ๋๋ง์ ์ฝ๋ ๊ฐ๋ฐ ๋จ๊ณ์์ ์ค์ ์ฝ๋๋ก ์์ฑํจ.
→ ์ด๋ฌํ ๋จ๊ณ๊ฐ ๋ฐ๋ณต์ ์ผ๋ก ์งํ๋๋ฉด์ ์ฝ๋์ ๋ฒ๊ทธ๋ ์ค์ด๋ค๊ณ , ์์ค ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง
→ ํ ์คํธ ์ผ์ด์ค ์์ฑ์ผ๋ก ์ธํด ์์ฐ์ค๋ฝ๊ฒ ์ค๊ณ๊ฐ ๊ฐ์ ๋จ์ผ๋ก ์ฌ์ค๊ณ ์๊ฐ์ด ์ ๊ฐ๋ ์ ์์
๐ฟ TDD์ ์ฅ๋จ์
โ ์ฅ์
- ๋์ ์ฝ๋ ์์ ์ฑ
: ์งง์ ์ฃผ๊ธฐ์ ํ ์คํธ ์ฝ๋ ๊ฐ๋ฐ - ๋ฆฌํฉํ ๋ง ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ฉฐ ๋์ ์์ด ๋ณด์ํ๊ณ ์ฒ ์ ํ ๋ชจ๋ํ๋ฅผ ํตํด ์ข ์์ฑ๊ณผ ์์กด์ฑ์ด ๋ฎ์ ๋ชจ๋๋ก ์กฐํฉ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ ์ฝ๋์ ์์ ์ฑ์ ๋์ผ ์ ์์ - ์ฌ์ค๊ณ ์๊ฐ์ ๋จ์ถ
: ์ค๊ณ ๋จ๊ณ์์ ํ ์คํธ ์๋๋ฆฌ์ค๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๋ฌด์์ ํด์ผํ๋์ง ์ ์ํ๊ณ ์๊ฐํ ์ ์์ด ์์ฑ๋ ๋์ ์ค๊ณ๋ก ์ด์ด์ง
→ ์ถํ ์ค๊ณ๊ฐ ๋ณ๊ฒฝ๋๋ ์ผ์ ๋ฐฉ์งํ ์ ์์ - ๋๋ฒ๊น
์๊ฐ์ ๋จ์ถ
: ๋ชจ๋๋ณ๋ก ํ ์คํธ๋ฅผ ์๋ํ๋ฅผ ํ์ง ์๋๋ค๋ฉด ์๋ฌ๊ฐ ์๊ฒผ์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ ๋ฒจ์ ์ฝ๋๋ฅผ ์ดํด๋ด์ผํจ.
but, TDD์ ๊ฒฝ์ฐ ์๋ํ๋ ๋จ์ํ ์คํธ๋ฅผ ํตํด ํน์ ๋ฒ๊ทธ๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์์ - ํ
์คํธ ๋ฌธ์์ ๋์ฒด ๊ฐ๋ฅ
: ์ฃผ๋ก SI ํ๋ก์ ํธ ์งํ ๊ณผ์ ์์ ์ด๋ค ์์๋ค์ด ํ ์คํธ ๋์๋์ง ํ ์คํธ ์ ์์๋ฅผ ๋ง๋ฆ. ์ด๊ฒ์ ๋จ์ ํตํฉ ํ ์คํธ๋ฌธ์์ ์ง๋์ง ์์ผ๋ TDD๋ฅผ ํ๊ฒ๋ ๊ฒฝ์ฐ ํ ์คํ ์ ์๋ํ ์ํด๊ณผ ๋์์ ๋ณด๋ค ์ ํํ ํ ์คํธ ๊ทผ๊ฑฐ๋ฅผ ์ฐ์ถํ ์ ์์ - ์ถ๊ฐ ๊ตฌํ์ด ์ฉ์ดํจ
: ๊ฐ๋ฐ์ด ์๋ฃ๋ ์ํํธ์จ์ด์ ์ด๋ค ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ๊ฐ์ฅ ์ฐ๋ ค๋๋ ์ ์ ํด๋น ๊ธฐ๋ฅ์ด ๊ธฐ์กด ์ฝ๋์ ์ด๋ค ์ํฅ์ ๋ฏธ์น ์ง ์์ง ๋ชปํ๋ค๋ ๊ฒ.
but, TDD์ ๊ฒฝ์ฐ ์๋ํ๋ ์ ๋ ํ ์คํ ์ ์ ์ ํ๋ฏ๋ก ํ ์คํธ ๊ธฐ๊ฐ์ ํ๊ธฐ์ ์ผ๋ก ๋จ์ถ์ํฌ ์ ์์
โ ๋จ์ : ์์ฐ์ฑ ์ ํ
- ์ฒ์๋ถํฐ 2๊ฐ์ ์ฝ๋๋ฅผ ์ง์ผํ๊ณ , ์ค๊ฐ์ค๊ฐ ํ ์คํธ๋ฅผ ํ๋ฉด์ ๊ณ ์ณ๋๊ฐ์ผํ๊ธฐ ๋๋ฌธ
- TDD ๋ฐฉ์์ ๊ฐ๋ฐ์๊ฐ์ ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ ๋ฐฉ์์ ๋นํด ๋๋ต 10~30% ์ ๋๋ก ๋์ด๋จ
- SI ํ๋ก์ ํธ์์๋ ์ํํธ์จ์ด์ ํ์ง๋ณด๋ค๋ ๋ฉ๊ธฐ์ผ ์ค์๊ฐ ํจ์ฌ ์ค์ํ๊ธฐ ๋๋ฌธ์ TDD ๋ฐฉ์์ ์ ์ฌ์ฉํ์ง ์์
'CS > Software Engineering' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CS] DevOps (0) | 2024.03.04 |
---|---|
[CS] MSA(๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ ์ฒ) (0) | 2023.12.16 |
[CS] ํจ์ํ ํ๋ก๊ทธ๋๋ฐ (0) | 2023.12.15 |
[CS] ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (0) | 2023.12.15 |
[CS] ์ ์์ผ(Agile) ๋ฐฉ๋ฒ๋ก (1) | 2023.12.06 |