์ฑ
์์ฒด์์ 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. ํด๋ฌ์คํฐ๋ ์์ ๊ฐ์ ๊ฒฐํฉ, ๋๋ผ์ด๋ฒ๋ ์ค์ ๋ชจ๋ ๋์ฒด - ํผํฉ์ ํตํฉ ํ
์คํธ
- ํํฅ์ ํตํฉ ํ
์คํธ Top Down Integration Test
์ธ์ ํ ์คํธ 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๋ชจ๋ธ), ๋จ์(๋ชจ๋), ํตํฉ(๋ชจ๋ ๊ฒฐํฉ), ์ธ์ ํ ์คํธ (์ฌ์ฉ์ ์๊ตฌ์ฌํญ ; ์ํ, ๋ฒ ํ), ํ ์คํธ ์ค๋ผํด (์ข ๋ฅ ; ์ฐธ, ์ํ๋ง, ์ถ์ , ์ผ๊ด์ฑ), ์ฑ๋ฅ ์ธก์ ์งํ (์, ์๋ต, ๊ฒฝ๊ณผ, ์์), ์์ค ์ฝ๋ ํ์ง ๋ถ์ ๋๊ตฌ(์ ์ , ๋์ )
'์๊ฒฉ์ฆ ์์ผ๋ฉด ์ข์ง > ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ค๊ธฐ] ์ด์ด์ด์์ฝ - 9์ฅ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ณด์ ๊ตฌ์ถ (3) | 2024.10.18 |
---|---|
[์ค๊ธฐ] ์ด์ด์ด์์ฝ - 8์ฅ SQL ์์ฉ (5) | 2024.10.17 |
[์ค๊ธฐ] ์ด์ด์ด์์ฝ - 6์ฅ ํ๋ฉด ์ค๊ณ (1) | 2024.10.16 |
[์ค๊ธฐ] ์ด์ด์ด์์ฝ - 5์ฅ ์ธํฐํ์ด์ค ๊ตฌํ (0) | 2024.10.15 |
[์ค๊ธฐ] ์ด์ด์ด์์ฝ - 4์ฅ ์๋ฒ ํ๋ก๊ทธ๋จ ๊ตฌํ (2) | 2024.10.15 |