๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์ž๊ฒฉ์ฆ ์žˆ์œผ๋ฉด ์ข‹์ง€/์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ

[์‹ค๊ธฐ] ์ดˆ์ดˆ์ดˆ์š”์•ฝ - 7์žฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ ๊ด€๋ฆฌ

by ์ž„๋ฆฌ๋‘ฅ์ ˆ 2024. 10. 16.
๋ฐ˜์‘ํ˜•

์ธ๋„ค์ผ ์ง์ ‘ ๋งŒ๋“ค์–ด๋”ฐ ใ…‹ใ…‹

 


 

๋”๋ณด๊ธฐ

์ฑ… ์ž์ฒด์—์„œ A, B ์ด๋Ÿฐ ์‹์œผ๋กœ ์ถœ์ œ ์ •๋„๋ฅผ ํ‘œ์‹œํ•˜๊ณ , ์ถœ์ œ๋œ ๋…„๋„ ์ˆ˜๋„ ๋‚˜์˜จ๋‹ค. ํ‘œ์‹œ๋œ ๋Œ€๋กœ ํ•œ ๋ฒˆ ์ด์ƒ ์ถœ์ œ๋Š” ํšŒ์ƒ‰ ๋ฐฐ๊ฒฝ,  ๋‘ ๋ฒˆ์ด์ƒ ๋ฐ ์ง์ ‘ ์ถœ์ œ๋ฅผ ํ™•์ธํ•œ ๊ฒฝ์šฐ, ๋…ธ๋ž‘ ๋ฐฐ๊ฒฝ์œผ๋กœ ํ‘œ์‹œํ•  ์˜ˆ์ •์ด๋‹ค. ๋˜ํ•œ ํ‚ค์›Œ๋“œ ์œ„์ฃผ๋กœ ์ตœ๋Œ€ํ•œ ๊ธฐ์–ตํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๊ธฐ๋กํ•  ์˜ˆ์ •์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ดํ•ดํ•˜๊ธฐ ํž˜๋“ค ์ˆ˜๋„์žˆ์ง€๋งŒ ์ตœ๋Œ€ํ•œ ์‰ฝ๊ฒŒ ์จ๋ณผ ์˜ˆ์ •์ด๋‹ค...


์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ์˜ ๊ธฐ๋ณธ์›๋ฆฌ

  • ํŒŒ๋ ˆํ†  ๋ฒ•์น™ Pareto Principle
    ์•ฑ 20% ์ฝ”๋“œ์—์„œ ์ „์ฒด ๊ฒฐํ•จ์˜ 80%์ด ๋ฐœ๊ฒฌ ๋œ๋‹ค. 
  • ์‚ด์ถฉ์ œ ํŒจ๋Ÿฌ๋…์Šค Pesticide Paradox
    ๋™์ผ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ๋ฐ˜๋ณตํ•˜๋ฉด ๊ฒฐํ•จ์ด ๋ฐ˜๋ณต๋˜์ง€ ์•Š๋Š” ํ˜„์ƒ
  • ์˜ค๋ฅ˜-๋ถ€์žฌ์˜ ๊ถค๋ณ€ Absence of Eroors Fallacy
    ๊ฒฐํ•จ ๋ชจ๋‘ ์ œ๊ฑฐํ•ด๋„ ์‚ฌ์šฉ์ž ์š”๊ตฌ์‚ฌํ•ญ ๋ชจ๋‘ ๋งŒ์กฑ ๋ชปํ•˜๋ฉด ํ’ˆ์งˆ์ด ๋†’๋‹ค ๋งํ•  ์ˆ˜ ์—†์Œ.

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์—ฌ๋ถ€์— ๋”ฐ๋ฅธ ํ…Œ์ŠคํŠธ

  • ์ •์  ํ…Œ์ŠคํŠธ
    ๋ช…์„ธ์„œ, ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๋ถ„์„. 
    ์›Œํฌ์Šค๋ฃจ, ์ธ์ŠคํŽ™์…˜, ์ฝ”๋“œ ๊ฒ€์‚ฌ 
  • ๋™์  ํ…Œ์ŠคํŠธ
    ์‹คํ–‰ํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ์ฐพ๋Š” ํ…Œ์ŠคํŠธ. ๋ชจ๋“ ๋‹จ๊ณ„์—์„œ ํ…Œ์ŠคํŠธ 
    • ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ
    • ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ
      •  

ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ

