๐Ÿงช 17ํšŒ์ฐจ: SWE.4 – ๋‹จ์œ„ ์‹œํ—˜์€ ๊ฐœ๋ฐœ์ž์˜ ์–‘์‹ฌ์ž…๋‹ˆ๋‹ค!

“์ฝ”๋“œ์•ผ, ๋„ˆ ์ œ๋Œ€๋กœ ์ผํ•˜๋Š” ๊ฑฐ ๋งž๋‹ˆ?”
๐Ÿค– ๋‹จ์œ„ ์‹œํ—˜(Unit Test)์€ ์šฐ๋ฆฌ๊ฐ€ ์ฝ”๋“œ์—๊ฒŒ ์ง„์‹ค์„ ๋ฌป๋Š” ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค!


๐ŸŽฏ SWE.4๋ž€?

SWE.4๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋‹จ์œ„ ์‹œํ—˜(Unit Verification) ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์‰ฝ๊ฒŒ ๋งํ•ด, “์šฐ๋ฆฌ๊ฐ€ ์ง  ์ฝ”๋“œ ๋‹จ์œ„(ํ•จ์ˆ˜๋‚˜ ๋ชจ๋“ˆ)๊ฐ€ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ”์ด์ฃ !


๐Ÿง  ์™œ ์ค‘์š”ํ• ๊นŒ์š”?

  • “์ด๊ฑฐ ๋นŒ๋“œ๋˜๋‹ˆ๊นŒ ๋˜๋Š” ๊ฑฐ ์•„๋‹˜?” → โŒ ํฐ ์ฐฉ๊ฐ!
  • “์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ์ž˜ ๋ผ์š”!” → ๐Ÿš— ์‹ค์ฐจ์—์„œ ํ„ฐ์ง€๋ฉด ์–ด์ฉŒ๋ ค๊ณ ์š”!

๋‹จ์œ„ ์‹œํ—˜์€…

  • ๐Ÿ’ฃ ์ž ์žฌ์  ๋ฒ„๊ทธ๋ฅผ ์ดˆ๊ธฐ์— ์ œ๊ฑฐ
  • ๐Ÿ’ก ๊ธฐ๋Šฅ๋ณ„ ์ฑ…์ž„ ๋ถ„๋ฆฌ๊ฐ€ ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
  • ๐Ÿ” ์ •์  ๋ถ„์„ + MISRA-C ๊ฒ€์‚ฌ๋กœ ์‹ ๋ขฐ๋„ UP!

โš™๏ธ SWE.4์—์„œ ํ•ด์•ผ ํ•  ํ•ต์‹ฌ ํ™œ๋™๋“ค

โœ… 1. ๋‹จ์œ„ ์‹œํ—˜ ๊ณ„ํš ์ˆ˜๋ฆฝ

  • ์‹œํ—˜ ๋Œ€์ƒ ์ •์˜ (ํ•จ์ˆ˜/ํด๋ž˜์Šค/๋ชจ๋“ˆ)
  • ์‹œํ—˜ ์ „๋žต ์ˆ˜๋ฆฝ (Black-box, White-box)

โœ… 2. ์‹œํ—˜ ์ผ€์ด์Šค ์„ค๊ณ„

  • ์ •์ƒ/์ด์ƒ ์ž…๋ ฅ ๋ชจ๋‘ ๊ณ ๋ ค
  • ๊ฒฝ๊ณ„ ์กฐ๊ฑด, ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋„ ๋†“์น˜์ง€ ์•Š๊ธฐ!

โœ… 3. ์‹œํ—˜ ์ˆ˜ํ–‰ & ๊ฒฐ๊ณผ ๊ธฐ๋ก

  • ์‹œํ—˜ ๋„๊ตฌ๋ฅผ ์ด์šฉํ•ด ์ž๋™ ์‹œํ—˜ (ex. Google Test, Tessy, VectorCAST)
  • ์‹œํ—˜ ๊ฒฐ๊ณผ๋Š” ๋ฆฌํฌํŠธ๋กœ ๋ณด๊ด€ ๐Ÿ“„

