๐ TDD๋ ๋ฌด์์ธ๊ฐ
Test-Driven Development(TDD)
๋ ๋งค์ฐ ์งง์ ๊ฐ๋ฐ ์ฌ์ดํด์ ๋ฐ๋ณต์ ์์กดํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค์ด๋ค.
TDD๋ ์ค๊ณ ์ดํ ์ฝ๋ ๊ฐ๋ฐ ๋ฐ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ ๊ธฐ์กด์ ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ๋ฌ๋ฆฌ,
ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋จผ์ ์์ฑํ ํ ์ด ํ ์คํธ๊ฐ ํต๊ณผํ ์ ์๋ ์ค์ ์ฝ๋๋ฅผ ๊ฐ๋ฐํ์ฌ ๋ฆฌํํ ๋ง ํ๋ ์ ์ฐจ๋ฅผ ๋ฐ๋ฅธ๋ค.
์ด๋ฌํ ์ด์ ๋ก TDD๋ฅผ Test First Development
๋ผ๊ณ ๋ ํ๋ค.
โป๏ธ TDD ์ฌ์ดํด
1๏ธโฃ Add a test
2๏ธโฃ Run all tests and see if the new test fails
(์ฒ์์๋ production code๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ
์คํธ๊ฐ ์คํจํ๋๊ฒ ๋น์ฐ)
3๏ธโฃ Write the code
4๏ธโฃ Run tests
5๏ธโฃ Refactor code
6๏ธโฃ Repeat
๐คทโ๏ธ Why TDD?
TDD๋ฅผ ์ ์ฌ์ฉํด์ผ ํ ๊น?
1. ๋ด๊ฐ ์ด๋ค ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋์ง๊ฐ ๋ช ํํด์ง๋ค.
ํ ์คํธ๋ฅผ ํต๊ณผํ๊ธฐ ์ํ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์์ฑํด์ผ ํ ์ฝ๋์ ๋ชฉํ๊ฐ ๋ถ๋ช ํด์ง๊ณ ,
ํ ์คํธ ์๋๋ฆฌ์ค๋ฅผ ์์ฑํ๋ฉด์ ๋ค์ํ ์์ธ์ฌํญ์ ๋ํด ์๊ฐํด๋ณผ ์ ์๋ค.
์ด๋ ๊ฐ๋ฐ ์งํ ์ค ์ํํธ์จ์ด์ ์ ๋ฐ์ ์ธ ์ค๊ณ๊ฐ ๋ณ๊ฒฝ๋๋ ์ผ์ ๋ฐฉ์งํ ์ ์๋ค.
2. Test Coverage๋ฅผ ๊ฑฐ์ 100%๋ก ๋ง๋ค ์ ์๋ค.
Test Coverage
๋ ์ ์ฒด ์ฝ๋์ ๋ช ํผ์ผํธ๊ฐ ํ
์คํธ ๋์๋์ง๋ฅผ ๋ํ๋ด๋๋ฐ TDD ํ๋ก์ธ์ค๋ฅผ ์ ์ฉํ๋ฉด ๊ฑฐ์ ๋ชจ๋ ์ฝ๋๊ฐ ์ ์ด๋ ํ ๋ฒ์ฉ์ ํ
์คํธ๋๊ธฐ ๋๋ฌธ์ test coverage๋ฅผ ๊ฑฐ์ 100%๋ก ๋ง๋ค ์ ์๋ค.
์ฌ๊ธฐ์ ๊ฑฐ์
๋ผ๋ ๋ง์ด ๋ถ๋ ์ด์ ๋, ํ์ค์ ์ผ๋ก ๋ชจ๋ ์ฝ๋์ ํ
์คํธ๋ฅผ ์ํํ ์ ์์ผ๋ฉฐ ํ
์คํธ๋ฅผ ์ํํ๋ค๊ณ ํด์ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ์ง ์๋ ๊ฒ๋ ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
3. ์ฌ์ ์ ๋ค์ํ ์ผ์ด์ค๋ฅผ ๊ณ ๋ คํด๋ด์ผ๋ก์จ ์ ์ฌ์ ์ค๋ฅ๋ค์ ๋ฏธ๋ฆฌ ํด๊ฒฐํ ์ ์๋ค.
4. ์ถ๊ฐ ๊ตฌํ์ด ์ฉ์ดํ๋ค.
๊ฐ๋ฐ์ด ์๋ฃ๋ ์ํํธ์จ์ด์ ์ด๋ค ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ๊ฐ์ฅ ์ฐ๋ ค๋๋ ์ ์ ํด๋น ๊ธฐ๋ฅ์ด ๊ธฐ์กด ์ฝ๋์ ์ด๋ค ์ํฅ์ ๋ฏธ์น ์ง ์์ง ๋ชปํ๋ค๋ ๊ฒ์ด๋ค.
ํ์ง๋ง TDD์ ๊ฒฝ์ฐ ์๋ํ๋ ์ ๋ ํ ์คํ ์ ์ ์ ํ๋ฏ๋ก ํ ์คํธ ๊ธฐ๊ฐ์ ํ๊ธฐ์ ์ผ๋ก ๋จ์ถ์ํฌ ์ ์๋ค.
์ด๋ฌํ TDD์ ์ฅ์ ์ ๋ณด์ฅ๋ฐ๊ธฐ ์ํด์๋ ๋ฐ๋์ ์ง์ผ์ผํ TDD์ 3๊ฐ์ง ์์น์ด ์๋ค.
๐ฆ TDD์ 3๊ฐ์ง ์์น
1. ์คํจํ ๋จ์ ํ
์คํธ๋ฅผ ์์ฑํ ๋๊น์ง production code ์์ฑํ์ง ๋ง ๊ฒ
2. ํ
์คํธ ์ฝ๋๋ฅผ ํ๋ฒ์ ๋๋ฌด ๋ง์ด ์ง์ง ๋ง ๊ฒ
3. ํ
์คํธ๊ฐ ํต๊ณผ๋ ์ ๋์ production code๋ง ์์ฑํ ๊ฒ
๐คฆโ๏ธ TDD ๋จ์
1. ์์ฐ์ฑ์ ์ ํ
TDD ๋ฐฉ๋ฒ๋ก ์ ์ ์ฉํ๊ฒ ๋๋ฉด ์ฒ์๋ถํฐ 2๊ฐ์ ์ฝ๋(test code, production code)๋ฅผ ์ง์ผํ๊ณ , ์ค๊ฐ์ค๊ฐ ํ ์คํธ๋ฅผ ํ๋ฉด์ ๊ณ ์ณ๋๊ฐ์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ผ์ TDD ๋ฐฉ์์ ๊ฐ๋ฐ ์๊ฐ์ ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ ๋ฐฉ์์ ๋นํด ์ข ๋ ๋์ด๋๊ฒ ๋๋ค.
2. ๋์ ์ง์ ์ฅ๋ฒฝ
TDD๋ฅผ ์ฒ์ ์ ํ๋ ์ฌ๋๋ค์๊ฒ๋ ๊ทธ๋ฅ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ๋ ์ฝ์ง ์์๋ฐ ์์ง ์์ฑ๋์ง ์์ ์ฝ๋์ ๋ํ ํ ์คํธ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ์ฐ๋๋ ์๋ฌธ์ด ๋ค ์ ์๋ค.
๋ฐ๋ผ์ TDD์ ์ต์ํ์ง ์์ ์ฌ๋๋ค์ ์ ์ ์๊ฐ์ด ๊ฝค ์ค๋ ๊ฑธ๋ฆฐ๋ค.
๐ References
'CS > ๊ฐ๋ฐ์์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
MVC ํจํด (0) | 2022.09.17 |
---|---|
ํจ์ํ ํ๋ก๊ทธ๋๋ฐ (0) | 2022.09.16 |
RESTful API (0) | 2022.09.09 |
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ค๊ณ์์น, SOLID (0) | 2022.09.07 |
์ค๋ฒ๋ก๋ฉ(Overloading) vs ์ค๋ฒ๋ผ์ด๋ฉ(Overriding) (0) | 2022.09.07 |