์ข…๋ฅ˜

  • ๊ธฐ์ดˆ ๊ฒฝ๋กœ ๊ฒ€์‚ฌ Base Path Testing (๋Œ€ํ‘œ)
    ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ค๊ณ„์ž๊ฐ€ ์ ˆ์ฐจ์  ์„ค๊ณ„ ๋…ผ๋ฆฌ์  ๋ณต์žก์„ฑ์„ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ• 
  • ์ œ์–ด ๊ตฌ์กฐ ๊ฒ€์‚ฌ Control Structure Testing
    • ์กฐ๊ฑด ๊ฒ€์‚ฌ - ๋…ผ๋ฆฌ์  ์กฐ๊ฑด ํ…Œ์ŠคํŠธ
    • ๋ฃจํ”„ ๊ฒ€์‚ฌ - ๋ฐ˜๋ณต๊ตฌ์กฐ์— ์ดˆ์ 
    • ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๊ฒ€์‚ฌ - ๋ณ€์ˆ˜์˜ ์ •์˜์™€ ์œ„์น˜์— ์ดˆ์  

๊ฒ€์ฆ ๊ธฐ์ค€

  • ๋ฌธ์žฅ ๊ฒ€์ฆ ๊ธฐ์ค€ Statement Coverage : ๋ชจ๋“  ๊ตฌ๋ฌธ ํ•œ ๋ฒˆ ์ด์ƒ ์ˆ˜ํ–‰๋˜๋„๋ก
  • ๋ถ„๊ธฐ ๊ฒ€์ฆ ๊ธฐ์ค€ Branch Coverage : ๋ชจ๋“  ์กฐ๊ฑด๋ฌธ ์กฐ๊ฑด์‹ True or False, ๊ฒฐ์ • ๊ฒ€์ฆ ๊ธฐ์ค€ Decision Coverage
  • ์กฐ๊ฑด ๊ฒ€์ฆ ๊ธฐ์ค€ Condition Coverage : ์กฐ๊ฑด๋ฌธ ๊ฐœ๋ณ„ ์กฐ๊ฑด์‹ ๊ฒฐ๊ณผ๊ฐ€ True or False
  • ๋ถ„๊ธฐ ์กฐ๊ฑด ๊ธฐ์ค€ Branch/Condition Coverage : ๋ถ„๊ธฐ, ์กฐ๊ฑด ๋‘˜๋‹ค ๋งŒ์กฑ True or False ๋”ฐ๋ผ ์ž…๋ ฅ๋ฐ์ดํ„ฐ ๊ตฌ๋ถ„

๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ

๊ฐ ๊ธฐ๋Šฅ์ด ์™„์ „ํžˆ ์ž‘๋™๋˜๋Š” ๊ฒƒ์„ ์ž…์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ, == ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ

์š”๊ตฌ์‚ฌํ•ญ ๋ช…์„ธ์„œ๋ฅผ ๋ณด๋ฉด์„œ ํ…Œ์ŠคํŠธ

๊ตฌํ˜„๋œ ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธ, SW interface๋ฅผ ํ†ตํ•ด ์‹ค์‹œ

 

์ข…๋ฅ˜

  • ๋™์น˜ ๋ถ„ํ•  ๊ฒ€์‚ฌ Equivalence Partitioning Testing
    ์กฐ๊ฑด์— ๋งž๋Š” ์ž…๋ ฅ ์ž๋ฃŒ, ์•ˆ๋งž๋Š” ์ž๋ฃŒ ๊ฐœ์ˆ˜ ๊ท ๋“ฑ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค / ๋™๋“ฑ ๋ถ„ํ•  ๊ธฐ๋ฒ• or ๋™์น˜ ํด๋ž˜์Šค ๋ถ„ํ•ด
  • ๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„ Boundary Value Analysis
    ๊ฒฝ๊ณ„๊ฐ’์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ๋  ํ™•๋ฅ  ๋†’๋‹ค๋Š” ์ ์„ ์ด์šฉ, ์ž…๋ ฅ ์กฐ๊ฑด์˜ ๊ฒฝ๊ณ„๊ฐ’์„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ ์ •
  • ์›์ธ-ํšจ๊ณผ ๊ทธ๋ž˜ํ”„ ๊ฒ€์‚ฌ Cause-Effect Graphing Testing
    ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ๊ด€๊ณ„์™€ ์ถœ๋ ฅ์— ์˜ํ•ญ์„ ๋ฏธ์น˜๋Š” ์ƒํ™ฉ์„ ๋ถ„์„, ํšจ์šฉ์„ฑ ๋†’์€ ํ…Œ์ดํŠธ ์ผ€์ด์Šค ์„ ์ •
  • ์˜ค๋ฅ˜ ์˜ˆ์ธก ๊ฒ€์‚ฌ Error Guessing
    ๊ณผ๊ฑฐ์˜ ๊ฒฝํ—˜, ๊ฐ๊ฐ์œผ๋กœ ํ…Œ์ŠคํŠธ 
  • ๋น„๊ต ๊ฒ€์‚ฌ Comparison Testing
    ์—ฌ๋Ÿฌ ๋ฒ„์ „ ํ”„๋กœ๊ทธ๋žจ์— ๋™์ผ ํ…Œ์ŠคํŠธ ์ž๋ฃŒ ์ œ๊ณต, ๋™์ผ ๊ฒฐ๊ณผ ์ถœ๋ ฅ๋˜๋Š”์ง€ ํ…Œ์ŠคํŠธ 

