๐ค ํ ์คํธ ํ๋ค์ค ๊ตฌ์ฑ์์ ์๋ฒฝ ์ ๋ฆฌ |๐ ์ ์ฒ๊ธฐ ์ค๊ธฐ ๋๋น ๋ฌธ์ ํฌํจ
์์ฝ
์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ ์ํ์ ํต์ฌ ๊ฐ๋ ์ธ ํ ์คํธ ํ๋ค์ค์ ๊ตฌ์ฑ์์(ํ ์คํธ ๋๋ผ์ด๋ฒ, ์คํ , ์ํธ, ์ผ์ด์ค, ์๋๋ฆฌ์ค, ์คํฌ๋ฆฝํธ, ๋ชฉ ๊ฐ์ฒด)๋ฅผ ์๋ฒฝํ๊ฒ ์ ๋ฆฌํฉ๋๋ค. ํนํ ์ํ์ ์์ฃผ ์ถ์ ๋๋ ํ ์คํธ ๋๋ผ์ด๋ฒ์ ์คํ ์ ์ฐจ์ด์ ์ ๋ช ํํ ์ค๋ช ํฉ๋๋ค.
๐ก ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ ์ํ์์ ํ ์คํธ ๋๋ผ์ด๋ฒ(Test Driver) ์ ํ ์คํธ ์คํ (Test Stub) ์ ์ญํ ๊ณผ ์ฐจ์ด์ ์ ๋ฌป๋ ๋ฌธ์ ๋ ๋จ๊ณจ ์ถ์ ์ ํ์ ๋๋ค. ๋ ๊ฐ๋ ์ ๋ช ํํ ๊ตฌ๋ถํ๊ณ ์๊ธฐํ๋ ๊ฒ์ด ํฉ๊ฒฉ์ ํต์ฌ์ ๋๋ค.
โ๏ธ ํ ์คํธ ํ๋ค์ค(Test Harness)๋?
ํ ์คํธ ํ๋ค์ค๋ ๋จ์ ํ ์คํธ๋ ๋ชจ๋ ํ ์คํธ์์ ํ ์คํธ๋ฅผ ์คํํ๊ธฐ ์ํ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ์ํํธ์จ์ด ๋๊ตฌ๋ ํ๋ ์์ํฌ๋ฅผ ์๋ฏธํฉ๋๋ค. ํ ์คํธ ๋์ ์ปดํฌ๋ํธ๊ฐ ์ ์์ ์ผ๋ก ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด, ํ ์คํธ๋ฅผ ์ง์ํ๋ ์ฝ๋์ ๋ฐ์ดํฐ๋ฅผ ํ๋๋ก ๋ฌถ์ ์คํ ํ๊ฒฝ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
์ฃผ์ ๊ตฌ์ฑ ์์๋ก๋ ํ ์คํธ ๋๋ผ์ด๋ฒ, ํ ์คํธ ์คํ , ํ ์คํธ ์ํธ, ํ ์คํธ ์ผ์ด์ค ๋ฑ์ด ์์ผ๋ฉฐ, ์ด๋ค์ด ๋ชจ์ฌ ํ๋์ ํ ์คํธ ํ๊ฒฝ์ ๊ตฌ์ฑํฉ๋๋ค.
1. ํ ์คํธ ํ๋ค์ค์ ํต์ฌ ๊ตฌ์ฑ์์
ํ ์คํธ ๋๋ผ์ด๋ฒ (Test Driver)
ํ ์คํธ ๋๋ผ์ด๋ฒ๋ ํ ์คํธ ๋์ ๋ชจ๋์ ํธ์ถ(Call) ํ๊ณ , ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฆํ๋ ์์ ๋ชจ๋ ์ญํ ์ ํ๋ ํ ์คํธ ์ฝ๋์ ๋๋ค. ์ฃผ๋ก ์ํฅ์(Bottom-up) ํ ์คํธ ์์ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ญํ : ํ์ ๋ชจ๋(ํ ์คํธ ๋์)์ ํธ์ถํ์ฌ ํ ์คํธ๋ฅผ ์์ํ๊ณ , ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ๋ฉฐ, ๊ฒฐ๊ณผ๋ฅผ ํ์ธํฉ๋๋ค.
- ๋ฐฉํฅ:
์์ ๋ชจ๋ โ [ํ ์คํธ ๋๋ผ์ด๋ฒ]
+ํ์ ๋ชจ๋ (ํ ์คํธ ๋์)
- ํต์ฌ ํค์๋: ์ํฅ์ ํ ์คํธ, ํ์ ๋ชจ๋ ํ ์คํธ, ํธ์ถํ๋ ๋ชจ๋
ํ ์คํธ ์คํ (Test Stub)
ํ ์คํธ ์คํ ์ ํ ์คํธ ๋์ ๋ชจ๋์ด ํธ์ถํ๋ ๋ค๋ฅธ ๋ชจ๋์ ๊ธฐ๋ฅ์ ์์๋ก ๋์ฒดํ๋ ๋๋ฏธ(Dummy) ๋ชจ๋์ ๋๋ค. ์ฃผ๋ก ํํฅ์(Top-down) ํ ์คํธ ์์ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ญํ : ์์ ๋ชจ๋(ํ ์คํธ ๋์)์ด ํธ์ถํ๋ ํ์ ๋ชจ๋์ ์ญํ ์ ์์๋ก ์ํํ๋ฉฐ, ๋ฏธ๋ฆฌ ์ ํด์ง ๊ฐ์ ๋ฐํํ๊ฑฐ๋ ๊ฐ๋จํ ๋ก์ง์ ์ฒ๋ฆฌํฉ๋๋ค.
- ๋ฐฉํฅ:
์์ ๋ชจ๋ (ํ ์คํธ ๋์)
+ํ์ ๋ชจ๋ โ [ํ ์คํธ ์คํ ]
- ํต์ฌ ํค์๋: ํํฅ์ ํ ์คํธ, ์์ ๋ชจ๋ ํ ์คํธ, ํธ์ถ๋๋ ๋ชจ๋
๐ก [์ํ ํ์ด๊ธฐ] ํ ์คํธ ๋๋ผ์ด๋ฒ vs. ํ ์คํธ ์คํ ์๋ฒฝ ๋น๊ต
๋ค์ ํ ํ๋๋ก ๋ ๊ฐ๋ ์ ์๋ฒฝํ๊ฒ ์ ๋ฆฌํ ์ ์์ต๋๋ค.
๊ตฌ๋ถ | ํ ์คํธ ๋๋ผ์ด๋ฒ (Test Driver) | ํ ์คํธ ์คํ (Test Stub) |
---|---|---|
๋ชฉ์ | ํ์ ๋ชจ๋์ ํ ์คํธํ๊ธฐ ์ํด ์ฌ์ฉ | ์์ ๋ชจ๋์ ํ ์คํธํ๊ธฐ ์ํด ์ฌ์ฉ |
์ญํ | ํ ์คํธ ๋์ ๋ชจ๋์ ํธ์ถํ๋ ์์ ๋ชจ๋ ์ญํ | ํ ์คํธ ๋์ ๋ชจ๋์ ์ํด ํธ์ถ๋๋ ํ์ ๋ชจ๋ ์ญํ |
ํ ์คํธ | ์ํฅ์(Bottom-up) ํ ์คํธ | ํํฅ์(Top-down) ํ ์คํธ |
๋น์ | ์๋์ฐจ๋ฅผ ์ด์ ํ๋ ์ด์ ์(Driver) | ์ฃผ์ฐ ๋ฐฐ์ฐ๋ฅผ ๋์ ํ๋ ๋์ญ(Stub) ๋ฐฐ์ฐ |
ํ๋ฆ | ๋๋ผ์ด๋ฒ โ ํ
์คํธ ๋์(ํ์) | ํ
์คํธ ๋์(์์) โ ์คํ
|
๊ทธ ์ธ ์ฃผ์ ๊ตฌ์ฑ์์
๊ตฌ์ฑ์์ | ์ค๋ช |
---|---|
ํ ์คํธ ์ํธ | ํ ์คํธ ์ผ์ด์ค๋ค์ ์งํฉ. ํน์ ๊ธฐ๋ฅ์ด๋ ๋ชจ๋์ ๋ํ ๋ชจ๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ฌถ์ด๋์ ๋จ์์ ๋๋ค. |
ํ ์คํธ ์ผ์ด์ค | ํน์ ์๊ตฌ์ฌํญ์ ๊ฒ์ฆํ๊ธฐ ์ํ ์ ๋ ฅ๊ฐ, ์คํ ์กฐ๊ฑด, ์์ ๊ฒฐ๊ณผ ๋ฑ์ ๋ช ์ธ. ํ ์คํธ์ ์ต์ ๋จ์์ ๋๋ค. |
ํ ์คํธ ์๋๋ฆฌ์ค | ์ฌ๋ฌ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ฌถ์ด ํ๋์ **๋์ ํ๋ฆ(์คํ ๋ฆฌ)**์ ๊ฒ์ฆํ๋ ๊ฒ. (์: '๋ก๊ทธ์ธ ํ ๊ธ์ฐ๊ธฐ') |
ํ ์คํธ ์คํฌ๋ฆฝํธ | ํ ์คํธ ์ผ์ด์ค๋ฅผ ์๋ํ๋ ๋ฐฉ์์ผ๋ก ์คํํ ์ ์๋๋ก ์์ฑ๋ ์ฝ๋. |
๋ชฉ ๊ฐ์ฒด(Mock Object) | ์คํ ๊ณผ ์ ์ฌํ์ง๋ง, ํธ์ถ์ ๋ํ ์ํ๋ ํ์๊น์ง ๊ฒ์ฆํ๋ ๋ ์ ๊ตํ ๊ฐ์ฒด. (์: 'A ๋ฉ์๋๊ฐ 3๋ฒ ํธ์ถ๋์๋๊ฐ?') |
๐ ์ ์ฒ๊ธฐ ์ค๊ธฐ ๋๋น ๋ฌธ์
๋ฌธ์ | ์ํฅ์(Bottom-up) ๋จ์ ํ ์คํธ์์, ํ ์คํธ ๋์์ด ๋๋ ํ์ ๋ชจ๋์ ํธ์ถํ๊ณ , ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ๋ฉฐ, ๋ชจ๋์ ํ ์คํธ๋ฅผ ์ํํ๋ ์์ ๋ชจ๋ ์ญํ ์ ํ๋ ํ ์คํธ ํ๋ค์ค ๊ตฌ์ฑ์์๋ ๋ฌด์์ธ๊ฐ? |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |
๋ฌธ์ | ํํฅ์(Top-down) ๋จ์ ํ ์คํธ์์, ํ ์คํธ ๋์์ด ๋๋ ์์ ๋ชจ๋์ด ํธ์ถํ๋ ํ์ ๋ชจ๋์ ๊ธฐ๋ฅ์ ์์๋ก ๋์ฒดํ๋ ๋๋ฏธ(Dummy) ๋ชจ๋์ ๋ฌด์์ด๋ผ๊ณ ํ๋๊ฐ? |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |
๋ฌธ์ | ํ ์คํธ๋ฅผ ์ํ ์ ๋ ฅ๊ฐ, ์คํ ์กฐ๊ฑด, ์์ ๊ฒฐ๊ณผ์ ์งํฉ์ผ๋ก, ํ ์คํธ์ ๊ฐ์ฅ ์์ ๋จ์๋ฅผ ์๋ฏธํ๋ ์ฉ์ด๋ ๋ฌด์์ธ๊ฐ? |
๋ต๋ณ | |
์ ๋ต | ์ ๋ต ๋ณด๊ธฐ |