๐ 23๊ฐ: ์ ๋ ํ ์คํธ / ํตํฉ ํ ์คํธ์ ๊ธฐ๋ฅ์์ ํฌ์ธํธ
์๋
ํ์ธ์, ๊ธฐ๋ฅ์์ ์ค๋ฌด์ ์ฌ๋ฌ๋ถ!
์ค๋์ ๊ฐ๋ฐ์๋ผ๋ฉด ๋๊ตฌ๋ ํ๋ ์ ๋(Unit) ํ
์คํธ์ ํตํฉ(Integration) ํ
์คํธ์
๊ธฐ๋ฅ์์ ์ด ์ด๋ป๊ฒ ๋
น์๋ค์ด์ผ ํ๋์ง ์ฝ ์ง์ด๋ณด๊ฒ ์ต๋๋ค.
ํ
์คํธ, ๊ทธ๋ฅ ์ ๋๋ฉด ๋๋ ๊ฑฐ ์๋๋๊ณ ์?
๊ทธ ์๊ฐ, ์ค๋๋ถ๋ก ์์ ํ ๋ฐ๊ฟ๋๋ฆด๊ฒ์! ๐
“ํ
์คํธ ํ์ผ๋๊น ๋์ฃ ?”
๊ทธ๋ ๊ฒ ๋งํ๊ณ ์ถ์ ๋ง์, ์ดํดํ์ง๋ง!
๊ธฐ๋ฅ์์ ์ ๊ทธ๋ฅ ํ
์คํธ๊ฐ ์๋, ๊ทผ๊ฑฐ ์๋ ์์ ํ
์คํธ๋ฅผ ์๊ตฌํฉ๋๋ค.
๊ทธ๋ผ ์ค๋๋ ๊ฐ๋ณ๊ณ ์ฆ๊ฒ๊ฒ, ํ์ง๋ง ์์ฐจ๊ฒ ์ถ๋ฐํด๋ณผ๊น์? ๐
๐งช ์ ๋ ํ ์คํธ vs ํตํฉ ํ ์คํธ: ๊ธฐ๋ฅ์์ ๊ด์ ์์ ๋ณด๋ฉด?
| ํญ๋ชฉ | ์ ๋ ํ ์คํธ (Unit Test) | ํตํฉ ํ ์คํธ (Integration Test) |
|---|---|---|
| ๋ชฉ์ | SW ๋จ์ ๊ธฐ๋ฅ์ ์ ํ์ฑ ๊ฒ์ฆ | ๋ชจ๋ ๊ฐ ์ฐ๋๊ณผ ์ธํฐํ์ด์ค ๊ฒ์ฆ |
| ๋ฒ์ | ํจ์, ํด๋์ค, ์๊ณ ๋ฆฌ์ฆ | SW-SW, SW-HW ์ธํฐํ์ด์ค |
| ๋ํ ๋๊ตฌ | CppUTest, VectorCAST | CANoe, Tessy, LDRA |
| ๊ธฐ๋ฅ์์ ํฌ์ธํธ | ์๊ตฌ์ฌํญ ๊ธฐ๋ฐ ํ ์คํธ, ์ปค๋ฒ๋ฆฌ์ง (MC/DC) | ๋ฐ์ดํฐ ์ ํ, Fault ์ ํ ํ์ธ |
| ์ค์ ์ฌ๋ก | assert๋ง ์๋ ํ ์คํธ, ์กฐ๊ฑด ๋น ์ง ์ปค๋ฒ๋ฆฌ์ง | ํ์ด๋ฐ ๋ฏธํ์ธ, ์ค๋ฅ ํธ๋ค๋ง ๋๋ฝ |
๊ธฐ๋ฅ์์ ์ ๊ทธ๋ฅ "์ ๋๋?"๊ฐ ์๋๋ผ "๊ณ ์ฅ ๋๋ ๊ด์ฐฎ๋?"๋ฅผ ํ ์คํธํ๋ ๊ฒ๋๋ค!
โ ์ ๋ ํ ์คํธ, ์ ์ค์ํ ๊น?
์ ๋ ํ
์คํธ๋ ์ํํธ์จ์ด ๊ตฌ์ฑ์์(ํจ์, ๋ชจ๋ ๋ฑ) ๋จ์์์ ์ํํ๋ ํ
์คํธ๋ก,
์๊ตฌ์ฌํญ ์ถฉ์กฑ ์ฌ๋ถ + ์๋ฌ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ๋ฏธ๋ฆฌ ์ก๋ ์ญํ ์ ํฉ๋๋ค.
๐ ๊ธฐ๋ฅ์์ ํฌ์ธํธ in ์ ๋ ํ ์คํธ
| ํญ๋ชฉ | ๊ธฐ๋ฅ์์ ๊ณ ๋ ค ํฌ์ธํธ |
|---|---|
| ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง | ASIL B ์ด์์์๋ Statement + Branch, ASIL D๋ MC/DC๊น์ง! |
| ๊ฒฝ๊ณ๊ฐ ํ ์คํธ | "0, -1, Max+1" ๊ผญ ๋ฃ์ด์ฃผ์ธ์! ๋ฒ๊ทธ๋ ๊ฒฝ๊ณ์์ ์ถค์ถฅ๋๋ค ๐ |
| Fault Injection | ASIL C/D์์๋ ์์ธ ์ํฉ ํ ์คํธ ํ์! ์: ์ผ์ ๋ฏธ์๋ต ์ ๋์ |
| ์ ์ ๋ถ์ ์ฐ๊ณ | MISRA-C, AUTOSAR C++ ์ฒดํฌ๋ ํ์! |
๐ก ํ: ์ ๋ ํ ์คํธ์๋ traceability! SSR(Software Safety Requirement)๊ณผ ์ด๋ป๊ฒ ์ฐ๊ฒฐ๋๋์ง ๋ช ํํ๊ฒ!
โ ์ ๋ ํ ์คํธ์ ๊ธฐ๋ฅ์์ ํฌ์ธํธ
- ASIL ๋ฑ๊ธ์ ๋ฐ๋ผ ์ปค๋ฒ๋ฆฌ์ง ์์ค์ด ๋ฌ๋ผ์!
- ASIL A: Statement or Branch Coverage
- ASIL D: MC/DC (Modified Condition / Decision Coverage) ํ์!
- ๋จ์ ๊ธฐ๋ฅ์ ๋
๋ฆฝ์ ํ
์คํธ ๊ฐ๋ฅํด์ผ ํด์!
- ํ๋์จ์ด ์์กด์ ์ธ ํ ์คํธ๋ฅผ mock ์ฒ๋ฆฌํ์ง ์์ผ๋ฉด ์ ๋ผ์.
- ํ
์คํธ ์ผ์ด์ค๋ ์๊ตฌ์ฌํญ ๊ธฐ๋ฐ์ด์ด์ผ ํด์
- “๊ฑ ๋๋ ค๋ดค๋๋ฐ ๋๋๋ฐ์?”๋ ISO26262์์ ๊ธ์ง์ด์ ๋๋ค ๐
- ํ
์คํธ ๋ก๊ทธ๋ ๋ฌด์กฐ๊ฑด ๋จ๊ฒจ์ผ ํฉ๋๋ค!
- ํต๊ณผ/์คํจ ๊ธฐ๋ก, ์คํจ ์ ์์ธ ๋ถ์ ๋ก๊ทธ ํ์
๐ ํตํฉ ํ ์คํธ, ๊ทธ๋ฅ ๋ฌถ์ด์ ํ ์คํธํ๋ฉด ๋?
์๋์ฃ !
ํตํฉ ํ
์คํธ๋ ๋ ๋ชจ๋ ์ด์์ด ์ฐ๊ฒฐ๋๋ฉด์ ๋ฐ์ํ๋ ์ธํฐํ์ด์ค ๋ฌธ์ ๋ฅผ ์ฐพ์๋ด๋ ์๋ฆฌ์
๋๋ค.
ํนํ ๊ธฐ๋ฅ์์ ์์๋ ๋ฐ์ดํฐ ํ๋ฆ, ์ค๋ฅ ์ ํ, ์์ธ ์ฒ๋ฆฌ๊ฐ ํฌ์ธํธ!
๐ ๏ธ ํตํฉ ํ ์คํธ์์์ ๊ธฐ๋ฅ์์ ์ ๋ต
| ํ ์คํธ ์ ๋ต | ๊ธฐ๋ฅ์์ ํฌ์ธํธ |
|---|---|
| Interface Test | ์์ ๊ด๋ จ ์ ํธ(์: fault flag)์ ์ ์ก ์ฌ๋ถ์ ํด์ ์ ํ๋ ํ์ธ |
| Error Handling Test | ์๋ฌ ๋ฐ์ ์ ๋ชจ๋ ๊ฐ ์ฑ ์ ๋ถ๋ด ๋ฐ ์ฒ๋ฆฌ ํ๋ฆ ํ์ธ |
| Watchdog/Timeout Test | ํต์ ์คํจ, ์๋ต ์ง์ฐ ๋ฑ ํ์ด๋ฐ ๊ด๋ จ ์คํจ ์กฐ๊ฑด ๊ฒ์ฆ |
| ์ํ ์ ์ด ํ ์คํธ | ์ฌ๋ฌ ๋ชจ๋์ด ํ๋ ฅํ์ฌ ํน์ ์ํ๋ฅผ ์ ๋/์ฐจ๋จํ๋ ํ๋ฆ ๊ฒ์ฆ |
๐ข ํนํ ASIL C ์ด์์ ์ธํฐํ์ด์ค ์ ๋ขฐ์ฑ์ด ์น๋ช ์ ์ ๋๋ค. "๊ฐ์ ์ฃผ๋ ์ชฝ"๋ณด๋ค "๋ฐ๋ ์ชฝ"์ด ๋ ๊ผผ๊ผผํด์ผ ํด์!
๐ ๏ธ ํตํฉ ํ ์คํธ์ ๊ธฐ๋ฅ์์ ํฌ์ธํธ
์ด์ ์ง์ง ์ค๋ฌด ๋๋ ๋ฉ๋๋ค!
ํตํฉ ํ
์คํธ์์๋ ‘๋ชจ๋ ๊ฐ ์ฐ๊ฒฐ’์ด ํต์ฌ์ด๊ณ , ๊ธฐ๋ฅ์์ ์์๋ ๊ทธ ์ฐ๊ฒฐ์ด ์ผ๋ง๋ ์์ ํ๊ฒ ์ด์ด์ง๋์ง๊ฐ ํฌ์ธํธ์์.
๐ ํต์ฌ 4๊ฐ์ง ํฌ์ธํธ
| ํฌ์ธํธ | ์ค๋ช |
|---|---|
| 1. ์ธํฐํ์ด์ค ์ ํฉ์ฑ | ๋ฐ์ดํฐ ํ์ , ๊ฐ ๋ฒ์, ํ์ด๋ฐ ์ฒดํฌ |
| 2. ์ค๋ฅ ์ ํ ๋ฐฉ์ง | ํ ๋ชจ๋์ ์ค๋ฅ๊ฐ ๋ค๋ฅธ ๊ณณ์ ์ํฅ ์ ์ฃผ๋๋ก |
| 3. Fault Injection | ์ผ๋ถ๋ฌ ์ค๋ฅ ๋ฐ์์์ผ ์์คํ ๋ฐ์ ํ์ธ |
| 4. ์ง๋จ ๊ธฐ๋ฅ ๊ฒ์ฆ | ์ค๋ฅ ๋ฐ์ ์ ์ง๋จ ์ฝ๋๊ฐ ์ ๋จ๋์ง ํ์ธ |
๐ฏ ์ค์ ์ฌ๋ก ์์
๐ “๋ธ๋ ์ดํฌ ์์คํ ๊ณผ ์ฐจ๋์๋ ์ ๋ณด ์ฐ๋ ์ค๋ฅ”
๋ฌธ์ : ์๋ ์ผ์ ์ ๋ณด๊ฐ NULL ์ํ์ธ๋ฐ๋ ํ
์คํธ ํต๊ณผ
์ด์ : ์ ๋ ํ
์คํธ๋ ๋ค ํต๊ณผํ์ง๋ง, ํตํฉ ์ ์ผ์ ์ธํฐํ์ด์ค ๊ฒ์ฆ์ด ์์์!
๊ฒฐ๊ณผ: ์์ ์๊ตฌ์ฌํญ ์๋ฐ → ๊ณ ๊ฐ์ฌ ์ฌ์ฌ์์ ์น๋ช
์ ๊ฒฐํจ
๐ ํด๊ฒฐ ๋ฐฉ๋ฒ:
- Fault Injection ํ ์คํธ ํฌํจ
- ์ธํฐํ์ด์ค Null-check ์ถ๊ฐ
- ํตํฉ ํ ์คํธ ์ผ์ด์ค์ ์ง๋จ ๊ฒ์ฆ ์ถ๊ฐ
๐ก๏ธ ์ค๋ฌด์๊ฐ ๊ผญ ์ฑ๊ฒจ์ผ ํ ๊ธฐ๋ฅ์์ ์ฒดํฌ๋ฆฌ์คํธ
โ
ํ
์คํธ ๊ณํ์์ ASIL ๋ฐ์ํ๋์?
โ
Safety ๊ด๋ จ ์ธํฐํ์ด์ค๋ ํตํฉ ํ
์คํธ์ ํฌํจ๋๋์?
โ
Fault Injection ์๋๋ฆฌ์ค๋ ์คํ ๊ฐ๋ฅํ๊ฐ์?
โ
ํ
์คํธ ๊ฒฐ๊ณผ๋ traceability๋ก ์ฐ๊ฒฐ๋๋์?
โ
์คํจํ ํ
์คํธ๋ ๋ฆฌ๋ทฐ ํ ๋์ํ๋์?
๐ ํ ์คํธ๋ '๊ธฐ๋ฅ์์ ํ๋'์ ๋๋ค.
์ธ์ฆ ์ฌ์ฌ์์ ๊ฐ์ฅ ๋จผ์ ๋ณด๋ ๊ฒ ํ ์คํธ ๊ฒฐ๊ณผ๋ผ๋ ๊ฑฐ, ์๊ณ ๊ณ์์ฃ ?
๐ ์ค๋์ ์์ฝ!
โ
์ ๋ ํ
์คํธ๋ ๊ธฐ๋ฅ ์ ํ์ฑ + ASIL ์์ค ์ปค๋ฒ๋ฆฌ์ง
โ
ํตํฉ ํ
์คํธ๋ ๋ชจ๋ ์ฐ๋ + ์ค๋ฅ ์ ํ ์ฐจ๋จ
โ
๋ ๋ค ์ํด์ผ ์ง์ง ๊ธฐ๋ฅ์์ ํ
์คํธ!
๐ ๋ค์ ๊ฐ์ ์๊ณ !
“FMEA, FTA, DFA – ๊ณ ์ ๊ธฐ๋ฒ์ ํ๋์ ํ์ฉ”
์ค๋๋๋ค๊ณ ๋ฌด์ํ๋ฉด ์ ๋ผ์!
๊ธฐ๋ฅ์์ ๋ถ์์ 3๋์ฅ, ์ค๋ฌด์์ ์ด๋ป๊ฒ ์ฐ์ด๋์ง ์๋ ค๋๋ฆฝ๋๋ค!
๊ทธ๋ผ ๋ค์ ๊ฐ์์์ ๋ง๋์~ ๐
