์ ํ์ํ ๊น?
- V-Diagram
- ์ ๋จ๊ณ์ ์ธ ํ ์คํธ๊ฐ ํ์ํ ๊น?
- ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋, ์๊ฐ, ์์ฌ์ํต ๋ฑ์ ๋น์ฉ์ ์ค์ด๊ธฐ ์ํจ
- ์๊ตฌ์ฌํญ ๋ง์กฑํจ์ ์ฆ๋ช ํ๋ ๊ฒ
์ด๋ค ์ข ๋ฅ๊ฐ ์์๊น?
๋จ์ ํ ์คํธ
- ํ ์คํธ๊ฐ ๊ฐ๋ฅํ ์ต์ ๋จ์๋ก ๋๋์ด์ง ๋ชจ๋, ํ๋ก๊ทธ๋จ, ๊ฐ์ฒด, ํด๋์ค ๋ด์์ ๊ฒฐํจ์ ์ฐพ๊ณ ๊ธฐ๋ฅ์ ๊ฒ์ฆ
- ๋ ๋ฆฝ์ ์ผ๋ก ์ํ๋จ
- ํ๋ก๊ทธ๋๋จธ๊ฐ ์ฃผ๋ํจ
- ์ฝ๋๋ฅผ ์ค์ฌ์ผ๋ก ์ํ
- ์ด๋ฌํ ๊ตฌ๋ถ์, ์ด๋ค Task๋์ ๋ฐ๋ผ ๊ตฌ๋ถ์ด ๋ฌ๋ผ์ง๋ค.
- ๊ฐ์ฅ ์ง์คํด์ผ ํ๋ ํ ์คํธ
ํตํฉ ํ ์คํธ
- ๋ชจ๋๊ฐ ์ธํฐํ์ด์ค ํ ์คํธ
- ๋ค๋ฅธ ๋ชจ๋๊ณผ ์ํธ์์ฉ ํ ์คํธ
- ๊ธฐ๋ฅ์ ํน์ฑ: ์ ๋๋ก ๋ ๊ธฐ๋ฅ์ ์ํํ๋๊ฐ
- ๋น๊ธฐ๋ฅ์ ํน์ฑ: ์ฑ๋ฅ, ๋ถํ, ์คํธ๋ ์ค ๋ฑ์ ํ ์คํธ
์์คํ ํ ์คํธ
- ์ ์ฒด ์์คํ , ์ ํ์ ๋์ ํ ์คํธ
- ์ค๊ฒ ์ต์ข
์ฌ์ฉ ํ๊ฒฝ ๋๋ ์ ์ฌํ ํ๊ฒฝ์์ ์ํ
- ํ๊ฒฝ ํน์ ์ฅ์ ๋ฆฌ์คํฌ๋ฅผ ์ต์ํ ํ๊ธฐ ์ํด
- ๊ธฐ๋ฅ, ๋น๊ธฐ๋ฅ ์์ ์ฌํญ์ ๋ชจ๋ ๊ฒ์ฆ
- ๋ ๋ฆฝ์ ์ธ ํ ์คํธ ํ์ด ์ฃผ๋ (QAํ)
์ธ์ ํ ์คํธ
- ์ค์ ์ฌ์ฉํ ๋งํ ์ค๋น๊ฐ ๋์ด ์๋์ง ํ๊ฐ
- ๊ฒฐํจ์ ์ฐพ๋ ๊ฒ์ด ์ฃผ๋ ๊ด์ฌ์ฌ๊ฐ ์๋
- ์ฌ์ฉ์๊ฐ ์ ๋ดํ์ฌ ์ํํจ
- ๊ฒฐํจ์ ๋ฐ๊ฒฌํ๋ ๊ฒ์ด ์๋๊ณ ๋ฐ๊ฒฌ๋๋ ๊ฒ
- ์ํ/๋ฒ ํ ํ ์คํธ๊ฐ ์ด์ ์ํจ
- ์ํ ํ
์คํธ
- ์ฌ๋ด ์ดํด ๋น์ฌ์์๊ฒ
- ๋ฒ ํ ํ
์คํธ
- ์ฌ์ธ ์ฌ์ฉ์์๊ฒ
FIRST: ์ข์ ๋จ์ ํ ์คํธ๋ ๋ฌด์์ธ๊ฐ?
Fast
- ์คํ์ด ๋๋ฆฐ ๋จ์ ํ
์คํธ
- ์ธ๋ถ ์์ ์ ๊ทผ ์ฝ๋๋ฅผ ์คํํจ
- ์ธ๋ถ ์์: ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ์ผ, ๋คํธ์ํฌ
- ์์ญ~์์ฒ ms
- ์ธ๋ถ ์์ ์ ๊ทผ ์ฝ๋๋ฅผ ์คํํจ
- ์คํ์ด ๋น ๋ฅธ ๋จ์ ํ
์คํธ
- ํ๋ก๋์ ์ฝ๋๋ง ์คํ
- ์ ms
- ํ ์คํธ ์ฝ๋ ๊ฐ์์ ๋ฐ๋ผ ์ ์ฐจ์ด๋ ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋จ
- ์ค์ ์ธ๋ถ ์์ IO๋ฅผ ํ๋ ์ฝ๋์, ํ๊ฐ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํด๋๋ค๋ฉด mock ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ๊ฐ ๊ฐ๋ฅ
- ๋ง์ฝ ํ๋ก๋์ ์ฝ๋์ ์ด๋ฌํ ๋ถ๋ฆฌ ์์ ์ด ์ด๋ฃจ์ด์ง์ง ์์ ๊ฒฝ์ฐ ๋ถ๋ฆฌํ๋ ๊ฒ์ด ์ข์ ์ต๊ด์
- ์ธ๋ถ์์ ์์กด์ฑ์ ์ค์ด๋ ๋ฐฉ๋ฒ
- Stub: ํ๋ ์ฝ๋ฉํ ๊ฐ์ ๋ฐํํ๋ ๊ตฌํ์ฒด
- Mock: ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ง๋ฆ
Isolated/Independent
- ์ ๊ทผ์ฑ, ๊ฐ์ฉ์ฑ ์ด์
- ํน์ ํ ์คํธ ์ฝ๋๊ฐ Database์ ์ ๊ทผ
- ๊ทธ๋ฐ๋ฐ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋ฌธ์ ๋ฐ์
- ํ ์คํธ ์ผ์ด์ค ์คํจ
- ์ด๋ฐ ๊ฒฝ์ฐ๋ฅผ ์ ๊ทผ์ฑ(accessibility), ๊ฐ์ฉ์ฑ(availibility) ์ด์๋ผ ํจ
- ์ด๋ ๊ฒ ๋๋ฉด, ๋ณดํต์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ผ๋ฏ๋ก ์ฝ๋ ๋ฌธ์ ๋ผ ํ๋จํ๊ธฐ ์ฝ๊ณ , ๊ฒฐ๊ตญ ๋ฌธ์ ํ์์ ์๊ฐ์ด ์์๋๊ฒ ๋๋ค.
- ๋ฐ์ดํฐ ์์กด์ ์ธ ๊ฒฝ์ฐ
- DB์ ์๋ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์คํธ ์ฝ๋๋ฅผ ์งฐ๊ธฐ ๋๋ฌธ์, ์ ๊ทผํ๋ ์คํ ์ฃผ์ฒด๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ํ๋ ํ ์คํธ๋ฅผ ์ํํ ์ ์๊ฒ ๋๋ค.
- ๊ณ ๋ฆฝ๋์ด ์์ง ์๊ณ , ๊ฐ์ ์์กด์ ์ธ ์ํฉ์ด๋ค.
- ์์ ์์กด์ฑ ์กด์ฌ
- TC C๋ฅผ ์ํํ๊ธฐ ์ํด์๋ TC A, B๊ฐ ์ ํ๋์ด์ผ ํ๋ค.
- ์ด๋ด ๊ฒฝ์ฐ ์คํจ์ ๋จ์ ํ ์คํธ ์ฒด์ธ์ ๋ถ์ํด์ผ ํจ
- ๋, ์์ TC๊ฐ ํต๊ณผํ์ง ๋ชปํ์ฌ ์ํ๋ TC C๋ฅผ ์ํํ์ง ๋ชปํ๋ค.
Repeatable
- ์คํํ ๋๋ง๋ค ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํจ
- ํต์ ํ ์ ์๋ ์ธ๋ถ ์์๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํ์ง ๋ชปํ ์ ์๋ค.
- ์ฐ๋ฐ์ ์ผ๋ก ์คํจํ๋ ํ ์คํธ๋ ๋ถํ์ํ ๋น์ฉ์ ๋ฐ์์ํด
Self-Validating
- ์ค์ค๋ก ๊ฒ์ฆ ๊ฐ๋ฅํด์ผ ํ๋ค.
- ์ฝ์์ ์ฐ๋ ํ์ X: ํ๋จํ๋ฌ ๋ก๊ทธ๋ฅผ ๋ณด์์ผ ํจ
- Assert: ์ค์ค๋ก ๊ฒ์ฆ ๊ฐ๋ฅ
- ํจ๊ณผ
- ์คํ ์๋ํ
- ์ง์์ ํตํฉ
- Jenkins, TeamCity
Thorough/Timely
- ์ ์ ํ?
- ์๊ตฌ์ฌํญ์ด ๋ณ๊ฒฝ์ด ๋น๋ฒํ ๊ฐ๋ฐ ์ด๊ธฐ ๋จ๊ณ
- ์ค๋ ๋ฐฉ์น๋ ํ์ง๋ง ๋ฌธ์ ์๋ ๋ ๊ฑฐ์ ์ฝ๋
- ํ๋ก๋์ ์ฝ๋ ๊ตฌํ ์ ํ
- develop ๋ธ๋์น์ ํตํฉํ๊ธฐ ์
- ๋ฐฐํฌํ๊ธฐ ์
- ์ด๋ฌํ ์ํฉ์์ ๋์ ์ ์ฌ์ค ๊ณ ๋ฏผ์ด ํ์ํ๋ค.
Right-BICEP
Right
- ๊ธฐ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฆํ๋ค.
- ํดํผ ์๋๋ฆฌ์ค ํ
์คํธ
- ์ฝ๋๊ฐ ์ ์์ ์ผ๋ก ๋์ํ๋ค๋ฉด, ๊ทธ๊ฒ์ ์ ์ ์์๊น?
- ์ด๋ฅผ ์์ฑํ ์ ์๋ค๋ ๊ฒ์ ๊ณง ์๊ตฌ์ฌํญ, ์๋๋ฆฌ์ค, ํ๋ก๋์ ์ฝ๋๋ฅผ ์ถฉ๋ถํ ์ดํดํ ์ํ๋ผ๋ ๊ฒ์ ๋งํจ
Boundary condition
-
๊ฒฝ๊ณ ์กฐ๊ฑด์ ํ ์คํธ ํ๋ค.
-
๊ฒฝ๊ณ์กฐ๊ฑด์ ์์
-
๋ชจํธํ๊ณ ์ผ๊ด์ฑ ์๋ ์ ๋ ฅ๊ฐ
-
์๋ชป๋ ์์์ ๋ฐ์ดํฐ
-
์์น์ ์ค๋ฒํ๋ก์ฐ๋ฅผ ์ผ์ผํค๋ ์ฐ์ฐ
-
๋น๊ฑฐ๋ ๋น ์ง ๊ฐ
-
์ด์ฑ์ ์ธ ๊ธฐ๋ ๊ฐ์ ํจ์ฌ ๋ฒ์ด๋๋ ๊ฐ
- ๋์ด (150์ด?)
-
์ค๋ณต ํ์ฉ์ด ์๋๋ ๋ชฉ๋ก์ ์ค๋ณต ๊ฐ์ด ์กด์ฌ
-
์ ๋ ฌ์ด ์๋ ์ ๋ ฌ ๋ฆฌ์คํธ, ํน์ ์ ๋ ฌ๋ ๋ฆฌ์คํธ
-
์๊ฐ ์์ด ๋ง์ง ์๋ ๊ฒฝ์ฐ
CORRECT (๊ฒฝ๊ณ์กฐ๊ฑด)
-
Conformance (์์ ์ค์)
-
Ordering (์ ๋ ฌ ์์)
-
Range (๋ฒ์)
-
Reference (์ฐธ์กฐ)
-
Existence (์กด์ฌ)
-
Cardinality (๊ธฐ์)
-
Time (์์)
Inverse relationship
- ๋ ผ๋ฆฌ์ ์ธ ์ญ๊ด๊ณ๋ฅผ ํ์ฉํ์ฌ ํ ์คํธ ํ๋ค.
- ์ํ์ ์ธ ๊ณ์ฐ ๋ก์ง ํ
์คํธ์ ์ข
์ข
์ฌ์ฉ๋จ
- ์ ๊ณฑ๊ทผ: ๊ฒฐ๊ณผ๋ฅผ ๋๋ฒ ๊ณฑํด์ ํด๋น ๊ฐ์ด ๋์ค๋์ง ํ ์คํธ ํ๋ค.
Cross-check result
- ๋ค๋ฅธ ์๋จ์ ํ์ฉํ์ฌ ๊ต์ฐจ ํ ์คํธ ํ๋ค.
- ์ ๊ณฑ๊ทผ ํจ์๊ฐ ์๋ค๋ฉด, ๋ค๋ฅธ ์ ๊ณฑ๊ทผ ํจ์์ ๋น๊ต๋ฅผ ํด์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ค.
- ์ฌ๊ตฌ์ฑํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ๋ฆฌํฉํ ๋ง ์ด์ vs ์ดํ
- ์ดํฉ ํ์ธ
Error condition
- ์ค๋ฅ ์กฐ๊ฑดํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋์ง ํ ์คํธ ํ๋ค.
- ์ธํดํผ ์๋๋ฆฌ์ค
- ํ๊ฒฝ์ ์ธ ์ ์ฝ
- ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ๋ ์ฐฐ ๋
- ๋์คํฌ ๊ณต๊ฐ์ด ๊ฐ๋ ์ฐฐ ๋
- ๋ฒฝ์๊ณ ์๊ฐ์ ๊ดํ ๋ฌธ์ ๋ค
- ๋คํธ์ํฌ ๊ฐ์ฉ์ฑ ๋ฐ ์ค๋ฅ๋ค
- ์์คํ ๋ก๋
- ์ ํ๋ ์์ ํ๋ ํธ
- ๋งค์ฐ ๋๊ฑฐ๋ ๋ฎ์ ๋น๋์ค ํด์๋
- ํ๊ฒฝ์ ์ธ ์ ์ฝ
Performance
- ์ฑ๋ฅ ์กฐ๊ฑด์ ํ ์คํธ ํ๋ค.
- ๋จ์ ํ
์คํธ๋ก ๊ตฌ๊ฐ๋ณ ๊ฒฝ๊ณผ์๊ฐ์ ์ธก์ ํ์ฌ ์ง๋จ
- ๋ณ๋ชฉ ์ง์ ์ถ์ธก์ด ์ด๋ ต๊ธฐ ๋๋ฌธ
- ์ฑ๋ฅ ์ต์ ํ ์ด์ ์ฝ๋ vs ์ต์ ํ ์ดํ ์ฝ๋
- old vs new
- ๊ฐ๊ฐ์ ํจ์ ๋ฆฌํด ์ฌ์ด ํธ์ถ ์๊ฐ ๋น๊ต