[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ] 7์ฅ ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ ๊ด๋ฆฌ
- -
์ด๋ฒ์๋ 2022๋ ๋ ์ค๊ธฐ ์ํ ์ค๋นํ๋ฉด์ ๋ ธํธ์ ๋ฆฌ ํ์๋ ๋ด์ฉ๋ค์ ํฌ์คํ ํด๋ณด๊ฒ ์ต๋๋ค. ๋ด์ฉ์ด ๋ง์ด ๋ถ์กฑํ์๊ฒ ์ง๋ง ์ด๋๊น์ง ์ฐธ๊ณ ์ฉ์ผ๋ก๋ง ๋ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๐๐
์ฐธ๊ณ ๋ก, ์๊ฐ ๊ด๊ณ์ ์ ๋ถ ์ ๋ฆฌ๋์ด ์์ง๋ ์์ต๋๋ค. ์ถ๊ฐ๋ก ์ ๋ C๋ฑ๊ธ๊ณผ D๋ฑ๊ธ์ ํ์ต ๋ชฉํ์์ ์ ์ธํ์ต๋๋ค.
ํด๋น ๋ด์ฉ์ 2022๋ ๋ ์๋๊ณต ์ถํ์ฌ์ ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ ์ฑ ์ ๋ด์ฉ์ด ์กฐ๊ธ ํฌํจ๋์ด ์์ต๋๋ค.
๊ฐ๊ธ์ ์ฑ ์ ๊ตฌ๋งคํ์ ์ผ ํ๊ณ ์ถํ์ฌ๋ ์๋๊ณต ๋๋ ์์ ๋น๋ก ๊ณต๋ถํ์๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
A๋ฑ๊ธ
๐ข ํ ์คํธ ๊ธฐ๋ฒ์ ๋ฐ๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ
- ํ์ดํธ๋ฐ์ค ํ
์คํธ(White Box Test)
- ์์ ์ฝ๋์ ๋ ผ๋ฆฌ์ ์ธ ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ํ ์คํธํ์ฌ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ค๊ณํ๋ ๋ฐฉ๋ฒ
- ํ์ดํธ๋ฐ์ค ํ
์คํธ์ ์ข
๋ฅ
- ๊ธฐ์ด ๊ฒฝ๋ก ๊ฒ์ฌ(Base Path Testing)
- ํ ์คํธ ์ผ์ด์ค ์ค๊ณ์๊ฐ ์ ์ฐจ์ ์ค๊ณ์ ๋ ผ๋ฆฌ์ ๋ณต์ก์ฑ์ ์ธก์ ํ ์ ์๊ฒ ํด์ฃผ๋ ํ ์คํธ ๊ธฐ๋ฒ
- ์ ์ด ๊ตฌ์กฐ ๊ฒ์ฌ(Control Structure Testing)
- ์กฐ๊ฑด ๊ฒ์ฌ(Condition Testing): ๋ ผ๋ฆฌ์ ์กฐ๊ฑด์ ํ ์คํธํ๋ ํ ์คํธ ์ผ์ด์ค ์ค๊ณ ๊ธฐ๋ฒ
- ๋ฃจํ ๊ฒ์ฌ(Loop Testing): ๋ฐ๋ณต ๊ตฌ์กฐ์ ์ด์ ์ ๋ง์ถฐ ์ค์ํ๋ ํ ์คํธ ์ผ์ด์ค ์ค๊ณ ๊ธฐ๋ฒ
- ๋ฐ์ดํฐ ํ๋ฆ ๊ฒ์ฌ(Data Flow Testing): ๋ณ์์ ์ ์์ ๋ณ์ ์ฌ์ฉ์ ์์น์ ์ด์ ์ ๋ง์ถฐ ์ค์ํ๋ ํ ์คํธ ์ผ์ด์ค ์ค๊ณ ๊ธฐ๋ฒ
- ๊ธฐ์ด ๊ฒฝ๋ก ๊ฒ์ฌ(Base Path Testing)
- ํ์ดํธ๋ฐ์ค ํ
์คํธ์ ๊ฒ์ฆ ๊ธฐ์ค
- ๋ฌธ์ฅ ๊ฒ์ฆ ๊ธฐ์ค(Statement Coverage)
- ์์ค ์ฝ๋์ ๋ชจ๋ ๊ตฌ๋ฌธ์ด ํ ๋ฒ ์ด์ ์ํ๋๋๋ก ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ค๊ณํจ
- ๋ถ๊ธฐ ๊ฒ์ฆ ๊ธฐ์ค(Branch Coverage)
- ์์ค ์ฝ๋์ ๋ชจ๋ ์กฐ๊ฑด๋ฌธ์ ๋ํด ์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ True์ธ ๊ฒฝ์ฐ์ False์ธ ๊ฒฝ์ฐ๊ฐ ํ ๋ฒ ์ด์ ์ํ๋๋๋ก ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ค๊ณํจ
- ๊ฒฐ์ ๊ฒ์ฆ ๊ธฐ์ค(Decision Coverage)์ด๋ผ๊ณ ๋ ํจ
- ์กฐ๊ฑด ๊ฒ์ฆ ๊ธฐ์ค(Condition Coverage)
- ์์ค ์ฝ๋์ ์กฐ๊ฑด๋ฌธ์ ํฌํจ๋ ๊ฐ๋ณ ์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ True์ธ ๊ฒฝ์ฐ์ False์ธ ๊ฒฝ์ฐ๊ฐ ํ ๋ฒ ์ด์ ์ํ๋๋๋ก ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ค๊ณํจ
- ๋ถ๊ธฐ/์กฐ๊ฑด ๊ธฐ์ค(Branch/Condition Coverage)
- ๋ถ๊ธฐ ๊ฒ์ฆ ๊ธฐ์ค๊ณผ ์กฐ๊ฑด ๊ฒ์ฆ ๊ธฐ์ค์ ๋ชจ๋ ๋ง์กฑํ๋ ์ค๊ณ
- ๋ฌธ์ฅ ๊ฒ์ฆ ๊ธฐ์ค(Statement Coverage)
- ๋ธ๋๋ฐ์ค ํ
์คํธ(Black Box Test)
- ๊ฐ ๊ธฐ๋ฅ์ด ์์ ํ ์๋๋๋ ๊ฒ์ ์ ์ฆํ๋ ํ ์คํธ
- = ๊ธฐ๋ฅ ํ ์คํธ
- ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ ๋ช ์ธ๋ฅผ ๋ณด๋ฉด์ ํ ์คํธ
- ์ฃผ๋ก ๊ตฌํ๋ ๊ธฐ๋ฅ์ ํ ์คํธ
- ์ํํธ์จ ์ธํฐํผ์์ค๋ฅผ ํตํด ์ค์
- ๋ธ๋๋ฐ์ค ํ
์คํธ์ ์ข
๋ฅ
- ๋์น ๋ถํ ๊ฒ์ฌ(Equivalence Partitioning Testing, ๋์น ํด๋์ค ๋ถํด)
- ํ๋ก๊ทธ๋จ์ ์ ๋ ฅ ์กฐ๊ฑด์ ํ๋นํ ์ ๋ ฅ ์๋ฃ์ ํ๋นํ์ง ์์ ์ ๋ ฅ ์๋ฃ์ ๊ฐ์๋ฅผ ๊ท ๋ฑํ๊ฒ ํ์ฌ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ ํ๊ณ , ํด๋น ์ ๋ ฅ ์๋ฃ์ ๋ง๋ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋์ง ํ์ธํ๋ ๊ธฐ๋ฒ
- = ๋๋ฑ ๋ถํ ๊ธฐ๋ฒ
- ๊ฒฝ๊ณ ๊ฐ ๋ถ์(Boundary Value Analysis)
- ์ ๋ ฅ ์กฐ๊ฑด์ ์ค๊ฐ๊ฐ๋ณด๋ค ๊ฒฝ๊ณ๊ฐ์์ ์ค๋ฅ๊ฐ ๋ฐ์๋ ํ๋ฅ ์ด ๋๋ค๋ ์ ์ ์ด์ฉํ์ฌ ์ ๋ ฅ ์กฐ๊ฑด์ ๊ฒฝ๊ณ๊ฐ์ ํ ์คํธ ์ผ์ด์ค๋ก ์ ์ ํ์ฌ ๊ฒ์ฌํ๋ ๊ธฐ๋ฒ
- ์์ธ-ํจ๊ณผ ๊ทธ๋ํ ๊ฒ์ฌ(Cause-Effect Graphing Testing)
- ์ ๋ ฅ ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ์ ์ถ๋ ฅ์ ์ํฅ์ ๋ฏธ์น๋ ์ํฉ์ ์ฒด๊ณ์ ์ผ๋ก ๋ถ์ํ ๋ค์ ํจ์ฉ์ฑ์ด ๋์ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ ์ ํ์ฌ ๊ฒ์ฌํ๋ ๊ธฐ๋ฒ
- ์ค๋ฅ ์์ธก ๊ฒ์ฌ(Error Guessing)
- ๊ณผ๊ฑฐ์ ๊ฒฝํ์ด๋ ํ์ธ์์ ๊ฐ๊ฐ์ผ๋ก ํ ์คํธํ๋ ๊ธฐ๋ฒ
- ๋น๊ต ๊ฒ์ฌ(Comparison Testing)
- ์ฌ๋ฌ ๋ฒ์ ์ ํ๋ก๊ทธ๋จ์ ๋์ผํ ํ ์คํธ ์๋ฃ๋ฅผ ์ ๊ณตํ์ฌ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋๋์ง ํ ์คํธํ๋ ๊ธฐ๋ฒ
- ๋์น ๋ถํ ๊ฒ์ฌ(Equivalence Partitioning Testing, ๋์น ํด๋์ค ๋ถํด)
๐ข ๊ฐ๋ฐ ๋จ๊ณ์ ๋ฐ๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ
- ๋จ์ ํ
์คํธ(Unit Test)
- ๋ชจ๋์ด๋ ์ปดํฌ๋ํธ์ ์ด์ ์ ๋ง์ถฐ ํ ์คํธ
- ์ธํฐํ์ด์ค, ์ธ๋ถ์ I/O, ์๋ฃ ๊ตฌ์กฐ, ๋ ๋ฆฝ์ ๊ธฐ์ด ๊ฒฝ๋ก, ์ค๋ฅ ์ฒ๋ฆฌ ๊ฒฝ๋ก, ๊ฒฝ๊ณ ์กฐ๊ฑด ๋ฑ์ ๊ฒ์ฌ
- ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ์ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ธฐ๋ฅ์ฑ ํ ์คํธ๋ฅผ ์ต์ฐ์ ์ผ๋ก ์ํ
- ํตํฉ ํ
์คํธ(Integration Test)
- ๋จ์ ํ ์คํธ๊ฐ ์๋ฃ๋ ๋ชจ๋๋ค์ ๊ฒฐํฉํ์ฌ ํ๋์ ์์คํ ์ผ๋ก ์์ฑ์ํค๋ ๊ณผ์ ์์์ ํ ์คํธ
- ๋จ์ ํ ์คํธ๊ฐ ๋๋ ๋ชจ๋์ ํตํฉํ๋ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์ค๋ฅ ๋ฐ ๊ฒฐํจ์ ์ฐพ๋ ํ ์คํธ
- ํํฅ์ ํตํฉ ํ
์คํธ(Top Down Integration Test)
- ์์ ๋ชจ๋์์ ํ์ ๋ชจ๋ ๋ฐฉํฅ์ผ๋ก ํตํฉํ๋ฉด์ ํ ์คํธ
- ๊น์ด ์ฐ์ ํตํฉ๋ฒ, ๋์ด ์ฐ์ ํตํฉ๋ฒ
- ์คํ (Stub)
- ์ํฅ์ ํตํฉ ํ
์คํธ(Bottom Up Integration Test)
- ํ์ ๋ชจ๋์์ ์์ ๋ชจ๋ ๋ฐฉํฅ์ผ๋ก ํตํฉํ๋ฉด์ ํ ์คํธ
- **ํด๋ฌ์คํฐ(Cluster)**๋ก ํ์๋ชจ๋ ๊ฒฐํฉ
- ๋๋ผ์ด๋ฒ(Driver)
- ํผํฉ์ ํตํฉ ํ
์คํธ
- ํ์ ์์ค์์๋ ์ํฅ์ ํตํฉ, ์์ ์์ค์์๋ ํํฅ์ ํตํฉ์ ์ฌ์ฉํ์ฌ ์ต์ ์ ํ ์คํธ๋ฅผ ์ง์ํ๋ ๋ฐฉ์
- ์๋์์น(Sandwich)์ ํตํฉ ํ ์คํธ ๋ฐฉ๋ฒ
- ํ๊ท ํ
์คํ
(Regression Testing)
- ํตํฉ ํ ์คํธ๋ก ์ธํด ๋ณ๊ฒฝ๋ ๋ชจ๋์ด๋ ์ปดํฌ๋ํธ์ ์๋ก์ด ์ค๋ฅ๊ฐ ์๋์ง ํ์ธํ๋ ํ ์คํธ
- ์ด๋ฏธ ํ ์คํธ๋ ํ๋ก๊ทธ๋จ์ ํ ์คํ ์ ๋ฐ๋ณตํ๋ ๊ฒ
- ์์คํ
ํ
์คํธ(System Test)
- ๊ฐ๋ฐ๋ ์ํํธ์จ์ด๊ฐ ์๋ฒฝํ๊ฒ ์ํ๋๋๊ฐ๋ฅผ ์ ๊ฒํ๋ ํ ์คํธ
- ์ธ์ ํ
์คํธ(Acceptance Test)
- ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๋์ง์ ์ค์ ์ ๋๊ณ ํ ์คํธ
- ๊ฐ๋ฐํ ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉ์๊ฐ ์ง์ ํ ์คํธ
- 6๊ฐ์ง์ ์ข
๋ฅ๋ก ๊ตฌ๋ถํด์ ํ
์คํธ
- ์ฌ์ฉ์ ์ธ์ ํ
์คํธ
- ์ฌ์ฉ์๊ฐ ์์คํ ์ฌ์ฉ์ ์ ์ ์ฑ ์ฌ๋ถ๋ฅผ ํ์ธ
- ์ด์์์ ์ธ์ ํ
์คํธ
- ์์คํ ๊ด๋ฆฌ์๊ฐ ์์คํ ์ธ์ ์ ์ํํ๋ ํ ์คํธ ๊ธฐ๋ฒ
- ๋ฐฑ์ /๋ณต์ ์์คํ , ์ฌ๋ ๋ณต๊ตฌ, ์ฌ์ฉ์ ๊ด๋ฆฌ, ์ ๊ธฐ ์ ๊ฒ ๋ฑ์ ํ์ธ
- ๊ณ์ฝ ์ธ์ ํ
์คํธ
- ๊ณ์ฝ์์ ์ธ์/๊ฒ์ ์กฐ๊ฑด์ ์ค์ํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธ
- ๊ท์ ์ธ์ ํ
์คํธ
- ์ํํธ์จ์ด๊ฐ ์ ๋ถ ์ง์นจ, ๋ฒ๊ท, ๊ท์ ๋ฑ ๊ท์ ์ ๋ง๊ฒ ๊ฐ๋ฐ๋์๋์ง ํ์ธ
- ์ํ ํ
์คํธ
- ๊ฐ๋ฐ์์ ์ฅ์์์ ์ฌ์ฉ์๊ฐ ๊ฐ๋ฐ์ ์์์ ํํ๋ ํ ์คํธ ๊ธฐ๋ฒ
- ํ ์คํธ๋ ํต์ ๋ ํ๊ฒฝ์์ ํํด์ง๋ฉฐ, ์ค๋ฅ์ ์ฌ์ฉ์์ ๋ฌธ์ ์ ์ ์ฌ์ฉ์์ ๊ฐ๋ฐ์๊ฐ ํจ๊ป ํ์ธํ๋ฉด์ ๊ธฐ๋กํจ
- ๋ฒ ํ ํ
์คํธ
- ์ ์ ๋ ์ต์ข ์ฌ์ฉ์๊ฐ ์ฌ๋ฌ ๋ช ์ ์ฌ์ฉ์ ์์์ ํํ๋ ํ ์คํธ ๊ธฐ๋ฒ
- ์ค์ ๋ฌด๋ฅผ ๊ฐ์ง๊ณ ์ฌ์ฉ์๊ฐ ์ง์ ํ ์คํธ
- ์ฌ์ฉ์ ์ธ์ ํ
์คํธ
๐ข ๋ณต์ก๋
- ์๊ฐ ๋ณต์ก๋
- ์๊ณ ๋ฆฌ์ฆ์ ์ํํ๊ธฐ ์ํด ํ๋ก์ธ์ค๊ฐ ์ํํ๋ ์ฐ์ฐ ํ์๋ฅผ ์์นํํ ๊ฒ
- ์๊ฐ ๋ณต์ก๋๊ฐ ๋ฎ์์๋ก ์๊ณ ๋ฆฌ์ฆ์ ์คํ์๊ฐ์ด ์งง๊ณ , ๋์์๋ก ์คํ์๊ฐ์ด ๊ธธ์ด์ง
- ์ข ๋ฅ
- ๋น ์ค ํ๊ธฐ๋ฒ์ผ๋ก ํํํ ์ต์ ์ ์๊ณ ๋ฆฌ์ฆ ์๊ฐ ๋ณต์ก๋
- ์ํ ๋ณต์ก๋(Cyclomatic Complexity)
- ์ํ ๋ณต์ก๋(Cyclomatic Complexity)๋ ํ๋ก๊ทธ๋จ์ ๋ ผ๋ฆฌ์ ๋ณต์ก๋๋ฅผ ์ธก์ ํ๊ธฐ ์ํ ์ํํธ์จ์ด์ ์ฒ๋๋ก ๋งฅ์ผ์ด๋ธ ์ํ๋(McCabe's Cyclomatic) ๋๋ ๋งฅ์ผ์ด๋ธ ๋ณต์ก๋ ๋งคํธ๋ฆญ(McCabe's Complexity Metrics)๋ผ๊ณ ๋ ํ๋ฉฐ ์ ์ด ํ๋ฆ๋ ์ด๋ก ์ ๊ธฐ์ด๋ฅผ ๋
- ์ ์ด ํ๋ฆ๋ G์์ ์ํ ๋ณต์ก๋ V(G)๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ณ์ฐํ ์ ์์
- ์ํ๋ณต์ก๋=์ ์ด ํ๋ฆ๋ ์์ญ ์ ์ด๋ฏ๋ก ์์ญ ์๋ฅผ ์ผ๋ค(์ธ๋ถ์์ญ ํฌํจ)
- V(G) = E(ํ์ดํ) - N(๋ ธ๋) + 2 ์ ๊ณต์์ ์ด์ฉํ์ฌ ๊ณ์ฐ
๐ข ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ๊ฐ์
- ์์ค ์ฝ๋ ์ต์ ํ
- ๋์ ์ฝ๋(Bad Code)๋ฅผ ๋ฐฐ์ ํ๊ณ , ํด๋ฆฐ ์ฝ๋(Clean Code)๋ก ์์ฑํ๋ ๊ฒ
- ํด๋ฆฐ ์ฝ๋(Clean Code): ๋๊ตฌ๋ ์ฝ๊ฒ ์ดํดํ๊ณ ์์ ๋ฐ ์ถ๊ฐํ ์ ์๋ ๋จ์, ๋ช ๋ฃํ ์ฝ๋, ์ฆ ์ ์์ฑ๋ ์ฝ๋
- ๋์ ์ฝ๋(Bad Code)
- ํ๋ก๊ทธ๋จ์ ๋ก์ง์ด ๋ณต์กํ๊ณ ์ดํดํ๊ธฐ ์ด๋ ค์ด ์ฝ๋
- ๋ํ์ ์ธ ๋์ ์ฝ๋
- ์คํ๊ฒํฐ ์ฝ๋: ์ฝ๋์ ๋ก์ง์ด ์๋ก ๋ณต์กํ๊ฒ ์ฝํ ์๋ ์ฝ๋
- ์ธ๊ณ์ธ ์ฝ๋: ์์ฃผ ์ค๋๋๊ฑฐ๋ ์ฐธ๊ณ ๋ฌธ์ ๋๋ ๊ฐ๋ฐ์๊ฐ ์์ด ์ ์ง๋ณด์ ์์ ์ด ์ด๋ ค์ด ์ฝ๋
- ํด๋ฆฐ ์ฝ๋ ์์ฑ ์์น
- ๊ฐ๋
์ฑ
- ๋๊ตฌ๋ ์ง ์ฝ๋๋ฅผ ์ฝ๊ฒ ์ฝ์ ์ ์๋๋ก ์์ฑ
- ์ฝ๋ ์์ฑ ์ ์ดํดํ๊ธฐ ์ฌ์ด ์ฉ์ด๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ค์ฌ์ฐ๊ธฐ ๊ธฐ๋ฅ๋ฑ์ ์ฌ์ฉ
- ๋จ์์ฑ
- ์ฝ๋๋ฅผ ๊ฐ๋จํ๊ฒ ์์ฑ
- ํ ๋ฒ์ ํ ๊ฐ์ง๋ฅผ ์ฒ๋ฆฌํ๋๋ก ์ฝ๋๋ฅผ ์์์๊ณ ํด๋์ค/๋ฉ์๋/ํจ์ ๋ฑ์ ์ต์ ๋จ์๋ก ๋ถ๋ฆฌํจ
- ์์กด์ฑ ๋ฐฐ์
- ์ฝ๋๊ฐ ๋ค๋ฅธ ๋ชจ๋์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํ
- ์ฝ๋ ๋ณ๊ฒฝ ์ ๋ค๋ฅธ ๋ถ๋ถ์ ์ํฅ์ด ์๋๋ก ์์ฑ
- ์ค๋ณต์ฑ ์ต์ํ
- ์ฝ๋์ ์ค๋ณต์ ์ต์ํ
- ์ค๋ณต๋ ์ฝ๋๋ ์ญ์ ํ๊ณ ๊ณตํต๋ ์ฝ๋๋ฅผ ์ฌ์ฉ
- ์ถ์ํ
- ์์ ํด๋์ค/๋ฉ์๋/ํจ์์์๋ ๊ฐ๋ตํ๊ฒ
- ํ์ ํด๋์ค/๋ฉ์๋/ํจ์์์๋ ์์ธํ๊ฒ
- ๊ฐ๋
์ฑ
- ์์ค ์ฝ๋ ํ์ง ๋ถ์ ๋๊ตฌ
- ์ ์ ๋ถ์ ๋๊ตฌ
- ์์ฑํ ์์ค ์ฝ๋๋ฅผ ์คํํ์ง ์๊ณ ์ฝ๋ฉ ํ์ค์ด๋ ์ฝ๋ฉ ์คํ์ผ, ๊ฒฐํจ ๋ฑ์ ํ์ธํ๋ ์ฝ๋ ๋ถ์ ๋๊ตฌ
- ์ข ๋ฅ: pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura ๋ฑ
- ๋์ ๋ถ์ ๋๊ตฌ
- ์์ฑํ ์์ค ์ฝ๋๋ฅผ ์คํํ์ฌ ์ฝ๋์ ์กด์ฌํ๋ ๋ฉ๋ชจ๋ฆฌ ๋์, ์ค๋ ๋ ๊ฒฐํจ ๋ฑ์ ๋ถ์ํ๋ ๋๊ตฌ
- ์ข ๋ฅ: Avalanche, Valgrind ๋ฑ
- ์ ์ ๋ถ์ ๋๊ตฌ
B๋ฑ๊ธ
๐ข ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฌ๋์ด ์๋ ๊ฒฐํจ์ ์ฐพ์๋ด๋ ์ผ๋ จ์ ํ์ ๋๋ ์ ์ฐจ
- ์ ํ๋ฆฌ์ผ์ด์
ํ
์คํธ์ ๊ธฐ๋ณธ ์๋ฆฌ
- ์๋ฒฝํ ํ
์คํ
๋ถ๊ฐ๋ฅ
- ์ ์ฌ์ ์ธ ๊ฒฐํจ์ ์ค์ผ ์ ์์ง๋ง ์ํํธ์จ์ด์ ๊ฒฐํจ์ด ์๋ค๊ณ ํ ์ ์์
- ๊ฒฐํจ ์ง์ค(ํ๋ ํ ๋ฒ์น)
- ๊ฐ๋ฐ์ ํน์ฑ, ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ์ ํน์ง์ผ๋ก ํน์ ๋ชจ๋์ ๊ฒฐํจ์ ๋๋ถ๋ถ์ด ์ง์ค๋์ด ์์(20%์ฝ๋์ 80%์ ๊ฒฐํจ์ด ๋ฐ๊ฒฌ)
- ์ด์ถฉ์ ํจ๋ฌ๋
์ค
- ๋์ผํ ํ ์คํธ์ผ์ด์ค๋ก ๋์ผํ ํ ์คํธ๋ฅผ ๋ฐ๋ณตํ๋ฉด ๋์ด์ ๊ฒฐํจ์ด ๋ฐ๊ฒฌ๋์ง ์์, ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ํ ์คํธ์ผ์ด์ค๋ฅผ ์ง์์ ์ผ๋ก ๊ฐ์ ๋ณด์ํด์ผ ํจ
- ํ
์คํ
์ ์ ํฉ์ ์์กด
- ์ํํธ์จ์ด ํน์ง, ํ ์คํธ ํ๊ฒฝ ๋ฑ ์ ํฉ์ ๋ฐ๋ผ ํ ์คํธ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ฏ๋ก ์ ํฉ์ ๋ฐ๋ฅธ ํ ์คํธ ์ํํด์ผ ํจ
- ์ค๋ฅ ๋ถ์ฌ์ ๊ถค๋ณ
- ๊ฒฐํจ์ ๋ชจ๋ ์ ๊ฑฐํด๋ ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ์ ๋ง์กฑํ์ง ๋ชปํ๋ฉด ์ํํธ์จ์ด์ ํ์ง์ ๋๋ค ํ ์ ์์
- ํ
์คํธ์ ์ํ์ ๋ฐ๋น๋ก
- ํ ์คํธ๋ฅผ ๋ง์ด ํ ์๋ก ๋ฏธ๋์ ์ํ์ ์ค์ด๋ฆ
- ํ
์คํธ์ ์ ์ง์ ํ๋
- ์์ ๋ถ๋ถ์์ ์์ํด์ ์ ์ ํ๋ํ์ฌ ์งํํด์ผ ํจ
- ํ
์คํธ์ ๋ณ๋ ํ ์ํ
- ๊ฐ๋ฐ์์ ๊ด๊ณ ์๋ ๋ณ๋์ ํ์์ ์ํํด์ผ ํจ
- ์๋ฒฝํ ํ
์คํ
๋ถ๊ฐ๋ฅ
๐ข ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ์ ๋ถ๋ฅ
- ํ๋ก๊ทธ๋จ ์คํ ์ฌ๋ถ์ ๋ฐ๋ฅธ ํ
์คํธ
- ์ ์ ํ
์คํธ
- ํ๋ก๊ทธ๋จ์ ์คํํ์ง ์๊ณ ๋ช ์ธ์๋ ์์ค ์ฝ๋๋ฅผ ๋์์ผ๋ก ๋ถ์ํ๋ ํ ์คํธ
- ์ข ๋ฅ: ์ํฌ์ค๋ฃจ, ์ธ์คํ์ , ์ฝ๋ ๊ฒ์ฌ
- ๋์ ํ
์คํธ
- ํ๋ก๊ทธ๋จ์ ์คํํ์ฌ ์ค๋ฅ๋ฅผ ์ฐพ๋ ํ ์คํธ
- ์ข ๋ฅ: ๋ธ๋๋ฐ์ค ํ ์คํธ, ํ์ดํธ๋ฐ์ค ํ ์คํธ
- ์ ์ ํ
์คํธ
- ์๊ฐ์ ๋ฐ๋ฅธ ํ
์คํธ
- ๊ฒ์ฆ(Verification) ํ ์คํธ: ๊ฐ๋ฐ์์ ์๊ฐ์์ ์ ํ์ ์์ฐ ๊ณผ์ ์ ํ ์คํธํ๋ ๊ฒ
- ํ์ธ(Validation) ํ ์คํธ: ์ฌ์ฉ์์ ์๊ฐ์์ ์์ฐ๋ ์ ํ์ ๊ฒฐ๊ณผ๋ฅผ ํ ์คํธํ๋ ๊ฒ
- ๋ชฉ์ ์ ๋ฐ๋ฅธ ํ
์คํธ
- ํ๋ณต(Recovery) ํ
์คํธ
- ๊ฒฐํจ์ ์ฃผ์ด ์คํจํ๋๋ก ํ ํ ์ฌ๋ฐ๋ฅด๊ฒ ๋ณต๊ตฌ๋๋์ง ํ ์คํธ
- ์์ (Security) ํ
์คํธ
- ๋ถ๋ฒ์ ์ธ ์นจ์์ผ๋ก๋ถํฐ ์์คํ ์ ๋ณดํธํ ์ ์๋์ง ํ ์คํธ
- ๊ฐ๋(Stress) ํ
์คํธ
- ๊ณผ๋ํ ์ ๋ณด๋์ด๋ ๋น๋ ๋ฑ์ ๋ถ๊ณผํ์ฌ ๊ณผ๋ถํ ์์๋ ์ํํธ์จ์ด๊ฐ ์ ์์ ์ผ๋ก ์คํ๋๋์ง ํ ์คํธ
- ์ฑ๋ฅ(Performance) ํ
์คํธ
- ์ค์๊ฐ ์ฑ๋ฅ, ์ ์ฒด์ ์ธ ํจ์จ์ฑ์ ์ง๋จํ๋ ํ ์คํธ
- ์ํํธ์จ์ด์ ์๋ต์๊ฐ, ์ฒ๋ฆฌ๋ ๋ฑ์ ํ ์คํธ
- ๊ตฌ์กฐ(Structure) ํ
์คํธ
- ๋ด๋ถ์ ๋ ผ๋ฆฌ์ ์ธ ๊ฒฝ๋ก, ์์ค ์ฝ๋์ ๋ณต์ก๋ ๋ฑ์ ํ๊ฐํ๋ ํ ์คํธ
- ํ๊ท(Regression) ํ
์คํธ
- ๋ณ๊ฒฝ ๋๋ ์์ ๋ ์ฝ๋์ ์๋ก์ด ๊ฒฐํจ์ด ์์์ ํ์ธํ๋ ํ ์คํธ
- ๋ณํ(Parallel) ํ
์คํธ
- ๋ณ๊ฒฝ๋ ์ํํธ์จ์ด์ ๊ธฐ์กด ์ํํธ์จ์ด์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ๋ ํ ์คํธ
- ํ๋ณต(Recovery) ํ
์คํธ
๐ข ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ ํ๋ก์ธ์ค
- ์ ํ๋ฆฌ์ผ์ด์
ํ
์คํธ ํ๋ก์ธ์ค
- ๊ฐ๋ฐ๋ ์ํํธ์จ์ด๊ฐ ์ฌ์ฉ์์ ์๊ตฌ๋๋ก ๋ง๋ค์ด์ก๋์ง, ๊ฒฐํจ์ ์๋์ง ๋ฑ์ ํ ์คํธํ๋ ์ ์ฐจ
- ํ ์คํธ ๊ณํ → ํ ์คํธ ๋ถ์ ๋ฐ ๋์์ธ → ํ ์คํธ ์ผ์ด์ค ๋ฐ ์๋๋ฆฌ์ค ์์ฑ → ํ ์คํธ ์ํ → ํ ์คํธ ๊ฒฐ๊ณผ ํ๊ฐ ๋ฐ ๋ฆฌํฌํ → ๊ฒฐํจ ์ถ์ ๋ฐ ๊ด๋ฆฌ
- ๊ฒฐํจ ๊ด๋ฆฌ ํ๋ก์ธ์ค
- ์๋ฌ ๋ฐ๊ฒฌ → ์๋ฌ ๋ฑ๋ก → ์๋ฌ ๋ถ์ → ๊ฒฐํจ ํ์ → ๊ฒฐํจ ํ ๋น → ๊ฒฐํจ ์กฐ์น → ๊ฒฐํจ ์กฐ์น ๊ฒํ ๋ฐ ์น์ธ
๐ข ํ ์คํธ ์ผ์ด์ค / ํ ์คํธ ์๋๋ฆฌ์ค / ํ ์คํธ ์ค๋ผํด
- ํ
์คํธ ์ผ์ด์ค(Test Case)
- ์ฌ์ฉ์์ ์๊ตฌ์ฌํญ์ ์ ํํ๊ฒ ์ค์ํ๋์ง๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ค๊ณ๋ ํ ์คํธ ํญ๋ชฉ์ ๋ํ ๋ช ์ธ์
- ํ
์คํธ ์๋๋ฆฌ์ค(Test Scenario)
- ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ ์ฉํ๋ ์์์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ฐ์ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ฌถ์ ์งํฉ
- ํ
์คํธ ์ค๋ผํด(Test Oracle)
- ํ ์คํธ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ๋จํ๊ธฐ ์ํด ์ฌ์ ์ ์ ์๋ ์ฐธ๊ฐ์ ๋์ ํ์ฌ ๋น๊ตํ๋ ๊ธฐ๋ฒ
- ํน์ง
- ์ ํ๋ ๊ฒ์ฆ: ๋ชจ๋ ํ ์คํธ ์ผ์ด์ค์ ์ ์ฉํ ์ ์์
- ์ํ์ ๊ธฐ๋ฒ: ๊ฐ์ ์ํ์ ๊ธฐ๋ฒ์ ์ด์ฉํ์ฌ ๊ตฌํ ์ ์์
- ์๋ํ ๊ฐ๋ฅ: ํ ์คํธ ๋์ ํ๋ก๊ทธ๋จ์ ์คํ, ๊ฒฐ๊ณผ ๋น๊ต, ์ปค๋ฒ๋ฌ์ง ์ธก์ ๋ฑ์ ์๋ํ ํ ์ ์์
- ํ
์คํธ ์ค๋ผํด์ ์ข
๋ฅ
- ์ฐธ(True) ์ค๋ผํด: ๋ชจ๋ ํ ์คํธ ์ผ์ด์ค์ ์ ๋ ฅ ๊ฐ์ ๋ํด ๊ธฐ๋ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๋ ์ค๋ผํด
- ์ํ๋ง(Sampling): ์ ์ ํ ์คํธ๊ฐ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ฌ์ฉ
- ์ถ์ (Heuristic) ์ค๋ผํด: ์ ๋ ฅ ๊ฐ์ ๋ํด ๊ธฐ๋ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๊ณ , ๋๋จธ์ง ์ ๋ ฅ ๊ฐ๋ค์ ๋ํด์๋ ์ถ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ ์ค๋ผํด
- ์ผ๊ด์ฑ ๊ฒ์ฌ(Consistent) ์ค๋ผํด: ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณ๊ฒฝ์ด ์์ ๋, ํ ์คํธ ์ผ์ด์ค์ ์ํ ์ ๊ณผ ํ์ ๊ฒฐ๊ณผ ๊ฐ์ด ๋์ผํ์ง๋ฅผ ํ์ธํ๋ ์ค๋ผํด
๐ข ํ ์คํธ ์๋ํ ๋๊ตฌ
- ์ ์ ๋ถ์ ๋๊ตฌ(Static Analysis Tools)
- ํ๋ก๊ทธ๋จ์ ์คํํ์ง ์๊ณ ๋ถ์ํ๋ ๋๊ตฌ
- ํ
์คํธ ์คํ ๋๊ตฌ(Test Execution Tools)
- ์คํฌ๋ฆฝํธ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ๋ฅผ ์คํํ๋ ๋๊ตฌ
- ์ฑ๋ฅ ํ
์คํธ ๋๊ตฌ(Performance Test Tools)
- ๊ฐ์์ ์ฌ์ฉ์๋ฅผ ๋ง๋ค์ด ํ ์คํธ๋ฅผ ์ํํจ์ผ๋ก์จ ์ฑ๋ฅ์ ๋ชฉํ ๋ฌ์ฑ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๋๊ตฌ
- ํ
์คํธ ํต์ ๋๊ตฌ(Test Control Tools)
- ํ ์คํธ ๊ณํ ๋ฐ ๊ด๋ฆฌ, ํ ์คํธ ์ํ, ๊ฒฐํจ ๊ด๋ฆฌ ๋ฑ์ ์ํํ๋ ๋๊ตฌ
- ์ข ๋ฅ: ํ์ ๊ด๋ฆฌ ๋๊ตฌ, ๊ฒฐํจ ์ถ์ /๊ด๋ฆฌ ๋๊ตฌ ๋ฑ
- ํ
์คํธ ํ๋ค์ค ๋๊ตฌ(Test Harness Tools)
- ํ ์คํธ๊ฐ ์คํ๋ ํ๊ฒฝ์ ์๋ฎฌ๋ ์ด์ ํ์ฌ ์ปดํฌ๋ํธ ๋ฐ ๋ชจ๋์ด ์ ์์ ์ผ๋ก ํ ์คํธ๋๋๋ก ํ๋ ๋๊ตฌ
- ํ
์คํธ ํ๋ค์ค์ ๊ตฌ์ฑ ์์
- ํ ์คํธ ๋๋ผ์ด๋ฒ(Driver): ์ํฅ์ ํ ์คํธ ์ ์์ ๋ชจ๋ ์ญํ ์ ๋์ ํ๋ ๊ฒ
- ํ ์คํธ ์คํ (Stub): ํํฅ์ ํ ์คํธ ์ ํ์ ๋ชจ๋ ์ญํ ์ ๋์ ํ๋ ๊ฒ
- ํ ์คํธ ์ํธ(Suites): ํ ์คํธ๋ค์ ์งํฉ ๋๋ ํจํค์ง
- ํ ์คํธ ์ผ์ด์ค
- ํ ์คํธ ์คํฌ๋ฆฝํธ
- ๋ชฉ ์ค๋ธ์ ํธ
- ํ ์คํธ ์ํ ๋จ๊ณ๋ณ ํ ์คํธ ์๋ํ ๋๊ตฌ
๋ง์น๋ฉฐ..
์๋๋ ์ ๋ง ๋ณด๋ ค๊ณ ๋ ธํธ ์ ๋ฆฌํ๋ ๋ด์ฉ์ด๋ผ์ ํ์ ํ ์ ์ด ๋ง๊ธฐ๋ ํ ๊ฑฐ๊ณ ์คํ๋ ์์ ์ ์์ต๋๋ค. ์ฐธ๊ณ ์ฉ์ผ๋ก๋ง ๋ด์ฃผ์ธ์ ๐
๋ง์ด ๋ถ์กฑํ ๋ด์ฉ์ด์ จ๊ฒ ์ง๋ง ๋์์ด ๋์ จ๋ค๋ฉด ๋๊ธ ํ ๋ฒ์ฉ ๋จ๊ฒจ์ฃผ์๋ฉด ๋ง์ด ๋ฟ๋ฏํ ๊ฒ ๊ฐ์ต๋๋ค. ๐๐
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ] 8์ฅ SQL ์์ฉ
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ] 9์ฅ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ณด์ ๊ตฌ์ถ
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ] 10์ฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํ์ฉ
์๊ฐ ๊ด๊ณ์ ๋ ธํธ ์ ๋ฆฌ ๋์ ๋ฌธ์ ํ์ด๋ก ๋์ฒด... ๐ข๐ข
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ] 11์ฅ ์์ฉ SW ๊ธฐ์ด ์ธ์ด ํ์ฉ
์๊ฐ ๊ด๊ณ์ ๋ ธํธ ์ ๋ฆฌ ๋์ ๋ฌธ์ ํ์ด๋ก ๋์ฒด... ๐ข๐ข
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ] 12์ฅ ์ ํ์ํํธ์จ์ด ํจํค์ง
์๊ฐ ๊ด๊ณ์ ๋ ธํธ ์ ๋ฆฌ ๋์ ๋ฌธ์ ํ์ด๋ก ๋์ฒด... ๐ข๐ข
'์๊ฒฉ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ] 9์ฅ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ณด์ ๊ตฌ์ถ (0) | 2023.02.07 |
---|---|
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ] 8์ฅ SQL ์์ฉ (0) | 2023.02.07 |
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ] 6์ฅ ํ๋ฉด ์ค๊ณ (0) | 2023.02.07 |
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ] 5์ฅ ์ธํฐํ์ด์ค ๊ตฌํ (0) | 2023.02.07 |
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ] 4์ฅ ์๋ฒํ๋ก๊ทธ๋จ ๊ตฌํ (0) | 2023.02.07 |
๋น์ ์ด ์ข์ํ ๋งํ ์ฝํ ์ธ
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค. ๐