(์˜ˆ์‹œ ๋ฌธ์ œ)

๋”๋ณด๊ธฐ

A ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ‰๊ฐ€์ ์ˆ˜์— ๋”ฐ๋ฅธ ์„ฑ์  ๋ถ€์—ฌ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ, ๋™์น˜ ๋ถ„ํ•  ๊ฒ€์‚ฌ์™€ ๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํ™•์ธํ•˜์‹œ์˜ค.

 

- ๋™์น˜ ๋ถ„ํ•  ๊ฒ€์‚ฌ๋Š” ์ž…๋ ฅ ์ž๋ฃŒ์— ์ดˆ์ ์„ ๋งž์ถฐ ๋งž๊ฒŒ ์ถœ๋ ฅ๋˜๋Š”์ง€ ํ™•์ธ 
- ๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„ -1 -> ์˜ค๋ฅ˜, 69->D, 89->B, 101 -> ์˜ค๋ฅ˜ ... 


๊ฐœ๋ฐœ ๋‹จ๊ณ„์— ๋”ฐ๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ์™€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋‹จ๊ณ„ ์—ฐ๊ฒฐํ•˜์—ฌ ํ‘œํ˜„ -> V-๋ชจ๋ธ

์†Œํ”„ํŠธ์›จ์–ด ์ƒ๋ช… ์ฃผ๊ธฐ์˜ V ๋ชจ๋ธ (ํ—ˆ์ ‘ ใ…‹ใ…‹

๋‹จ์œ„ ํ…Œ์ŠคํŠธ Unit Test

์ฝ”๋”ฉ ์งํ›„ ๋ชจ๋“ˆ์ด๋‚˜ ์ปดํฌ๋„ŒํŠธ์— ์ดˆ์ ์„ ๋งž์ถฐ ํ…Œ์ŠคํŠธ

์ธํ„ฐํŽ˜์ด์Šค, ์™ธ๋ถ€์  I/O, ์ž๋ฃŒ ๊ตฌ์กฐ, ๋…๋ฆฝ์  ๊ธฐ์ดˆ ๊ฒฝ๋กœ, ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๊ฒฝ๋กœ, ๊ฒฝ๊ณ„ ์กฐ๊ฑด

์š”๊ตฌ์‚ฌํ•ญ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ธฐ๋Šฅ์„ฑ ํ…Œ์ŠคํŠธ

๊ตฌ์กฐ ๊ธฐ๋ฐ˜ / ๋ช…์„ธ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ ๋‚˜๋‰˜์ง€๋งŒ ์ฃผ๋กœ ๊ตฌ์กฐ

ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ Integration Test

๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋œ ๋ชจ๋“ˆ ๊ฒฐํ•ฉ, ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์œผ๋กœ ์™„์„ฑ์‹œํ‚ค๋Š” ๊ณผ์ •์—์„œ์˜ ํ…Œ์ŠคํŠธ. ๋ชจ๋“ˆ ๊ฐ„ ์ƒํ˜ธ ์ž‘์šฉ ์˜ค๋ฅ˜

  • ๋น„์ ์ง„์  ํ†ตํ•ฉ ๋ฐฉ์‹
    ๋ชจ๋‘ ๋ฏธ๋ฆฌ ๊ฒฐํ•ฉ๋˜์–ด ์žˆ๋Š” ์ „์ฒด ํ…Œ์ŠคํŠธ. ๋น…๋ฑ… ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋ฐฉ์‹
  • ์ ์ง„์  ํ†ตํ•ฉ ๋ฐฉ์‹
    ๋ชจ๋“ˆ ๋‹จ์œ„๋กœ ๋‹จ๊ณ„์ ์œผ๋กœ ํ†ตํ•ฉํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธ.
    • ํ•˜ํ–ฅ์‹ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ Top Down Integration Test
      ์ƒ์œ„์—์„œ ํ•˜์œ„ ๋ชจ๋“ˆ ๋ฐฉํ–ฅ์œผ๋กœ ํ†ตํ•ฉํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธ 
      1. ์ฃผ์š” ์ œ์–ด ๋ชจ๋“ˆ Stub์œผ๋กœ ๋Œ€์ฒด (์‹œํ—˜์šฉ ๋ชจ๋“ˆ)
      2. ๊นŠ์ด ์šฐ์„  or ๋„“์ด ์šฐ์„  ๋ฐฉ์‹ ๋”ฐ๋ผ Stub๋“ค์ด ์‹ค์ œ ๋ชจ๋“ˆ๋กœ ๊ต์ฒด
      3. ํ†ตํ•ฉ๋  ๋•Œ๋งˆ๋‹ค ํ…Œ์ŠคํŠธ
      4. ํšŒ๊ท€ ํ…Œ์ŠคํŠธ Regression Test ์‹ค์‹œ (์ƒˆ๋กœ์šด ์˜ค๋ฅ˜์žˆ๋Š”์ง€ ํ™•์ธ. ์ด๋ฏธ ํ…Œ์ŠคํŠธ ๋œ๊ฑฐ ๋ฐ˜๋ณต. ๋ณ€๊ฒฝํ•œ๊ฑฐ ๋ฌธ์ œ์—†๋Š”์ง€)

    • ์ƒํ–ฅ์‹ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ Bottom Up Integration Test
      ํ•˜์œ„์—์„œ ์ƒ์œ„ ๋ชจ๋“ˆ๋กœ ํ†ตํ•ฉํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธ 
      1. ํ•˜์œ„ ๋ชจ๋“ˆ Cluster๋กœ ๊ฒฐํ•ฉ
      2. ์ƒ์œ„์—์„œ ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ ํ™•์ธ ์œ„ํ•ด ๋”๋ฏธ ๋ชจ๋“ˆ์ธ Driver ์ž‘์„ฑ (ํ•˜์œ„ ๋ชจ๋“ˆ ํ˜ธ์ถœ, ํŒŒ๋ผ๋ฏธํ„ฐ ์ „๋‹ฌ, ์ˆ˜ํ–‰ ํ›„ ๊ฒฐ๊ณผ ๋„์ถœ)
      3. ํด๋Ÿฌ์Šคํ„ฐ ๋‹จ์œ„๋กœ ํ…Œ์ŠคํŠธ 
      4. ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ƒ์œ„ ๊ฐ€์„œ ๊ฒฐํ•ฉ, ๋“œ๋ผ์ด๋ฒ„๋Š” ์‹ค์ œ ๋ชจ๋“ˆ ๋Œ€์ฒด 

    • ํ˜ผํ•ฉ์‹ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ 

์ธ์ˆ˜ ํ…Œ์ŠคํŠธ Acceptance Test

์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ด์กฑํ•˜๋Š”์ง€ ์ค‘์ ์„ ๋‘๊ณ  ํ…Œ์ŠคํŠธ 

  • ์•ŒํŒŒ ํ…Œ์ŠคํŠธ : ๊ฐœ๋ฐœ์ž ์•ž์—์„œ ํ–‰ํ•˜๋Š”. ํ†ต์ œ๋œ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ์ž์™€ ๊ฐœ๋ฐœ์ž ํ•จ๊ป˜ ํ™•์ธ, ๊ธฐ๋ก
  • ๋ฒ ํƒ€ ํ…Œ์ŠคํŠธ : ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๋ช… ์‚ฌ์šฉ์ž ์•ž์—์„œ ํ–‰ํ•˜๋Š”. ์‹ค์—…๋ฌด๋ฅผ ๊ฐ€์ง€๊ณ  ์‚ฌ์šฉ์ž ์ง์ ‘

ํ…Œ์ŠคํŠธ ์˜ค๋ผํด Test Oracle

ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํŒ๋‹จ ์œ„ํ•ด ์‚ฌ์ „ ์ •์˜๋œ ์ฐธ๊ฐ’์„ ๋Œ€์ž…ํ•˜์—ฌ ๋น„๊ตํ•˜๋Š” ๊ธฐ๋ฒ•. 

์ œํ•œ๋œ ๊ฒ€์ฆ, ์ˆ˜ํ•™์  ๊ธฐ๋ฒ•, ์ž๋™ํ™” ๊ธฐ๋Šฅ 

์ข…๋ฅ˜

  • ์ฐธ ์˜ค๋ผํด True : ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•ด, ๋ชจ๋“  ์˜ค๋ฅ˜ ๊ฒ€์ถœ
  • ์ƒ˜ํ”Œ๋ง ์˜ค๋ผํด Sampling : ํŠน์ • ๊ฐ’๋“ค์— ๋Œ€ํ•ด์„œ๋งŒ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒฐ๊ณผ. ์ „์ˆ˜ ํ…Œ์ŠคํŠธ ๋ถˆ๊ฐ€ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ
  • ์ถ”์ • ์˜ค๋ผํด Heuristic : ํŠน์ • ์ž…๋ ฅ ๊ฒฐ๊ณผ ์ œ๊ณต, ๋‚˜๋จธ์ง€๋Š” ์ถ”์ • 
  • ์ผ๊ด€์„ฑ ๊ฒ€์‚ฌ ์˜ค๋ผํด Consistent : ๋ณ€๊ฒฝ ์ƒ๊ฒผ์„ ๋•Œ, ์ˆ˜ํ–‰ ์ „๊ณผ ํ›„ ๋™์ผํ•œ์ง€ ํ™•์ธ 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ธก์ • ์ง€ํ‘œ

  • ์ฒ˜๋ฆฌ๋Ÿ‰ Throughput : ์ผ์ • ์‹œ๊ฐ„ ๋‚ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ฒ˜๋ฆฌํ•˜๋Š” ์–‘
  • ์‘๋‹ต ์‹œ๊ฐ„ Response Time : ์š”์ฒญ ์ „๋‹ฌ, ์‘๋‹ต ๋„์ฐฉํ•  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„
  • ๊ฒฝ๊ณผ ์‹œ๊ฐ„ Trun Around Time : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž‘์—… ์˜๋ขฐ ์‹œ๊ฐ„ - ์ฒ˜๋ฆฌ ์™„๋ฃŒ ๋ ๋•Œ ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„
  • ์ž์› ์‚ฌ์šฉ๋ฅ  Resource Usage : ์ž‘์—… ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋„คํŠธ์›Œํฌ ๋“ฑ ์‚ฌ์šฉ๋Ÿ‰ 

๋น…์˜ค ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํ‘œํ˜„ํ•œ ์ตœ์•…์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„

O(1) n ๊ด€๊ณ„ ์—† ์Šคํƒ์˜ push, pop
O(log_2 n) n ๋˜๋Š” ์กฐ๊ฑด์— ์˜ํ•ด ๊ฐ์†Œ  Binary Tree, Binary Search
O(n) n๊ณผ 1:1์˜ ๊ด€๊ณ„  for
O(nlog_2 n) ํ•„์š”ํ•œ ๋‹จ๊ณ„๊ฐ€ nlog_2 n ๋งŒํผ ์ˆ˜ํ–‰ Heap Sort, 2-way Merge Sort
O(n^2) n์˜ ์ œ๊ณฑ๋งŒํผ ์ˆ˜ํ–‰ Insertion Sort, Shell Sort, Selection Sort, Bubble Sort, Quick Sort
O(2^n) 2์˜ n์ œ๊ณฑ ๋งŒํผ Fibonacci Sequence

 

์ˆœํ™˜ ๋ณต์žก๋„ Cyclomatic Complexity 

๋…ผ๋ฆฌ์ ์ธ ๋ณต์žก๋„๋ฅผ ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด 

= McCabe's Cyclomatic ๋งฅ์ผ€์ด๋ธŒ ์ˆœํ™˜๋„ 

V(G) = E - N + 2
E : ํ™”์‚ดํ‘œ ์ˆ˜, N : ๋…ธ๋“œ์˜ ์ˆ˜


์†Œ์Šค ์ฝ”๋“œ ์ตœ์ ํ™”

  • ํด๋ฆฐ ์ฝ”๋“œ
    • ๋ˆ„๊ตฌ๋‚˜ ์ดํ•ด, ๋‹จ์ˆœ, ๋ช…๋ฃŒ 
  • ๋‚˜์œ ์ฝ”๋“œ
    • ๋กœ์ง์ด ๋ณต์žก. Spaghetti Code (๋กœ์ง์ด ์–ฝํžŒ), Alien Code (์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ต)

ํด๋ฆฐ ์ฝ”๋“œ ์ž‘์„ฑ ์›์น™

  • ๊ฐ€๋…์„ฑ : ์‰ฝ๊ฒŒ ์ฝ
  • ๋‹จ์ˆœ์„ฑ : ๊ฐ„๋‹จ
  • ์˜์กด์„ฑ ๋ฐฐ์ œ : ๋‹ค๋ฅธ ๋ชจ๋“ˆ ์˜ํ–ฅ ์ตœ์†Œํ™”
  • ์ค‘๋ณต์„ฑ ์ตœ์†Œํ™” : ์ค‘๋ณต ์ตœ์†Œํ™”. ๊ณตํ†ต ์ฝ”๋“œ 
  • ์ถ”์ƒํ™” : ์ƒ์œ„ - ํŠน์„ฑ, ํ•˜์œ„ - ์ƒ์„ธ ๋‚ด์šฉ

์†Œ์Šค ์ฝ”๋“œ ํ’ˆ์งˆ ๋ถ„์„ ๋„๊ตฌ 

  • ์ •์  ๋ถ„์„ Static Analysis ๋„๊ตฌ
    ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ฝ”๋”ฉ ํ‘œ์ค€์ด๋‚˜ ์ฝ”๋”ฉ ์Šคํƒ€์ผ, ๊ฒฐํ•จ ํ™•์ธ
    pmd, cppcheck, SonarQube, checkstyle, ccm, cobertuna
  • ๋™์  ๋ถ„์„ Dynamic Analysis ๋„๊ตฌ 
    ์‹คํ–‰ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜, ์Šค๋ ˆ๋“œ ๊ฒฐํ•จ ๋“ฑ์„ ๋ถ„์„
    Avalanche, Valgrind ๋“ฑ

์ค‘์š” ํ‚ค์›Œ๋“œ ์ˆœ ์žฌ์ •๋ฆฌ 

ํ™”์ดํŠธ ๋ฐ•์Šค ํ…Œ์ŠคํŠธ (๊ฒ€์ฆ๊ธฐ์ค€ ; ๋ฌธ์žฅ, ๋ถ„๊ธฐ, ์กฐ๊ฑด, ๋ถ„๊ธฐ์กฐ๊ฑด), ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ (์ข…๋ฅ˜ ; ๋™์น˜ ๋ถ„ํ• , ๊ฒฝ๊ณ„๊ฐ’, ์›์ธ-ํšจ๊ณผ...), ํ†ตํ•ฉํ…Œ์ŠคํŠธ-ํ•˜ํ–ฅ์‹ ํ†ตํ•ฉํ…Œ์ŠคํŠธ(ํ•˜์œ„๋ชจ๋“ˆํ•ฉํ•ฉ)

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ ๊ธฐ๋ณธ์›๋ฆฌ(ํŒŒ๋ ˆํ† , ์‚ด์ถฉ์ œ, ๊ถค๋ณ€), ์ •์  - ๋™์  (๋ธ”๋ž™, ํ™”์ดํŠธ ๋ฐ•์Šค ํ…Œ์ŠคํŠธ) ํ…Œ์ŠคํŠธ, ๊ฐœ๋ฐœ ๋‹จ๊ณ„์— ๋”ฐ๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ (V๋ชจ๋ธ), ๋‹จ์œ„(๋ชจ๋“ˆ), ํ†ตํ•ฉ(๋ชจ๋“ˆ ๊ฒฐํ•ฉ), ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ (์‚ฌ์šฉ์ž ์š”๊ตฌ์‚ฌํ•ญ ; ์•ŒํŒŒ, ๋ฒ ํƒ€), ํ…Œ์ŠคํŠธ ์˜ค๋ผํด (์ข…๋ฅ˜ ; ์ฐธ, ์ƒ˜ํ”Œ๋ง, ์ถ”์ •, ์ผ๊ด€์„ฑ), ์„ฑ๋Šฅ ์ธก์ • ์ง€ํ‘œ (์–‘, ์‘๋‹ต, ๊ฒฝ๊ณผ, ์ž์›), ์†Œ์Šค ์ฝ”๋“œ ํ’ˆ์งˆ ๋ถ„์„ ๋„๊ตฌ(์ •์ , ๋™์ )
๋ฐ˜์‘ํ˜•

์ตœ๊ทผ๋Œ“๊ธ€

์ตœ๊ทผ๊ธ€

skin by ยฉ 2024 ttutta