(๊ธฐ๋Šฅ์•ˆ์ „ 23๊ฐ•) ์œ ๋‹› ํ…Œ์ŠคํŠธ / ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์˜ ๊ธฐ๋Šฅ์•ˆ์ „ ํฌ์ธํŠธ

๐Ÿ” 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)๊ณผ ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ๋˜๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ!


โœ… ์œ ๋‹› ํ…Œ์ŠคํŠธ์˜ ๊ธฐ๋Šฅ์•ˆ์ „ ํฌ์ธํŠธ

  1. ASIL ๋“ฑ๊ธ‰์— ๋”ฐ๋ผ ์ปค๋ฒ„๋ฆฌ์ง€ ์ˆ˜์ค€์ด ๋‹ฌ๋ผ์š”!
    • ASIL A: Statement or Branch Coverage
    • ASIL D: MC/DC (Modified Condition / Decision Coverage) ํ•„์ˆ˜!
  2. ๋‹จ์œ„ ๊ธฐ๋Šฅ์€ ๋…๋ฆฝ์  ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•ด์•ผ ํ•ด์š”!
    • ํ•˜๋“œ์›จ์–ด ์˜์กด์ ์ธ ํ…Œ์ŠคํŠธ๋ฅผ mock ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์œผ๋ฉด ์•ˆ ๋ผ์š”.
  3. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ์š”๊ตฌ์‚ฌํ•ญ ๊ธฐ๋ฐ˜์ด์–ด์•ผ ํ•ด์š”
    • “๊ฑ ๋Œ๋ ค๋ดค๋Š”๋ฐ ๋˜๋˜๋ฐ์š”?”๋Š” ISO26262์—์„œ ๊ธˆ์ง€์–ด์ž…๋‹ˆ๋‹ค ๐Ÿ˜…
  4. ํ…Œ์ŠคํŠธ ๋กœ๊ทธ๋Š” ๋ฌด์กฐ๊ฑด ๋‚จ๊ฒจ์•ผ ํ•ฉ๋‹ˆ๋‹ค!
    • ํ†ต๊ณผ/์‹คํŒจ ๊ธฐ๋ก, ์‹คํŒจ ์‹œ ์›์ธ ๋ถ„์„ ๋กœ๊ทธ ํ•„์ˆ˜

๐Ÿ”„ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ, ๊ทธ๋ƒฅ ๋ฌถ์–ด์„œ ํ…Œ์ŠคํŠธํ•˜๋ฉด ๋?

์•„๋‹ˆ์ฃ !
ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” ๋‘ ๋ชจ๋“ˆ ์ด์ƒ์ด ์—ฐ๊ฒฐ๋˜๋ฉด์„œ ๋ฐœ์ƒํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋ฌธ์ œ๋ฅผ ์ฐพ์•„๋‚ด๋Š” ์ž๋ฆฌ์ž…๋‹ˆ๋‹ค.
ํŠนํžˆ ๊ธฐ๋Šฅ์•ˆ์ „์—์„œ๋Š” ๋ฐ์ดํ„ฐ ํ๋ฆ„, ์˜ค๋ฅ˜ ์ „ํŒŒ, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ํฌ์ธํŠธ!

๐Ÿ› ๏ธ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์—์„œ์˜ ๊ธฐ๋Šฅ์•ˆ์ „ ์ „๋žต

ํ…Œ์ŠคํŠธ ์ „๋žต ๊ธฐ๋Šฅ์•ˆ์ „ ํฌ์ธํŠธ
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๋Œ€์žฅ, ์‹ค๋ฌด์—์„œ ์–ด๋–ป๊ฒŒ ์“ฐ์ด๋Š”์ง€ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค!

๊ทธ๋Ÿผ ๋‹ค์Œ ๊ฐ•์˜์—์„œ ๋งŒ๋‚˜์š”~ ๐ŸŽ‰

๋ฐ˜์‘ํ˜•