๋๋ณด๊ธฐ
์ฑ
์์ฒด์์ A, B ์ด๋ฐ ์์ผ๋ก ์ถ์ ์ ๋๋ฅผ ํ์ํ๊ณ , ์ถ์ ๋ ๋
๋ ์๋ ๋์จ๋ค. ํ์๋ ๋๋ก ํ ๋ฒ ์ด์ ์ถ์ ๋ ํ์ ๋ฐฐ๊ฒฝ, ๋ ๋ฒ์ด์ ๋ฐ ์ง์ ์ถ์ ๋ฅผ ํ์ธํ ๊ฒฝ์ฐ, ๋
ธ๋ ๋ฐฐ๊ฒฝ์ผ๋ก ํ์ํ ์์ ์ด๋ค. ๋ํ ํค์๋ ์์ฃผ๋ก ์ต๋ํ ๊ธฐ์ตํ๊ธฐ ์ฝ๊ฒ ๊ธฐ๋กํ ์์ ์ด๋ค. ๊ทธ๋์ ์ดํดํ๊ธฐ ํ๋ค ์๋์์ง๋ง ์ต๋ํ ์ฝ๊ฒ ์จ๋ณผ ์์ ์ด๋ค...
์ ํ๋ฆฌ์ผ์ด์
ํ
์คํธ์ ๊ธฐ๋ณธ์๋ฆฌ
- ํ๋ ํ ๋ฒ์น Pareto Principle
์ฑ 20% ์ฝ๋์์ ์ ์ฒด ๊ฒฐํจ์ 80%์ด ๋ฐ๊ฒฌ ๋๋ค.
- ์ด์ถฉ์ ํจ๋ฌ๋
์ค Pesticide Paradox
๋์ผ ํ
์คํธ ์ผ์ด์ค๋ก ๋ฐ๋ณตํ๋ฉด ๊ฒฐํจ์ด ๋ฐ๋ณต๋์ง ์๋ ํ์
- ์ค๋ฅ-๋ถ์ฌ์ ๊ถค๋ณ Absence of Eroors Fallacy
๊ฒฐํจ ๋ชจ๋ ์ ๊ฑฐํด๋ ์ฌ์ฉ์ ์๊ตฌ์ฌํญ ๋ชจ๋ ๋ง์กฑ ๋ชปํ๋ฉด ํ์ง์ด ๋๋ค ๋งํ ์ ์์.
ํ๋ก๊ทธ๋จ ์คํ ์ฌ๋ถ์ ๋ฐ๋ฅธ ํ
์คํธ
- ์ ์ ํ
์คํธ
๋ช
์ธ์, ์์ค ์ฝ๋๋ฅผ ๋์์ผ๋ก ๋ถ์.
์ํฌ์ค๋ฃจ, ์ธ์คํ์
, ์ฝ๋ ๊ฒ์ฌ
- ๋์ ํ
์คํธ
์คํํ์ฌ ์ค๋ฅ๋ฅผ ์ฐพ๋ ํ
์คํธ. ๋ชจ๋ ๋จ๊ณ์์ ํ
์คํธ
- ๋ธ๋๋ฐ์ค ํ
์คํธ
- ํ์ดํธ๋ฐ์ค ํ
์คํธ
ํ์ดํธ๋ฐ์ค ํ
์คํธ
์ข
๋ฅ
- ๊ธฐ์ด ๊ฒฝ๋ก ๊ฒ์ฌ Base Path Testing (๋ํ)
ํ
์คํธ ์ผ์ด์ค ์ค๊ณ์๊ฐ ์ ์ฐจ์ ์ค๊ณ ๋
ผ๋ฆฌ์ ๋ณต์ก์ฑ์ ์ธก์ ํ ์ ์๊ฒ ํด์ฃผ๋ ํ
์คํธ ๊ธฐ๋ฒ
- ์ ์ด ๊ตฌ์กฐ ๊ฒ์ฌ Control Structure Testing
- ์กฐ๊ฑด ๊ฒ์ฌ - ๋
ผ๋ฆฌ์ ์กฐ๊ฑด ํ
์คํธ
- ๋ฃจํ ๊ฒ์ฌ - ๋ฐ๋ณต๊ตฌ์กฐ์ ์ด์
- ๋ฐ์ดํฐ ํ๋ฆ ๊ฒ์ฌ - ๋ณ์์ ์ ์์ ์์น์ ์ด์
๊ฒ์ฆ ๊ธฐ์ค
- ๋ฌธ์ฅ ๊ฒ์ฆ ๊ธฐ์ค Statement Coverage : ๋ชจ๋ ๊ตฌ๋ฌธ ํ ๋ฒ ์ด์ ์ํ๋๋๋ก
- ๋ถ๊ธฐ ๊ฒ์ฆ ๊ธฐ์ค Branch Coverage : ๋ชจ๋ ์กฐ๊ฑด๋ฌธ ์กฐ๊ฑด์ True or False, ๊ฒฐ์ ๊ฒ์ฆ ๊ธฐ์ค Decision Coverage
- ์กฐ๊ฑด ๊ฒ์ฆ ๊ธฐ์ค Condition Coverage : ์กฐ๊ฑด๋ฌธ ๊ฐ๋ณ ์กฐ๊ฑด์ ๊ฒฐ๊ณผ๊ฐ True or False
- ๋ถ๊ธฐ ์กฐ๊ฑด ๊ธฐ์ค Branch/Condition Coverage : ๋ถ๊ธฐ, ์กฐ๊ฑด ๋๋ค ๋ง์กฑ True or False ๋ฐ๋ผ ์
๋ ฅ๋ฐ์ดํฐ ๊ตฌ๋ถ
๋ธ๋๋ฐ์ค ํ
์คํธ
๊ฐ ๊ธฐ๋ฅ์ด ์์ ํ ์๋๋๋ ๊ฒ์ ์
์ฆํ๋ ํ
์คํธ, == ๊ธฐ๋ฅ ํ
์คํธ
์๊ตฌ์ฌํญ ๋ช
์ธ์๋ฅผ ๋ณด๋ฉด์ ํ
์คํธ
๊ตฌํ๋ ๊ธฐ๋ฅ์ ํ
์คํธ, SW interface๋ฅผ ํตํด ์ค์
์ข
๋ฅ
- ๋์น ๋ถํ ๊ฒ์ฌ Equivalence Partitioning Testing
์กฐ๊ฑด์ ๋ง๋ ์
๋ ฅ ์๋ฃ, ์๋ง๋ ์๋ฃ ๊ฐ์ ๊ท ๋ฑ ํ
์คํธ ์ผ์ด์ค / ๋๋ฑ ๋ถํ ๊ธฐ๋ฒ or ๋์น ํด๋์ค ๋ถํด
- ๊ฒฝ๊ณ๊ฐ ๋ถ์ Boundary Value Analysis
๊ฒฝ๊ณ๊ฐ์์ ์ค๋ฅ๊ฐ ๋ฐ์๋ ํ๋ฅ ๋๋ค๋ ์ ์ ์ด์ฉ, ์
๋ ฅ ์กฐ๊ฑด์ ๊ฒฝ๊ณ๊ฐ์ ํ
์คํธ ์ผ์ด์ค ์ ์
- ์์ธ-ํจ๊ณผ ๊ทธ๋ํ ๊ฒ์ฌ Cause-Effect Graphing Testing
์
๋ ฅ ๋ฐ์ดํฐ ๊ด๊ณ์ ์ถ๋ ฅ์ ์ํญ์ ๋ฏธ์น๋ ์ํฉ์ ๋ถ์, ํจ์ฉ์ฑ ๋์ ํ
์ดํธ ์ผ์ด์ค ์ ์
- ์ค๋ฅ ์์ธก ๊ฒ์ฌ Error Guessing
๊ณผ๊ฑฐ์ ๊ฒฝํ, ๊ฐ๊ฐ์ผ๋ก ํ
์คํธ
- ๋น๊ต ๊ฒ์ฌ Comparison Testing
์ฌ๋ฌ ๋ฒ์ ํ๋ก๊ทธ๋จ์ ๋์ผ ํ
์คํธ ์๋ฃ ์ ๊ณต, ๋์ผ ๊ฒฐ๊ณผ ์ถ๋ ฅ๋๋์ง ํ
์คํธ
(์์ ๋ฌธ์ )
๋๋ณด๊ธฐ
A ์ ํ๋ฆฌ์ผ์ด์
์์ ํ๊ฐ์ ์์ ๋ฐ๋ฅธ ์ฑ์ ๋ถ์ฌ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๋, ๋์น ๋ถํ ๊ฒ์ฌ์ ๊ฒฝ๊ณ๊ฐ ๋ถ์์ ํ
์คํธ ์ผ์ด์ค๋ฅผ ํ์ธํ์์ค.
- ๋์น ๋ถํ ๊ฒ์ฌ๋ ์
๋ ฅ ์๋ฃ์ ์ด์ ์ ๋ง์ถฐ ๋ง๊ฒ ์ถ๋ ฅ๋๋์ง ํ์ธ
- ๊ฒฝ๊ณ๊ฐ ๋ถ์ -1 -> ์ค๋ฅ, 69->D, 89->B, 101 -> ์ค๋ฅ ...
๊ฐ๋ฐ ๋จ๊ณ์ ๋ฐ๋ฅธ ์ ํ๋ฆฌ์ผ์ด์
ํ
์คํธ
์ ํ๋ฆฌ์ผ์ด์
ํ
์คํธ์ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋จ๊ณ ์ฐ๊ฒฐํ์ฌ ํํ -> V-๋ชจ๋ธ
๋จ์ ํ
์คํธ Unit Test
์ฝ๋ฉ ์งํ ๋ชจ๋์ด๋ ์ปดํฌ๋ํธ์ ์ด์ ์ ๋ง์ถฐ ํ
์คํธ
์ธํฐํ์ด์ค, ์ธ๋ถ์ I/O, ์๋ฃ ๊ตฌ์กฐ, ๋
๋ฆฝ์ ๊ธฐ์ด ๊ฒฝ๋ก, ์ค๋ฅ ์ฒ๋ฆฌ ๊ฒฝ๋ก, ๊ฒฝ๊ณ ์กฐ๊ฑด
์๊ตฌ์ฌํญ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ธฐ๋ฅ์ฑ ํ
์คํธ
๊ตฌ์กฐ ๊ธฐ๋ฐ / ๋ช
์ธ ๊ธฐ๋ฐ ํ
์คํธ ๋๋์ง๋ง ์ฃผ๋ก ๊ตฌ์กฐ
ํตํฉ ํ
์คํธ Integration Test
๋จ์ ํ
์คํธ๊ฐ ์๋ฃ๋ ๋ชจ๋ ๊ฒฐํฉ, ํ๋์ ์์คํ
์ผ๋ก ์์ฑ์ํค๋ ๊ณผ์ ์์์ ํ
์คํธ. ๋ชจ๋ ๊ฐ ์ํธ ์์ฉ ์ค๋ฅ
- ๋น์ ์ง์ ํตํฉ ๋ฐฉ์
๋ชจ๋ ๋ฏธ๋ฆฌ ๊ฒฐํฉ๋์ด ์๋ ์ ์ฒด ํ
์คํธ. ๋น
๋ฑ
ํตํฉ ํ
์คํธ ๋ฐฉ์
- ์ ์ง์ ํตํฉ ๋ฐฉ์
๋ชจ๋ ๋จ์๋ก ๋จ๊ณ์ ์ผ๋ก ํตํฉํ๋ฉด์ ํ
์คํธ.
- ํํฅ์ ํตํฉ ํ
์คํธ Top Down Integration Test
์์์์ ํ์ ๋ชจ๋ ๋ฐฉํฅ์ผ๋ก ํตํฉํ๋ฉด์ ํ
์คํธ
1. ์ฃผ์ ์ ์ด ๋ชจ๋ Stub์ผ๋ก ๋์ฒด (์ํ์ฉ ๋ชจ๋)
2. ๊น์ด ์ฐ์ or ๋์ด ์ฐ์ ๋ฐฉ์ ๋ฐ๋ผ Stub๋ค์ด ์ค์ ๋ชจ๋๋ก ๊ต์ฒด
3. ํตํฉ๋ ๋๋ง๋ค ํ
์คํธ
4. ํ๊ท ํ
์คํธ Regression Test ์ค์ (์๋ก์ด ์ค๋ฅ์๋์ง ํ์ธ. ์ด๋ฏธ ํ
์คํธ ๋๊ฑฐ ๋ฐ๋ณต. ๋ณ๊ฒฝํ๊ฑฐ ๋ฌธ์ ์๋์ง)
- ์ํฅ์ ํตํฉ ํ
์คํธ Bottom Up Integration Test
ํ์์์ ์์ ๋ชจ๋๋ก ํตํฉํ๋ฉด์ ํ
์คํธ
1. ํ์ ๋ชจ๋ Cluster๋ก ๊ฒฐํฉ
2. ์์์์ ๋ฐ์ดํฐ ์
์ถ๋ ฅ ํ์ธ ์ํด ๋๋ฏธ ๋ชจ๋์ธ Driver ์์ฑ (ํ์ ๋ชจ๋ ํธ์ถ, ํ๋ผ๋ฏธํฐ ์ ๋ฌ, ์ํ ํ ๊ฒฐ๊ณผ ๋์ถ)
3. ํด๋ฌ์คํฐ ๋จ์๋ก ํ
์คํธ
4. ํด๋ฌ์คํฐ๋ ์์ ๊ฐ์ ๊ฒฐํฉ, ๋๋ผ์ด๋ฒ๋ ์ค์ ๋ชจ๋ ๋์ฒด
- ํผํฉ์ ํตํฉ ํ
์คํธ
์ธ์ ํ
์คํธ Acceptance Test
์ฌ์ฉ์์ ์๊ตฌ์ฌํญ์ ์ด์กฑํ๋์ง ์ค์ ์ ๋๊ณ ํ
์คํธ
- ์ํ ํ
์คํธ : ๊ฐ๋ฐ์ ์์์ ํํ๋. ํต์ ๋ ํ๊ฒฝ์์ ์ฌ์ฉ์์ ๊ฐ๋ฐ์ ํจ๊ป ํ์ธ, ๊ธฐ๋ก
- ๋ฒ ํ ํ
์คํธ : ์ต์ข
์ฌ์ฉ์๊ฐ ์ฌ๋ฌ ๋ช
์ฌ์ฉ์ ์์์ ํํ๋. ์ค์
๋ฌด๋ฅผ ๊ฐ์ง๊ณ ์ฌ์ฉ์ ์ง์
ํ
์คํธ ์ค๋ผํด Test Oracle
ํ
์คํธ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ๋จ ์ํด ์ฌ์ ์ ์๋ ์ฐธ๊ฐ์ ๋์
ํ์ฌ ๋น๊ตํ๋ ๊ธฐ๋ฒ.
์ ํ๋ ๊ฒ์ฆ, ์ํ์ ๊ธฐ๋ฒ, ์๋ํ ๊ธฐ๋ฅ
์ข
๋ฅ
- ์ฐธ ์ค๋ผํด True : ๋ชจ๋ ํ
์คํธ ์ผ์ด์ค ์
๋ ฅ ๊ฐ์ ๋ํด, ๋ชจ๋ ์ค๋ฅ ๊ฒ์ถ
- ์ํ๋ง ์ค๋ผํด Sampling : ํน์ ๊ฐ๋ค์ ๋ํด์๋ง ๊ธฐ๋ํ๋ ๊ฒฐ๊ณผ. ์ ์ ํ
์คํธ ๋ถ๊ฐํ ๊ฒฝ์ฐ ์ฌ์ฉ
- ์ถ์ ์ค๋ผํด Heuristic : ํน์ ์
๋ ฅ ๊ฒฐ๊ณผ ์ ๊ณต, ๋๋จธ์ง๋ ์ถ์
- ์ผ๊ด์ฑ ๊ฒ์ฌ ์ค๋ผํด Consistent : ๋ณ๊ฒฝ ์๊ฒผ์ ๋, ์ํ ์ ๊ณผ ํ ๋์ผํ์ง ํ์ธ
์ ํ๋ฆฌ์ผ์ด์
์ฑ๋ฅ ์ธก์ ์งํ
- ์ฒ๋ฆฌ๋ Throughput : ์ผ์ ์๊ฐ ๋ด ์ ํ๋ฆฌ์ผ์ด์
์ด ์ฒ๋ฆฌํ๋ ์
- ์๋ต ์๊ฐ Response Time : ์์ฒญ ์ ๋ฌ, ์๋ต ๋์ฐฉํ ๋๊น์ง ๊ฑธ๋ฆฐ ์๊ฐ
- ๊ฒฝ๊ณผ ์๊ฐ Trun Around Time : ์ ํ๋ฆฌ์ผ์ด์
์์
์๋ขฐ ์๊ฐ - ์ฒ๋ฆฌ ์๋ฃ ๋ ๋ ๊น์ง ๊ฑธ๋ฆฐ ์๊ฐ
- ์์ ์ฌ์ฉ๋ฅ Resource Usage : ์์
์ฒ๋ฆฌํ๋ ๋์ CPU, ๋ฉ๋ชจ๋ฆฌ, ๋คํธ์ํฌ ๋ฑ ์ฌ์ฉ๋
๋น
์ค ํ๊ธฐ๋ฒ์ผ๋ก ํํํ ์ต์
์ ์๊ฐ ๋ณต์ก๋
O(1) |
n ๊ด๊ณ ์ |
์คํ์ push, pop |
O(log_2 n) |
n ๋๋ ์กฐ๊ฑด์ ์ํด ๊ฐ์ |
Binary Tree, Binary Search |
O(n) |
n๊ณผ 1:1์ ๊ด๊ณ |
for |
O(nlog_2 n) |
ํ์ํ ๋จ๊ณ๊ฐ nlog_2 n ๋งํผ ์ํ |
Heap Sort, 2-way Merge Sort |
O(n^2) |
n์ ์ ๊ณฑ๋งํผ ์ํ |
Insertion Sort, Shell Sort, Selection Sort, Bubble Sort, Quick Sort |
O(2^n) |
2์ n์ ๊ณฑ ๋งํผ |
Fibonacci Sequence |
์ํ ๋ณต์ก๋ Cyclomatic Complexity
๋
ผ๋ฆฌ์ ์ธ ๋ณต์ก๋๋ฅผ ์ธก์ ํ๊ธฐ ์ํ ์ํํธ์จ์ด
= McCabe's Cyclomatic ๋งฅ์ผ์ด๋ธ ์ํ๋
V(G) = E - N + 2
E : ํ์ดํ ์, N : ๋
ธ๋์ ์
์์ค ์ฝ๋ ์ต์ ํ
- ํด๋ฆฐ ์ฝ๋
- ๋๊ตฌ๋ ์ดํด, ๋จ์, ๋ช
๋ฃ
- ๋์ ์ฝ๋
- ๋ก์ง์ด ๋ณต์ก. Spaghetti Code (๋ก์ง์ด ์ฝํ), Alien Code (์ ์ง๋ณด์ ์ด๋ ต)
ํด๋ฆฐ ์ฝ๋ ์์ฑ ์์น
- ๊ฐ๋
์ฑ : ์ฝ๊ฒ ์ฝ
- ๋จ์์ฑ : ๊ฐ๋จ
- ์์กด์ฑ ๋ฐฐ์ : ๋ค๋ฅธ ๋ชจ๋ ์ํฅ ์ต์ํ
- ์ค๋ณต์ฑ ์ต์ํ : ์ค๋ณต ์ต์ํ. ๊ณตํต ์ฝ๋
- ์ถ์ํ : ์์ - ํน์ฑ, ํ์ - ์์ธ ๋ด์ฉ
์์ค ์ฝ๋ ํ์ง ๋ถ์ ๋๊ตฌ
- ์ ์ ๋ถ์ Static Analysis ๋๊ตฌ
์คํํ์ง ์๊ณ ์ฝ๋ฉ ํ์ค์ด๋ ์ฝ๋ฉ ์คํ์ผ, ๊ฒฐํจ ํ์ธ
pmd, cppcheck, SonarQube, checkstyle, ccm, cobertuna
- ๋์ ๋ถ์ Dynamic Analysis ๋๊ตฌ
์คํํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋์, ์ค๋ ๋ ๊ฒฐํจ ๋ฑ์ ๋ถ์
Avalanche, Valgrind ๋ฑ
์ค์ ํค์๋ ์ ์ฌ์ ๋ฆฌ
ํ์ดํธ ๋ฐ์ค ํ
์คํธ (๊ฒ์ฆ๊ธฐ์ค ; ๋ฌธ์ฅ, ๋ถ๊ธฐ, ์กฐ๊ฑด, ๋ถ๊ธฐ์กฐ๊ฑด), ๋ธ๋๋ฐ์ค ํ
์คํธ (์ข
๋ฅ ; ๋์น ๋ถํ , ๊ฒฝ๊ณ๊ฐ, ์์ธ-ํจ๊ณผ...), ํตํฉํ
์คํธ-ํํฅ์ ํตํฉํ
์คํธ(ํ์๋ชจ๋ํฉํฉ)
์ ํ๋ฆฌ์ผ์ด์
ํ
์คํธ ๊ธฐ๋ณธ์๋ฆฌ(ํ๋ ํ , ์ด์ถฉ์ , ๊ถค๋ณ), ์ ์ - ๋์ (๋ธ๋, ํ์ดํธ ๋ฐ์ค ํ
์คํธ) ํ
์คํธ, ๊ฐ๋ฐ ๋จ๊ณ์ ๋ฐ๋ฅธ ์ ํ๋ฆฌ์ผ์ด์
ํ
์คํธ (V๋ชจ๋ธ), ๋จ์(๋ชจ๋), ํตํฉ(๋ชจ๋ ๊ฒฐํฉ), ์ธ์ ํ
์คํธ (์ฌ์ฉ์ ์๊ตฌ์ฌํญ ; ์ํ, ๋ฒ ํ), ํ
์คํธ ์ค๋ผํด (์ข
๋ฅ ; ์ฐธ, ์ํ๋ง, ์ถ์ , ์ผ๊ด์ฑ), ์ฑ๋ฅ ์ธก์ ์งํ (์, ์๋ต, ๊ฒฝ๊ณผ, ์์), ์์ค ์ฝ๋ ํ์ง ๋ถ์ ๋๊ตฌ(์ ์ , ๋์ )