๐Ÿ” ์ •์  ๋ถ„์„ vs. ๋™์  ์‹œํ—˜?

๊ตฌ๋ถ„ ์„ค๋ช… ์˜ˆ์‹œ
์ •์  ๋ถ„์„ ์‹คํ–‰ ์—†์ด ์ฝ”๋“œ ๊ฒ€ํ†  MISRA-C ๊ทœ์น™ ์œ„๋ฐ˜ ๊ฒ€์‚ฌ, ์ฝ”๋“œ ๋ณต์žก๋„ ๋ถ„์„
๋™์  ์‹œํ—˜ ์‹ค์ œ ์‹คํ–‰์„ ํ†ตํ•œ ์‹œํ—˜ ์ž…๋ ฅ → ํ•จ์ˆ˜ ์‹คํ–‰ → ์ถœ๋ ฅ ํ™•์ธ

๐ŸŽฏ ์ •์  ๋ถ„์„์€ SWE.4์—์„œ ์•„์ฃผ ์ค‘์š”ํ•œ ์ „์ œ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค!


๐Ÿšฆ ์ •์  ๋ถ„์„๋„ ์‹œํ—˜์ด๋‹ค!

์ž๋™์ฐจ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋Œ€๋ถ€๋ถ„ MISRA-C ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœ๋˜์ฃ .
SWE.4์—์„œ๋Š” ๋‹ค์Œ์ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค:

  • ๐Ÿ” MISRA-C ๋ฃฐ ์ฒดํฌ (e.g. "goto ์“ฐ์ง€ ๋งˆ!", "์ „์—ญ ๋ณ€์ˆ˜ ๋‚จ์šฉ ๊ธˆ์ง€")
  • ๐Ÿงน ์ฝ”๋“œ ๋ณต์žก๋„ ์ธก์ • (Cyclomatic Complexity < 10 ์œ ์ง€ ๊ถŒ์žฅ)
  • ๐Ÿšจ Code Smell ์ œ๊ฑฐ (Dead Code, Unreachable Code ๋“ฑ)

"์ฝ”๋”ฉ์€ ์˜ˆ์ˆ ์ด๊ณ , ์ •์  ๋ถ„์„์€ ๋ฏธ์ˆ  ์„ ์ƒ๋‹˜์ด๋‹ค."


๐Ÿงฑ SWE.4์˜ ํ˜„์‹ค์ ์ธ ์–ด๋ ค์›€?

  • ๋‹จ์œ„ ์‹œํ—˜ ์ฝ”๋“œ ์ž‘์„ฑ์ด ๊ท€์ฐฎ๊ณ  ์˜ค๋ž˜ ๊ฑธ๋ฆผ
  • Legacy ์ฝ”๋“œ์—๋Š” ํ…Œ์ŠคํŠธ ํฌ์ธํŠธ ์ž์ฒด๊ฐ€ ์—†์Œ
  • ์‹œํ—˜ ๊ฒฐ๊ณผ๋ฅผ ํ˜•์‹์ ์œผ๋กœ๋งŒ ๋ณด๊ณ ํ•จ (← ์•„์ฃผ ์œ„ํ—˜!)

๐Ÿงฏ ๊ทธ๋ž˜์„œ ์–ด๋–ป๊ฒŒ ๋Œ€์‘ํ• ๊นŒ?

๋ฆฌ์†Œ์Šค ๋ถ€์กฑํ•œ ํšŒ์‚ฌ๋ผ๋ฉด?

  • ์ตœ์†Œํ•œ ์ค‘์š” ๋ชจ๋“ˆ๋ถ€ํ„ฐ ์‹œํ—˜ (์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ์ „๋žต)
  • ์ •์  ๋ถ„์„ ์ž๋™ํ™” ํˆด ๋„์ž… (e.g. Polyspace, QAC, PC-lint)
  • ์‹œํ—˜ ์ฝ”๋“œ ์ž‘์„ฑ์€ ๋ฆฌ๋ทฐ ๋Œ€์ƒ ํฌํ•จ! (์ฝ”๋“œ ํ’ˆ์งˆ์ด ์ƒ๋ช…)

