| ์ ๋ชฉ | ์ ์ | ๋งํฌ |
|---|---|---|
| ์ํํธ์จ์ด ์ฅ์ธ | ์ฐ๋๋ก ๋ง์ฟ ์ | 9791186659489 |
| ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ - Money ์์ | ์ผํธ ๋ฒก | 9788966261024 |
| xUnit ํ ์คํธ ํจํด | ์ ๋ผ๋ ๋ฉ์ค์๋ก์ค | Website for Book |
| ๋ฆฌํฉํฐ๋ง 2ํ | ๋งํด ํ์ธ๋ฌ | 9791162242742 |
| ํจํด์ ํ์ฉํ ๋ฆฌํฉํฐ๋ง | ์กฐ์์ ์ผ๋ฆฌ์๋ธ์คํค | 9788991268920 |
| ์ฝ๋ ์ปดํ๋ฆฌํธ 2 | ์คํฐ๋ธ ๋งฅ์ฝ๋ฌ | 9791158390600 |
| ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ๋ก ๋ฐฐ์ฐ๋ ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ์ค์ฒ | ์คํฐ๋ธ ํ๋ฆฌ๋จผ, ๋ ํ๋ผ์ด์ค | 9788966260843 |
| ํด๋ฆฐ ์ฝ๋ | ๋ก๋ฒํธ C. ๋งํด | 9788966262724 |
| ํด๋ฆฐ ์ฝ๋ | ๋ก๋ฒํธ C. ๋งํด | 9788960778818 |
| ํด๋ฆฐ ์ํํธ์จ์ด | ๋ก๋ฒํธ C. ๋งํด | 9791185890852 |
- Mocks, Fakes, Stubs and Dummies - xUnit Patterns
- The different types of software testing - Atlassian CI/CD
- Test ๊ด๋ จ ์ฉ์ด ์ ๋ฆฌ - ์ด์ข ๋ฆฝ (๊ธฐ๊ณ์ธ๊ฐ John Grib)
- ์ ๋ง๋ก ํ ์คํธ ๋์ญ์ด ํ์ํ๊ฐ - ์ด๊ท์
- TestDouble - Martin Fowler
- Mocks Aren't Stubs - Martin Fowler (๋ฒ์ญ)
| ์ ๋ชฉ | ์ ์ | ๋งํฌ |
|---|---|---|
| TDD ๋ฆฌํฉํ ๋ง | ์๋ฐ์ง๊ธฐ ๋ฐ์ฌ์ฑ | Youtube |
| ํ์ค ์ธ์์ TDD | ์ด๊ท์ | fastcampus, GitHub |
| ์๋ฐ์ JUnit์ ํ์ฉํ ์ค์ฉ์ฃผ์ ๋จ์ ํ ์คํธ | ์ ํ ๋ญ์ด, ์ค๋ ํํธ, ๋ฐ์ด๋ธ ํ ๋ง์ค | 9791160508383 |
| JUnit in Action (3rd) | ํผํฐ ํ์น๋ธ, ํ ๋ฆฌํ ๋ ๋ฏธ, ๋น์ผํธ ๋ง์, ๊ฒ๋ฆฌ ๊ทธ๋ ๊ณ ๋ฆฌ | 9781617297045 |
| ์ ๋ชฉ | ์ ์ | ๋งํฌ |
|---|---|---|
| ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ ์์ํ๊ธฐ | ์ต๋ฒ๊ท | 9788980783052 |
| Test Driven Development with Spring Boot | Sannidhi Jalukar, Madhura Bhave | Youtube |
| Java TDD ์ค์ต | ์์ฌ | Youtube |
| ์ ๋ชฉ | ์ ์ | ๋งํฌ |
|---|---|---|
| Learn Go with Tests | Chris James | Git Book |
| ์ ๋ชฉ | ์ ์ | ๋งํฌ |
|---|---|---|
| ํ๋ก ํธ์๋์์ TDD๊ฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ๋ณด์ฌ๋๋ฆฝ๋๋ค | ์ต์ํ | Youtube |
| ์ ๋ชฉ | ์ ์ | ๋งํฌ |
|---|---|---|
| ์ฐ์ํ๊ฒ ์ค๋นํ๋ ํ ์คํธ์ ๋ฆฌํฉํ ๋ง | ํ์ฑ๋ฏผ | Youtube |
| ํด๋ฆฐ ์ฝ๋๋ฅผ ์ํ ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ | ํด๋ฆฌ J.W. ํผ์๋ฒ | 9788994774916 |
| ์ ๋ชฉ | ์ ์ | ๋งํฌ |
|---|---|---|
| ํจ๊ป ์๋ผ๊ธฐ | ๊น์ฐฝ์ค | 9788966262373 |
| ์ค์ฉ์ฃผ์ ํ๋ก๊ทธ๋๋จธ | ๋ฐ์ด๋น๋ ํ ๋จธ์ค, ์ค๋๋ฅ ํํธ | 9788966261031 |
| ์ค์ฉ์ฃผ์ ์ฌ๊ณ ์ ํ์ต | ์ค๋ ํํธ | 9788992939362 |
| ํ๋ก๊ทธ๋๋จธ์ ๊ธธ, ๋ฉํ ์๊ฒ ๋ฌป๋ค | ๋ฐ์ด๋ธ ํ๋ฒ, ์ ๋์จ์ผ ์ค์๋์ด | 8991268803 |
| ํด๋ฆฐ ์ํคํ ์ฒ | ๋ก๋ฒํธ C. ๋งํด | 9788966262472 |
| Clean Architecture and Design | ๋ก๋ฒํธ C. ๋งํด | amara (ํ๊ธ ์๋ง) |
| ๊ฐ์ฒด ์งํฅ์ ์ฌ์ค๊ณผ ์คํด | ์กฐ์ํธ | 9788998139766 |
| ์ค๋ธ์ ํธ | ์กฐ์ํธ | 9791158391409 |
"TDD์ ์ด๋ฆ ์์ฒด์ 'ํ ์คํธ'๊ฐ ๋ค์ด ์๊ธฐ๋ ํ์ง๋ง ์ฌ์ค TDD๋ ์ค๊ณ์ ๋ํ ์คํ ๊ด๋ก๋ค." - <์ํํธ์จ์ด ์ฅ์ธ>
์ถ์ฒ: ์ํคํผ๋์
<ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ>, ์ผํธ ๋ฒก
- ์ฌ๋นจ๋ฆฌ ์์ ํ ์คํธ๋ฅผ ํ๋ ์ถ๊ฐํฉ๋๋ค.
- ๐ด ๋ชจ๋ ํ ์คํธ๋ฅผ ์คํํ๊ณ , ์คํจํ๋ ๊ฒ์ ํ์ธํฉ๋๋ค.
- ์ฝ๋์ ๋ณํ๋ฅผ ์ค๋๋ค.
- ๐ข ๋ชจ๋ ํ
์คํธ๋ฅผ ์คํํ๊ณ , ์ฑ๊ณตํ๋ ๊ฒ์ ํ์ธํฉ๋๋ค.
- ๊ฐ์ง๋ก ๊ตฌํํ๊ธฐ: ์์๋ก ๋ฐํํ๊ฒ ๋ง๋ค๊ณ ์ง์ง ์ฝ๋๋ฅผ ์ป์ ๋๊น์ง ๋จ๊ณ์ ์ผ๋ก ์์๋ฅผ ๋ณ์๋ก ๋ฐ๊พธ์ด ๊ฐ๋๋ค.
- ๋ช ๋ฐฑํ ๊ตฌํ ์ฌ์ฉํ๊ธฐ: ์ค์ ๊ตฌํ์ ์ ๋ ฅํฉ๋๋ค.
- ์ผ๊ฐ์ธก๋(triangulation): ๋ ๊ฐ ์ด์์ ์์ ๋ฅผ ํตํด ์ฝ๋๋ฅผ ์ผ๋ฐํํฉ๋๋ค. ์ด๋ป๊ฒ ๋ฆฌํฉํ ๋งํด์ผ ํ๋์ง ์ ํ ๊ฐ์ด ์ ์ฌ ๋๋ง ์ผ๊ฐ์ธก๋์ ์ฌ์ฉํฉ๋๋ค.
- ๐ต ์ค๋ณต์ ์ ๊ฑฐํ๊ธฐ ์ํด ๋ฆฌํฉํ ๋งํฉ๋๋ค.
์ ๋ ฅ๋ ์์กด์ฑ ์ธํฐํ์ด์ค๋ฅผ ํตํ ์ ๋ ฅ์ ๋งํฉ๋๋ค(์์กด์ฑ ๊ด์ ์์๋ ์ถ๋ ฅ). SUT์ ๋์์ด SUT์์ ์ฌ์ฉํ๋ ๋ค๋ฅธ ์๋น์ค ์ปดํฌ๋ํธ์์ ๋ฆฌํดํ๋ ๊ฐ์ ์ํฅ์ ๋ฐ์ ๋ ์ด๋ฐ ๊ฐ๋ค์ SUT์ ๊ฐ์ ์ ๋ ฅ์ด๋ผ ํฉ๋๋ค.
์ ๋ ฅ๋ ์์กด์ฑ ์ธํฐํ์ด์ค๋ฅผ ํตํ ์ถ๋ ฅ์ ๋งํฉ๋๋ค(์์กด์ฑ ๊ด์ ์์๋ ์ ๋ ฅ). SUT์ ๋์์ ๋ฐ๋ฅธ ํจ๊ณผ๋ฅผ public ์ ํ๋ฆฌ์ผ์ด์ ์ธํฐํ์ด์ค(API)์์๋ ๋ณผ ์ ์๊ณ ๋ค๋ฅธ ์์คํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ปดํฌ๋ํธ์์๋ง ๋ณผ ์ ์์ ๋ ์ด๋ฐ ํจ๊ณผ๋ฅผ SUT์ ๊ฐ์ ์ถ๋ ฅ์ด๋ผ ํฉ๋๋ค.
System Under Test.
"ํ
์คํธํ๋ ค๋ ๋์"์ ์๋ฏธํฉ๋๋ค.
SUT๋ ํญ์ ํ
์คํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ์๋ฉ๋๋ค.
๋จ์ ํ
์คํธ๋ฅผ ์์ฑํ ๋ SUT๋ ํ
์คํธํ๋ ค๋ ํด๋์ค(CUT), ์ค๋ธ์ ํธ(OUT) ๋๋ ๋ฉ์๋(MUT)๊ฐ ๋ฉ๋๋ค.
๊ณ ๊ฐ ํ
์คํธ๋ฅผ ์์ฑํ ๋
SUT๋ ์๋ง๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฒด(AUT)์ด๊ฑฐ๋ ์ ์ด๋ ์ฃผ์ ์๋ธ ์์คํ
์ผ ๊ฒ์
๋๋ค.
์ ํ๋ฆฌ์ผ์ด์
์์ ํน์ ํ
์คํธ์ ๊ฒ์ฆ ๋์์ด ์๋ ๋ถ๋ถ๋ ์ฌ์ ํ
์์กด ์ปดํฌ๋ํธ(DOC)๋ก์ ํ
์คํธ์ ์ฐ๊ด๋ผ ์์ ์ ์์ต๋๋ค.
depended-on component. SUT๊ฐ ์์กดํ๋ ๊ฐ๋ณ ํด๋์ค๋ ๋์จํ ์ปดํฌ๋ํธ(large-grained component)๋ฅผ ๋งํฉ๋๋ค. ์์กด์ ๋ณดํต ๋ฉ์๋ ํธ์ถ์ ํตํด ์์ํ๋ ๋ฐฉ์ ์ค ํ๋์ ๋๋ค. ํ ์คํธ ์๋ํ์์ ์๋ฒฝํ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ์ป์ผ๋ ค๋ฉด ์ฃผ๋ก DOC์ SUT ๊ฐ์ ์ํธ์์ฉ์ ๋ณด๊ณ ์ ์ดํ ์ ์์ด์ผ ํฉ๋๋ค.
ํ ์คํธ ํฝ์ฒ๋ SUT์ ๋์์ ๊ฒ์ฆํ๊ธฐ ์ํด ํ ์คํธ๋ฅผ ์คํํ๋ ค ํ ๋ ๊ฐ์ถฐ์ผ ํ๋ ๋ชจ๋ ๊ฒ์ ๋งํฉ๋๋ค.
ํ ์คํธ ์ค์ํธ๋ ๊ฐ์ด ์คํํ๊ณ ์ถ์ ํ ์คํธ๋ค์ ๋ชจ์(composite)์ ์ด๋ฆ์ ๋ถ์ฌ์ฃผ๋ ๋ฐฉ๋ฒ์ ๋งํฉ๋๋ค.
| - | Unit Test | Acceptance Test |
|---|---|---|
| ๊ด์ | ์ต์ข ํด๋ผ์ด์ธํธ | ํ๋ก๊ทธ๋๋จธ |
| ๊ฒ์ฆ ๋์ | ์์คํ ์ ์ผ๋ถ(ํ์ ์์คํ ) | ๋ฐฐ์น๋ ์์คํ |
| ์์ ๊ฐ (์ ์ฒด ์์คํ ์ด์ ์ฌ๋ถ ์ ๋ขฐ๋) | ์๋์ ์ผ๋ก ๋ฎ์ | ๋์ |
| ๋น์ฉ (์์ฑ/๊ด๋ฆฌ/์คํ) | ๋ฎ์ | ๋์ |
| ํผ๋๋ฐฑ ํ์ง | ๋์ | ๋ฎ์ (ํ์์ ๋๋ฌ๋์ง๋ง ์์ธ์ ์จ๊ฒจ์ง) |
์ถ์ฒ: ํ์ค ์ธ์์ TDD - ์ด๊ท์
๋จ์ ํ ์คํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ์ ํ ๋ถ๋ถ์ด ์๋ํ ๋๋ก ๋์ํ๋์ง ๊ฒ์ฆํฉ๋๋ค.
ํตํฉ ํ ์คํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๋ ์ฌ๋ฌ ๋ชจ๋ ๋๋ ์๋น์ค๊ฐ ํจ๊ป ์ ์๋ํ๋์ง ํ์ธํฉ๋๋ค. ์ฌ๊ธฐ์ ๋ชจ๋์ ๋ชจ๋ ๋ชจ๋์ด ์๋ ํด๋น ํ ์คํธ๊ฐ ์์กดํ๋ ๋ชจ๋๋ง์ ์ผ์ปซ์ต๋๋ค. ํตํฉ ํ ์คํธ๋ ๋จ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฟผ๋ฆฌ ํ ์ โโ์๋์ง ํ์ธํฉ๋๋ค.
๊ธฐ๋ฅ ํ ์คํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ต์ข ์ฌ์ฉ์์ ๊ธฐ๋ฅ์ ๋ํ ๋ธ๋๋ฐ์ค ํ ์คํธ๋ฅผ ๋งํฉ๋๋ค.
ํตํฉ ํ ์คํธ๊ฐ ๋ช ๊ฐ์ง ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ ๋์์ ํ ์คํธํ๋ค๋ฉด E2E ํ ์คํธ๋ ์ํํธ์จ์ด๊ฐ ์ฌ์ฉ์์ ๋จ๊ณ๋ณ ํ๋์ ๊ทธ๋๋ก ์๋ฎฌ๋ ์ด์ ํ๊ณ ํ ์คํธํฉ๋๋ค.
์ธ์ ํ ์คํธ(์น์ธ ํ ์คํธ)๋ ์์คํ ์ด ๋น์ฆ๋์ค ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋์ง ํ์ธํ๊ธฐ ์ํด ์ํ๋๋ ํ ์คํธ์ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ๋ก๊ทธ๋๋จธ๊ฐ ์๊ฐํ ๋๋ก๊ฐ ์๋ ๊ณ ๊ฐ์ด ์๋ํ ๋๋ก ๋์ํ๋ ๊ฒ์ ์ฆ๋ช ํ๋ ๊ฒ์ด ๋ชฉ์ ์ ๋๋ค.
๊ณ ๊ฐ ํ ์คํธ๋ ์ ์ฒด ์์คํ ์ค์์ ๋์ ๋ณด์ด๋ ๊ธฐ๋ฅ์ ์ผ๋ถ๋ถ์ ๋ํ ๋์์ ๊ฒ์ฆํ๋ ํ ์คํธ์ ๋๋ค.
ํ ์คํธ ๋๋ธ test double
- ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ค์ DOC๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด, DOC ๋์ ํ ์คํธ ๋๋ธ๋ก ๋์ฒดํ ์ ์์ต๋๋ค.
- ํ ์คํธ ๋๋ธ์ ์ค์ DOC์ ๋๊ฐ์ด ํ๋ํ์ง ์์๋ ๋๋ฉฐ, ๋๊ฐ์ API๋ง ์ ๊ณตํ๋ฉด ๋ฉ๋๋ค.
- ํ ์คํธ ๋๋ธ์ ํ ์คํธ ๋ชฉ์ ์ ์ํด ํ๋ก๋์ ๊ฐ์ฒด๋ฅผ ๋ค๋ฅธ ๋ฌด์ธ๊ฐ๋ก ๊ต์ฒดํ๋ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํํํ๋ ์ฉ์ด์ ๋๋ค.
SUT ๋ฉ์๋ ์ธ์์ ๊ตฌํ์ด ์ ํ ์ ๋ผ ์๋ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํฉ๋๋ค. SUT ์ค๋น๋ฅผ ์ํด ํด๊ฒฐ๋์ด์ผ ํ๋ ์์กด์ฑ์ด ํ ์คํธ ๋์ ๋ ผ๋ฆฌ์ ์ํด ์ฌ์ฉ๋์ง ์๋ ๊ฒฝ์ฐ์ ์์กด ์์๋ฅผ ๋์ ํ๋ ํ ์คํธ ๋์ญ์ ๋๋ค.
์ค์ ๋ก ์๋ํ๋ ๊ตฌํ์ด์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๋์ ์๋ ์ ํฉํ์ง ์์ ๊ผผ์(shortcut)๋ฅผ ์ฌ์ฉํฉ๋๋ค. (InMemoryTestDatabase๊ฐ ์ข์ ์) ์คํํ ์ ์๋ ํ ์คํธ๋ฅผ ๋น ๋ฅด๊ฒ ์คํํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
ํ ์คํธ ์ค์ ํธ์ถ๋๋ฉด ๋ฏธ๋ฆฌ ์ค๋น๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฆ, ์ค์ ๊ฐ์ฒด๋ฅผ ํ ์คํธ์ฉ ๊ฐ์ฒด๋ก ๊ต์ฒดํด SUT์ ์ํ๋ ๊ฐ์ ์ ๋ ฅ์ ๋ณด๋ ๋๋ค.
SUT๋ก๋ถํฐ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ก์ ๊ฐ์ ์ถ๋ ฅ์ ๊ฐ๋ฌด๋ฆฌํ๋ค๊ฐ ๋ค์ ํ ์คํธ์์ ๊ฒ์ฆํฉ๋๋ค.
ํธ์ถํ์ ๋ ์ฌ์ ์ ์ ์๋ ๋ช ์ธ๋๋ก์ ๊ฒฐ๊ณผ๋ฅผ ๋๋ ค์ฃผ๋๋ก ๋ฏธ๋ฆฌ ํ๋ก๊ทธ๋จ ๋์ด ์์ต๋๋ค. ์์์น ๋ชปํ ํธ์ถ์ด ์์ ๊ฒฝ์ฐ ์์ธ๋ฅผ ๋์ง ์ ์์ผ๋ฉฐ, ๋ชจ๋ ํธ์ถ์ด ์์๋ ๊ฒ์ด์๋์ง ํ์ธํ ์ ์์ต๋๋ค. SUT ๋ด๋ถ์ ํ์๋ฅผ ๊ฒ์ฆํฉ๋๋ค. SUT์ ๊ฐ์ ์ถ๋ ฅ์ ๊ฒ์ฆํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
