More Related Content
Similar to TDD&Refactoring Day 02: TDD (20)
TDD&Refactoring Day 02: TDD
- 7. ํ์ต๋ชฉํ
u๏ตโฏ ๋ณธ ๊ต์ก๊ณผ์ ์ ์ค์ต์ ํตํด TDD๋ฅผ ๋ฐฐ์๋ณด๋ ๊ณผ์ ์
๋๋ค.
u๏ตโฏ TDD ๊ทธ ์์ฒด๊ฐ ๋ชฉ์ ์ด ์๋๋ฉฐ, ํจ์จ์ ์ธ ํ๋ก๊ทธ๋๋ฐ์ ์ํ ๊ณผ์ ์ ํ๋๋ก, ์ฌ๋ฐ
๋ฅธ ๊ฐ๋ฐ ์คํ์ผ์ ๋ชธ์ ์ตํ๋ ๊ฒ์ด ์ด๋ฒ ๊ต์ก์ ๋ชฉ์ ์
๋๋ค.
2
ย
๋์์ธํจํด
- 8. ย
ย
ย
ย
ย 1. ์ฝ๋๊ฐ์
1.โฏ ๊ฐ์ฒด์งํฅ ํน์ง
2.โฏ ์ฝ๋ ๊ฐ์ [์ค์ต]
3
ย
๋์์ธํจํด
- 9. Learning concept
-โฏ Wisdom over Knowledge
-โฏ Practice over Seeing
-โฏ I donโt know what I donโt know
-โฏ options and guide for good TDD
4
- 14. ์ ํต์ ์ธ ๊ฐ๋ฐ ์งํ
๋ฌธ์ ๋ฐ์ ์๊ตฌ์ฌํญ ๋ฐ์
๊ธฐ๋ฅ๊ตฌํ
Console ์ ๊ฐ ์ฐ์ด
๋ณด๊ธฐ
๊ฐ๋จํ ํ
์คํธ
Yes
- 17. ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ
1. ํน์ ๋ชจ๋์ ๊ฐ๋ฐ ๊ธฐ๊ฐ์ด ๊ธธ์ด์ง์๋ก ๊ฐ๋ฐ์์ ๋ชฉํ์์์ด ํ๋ ค์ง๋ค.
โ์ด๋๊น์ง ์งฐ๋๋ผ?โ
โ์, ๋ด๊ฐ ์ง๊ธ ๋ญ ํ๋ ๊ฑฐ์์ง?โ
โ์ด ๋ชจ๋์ด ๋ฌด์จ ๊ธฐ๋ฅ์ ํด์ผ ํ๋๋๋ผ?โ
2. ์์
๋ถ๋์ด ๋์ด๋ ์๋ก ํ์ธ์ด ์ด๋ ค์์ง๋ค.
โ๋ก๊ทธ๊ฐ ์ด๋ ์๋๋ผ?โ
โ์ด๊ฒ๋ ํ๋ฉด์ผ๋ก ์ถ๋ ฅํด๋ณด๊ณ โฆโ
10
- 18. ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ
3. ๊ฐ๋ฐ์์ ์ง์ค๋ ฅ์ด ํ์ํด์ง๋ค.
โ์! ํ๋ฉด ์ง๋๊ฐ๋ค!โ
4. ๋
ผ๋ฆฌ์ ์ธ ์ค๋ฅ๋ฅผ ์ฐพ๊ธฐ๊ฐ ์ด๋ ต๋ค.
โ์ฌ๊ธฐ์ ๊ทธ๋ฌ๋๊น ์ด ๊ฐ์ด ๋ค์ด๊ฐ๋ฉด ๋์์ผ ํ๋ ๊ฒโฆ ์โฆ ์ด๊ฒ ๋ง๋๊ฐ?โ
5. ์ฝ๋์ ์ฌ์ฉ ๋ฐฉ๋ฒ๊ณผ ๋ณ๊ฒฝ ์ด๋ ฅ์ ๊ฐ๋ฐ์์ ๊ธฐ์ต๋ ฅ์ ์์กดํ๊ฒ ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
โ๋ง์! ๊ฐ์ธ๊ณ ๊ฐ ์ธ์ฆ์ ๊ณ ์น๋ฉด ๋ฒ์ธ ๊ณ ๊ฐ์ธ์ฆ ๋ถ๋ถ๋ ํจ๊ป ๊ณ ์ณค์ด์ผ ํ์์ง!!โ
6. ํ
์คํธ ์ผ์ด์ค๊ฐ ์ ํ ์๋ ์์
ํ์ผ์ ๋ณด๋ฉฐ ๋งค๋ฒ ํ
์คํธ๋ฅผ ์คํํ๋ ๊ฒ ์ ์ ๊ท์ฐฎ์์ ธ์
๋ ์ ์ฐจ ๊ฐ์ํํ๋ ํญ๋ชฉ๋ค์ด ๋์ด๋๋ค.
โ๋ ์ง? 1111. ์ฃผ๋ฏผ๋ฒํธ? ์ฐ์ 222222-2222222. ์ฃผ์? ์์ธ ๊ฐ๋ฅ์ด๋คโ
11
- 19. ์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ
7. ์ฝ๋ ์์ ์์ ๊ธฐ์กด ์ฝ๋์ ์ ์ ๋์์ ๋ํ ๋ณด์ฅ์ด ์ด๋ ต๋ค.
โํด~ ์ฐพ์๋ค. ์ฌ๊ธธ ๊ณ ์ณ์ผ ํ๋ ๊ฑฐ์๊ตฐ! ์, ๊ทผ๋ฐ ์ด ๊ธ์น์ด ํํฐ ๋ชจ๋ ํน์ ๋ค๋ฅธ ๋ฐ์๋ ์ฐ๋
๊ฑฐ ์๋?โ
8. ํ
์คํธ๋ฅผ ํด๋ณด๋ ค๋ฉด ์์ค์ฝ๋์ ๋ณ๊ฒฝ์ ๊ฐํ๋ ๋ฑ, ๋ฒ๊ฑฐ๋ก์ด ์ ํ ์์
์ด ํ์ํ ์ ์๋ค.
โ์
๊ณ ์ฒ๋ฆฌ๋ฅผ ํ
์คํธํ๋ ค๋ฉด, ์ฃผ๋ฌธ์ด ์๋ฃ๋๋ค๊ณ ํ
์ด๋ธ์ ์ง์ ์
๋ฐ์ดํธ๋ฅผ ํด์ค์ผโฆโ
9. ๊ทธ๋์ ์์ค ๋ณ๊ฒฝ ์ ํด์ผ ํ๋ ํ๊ท ํ
์คํธ3๋ ๊ณง์ ํฌ๊ท ํ
์คํธ(rare test)๊ฐ ๋๊ธฐ ์ฝ๋ค.
โ์, ๊ทธ๊ฑธ ์ธ์ ๋ค ๋ค์ ํ
์คํธํด? ์ฐ์ ๊ธํ ๋ถ๋ถํฐ ๋๊ณ ๋ณด์๊ตฌ.
์ง์ ์ ๊ฐ๊ฑฐ์ผ?โ
12
- 92. (based on my five years of experience)
Strongly recommended approach #1
ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ
Test-Driven Development
17
- 96. ย
โ์ง๋ฌธ ร ๏ ์๋ต ร ๏ ์ ์ ร ๏ ๋ฐ๋ณตโ
Ask ร ๏ Respond ร ๏ Refine ร ๏ Repeat
- 98. Test Driven Development Cycle
q๏ฑโฏ ์ง๋ฌธ Ask : ํ
์คํธ๋ฅผ ์์ฑํจ์ผ๋ก์จ ์์คํ
์ ์ง๋ฌธํ๋ค.
(FAIL)
q๏ฑโฏ ์๋ต Respond : ํ
์คํธ๋ฅผ ํต๊ณผํ๋ ์ฝ๋๋ฅผ ์์ฑํด์ ์ง๋ฌธ์ ๋๋ตํ๋ค.
(PASS)
q๏ฑโฏ ์ ์ Refine : ์์ด๋์ด๋ฅผ ํตํฉํ๊ณ , ๋ถํ์ํ ๊ฒ์ ์ ๊ฑฐํ๊ณ , ๋ชจํธํ ๊ฒ์
๋ช
ํํ ํด์ ๋๋ต์ ์ ์ ํ๋ค. (REFACTORING)
q๏ฑโฏ ๋ฐ๋ณต Repeat : ๋ค์ ์ง๋ฌธ์ ํตํด ๋ํ๋ฅผ ๊ณ์ ์งํํ๋ค.
20
- 101. ์ด๋ค ์ ์์ผ ๊ธฐ๋ฒ์ ์ ์ฉํ๊ณ ์์ต๋๊น?
๊ด๋ฆฌ ๊ธฐ๋ฒ์ ์ ์ธํ ๊ฐ๋ฐ ํ
ํฌ๋์ผ๋ก๋ง ์์๋ฅผ ๋ฝ์๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
1์: ๋จ์ ํ
์คํธ(Unit Testing)
2์: ์ง์์ ์ธ ํตํฉ(Continuous Integration)
3์: ์๋ํ๋ ๋น๋(Automated Builds)
4์: ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ(TDD)
5์: ์ง ํ๋ก๊ทธ๋๋ฐ(Pair Programming)
2009๋
7์๋ถํฐ 12์๊น์ง 88๊ฐ๊ตญ ์ด 2570๋ช
์ ๋์์ผ๋ก ์กฐ์ฌํ ๊ฒฐ๊ณผ๋ค.
23
- 103. ๊ฐ์ฅ ํฐ ํจ๊ณผ๋ฅผ ๋ดค๋ Agile ๊ธฐ๋ฒ
CI์ ์ผ์ผ ์คํ ๋์
๋ฏธํ
, TDD
๊ฐ์ฅ ๋ฐฐ์ฐ๊ธฐ ์ด๋ ค์ ๋ Agile ๊ธฐ๋ฒ
๊ฐ๋ฐ/์ธ์ TDD, ์ง ํ๋ก๊ทธ๋๋ฐ
25
- 104. Start Test with JUnit
1.โฏ xUnit Test Frmawork ์ค ํ๋
2.โฏ Text base ํน์ GUI(Swing) base ๋ก ๊ตฌ๋๋จ
3.โฏ xUnit Style์ ๋ฐ๋ฅธ๋ค.
assert (์์๊ฐ, ์ค์ ๊ฐ)
4.โฏ ๊ฒฐ๊ณผ๋ ์ฑ๊ณต:๋
น์/์คํจ:๋ถ์์ ์ค ํ๋๋ก ํ์
26
- 105. JUnit Assertions
-โฏassertEquals( [message], expected, actual)
-โฏassertTrue( [message], expected ) / assertFalse( [message],
expected )
-โฏassertNull( [message], expected ) / assertNotNull( [message],
expected)
-โฏfail( [message] )
27
- 106. Sample Practice
q๏ฑโฏ Account Class
-โฏ ๊ณ์ข ์๊ณ ์กฐํ
-โฏ ์
๊ธ/์ถ๊ธ
-โฏ ์์ ๋ณต๋ฆฌ ์ด์ (์ถ๊ฐ ๊ฐ๋ฐ)
28
- 150. ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ ํตํ
ํ์ง ํฅ์ ์ค์ฒดํ ์ฐ๊ตฌ
์ถ์ฒ : ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ ํตํ ํ์ง ํฅ์ ์ค์ฒดํ: ์
๊ณ ๊ฐ๋ฐํ ๋ค ํ๋ค์ ๋ํ ์ ์ฉ ๊ฒฐ๊ณผ์ ๊ฒฝ
ํ๋ค (Nachiappan Nagappan E. Michael Maximilien Thirumalesh Bhat Laurie
Williams)
32
- 160. ํผ์ ํ ๋ ๋ณด๋ค
Pair Programming ์ผ๋ก ํ ๋์
์
๋ฌด๊ฐ ๋ ์ฆ๊ฑฐ์ ์ต๋๊น?
์ถ์ฒ
Factors Affecting the Perceived Effectiveness of
Pair Programming in Higher Education
42
- 161. Comments
์ฐ๋ฆฌ๊ฐ ํ๋ฃจ์ ์ ๋ฐ ์ด์์ ์์ ๋ถ๋ โ์ผโ์ด ์ฌ๋ฐ์ด ์ง๋ค๊ณ ํ๋ค๋ฉด,
ํจ์จ์ ๋ ๋์ ๊ทธ๊ฒ๋งํผ ์ฆ๊ฑฐ์ธ ์ผ์ด ๋ ์์๊น์? ์ฆ๊ฒ๊ฒ ์ผํ๊ณ ์๊ธ๋ ๋์จ๋์!!
43
- 162. ํผ์ ํ ๋ ๋ณด๋ค
Pair Programming ์ผ๋ก ํ ๋์
๋ ๋ง์ด ๋ฐฐ์ ๋ค๊ณ ์๊ฐํฉ๋๊น?
44
- 168. Comments
๋ค๋น๊ฒ์ดํฐ ๋ค๋น๊ฒ์ดํฐ๋ ๊ฐ๋ฐ์ ๋ฐฉํฅ์ ์ฃผ๋ํ
๋ ์ฌ๋์
๋๋ค. ์์นญ โ๋ธ๋ ์ธโ์ ํด๋น
ํ๋ ์
์ด์ฃ . ๋๋ผ์ด๋ฒ๋ฅผ ์์ง์ด๋
์ธ๋ฌผ์ด๊ธฐ๋ ํ์ฃ . ๋๋๋ก ๋ด ๋ง ๊ฐ์ง
์์ ๋ต๋ตํ ๋ง์์ ์ด์ ๋๋ฅผ ๋บ๊ณ
์ถ์ ๋๊ฐ ์ข
์ข
์์ํ
์ง๋ง, ๊ทธ๋ฌ๋ฉด
์๋ฉ๋๋ค.
์ฌ์ ์ ๊ฐ์ด ํ๋ ๋๋ฃ๋ฅผ ์ธ๋ดํ๊ณ
์ ๋ขฐํด ์ฃผ์ธ์. ์กฐ๊ธ ๋์๊ฐ๋ฉด ์ด๋
์? ์๋ก๋ฅผ ์ดํดํ๊ณ ์๋ก์ด ๊ตํ์
๋ฐ์ ๋ค์ผ ์์ธ๊ฐ ๋์ด ์๋ค๋ฉด ์ฌ์
์ ์ฆ๊ฑฐ์ด ์ฌํ์ด ๋ ์ ์์ต๋๋ค.
๋๋ผ์ด๋ฒ
Comments
๋๋ผ์ด๋ฒ๋ ๋ค๋น๊ฒ์ดํฐ์ ์๊ฒฌ๋๋ก ๊ฐ๋ฐ์ ์งํํด ๋๊ฐ๋ ์ฌ
๋์
๋๋ค. ์๋ฐ์ ์ธ ์์ง๋ก ๊ฐ๋ฐ์ ์งํํ๋ค๊ธฐ ๋ณด๋ค๋ ์ต๋ํ
๋ค๋น๊ฒ์ดํฐ๋ฅผ ๋ฏฟ๊ณ ๋ฐ๋ผ ์ค๋๋ค. ๋ฌผ๋ก ์์ ์ ๊ฒฝํ๊ณผ ์คํฌ์
๊ธฐ๋ฐ์ผ๋ก ๋์์์ด ๋ค๋น๊ฒ์ดํฐ์ ๋ํํ๊ณ ์ง๋ฌธํ๊ณ ์๋๋ฅผ
ํ์
ํด ๋๊ฐ๋๋ค.
50
- 169. - ๋ช
์์ ์ธ ์ญํ ์ ํ
- ์ค๋ ํ ์ญํ ์ ํ์ง ์์ ๊ฒ!
- ๋ ๋ค ํธ์ํ ์์ธ๋ฅผ ์ก์ ๊ฒ!
- 171. ํจ์จ ๋์๋ ๊ฒฝ์ฐ
- ํ๋ก์ ํธ ์ด๋ฐ
- ์ฐฝ์์ฑ์ด ์ํ๊ฑฐ๋ ์ด๋ ค์ด ์
๋ฌด
- ์ ์
ํ์์ ์ ์ ์ํฌ๋
- 181. TDD ์์ฑ ๊ธฐ๋ณธ ์์น
- ์คํจํ๋ ํ
์คํธ๋ฅผ ์์ฑํ๊ธฐ ์ ์๋ ์ ๋๋ก
์ ํ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๋๋ค.
- ์คํจํ๋ ํ
์คํธ ์ฝ๋๋ฅผ ํ ๋ฒ์ ํ๋
์ด์ ๋ง๋ค์ง ์๋๋ค.
- ํ์ฌ ์คํจํ๊ณ ์๋ ํ
์คํธ๋ฅผ ํต๊ณผํ๊ธฐ์
์ถฉ๋ถํ ์ ๋๋ฅผ ๋์ด์๋ ์ฝ๋๋ ์์ฑํ์ง ์๋๋ค.
63
- 187. ์ํ๊ธฐ ์๋ ๊ณ์ฐ
- ์ต์ ๊ฐ์์ ๋์ ์ผ๋ก ์๋์ ๋๋ ค์ค๋ค.
์) 1000์ ๋ฃ๊ณ 650์์ง๋ฆฌ ์๋ฃ๋ฅผ ์ ํํ๋ค๋ฉด,
์๋์ 100, 100, 100, 50 ์์ผ๋ก ๋ฐํํ๋ค.
-โฏ ์งํ๋ฅผ ์๋์ผ๋ก ๋ฐํํ๋ ๊ฒฝ์ฐ๋
์๋ค๊ณ ๊ฐ์ ํ๋ค.
69
- 189. Mock Object
๋ชจ์ ๊ฐ์ฒด(Mock Object)
- ์์กด์ฑ์ ๋ถ๋ฆฌํ๊ธฐ ์ํด์
๋ง๋๋ ๊ฐ์ง ๊ฐ์ฒด
71
- 190. Mock Object
๋ชจ์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
- ํ
์คํธ ์์ฑ์ ์ํ ํ๊ฒฝ ๊ตฌ์ถ์ด ์ด๋ ค์์
- ํ
์คํธ๊ฐ ํน์ ๊ฒฝ์ฐ๋ ์๊ฐ์ ์์กด์ ์ด๋ผ
- ํ
์คํธ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ค์
72
- 196. ํ
์คํธ ๋๋ธ - Mock
๊ฐ์ฒด์ ๋ด๋ถ ์ํ๋ฟ ์๋๋ผ ๋์๊น์ง๋
๊ฐ์ํ ์ ์๊ฒ ๋ง๋ ๊ฐ์ฒด
78
- 198. Mockito
CreateMock
์ธํฐํ์ด์ค์ ํด๋นํ๋ Mock ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค.
Stub
ํ
์คํธ์ ํ์ํ Mock ๊ฐ์ฒด์ ๋์์ ์ง์ ํ๋ค
(๋จ, ํ์ ์์๋ง).
Exercise
ํ
์คํธ ๋ฉ์๋ ๋ด์์ Mock ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค.
Verify
๋ฉ์๋๊ฐ ์์๋๋ก ํธ์ถ๋๋์ง ๊ฒ์ฆํ๋ค.
80
- 202. ์ค์ต โ ๋ชจ๋ฐ์ผ ๊ตํต์นด๋
-โฏ ์ฅ๋น : ํธ๋ํฐ, ๋จ๋ง๊ธฐ
-โฏ GPS ๋ฐ JVM ํ์ฌ๋์ด ์์
-โฏ ๋คํธ์ํฌ ํต์ ์ ๊ณ ๋ คํ์ง ์์
84
- 204. ์ถ๊ฐ์๊ธ - ๋ชจ๋ฐ์ผ ๊ตํต์นด๋
๋ฒ์ค
๊ธฐ๋ณธ์๊ธ ์ด์ธ์ ์ถ๊ฐ์๊ธ ์์
์งํ์ฒ
10km์ด๊ณผ ~40km๊น์ง : 5km ๋ง๋ค 100์
40km์ด๊ณผ์ : 10km ๋ง๋ค 100์
* ๋จ, ํ์น์ ๊ณ ๋ คํ์ง ์๋๋ค.
86
- 206. ๊ฐ๋ฐ๋ชฉํ
โฏ No1. ์ต๋ํ ๋น ๋ฅธ ์๊ฐ ๋ด์
โฏ No2. ๊ฐ๊ธ์ ์ ํํ
โฏ No3. ํ์ฅ์ ๊ณ ๋ ค?
88