๐Ÿ’ฌ ํ˜„์—…์—์„œ ์ž์ฃผ ํ•˜๋Š” ์งˆ๋ฌธ๋“ค

โ“ “์‹œํ—˜ ์ฝ”๋“œ๋„ ๋ฆฌ๋ทฐํ•ด์•ผ ํ•˜๋‚˜์š”?”
โœ”๏ธ ๋„ค, ์‹œํ—˜ ์ฝ”๋“œ๋„ ๊ฒฐ๊ตญ ์ œํ’ˆ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

โ“ “์ •์  ๋ถ„์„์ด ๋ถˆํ•ฉ๊ฒฉ์ด๋ฉด ๊ธฐ๋Šฅ์€ ์ž˜ ๋ผ๋„ NG์ธ๊ฐ€์š”?”
โœ”๏ธ ๋„ค, ๊ธฐ๋Šฅ์ด ์ž˜ ๋˜์–ด๋„ ์ฝ”๋“œ ๊ทœ์น™ ์œ„๋ฐ˜์ด๋ฉด ๋ถˆํ•ฉ๊ฒฉ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ์–ด์š”.

โ“ “TDD(ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ)๋Š” ๋„ˆ๋ฌด ์ด์ƒ์ ์ธ ๊ฑฐ ์•„๋‹Œ๊ฐ€์š”?”
โœ”๏ธ ์ด์ƒ์ ์ด์ง€๋งŒ, ํ•ต์‹ฌ ๋ชจ๋“ˆ์—๋Š” ์ ๊ทน ์ ์šฉํ• ์ˆ˜๋ก ์œ ์ง€๋ณด์ˆ˜ ํšจ์œจ์ด ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค!


๐Ÿงช SWE.4 ์š”์•ฝ ์ •๋ฆฌ!

ํ•ญ๋ชฉ ๋‚ด์šฉ
๋ฌด์—‡์„? ํ•จ์ˆ˜, ๋ชจ๋“ˆ ๋‹จ์œ„๋กœ ์‹œํ—˜
์–ด๋–ป๊ฒŒ? ์‹œํ—˜ ๊ณ„ํš → ์‹œํ—˜ ์ผ€์ด์Šค ์„ค๊ณ„ → ์‹œํ—˜ ์ˆ˜ํ–‰
๋„๊ตฌ๋Š”? Tessy, VectorCAST, Google Test ๋“ฑ
ํ•ต์‹ฌ์€? ์ •์  ๋ถ„์„ + MISRA-C ๊ฒ€์‚ฌ + ๋‹จ์œ„ ์‹œํ—˜ ์ฝ”๋“œ ์ž‘์„ฑ

๐Ÿ”ฎ ๋‹ค์Œ ํšŒ์ฐจ ์˜ˆ๊ณ : 18ํšŒ์ฐจ – SWE.5, ์†Œํ”„ํŠธ์›จ์–ด ํ†ตํ•ฉ ์‹œํ—˜

์ด์ œ ๋‹จ์œ„ ์‹œํ—˜์„ ๋๋ƒˆ๋‹ค๋ฉด?
๋ชจ๋“ˆ๋“ค์ด ์ž˜ ์–ด์šธ๋ฆฌ๋Š”์ง€, ํ†ตํ•ฉ ์‹œํ—˜์œผ๋กœ ํ™•์ธํ•ด์•ผ๊ฒ ์ฃ !

“ํ˜ผ์ž ์ž˜ํ•˜๋˜ ๋ชจ๋“ˆ๋„, ๋ชจ์ด๋ฉด ์‹ธ์šด๋‹ค?!”

๋‹ค์Œ ํŽธ์—์„œ๋Š” SWE.5 – ์†Œํ”„ํŠธ์›จ์–ด ํ†ตํ•ฉ ์‹œํ—˜์˜ ๋‚œ์ด๋„์™€ ์ฆ๊ฑฐ์šด(?) ํ˜„์‹ค์„ ํ•จ๊ป˜ ํ’€์–ด๋ด…๋‹ˆ๋‹ค!

+ Recent posts