ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ
Test Driven Development์ ์ฝ์๋ก ํ ์คํธ ์ฝ๋๋ฅผ ๋จผ์ ๋ง๋ค๊ณ , ์ค์ ํ๋ก๋์ ์ฝ๋๋ฅผ ๋์ค์ ๋ง๋๋ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ ๋งํ๋ค.
๋ฐ๋ณต ํ ์คํธ๋ฅผ ์ด์ฉํ ์ํํธ์จ์ด ๋ฐฉ๋ฒ๋ก ์ผ๋ก, ์์ ๋จ์์ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ํต๊ณผํ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ์ฌ ๊ตฌํํ๋ค.
์งง์ ๊ฐ๋ฐ ์ฃผ๊ธฐ์ ๋ฐ๋ณต์ ์์กดํ๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค์ด๋ฉฐ ์ ์์ผ ๋ฐฉ๋ฒ๋ก ์ค ํ๋์ธ eXtream Programming(XP)์ Test-First
๊ฐ๋
์ ๊ธฐ๋ฐ์ ๋ ๋จ์ํ ์ค๊ณ๋ฅผ ์ค์์ํ๋ค.
eXtream Programming(XP) ๋ฏธ๋์ ๋ํ ์์ธก์ ์ต๋ํ ํ์ง ์๊ณ , ์ง์์ ์ผ๋ก ํ๋กํ ํ์ ์ ์์ฑํ๋ ์ ์์ผ ๋ฐฉ๋ฒ๋ก ์ค ํ๋์ด๋ค. ์ด ๋ฐฉ๋ฒ๋ก ์ ์ถ๊ฐ ์๊ตฌ์ฌํญ์ด ์๊ธฐ๋๋ผ๋ ์ค์๊ฐ์ผ๋ก ๋ฐ์ํ ์ ์๋ค.
๋จผ์ test code๋ฅผ ์ฌ์ฉํ์ ๋์ ์ฅ์
- ๋ณํ์ ๋ํ ๋๋ ค์์ ์ค์ฌ์ค๋ค.(๋ฆฌํฉํ ๋ง์ด ํธํ๋ค.)
- ๋๋ฒ๊น ์๊ฐ์ ์ค์ฌ์ค๋ค.
- ๋์ํ๋ ๋ฌธ์ ์ญํ ์ ํ๋ค.
์ ๊ทธ๋ฆผ์ TDD์ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ํํํ ๊ฒ์ด๋ค.
- Red
์คํจํ๋ ํ ์คํธ ์ฝ๋
๋ฅผ ๋จผ์ ์์ฑํ๋ค.
- Green
ํ ์คํธ ์ฝ๋๋ฅผ ์ฑ๊ณต์ํค๊ธฐ ์ํ ์ค์ ์ฝ๋
๋ฅผ ์์ฑํ๋ค.
- Yellow
- ์ค๋ณต ์ฝ๋ ์ ๊ฑฐ, ์ผ๋ฐํ ๋ฑ์
๋ฆฌํฉํ ๋ง์ ์ํ
ํ๋ค.
- ์ค๋ณต ์ฝ๋ ์ ๊ฑฐ, ์ผ๋ฐํ ๋ฑ์
์ค์ํ ๊ฒ์! ์คํจํ๋ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๋๊น์ง ์ค์ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๋๋ค. ์คํจํ๋ ํ ์คํธ๋ฅผ ํต๊ณผํ ์ ๋์ ์ต์ ์ค์ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค. ์ด๋ฅผ ํตํด ์ค์ ์ฝ๋์ ๋ํด ๊ธฐ๋๋๋ ๋ฐ๋ฅผ ๋ช ํํ๊ฒ ์ ์ํจ์ผ๋ก์จ ๋ถํ์ํ ์ค๊ณ๋ฅผ ํผํ ์ ์๊ณ , ์ ํํ ์๊ตฌ ์ฌํญ์ ์ง์คํ ์ ์๋ค.
๐ฉ ์ผ๋ฐ ๊ฐ๋ฐ ๋ฐฉ์
๋ณดํต์ ๊ฐ๋ฐ ๋ฐฉ์์ ์๊ตฌ์ฌํญ ๋ถ์ -> ์ค๊ณ -> ๊ฐ๋ฐ -> ํ ์คํธ -> ๋ฐฐํฌ์ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ๊ฐ๋๋ค. ์ด๋ฌํ ๋ฐฉ์์ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋๋ฆฌ๊ฒ ํ๋ ์ ์ฌ์ ์ํ์ด ์กด์ํ๋ค.
์ด์ )
- ์๋น์์ ์๊ตฌ์ฌํญ์ด ์ฒ์๋ถํฐ ๋ช ํํ์ง ์์ ์ ์๋ค.
- ๋ฐ๋ผ์ ์ฒ์๋ถํฐ ์๋ฒฝํ ์ค๊ณ๋ ์ด๋ ต๋ค.
- ์์ฒด ๋ฒ๊ทธ ๊ฒ์ถ ๋ฅ๋ ฅ ์ ํ ๋๋ ์์ค์ฝ๋์ ํ์ง์ด ์ ํ๋ ์ ์๋ค.
- ์์ฒด ํ ์คํธ ๋น์ฉ์ด ์ฆ๊ฐํ ์ ์๋ค.
์ด๋ฌํ ๋ฌธ์ ์ ๋ค์ด ๋ฐ์๋๋ ์ด์ ๋ ๊ฐ๋จํ ์ด๋ ํ๋ก์ ํธ๋ ์ด๊ธฐ ์ค๊ณ๊ฐ ์๋ฒฝํ๋ค๊ณ ๋งํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์์ ๋ถ๋ถ์ ๊ธฐ๋ฅ ์์ ์๋ ๋ชจ๋ ๋ถ๋ถ์ ํ ์คํธํด์ผ ํ๋ฏ๋ก ์ ์ฒด์ ์ธ ๋ฒ๊ทธ๋ฅผ ๊ฒ์ถํ๊ธฐ ์ด๋ ค์์ง๋ค.
๐ฉ TDD ๊ฐ๋ฐ ๋ฐฉ์
TDD์ ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ ๋ฐฉ์์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๋ค์ ์ค์ ์ฝ๋๋ฅผ ์์ฑํ๋ค๋ ์ ์ด๋ค.
๋์์ธ(์ค๊ณ)๋จ๊ณ์์ ํ๋ก๊ทธ๋๋ฐ ๋ชฉ์ ์ ๋ฏธ๋ฆฌ ์ ์ํด์ผํ๊ณ , ๋ ๋ฌด์์ ํ ์คํธํด์ผ ํ ์ง ๋ฏธ๋ฆฌ ์ ํด์ผ๋ง ํ๋ค.
ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋์ค์ ๋ฐ์ํ๋ ์์ธ ์ฌํญ(๋ฒ๊ทธ, ์์ ์ฌํญ)๋ค์ ํ ์คํธ ์ผ์ด์ค์ ์ถ๊ฐํ๊ณ ์ค๊ณ๋ฅผ ๊ฐ์ ํ๋ค. ์ดํ ํ ์คํธ๊ฐ ํต๊ณผ๋ ์ฝ๋๋ง์ ๊ฐ๋ฐ ๋จ๊ณ์์ ์ค์ ์ฝ๋๋ก ์์ฑํ๋ค.
ํ์ฌ ์ธ๊ณ์ ์ผ๋ก ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ Java ๋จ์ ํ
์คํธ ํ๋ ์ ์ํฌ
์ด๋ค.
JUnit์ ์์์ผ๋ก CUnit(C์ธ์ด), CppUnit(C++), PyUnit(Python) ๋ฑ xUnit ํ๋ ์์ํฌ๊ฐ ํ์ํ๊ฒ ๋์๋ค.
- ๋ณด๋ค ํผํผํ ๊ฐ์ฒด ์งํฅ์ ์ธ ์ฝ๋ ์์ฐ
- TDD๋ ์ฝ๋์ ์ฌ์ฌ์ฉ ๋ณด์ฅ์ ๋ช ์ํ๋ฏ๋ก TDD๋ฅผ ํตํ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ ๊ธฐ๋ฅ ๋ณ ์ฒ ์ ํ ๋ชจ๋ํ๊ฐ ์ด๋ค์ง๋ค. ์ด๋ ์ข ์์ฑ๊ณผ ์์กด์ฑ์ด ๋ฎ์ ๋ชจ๋๋ก ์กฐํฉ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํ๋ฉฐ ํ์์ ๋ฐ๋ผ ๋ชจ๋์ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํด๋ ์ํํธ์จ์ด ์ ์ฒด ๊ตฌ์กฐ์ ์ํฅ์ ๋ฏธ์น์ง ์๊ฒ ๋๋ค.
- ์ค๋ฒ ์์ง๋์ด๋ง ๋ฐฉ์ง
- TDD๋ฅผ ํ๋ฉด ์๊ตฌ์ฌํญ์ ๋ง์ถฐ ๊ฐ๋ฐ ์ฝ๋๋ฅผ ๊ตฌํํ๋ ํ์ํ ๋งํผ๋ง ์ฝ๋ฉ์ ํ ์ ์๋ค.
- ๋ฏธ๋์ ํ์ํ ๊ฒ ๊ฐ์ ์ฝ๋ ๊ตฌํ (X)
- ์ฌ์ค๊ณ ์๊ฐ์ ๋จ์ถ
- ํ ์คํธ ์ฝ๋๋ฅผ ๋จผ์ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์ง๊ธ ๋ฌด์์ ํด์ผํ๋์ง ๋ถ๋ช ํ ์ ์ํ๊ณ ๊ฐ๋ฐ์ ์์ํ๊ฒ ๋๋ค. ๋ํ ํ ์คํธ ์๋๋ฆฌ์ค๋ฅผ ์์ฑํ๋ฉด์ ๋ค์ํ ์์ธ์ฌํญ์ ๋ํด ์๊ฐํด๋ณผ ์ ์๋ค. ์ด๋ ๊ฐ๋ฐ ์งํ ์ค ์ํํธ์จ์ด์ ์ ๋ฐ์ ์ธ ์ค๊ณ๊ฐ ๋ณ๊ฒฝ๋๋ ์ผ์ ๋ฐฉ์งํ ์ ์๋ค.
- ๋๋ฒ๊น
์๊ฐ์ ๋จ์ถ
- ์ด๋ ์ ๋ ํ ์คํ ์ ํ๋ ์ด์ ์ด๊ธฐ๋ ํ๋ค. ์๋ฅผ ๋ค๋ฉด ์ฌ์ฉ์์ ๋ฐ์ดํฐ๊ฐ ์๋ชป ๋์จ๋ค๋ฉด DB์ ๋ฌธ์ ์ธ์ง, ๋น์ฆ๋์ค ๋ ์ด์ด์ ๋ฌธ์ ์ธ์ง UI์ ๋ฌธ์ ์ธ์ง ์ค์ ๋ชจ๋ ๋ ์ด๋ฌ๋ค์ ์ ๋ถ ๋๋ฒ๊น ํด์ผํ์ง๋ง, TDD์ ๊ฒฝ์ฐ ์๋ํ ๋ ์ ๋ํ ์คํ ์ ์ ์ฌํ๋ฏ๋ก ํน์ ๋ฒ๊ทธ๋ฅผ ์ ์ฝ๊ฒ ์ฐพ์๋ผ ์ ์๋ค.
- ์ค๊ณ์ ๋ํ ํผ๋๋ฐฑ์ด ๋น ๋ฅด๋ค.
- ์ค๊ณ๋ฅผ ์๋ชปํ์ ๋ ๋ณดํต ๋ณ๊ฒฝ์ด ์ผ์ด๋๊ฑฐ๋ ์ฌ์ฉํ๊ธฐ ์ด๋ ค์ธ ๋ ๊นจ๋ซ๊ฒ ๋๋ค.
- ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ ๋ณต์กํ๊ณ ์๋ชป๋ ์ค๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ ๊ฒฝ์ฐ ์ ์ ๋ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ด๋ ค์์ง๋ค.
- ์ถ๊ฐ ๊ตฌํ์ ์ฉ์ดํจ
- ๊ฐ๋ฐ์ด ์๋ฃ๋ ์ํํธ์จ์ด์ ์ด๋ค ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๋ ๊ฐ์ฅ ์ฐ๋ ค๋๋ ์ ์ ํด๋น ๊ธฐ๋ฅ์ด ๊ธฐ์กด ์ฝ๋์ ์ด๋ค ์ํฅ์ ๋ฏธ์น ์ง ์์ง ๋ชปํ๋ค๋ ๊ฒ์ด๋ค. ํ์ง๋ง TDD์ ๊ฒฝ์ฐ ์๋ํ๋ ์ ๋ ํ ์คํ ์ ์ ์ ํ๋ฏ๋ก ํ ์คํธ ๊ธฐ๊ฐ์ ํ๊ธฐ์ ์ผ๋ก ๋จ์ถ์ํฌ ์ ์๋ค.
-
๊ฐ์ฅ ํฐ ๋จ์ ์ ๋ฐ๋ก ์์ฐ์ฑ์ ์ ํ์ด๋ค.
- ๊ฐ๋ฐ ์๋๊ฐ ๋๋ ค์ง๋ค๊ณ ์๊ฐํ๋ ์ฌ๋์ด ๋ง๊ธฐ ๋๋ฌธ์ TDD์ ๋ํด ๋ฐ์ ๋ฐ์ ํ๋ค.
- ์๋ํ๋ฉด ์ฒ์๋ถํฐ 2๊ฐ์ ์ฝ๋๋ฅผ ์ง์ผํ๊ณ , ์ค๊ฐ์ค๊ฐ ํ ์คํธ๋ฅผ ํ๋ฉด์ ๊ณ ์ณ๋๊ฐ์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
- TDD ๋ฐฉ์์ ๊ฐ๋ฐ ์๊ฐ์ ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ ๋ฐฉ์์ ๋นํด ๋๋ต 10~30% ์ ๋๋ก ๋์ด๋๋ค.
- SI ํ๋ก์ ํธ์์๋ ์ํํธ์จ์ด์ ํ์ง๋ณด๋ค ๋ฉ๊ธฐ์ผ ์ค์๊ฐ ํจ์ฌ ์ค์ํ๊ธฐ ๋๋ฌธ์ TDD ๋ฐฉ์์ ์ ์ฌ์ฉํ์ง ์๋๋ค.
์ด๊ท์๋์ ๋ง
- TDD๋ ๋์ ์์ง์ ์ ๋ํ์ง ์๋๋ค.
- TDD๋ ๋จ์ผ ์ฑ ์ ์์น๊ณผ ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์ฐ๋์น ์๋ฐฐ์ ์ด๋ค ์ ํธ๋ ์ฃผ์ง ์๋๋ค.
- TDD๋ ์ธํฐํ์ด์ค ์ผ๊ด์ฑ์ ๋์ถํ์ง ์๋๋ค.
- TDD์ ๋ฆฌํฉํ ๋ง ๋จ๊ณ๋ ์ข์ ๊ตฌ์กฐ๋ฅผ ์๋ดํ๊ฑฐ๋ ์ข์ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ก ๊ฐ์ ํ์ง ์๋๋ค.
-> TDD๊ฐ ์ค๊ณ์ ์ํฅ์ ๋ฏธ์น์ง ์์ง๋ ์์ง๋ง ์ค๊ณ ๋ฐฉ๋ฒ๋ก ์ ์๋๋ค.
์ ์ ์ผ๋ก TDD์๋ง ์์กดํ๊ฒ ๋๋ค๋ฉด ํ ์คํธ๋ง ํ๊ธฐ ์ข์ ์์ข์ ์ค๊ณ๊ฐ ๋ง๋ค์ด์ง ์ ์๋ค.
๋ง์ ๊ธฐ๋ฅ์ TDD๋ก ๊ตฌํํด๋ณด์!
public class CalculatorTest {
@Test
void plus() {
int result = Calculator.plus(1, 2);
Assertions.assertEquals(3, result);
}
}
์์ฑ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-
๋ง์ ๊ธฐ๋ฅ์ ์ ๊ณตํ ํด๋์ค, ๋ฉ์๋, ํ๋ผ๋ฏธํฐ, ๋ฐํ ํ์ ์ ๋ํด ๊ณ ๋ฏผํ๊ณ int result = Calculator.plus(1,2) ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
-
assertEquals ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์์ ๊ฐ๊ณผ ์ค์ ๊ฐ์ ๋น๊ตํฉ๋๋ค.
-
๊ตฌํํ ์ฝ๋๊ฐ ์์ผ๋ ๋น์ฐํ๊ฒ๋ ์ฝ๋์ ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
-
๋ค์๊ณผ ๊ฐ์ด Calculator ํด๋์ค์ plus ๋ฉ์๋๋ฅผ ์์ฑํฉ๋๋ค
public class Calculator {
public static int plus(int a, int b) {
return 0;
}
}
-
ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค. ์์๊ฐ๊ณผ ์ค์ ๊ฐ์ด ๋ค๋ฅด๋ ํ ์คํธ๋ ์คํจํฉ๋๋ค.
-
ํ ์คํธ๋ฅผ ํต๊ณผํ ์ ์๋๋ก ๊ตฌํ ์ฝ๋๋ฅผ ๊ณ ์นฉ๋๋ค.
public class Calculator {
public static int plus(int a, int b) {
return 3;
}
}
- ํ ์คํธ๊ฐ ํต๊ณผํฉ๋๋ค. ๊ทธ๋ผ ์๋ก์ด ํ ์คํธ๋ฅผ ์์ฑํฉ๋๋ค.
public class CalculatorTest {
@Test
void plus() {
int result = Calculator.plus(1, 2);
Assertions.assertEquals(3, result);
Assertions.assertEquals(5, Calculator.plus(2, 3));
}
}
- ํ ์คํธ๋ ์คํจํ๊ฒ ๋๋ฉฐ, ํต๊ณผํ ์ ์๊ฒ ๊ตฌํ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
public class Calculator {
public static int plus(int a, int b) {
return a + b;
}
}
๋ชจ๋ ์์ธ ์ฌํญ๊ณผ ๊ธฐ๋ฅ์ ํ ๋ฒ์ ๊ตฌํํ๊ธฐ ์ด๋ ต๊ณ , ์์ฑ๋๋ค๊ณ ํด๋ ํ ์คํธ์ ์คํจํ ํ๋ฅ ์ด ๋์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ๋๋ฒ๊น ์ ํตํด ๋ฌธ์ ์ ์ ํ์ ํด์ผ ํ๋๋ฐ, ์ด๋ฌํ ๊ณผ์ ์์์ ๊ฐ๋ฐ์๋ ์๊ฐ์ ๋ญ๋นํ๊ฒ ๋๊ณ ์ฝ๋์ ํ์ง๋ ๋จ์ด์ง ์๋ฐ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์์ ๊ฐ์ด TDD ๋ฐฉ์์ ์ฌ์ฉํด ํ ์คํธ๋ฅผ ๋จผ์ ์์ฑํ๊ณ ํ ์คํธ์ ์คํจํ๋ฉด ํ ์คํธ๋ฅผ ํต๊ณผ์ํฌ ๋งํผ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด ๋ญ๋น๋๋ ์๊ฐ๋ ์ค์ผ ์ ์๊ณ , ์ฝ๋์ ํ์ง๋ ํฅ์๋ ์ ์์ต๋๋ค.
unit test: ํ๋์ ๋ชจ๋์ ๊ธฐ์ค์ผ๋ก ๋ ๋ฆฝ์ ์ผ๋ก ์งํ๋๋ ๊ฐ์ฅ ์์ ๋จ์์ ํ ์คํธ
- ๊ฐ์ฅ ์์ ๋จ์์ ํ ์คํธ
- ์ผ๋ฐ์ ์ผ๋ก ๋ฉ์๋ ๋ ๋ฒจ
- ๊ฒ์ฆ์ด ํ์ํ ์ฝ๋์ ๋ํด ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ ์ ์ฐจ ๋๋ ํ๋ก์ธ์ค
- Unit Testing์ ํ ์คํธ ์ฝ๋๊ฐ ๋ชฉ์ ์ฝ๋์ ์์ ์ฑ์ ์ ์ฆ ํด์ฃผ๊ธฐ ๋๋ฌธ์, ํ ์คํธ ์ฝ๋ ๊ทธ์์ฒด๋ง์ผ๋ก ์ฃผ์ํ ๊ฐ์น๊ฐ ์์
ํตํฉ ํ ์คํธ(Integration Test)๋ ๋ชจ๋์ ํตํฉํ๋ ๊ณผ์ ์์ ๋ชจ๋ ๊ฐ์ ํธํ์ฑ์ ํ์ธํ๊ธฐ ์ํด ์ํ๋๋ ํ ์คํธ์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๊ฐ์ ๋ชจ๋๋ค๋ก ๊ตฌ์ฑ์ด ๋๊ณ , ๋ชจ๋๋ค๋ผ๋ฆฌ ๋ฉ์ธ์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉด์(ํจ์ ํธ์ถ) ๊ธฐ๋ฅ์ ์ํํ๋ค. ๊ทธ๋ ๊ธฐ์ ํตํฉ๋ ๋ชจ๋๋ค์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ๊ณ๋์ด ๋์ํ๋์ง ๊ฒ์ฆ์ด ํ์ํ๋ฐ, ์ด๋ฌํ ๋ชฉ์ ์ผ๋ก ์งํ๋๋ ํ ์คํธ๊ฐ ํตํฉ ํ ์คํธ์ด๋ค.
๊ทธ๋ ๊ธฐ์ ํตํฉ ํ ์คํธ๋ ๋ ๋ฆฝ์ ์ธ ๊ธฐ๋ฅ์ ๋ํ ํ ์คํธ๊ฐ ์๋๋ผ ์น ํ์ด์ง๋ก๋ถํฐ API๋ฅผ ํธ์ถํ์ฌ ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ๋ ์ง๋ฅผ ํ์ธํ๋ ๊ฒ์ด๋ค.
๋จ์ ํ ์คํธ๋ ํด๋น ๋ถ๋ถ๋ง ๋ ๋ฆฝ์ ์ผ๋ก ํ ์คํธํ๊ธฐ ๋๋ฌธ์ ์ด๋ค ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ์ฌ๋ ๋น ๋ฅด๊ฒ ๋ฌธ์ ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋ค.
- ํ ์คํ ์ ๋ํ ์๊ฐ๊ณผ ๋น์ฉ์ ์ ๊ฐํ ์ ์๋ค.
- ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ ์์ ์์๋ก ๋น ๋ฅด๊ฒ ํ ์คํธ ํ ์ ์๋ค.
- ๋ฆฌํฉํ ๋ง ์์ ์์ ์ฑ์ ํ๋ณดํ ์ ์๋ค.
- ์ฝ๋์ ๋ํ ๋ฌธ์๊ฐ ๋ ์ ์๋ค.
TDD(Test-Driven Development, ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ) ์์ ์๊ธฐํ๋ ํ ์คํธ๋ ๋จ์ ํ ์คํธ๋ฅผ ์๋ฏธํ๋ค.
- F: Fast (๋น ๋ฅด๊ฒ)
- ํ ์คํธ๋ ๋น ๋ฅด๊ฒ ๋์ํ์ฌ ์์ฃผ ๋๋ฆด ์ ์์ด์ผ ํ๋ค.
- I: Independent (๋
๋ฆฝ์ ์ผ๋ก)
- ๊ฐ๊ฐ์ ํ ์คํธ๋ ๋ ๋ฆฝ์ ์ด๋ฉฐ ์๋ก ์์กดํด์๋ ์๋๋ค.
- ํ๋๊ฐ ์คํจํ ๊ฒฝ์ฐ ๋ค๋ฅธ ํ ์คํธ๋ ์คํจํ๊ฒ ๋์ด ์์ธ์ ์ฐพ๊ธฐ ์ด๋ ค์์ง๋ค.
- R: Repeatable (๋ฐ๋ณต ๊ฐ๋ฅํ๊ฒ)
- ์ด๋ ํ๊ฒฝ์์๋ ๋ฐ๋ณต ๊ฐ๋ฅํด์ผ ํ๋ค.
- S: Self-Validating (์๊ฐ ๊ฒ์ฆํ๋)
- ํ ์คํธ๋ Boolean ๊ฐ์ผ๋ก (์ฑ๊ณต/์คํจ) ๊ฒฐ๊ณผ๋ฅผ ๋ด์ด ์์ฒด์ ์ผ๋ก ๊ฒ์ฆ๋์ด์ผ ํ๋ค.
- ๊ทธ๋ ์ง์๋ค๋ฉด ํ๋จ์ ๋ณด๋ ์ฌ๋์ด ์ฃผ๊ด์ ์ผ๋ก ํด์ผํ๋ค.
- T: Timely (์ ์์)
- ํ ์คํธ๋ ์ ์์ ์ฆ, ํ ์คํธํ๋ ค๋ ์ค์ ์ฝ๋๋ฅผ ๊ตฌํํ๊ธฐ ์ง์ ์ ๊ตฌํํด์ผ ํ๋ค.
10๋ถ ํ ์ฝํก: TDD์ ๋จ์ํ ์คํธ
- TDD๊ฐ ๋ฌด์์ธ๊ฐ์?
- TDD๋ฅผ ์ฌ์ฉํ๋ฉด ์ฅ์ ์ด ๋ฌด์์ธ๊ฐ์?
- ๋จ์ ํ ์คํธ์ ๋ฒ์น์ ๋ฌด์์ด ์์๊น์?