์ƒˆ์†Œ์‹

์ž๊ฒฉ์ฆ

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 7์žฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ ๊ด€๋ฆฌ

  • -

 

 

 

์ด๋ฒˆ์—๋Š” 2022๋…„๋„ ์‹ค๊ธฐ ์‹œํ—˜ ์ค€๋น„ํ•˜๋ฉด์„œ ๋…ธํŠธ์ •๋ฆฌ ํ–ˆ์—ˆ๋˜ ๋‚ด์šฉ๋“ค์„ ํฌ์ŠคํŒ… ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด์šฉ์ด ๋งŽ์ด ๋ถ€์กฑํ•˜์‹œ๊ฒ ์ง€๋งŒ ์–ด๋””๊นŒ์ง€ ์ฐธ๊ณ ์šฉ์œผ๋กœ๋งŒ ๋ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜๐Ÿ˜

 

์ฐธ๊ณ ๋กœ, ์‹œ๊ฐ„ ๊ด€๊ณ„์ƒ ์ „๋ถ€ ์ •๋ฆฌ๋˜์–ด ์žˆ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋กœ ์ €๋Š” C๋“ฑ๊ธ‰๊ณผ D๋“ฑ๊ธ‰์€ ํ•™์Šต ๋ชฉํ‘œ์—์„œ ์ œ์™ธํ–ˆ์Šต๋‹ˆ๋‹ค.

 

ํ•ด๋‹น ๋‚ด์šฉ์€ 2022๋…„๋„ ์‹œ๋‚˜๊ณต ์ถœํŒ์‚ฌ์˜ ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ ์ฑ…์˜ ๋‚ด์šฉ์ด ์กฐ๊ธˆ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์‹ธ๋‹ˆ๊นŒ ๋ฏฟ์œผ๋‹ˆ๊นŒ ์ธํ„ฐํŒŒํฌ๋„์„œ

์ƒ๋…„์›”์ผ - ๊ฐ•์œค์„, ๊น€์šฉ๊ฐ‘, ๊น€์šฐ๊ฒฝ, ๊น€์„ ์• , ๊น€์ข…์ผ, ๊น€์œ ํ™. IT ์„œ์ ์„ ๊ธฐํšํ•˜๊ณ  ์ง‘ํ•„ํ•˜๋Š” ์ถœํŒ ๊ธฐํš ์ „๋ฌธ ์ง‘๋‹จ์œผ๋กœ, 2003๋…„๋ถ€ํ„ฐ ๊ธธ๋ฒ—์ถœํŒ์‚ฌ์˜ IT์ˆ˜ํ—˜์„œ์ธ <์‹œํ—˜์— ๋‚˜์˜ค๋Š” ๊ฒƒ๋งŒ ๊ณต๋ถ€ํ•œ๋‹ค> ์‹œ๋ฆฌ์ฆˆ

book.interpark.com

 

๊ฐ€๊ธ‰์  ์ฑ…์€ ๊ตฌ๋งคํ•˜์…”์•ผ ํ•˜๊ณ  ์ถœํŒ์‚ฌ๋Š” ์‹œ๋‚˜๊ณต ๋˜๋Š” ์ˆ˜์ œ๋น„๋กœ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

 


A๋“ฑ๊ธ‰

 

๐Ÿ“ข ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•์— ๋”ฐ๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ

 

  • ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ(White Box Test)
    • ์›์‹œ ์ฝ”๋“œ์˜ ๋…ผ๋ฆฌ์ ์ธ ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ํ…Œ์ŠคํŠธํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ์˜ ์ข…๋ฅ˜
    • ๊ธฐ์ดˆ ๊ฒฝ๋กœ ๊ฒ€์‚ฌ(Base Path Testing)
      • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ค๊ณ„์ž๊ฐ€ ์ ˆ์ฐจ์  ์„ค๊ณ„์˜ ๋…ผ๋ฆฌ์  ๋ณต์žก์„ฑ์„ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•
    • ์ œ์–ด ๊ตฌ์กฐ ๊ฒ€์‚ฌ(Control Structure Testing)
      • ์กฐ๊ฑด ๊ฒ€์‚ฌ(Condition Testing): ๋…ผ๋ฆฌ์  ์กฐ๊ฑด์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ค๊ณ„ ๊ธฐ๋ฒ•
      • ๋ฃจํ”„ ๊ฒ€์‚ฌ(Loop Testing): ๋ฐ˜๋ณต ๊ตฌ์กฐ์— ์ดˆ์ ์„ ๋งž์ถฐ ์‹ค์‹œํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ค๊ณ„ ๊ธฐ๋ฒ•
      • ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๊ฒ€์‚ฌ(Data Flow Testing): ๋ณ€์ˆ˜์˜ ์ •์˜์™€ ๋ณ€์ˆ˜ ์‚ฌ์šฉ์˜ ์œ„์น˜์— ์ดˆ์ ์„ ๋งž์ถฐ ์‹ค์‹œํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ค๊ณ„ ๊ธฐ๋ฒ•
  • ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ์˜ ๊ฒ€์ฆ ๊ธฐ์ค€
    • ๋ฌธ์žฅ ๊ฒ€์ฆ ๊ธฐ์ค€(Statement Coverage)
      • ์†Œ์Šค ์ฝ”๋“œ์˜ ๋ชจ๋“  ๊ตฌ๋ฌธ์ด ํ•œ ๋ฒˆ ์ด์ƒ ์ˆ˜ํ–‰๋˜๋„๋ก ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์„ค๊ณ„ํ•จ
    • ๋ถ„๊ธฐ ๊ฒ€์ฆ ๊ธฐ์ค€(Branch Coverage)
      • ์†Œ์Šค ์ฝ”๋“œ์˜ ๋ชจ๋“  ์กฐ๊ฑด๋ฌธ์— ๋Œ€ํ•ด ์กฐ๊ฑด์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ True์ธ ๊ฒฝ์šฐ์™€ False์ธ ๊ฒฝ์šฐ๊ฐ€ ํ•œ ๋ฒˆ ์ด์ƒ ์ˆ˜ํ–‰๋˜๋„๋ก ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์„ค๊ณ„ํ•จ
      • ๊ฒฐ์ • ๊ฒ€์ฆ ๊ธฐ์ค€(Decision Coverage)์ด๋ผ๊ณ ๋„ ํ•จ
    • ์กฐ๊ฑด ๊ฒ€์ฆ ๊ธฐ์ค€(Condition Coverage)
      • ์†Œ์Šค ์ฝ”๋“œ์˜ ์กฐ๊ฑด๋ฌธ์— ํฌํ•จ๋œ ๊ฐœ๋ณ„ ์กฐ๊ฑด์‹์˜ ๊ฒฐ๊ณผ๊ฐ€ True์ธ ๊ฒฝ์šฐ์™€ False์ธ ๊ฒฝ์šฐ๊ฐ€ ํ•œ ๋ฒˆ ์ด์ƒ ์ˆ˜ํ–‰๋˜๋„๋ก ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์„ค๊ณ„ํ•จ
    • ๋ถ„๊ธฐ/์กฐ๊ฑด ๊ธฐ์ค€(Branch/Condition Coverage)
      • ๋ถ„๊ธฐ ๊ฒ€์ฆ ๊ธฐ์ค€๊ณผ ์กฐ๊ฑด ๊ฒ€์ฆ ๊ธฐ์ค€์„ ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋Š” ์„ค๊ณ„
  • ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ(Black Box Test)
    • ๊ฐ ๊ธฐ๋Šฅ์ด ์™„์ „ํžˆ ์ž‘๋™๋˜๋Š” ๊ฒƒ์„ ์ž…์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ
    • = ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ
    • ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์‚ฌํ•ญ ๋ช…์„ธ๋ฅผ ๋ณด๋ฉด์„œ ํ…Œ์ŠคํŠธ
    • ์ฃผ๋กœ ๊ตฌํ˜„๋œ ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธ
    • ์†Œํ”„ํŠธ์›จ ์–ธํ‹ฐํผ์—์Šค๋ฅผ ํ†ตํ•ด ์‹ค์‹œ
  • ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ์˜ ์ข…๋ฅ˜
    • ๋™์น˜ ๋ถ„ํ•  ๊ฒ€์‚ฌ(Equivalence Partitioning Testing, ๋™์น˜ ํด๋ž˜์Šค ๋ถ„ํ•ด)
      • ํ”„๋กœ๊ทธ๋žจ์˜ ์ž…๋ ฅ ์กฐ๊ฑด์— ํƒ€๋‹นํ•œ ์ž…๋ ฅ ์ž๋ฃŒ์™€ ํƒ€๋‹นํ•˜์ง€ ์•Š์€ ์ž…๋ ฅ ์ž๋ฃŒ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ •ํ•˜๊ณ , ํ•ด๋‹น ์ž…๋ ฅ ์ž๋ฃŒ์— ๋งž๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ธฐ๋ฒ•
      • = ๋™๋“ฑ ๋ถ„ํ•  ๊ธฐ๋ฒ•
    • ๊ฒฝ๊ณ„ ๊ฐ’ ๋ถ„์„(Boundary Value Analysis)
      • ์ž…๋ ฅ ์กฐ๊ฑด์˜ ์ค‘๊ฐ„๊ฐ’๋ณด๋‹ค ๊ฒฝ๊ณ„๊ฐ’์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ๋  ํ™•๋ฅ ์ด ๋†’๋‹ค๋Š” ์ ์„ ์ด์šฉํ•˜์—ฌ ์ž…๋ ฅ ์กฐ๊ฑด์˜ ๊ฒฝ๊ณ„๊ฐ’์„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ์„ ์ •ํ•˜์—ฌ ๊ฒ€์‚ฌํ•˜๋Š” ๊ธฐ๋ฒ•
    • ์›์ธ-ํšจ๊ณผ ๊ทธ๋ž˜ํ”„ ๊ฒ€์‚ฌ(Cause-Effect Graphing Testing)
      • ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„์™€ ์ถœ๋ ฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ƒํ™ฉ์„ ์ฒด๊ณ„์ ์œผ๋กœ ๋ถ„์„ํ•œ ๋‹ค์Œ ํšจ์šฉ์„ฑ์ด ๋†’์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์„ ์ •ํ•˜์—ฌ ๊ฒ€์‚ฌํ•˜๋Š” ๊ธฐ๋ฒ•
    • ์˜ค๋ฅ˜ ์˜ˆ์ธก ๊ฒ€์‚ฌ(Error Guessing)
      • ๊ณผ๊ฑฐ์˜ ๊ฒฝํ—˜์ด๋‚˜ ํ™•์ธ์ž์˜ ๊ฐ๊ฐ์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ธฐ๋ฒ•
    • ๋น„๊ต ๊ฒ€์‚ฌ(Comparison Testing)
      • ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ํ”„๋กœ๊ทธ๋žจ์— ๋™์ผํ•œ ํ…Œ์ŠคํŠธ ์ž๋ฃŒ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ธฐ๋ฒ•

 

 

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

 

  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Test)
    • ๋ชจ๋“ˆ์ด๋‚˜ ์ปดํฌ๋„ŒํŠธ์— ์ดˆ์ ์„ ๋งž์ถฐ ํ…Œ์ŠคํŠธ
    • ์ธํ„ฐํŽ˜์ด์Šค, ์™ธ๋ถ€์  I/O, ์ž๋ฃŒ ๊ตฌ์กฐ, ๋…๋ฆฝ์  ๊ธฐ์ดˆ ๊ฒฝ๋กœ, ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๊ฒฝ๋กœ, ๊ฒฝ๊ณ„ ์กฐ๊ฑด ๋“ฑ์„ ๊ฒ€์‚ฌ
    • ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ธฐ๋Šฅ์„ฑ ํ…Œ์ŠคํŠธ๋ฅผ ์ตœ์šฐ์„ ์œผ๋กœ ์ˆ˜ํ–‰
  • ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ(Integration Test)
    • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋œ ๋ชจ๋“ˆ๋“ค์„ ๊ฒฐํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์œผ๋กœ ์™„์„ฑ์‹œํ‚ค๋Š” ๊ณผ์ •์—์„œ์˜ ํ…Œ์ŠคํŠธ
    • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ๋๋‚œ ๋ชจ๋“ˆ์„ ํ†ตํ•ฉํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜ ๋ฐ ๊ฒฐํ•จ์„ ์ฐพ๋Š” ํ…Œ์ŠคํŠธ
    • ํ•˜ํ–ฅ์‹ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ(Top Down Integration Test)
      • ์ƒ์œ„ ๋ชจ๋“ˆ์—์„œ ํ•˜์œ„ ๋ชจ๋“ˆ ๋ฐฉํ–ฅ์œผ๋กœ ํ†ตํ•ฉํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธ
      • ๊นŠ์ด ์šฐ์„  ํ†ตํ•ฉ๋ฒ•, ๋„“์ด ์šฐ์„  ํ†ตํ•ฉ๋ฒ•
      • ์Šคํ…(Stub)
    • ์ƒํ–ฅ์‹ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ(Bottom Up Integration Test)
      • ํ•˜์œ„ ๋ชจ๋“ˆ์—์„œ ์ƒ์œ„ ๋ชจ๋“ˆ ๋ฐฉํ–ฅ์œผ๋กœ ํ†ตํ•ฉํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธ
      • **ํด๋Ÿฌ์Šคํ„ฐ(Cluster)**๋กœ ํ•˜์œ„๋ชจ๋“ˆ ๊ฒฐํ•ฉ
      • ๋“œ๋ผ์ด๋ฒ„(Driver)
    • ํ˜ผํ•ฉ์‹ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ
      • ํ•˜์œ„ ์ˆ˜์ค€์—์„œ๋Š” ์ƒํ–ฅ์‹ ํ†ตํ•ฉ, ์ƒ์œ„ ์ˆ˜์ค€์—์„œ๋Š” ํ•˜ํ–ฅ์‹ ํ†ตํ•ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ ์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐฉ์‹
      • ์ƒŒ๋“œ์œ„์น˜(Sandwich)์‹ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•
    • ํšŒ๊ท€ ํ…Œ์ŠคํŒ…(Regression Testing)
      • ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋กœ ์ธํ•ด ๋ณ€๊ฒฝ๋œ ๋ชจ๋“ˆ์ด๋‚˜ ์ปดํฌ๋„ŒํŠธ์— ์ƒˆ๋กœ์šด ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ
      • ์ด๋ฏธ ํ…Œ์ŠคํŠธ๋œ ํ”„๋กœ๊ทธ๋žจ์˜ ํ…Œ์ŠคํŒ…์„ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ
  • ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ(System Test)
    • ๊ฐœ๋ฐœ๋œ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์™„๋ฒฝํ•˜๊ฒŒ ์ˆ˜ํ–‰๋˜๋Š”๊ฐ€๋ฅผ ์ ๊ฒ€ํ•˜๋Š” ํ…Œ์ŠคํŠธ
  • ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ(Acceptance Test)
    • ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š”์ง€์— ์ค‘์ ์„ ๋‘๊ณ  ํ…Œ์ŠคํŠธ
    • ๊ฐœ๋ฐœํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ…Œ์ŠคํŠธ
    • 6๊ฐ€์ง€์˜ ์ข…๋ฅ˜๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ํ…Œ์ŠคํŠธ
      • ์‚ฌ์šฉ์ž ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ
        • ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์Šคํ…œ ์‚ฌ์šฉ์˜ ์ ์ ˆ์„ฑ ์—ฌ๋ถ€๋ฅผ ํ™•์ธ
      • ์šด์˜์ƒ์˜ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ
        • ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž๊ฐ€ ์‹œ์Šคํ…œ ์ธ์ˆ˜ ์‹œ ์ˆ˜ํ–‰ํ•˜๋Š” ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•
        • ๋ฐฑ์—…/๋ณต์› ์‹œ์Šคํ…œ, ์žฌ๋‚œ ๋ณต๊ตฌ, ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ, ์ •๊ธฐ ์ ๊ฒ€ ๋“ฑ์„ ํ™•์ธ
      • ๊ณ„์•ฝ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ
        • ๊ณ„์•ฝ์ƒ์˜ ์ธ์ˆ˜/๊ฒ€์ˆ˜ ์กฐ๊ฑด์„ ์ค€์ˆ˜ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธ
      • ๊ทœ์ • ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ
        • ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ •๋ถ€ ์ง€์นจ, ๋ฒ•๊ทœ, ๊ทœ์ • ๋“ฑ ๊ทœ์ •์— ๋งž๊ฒŒ ๊ฐœ๋ฐœ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
      • ์•ŒํŒŒ ํ…Œ์ŠคํŠธ
        • ๊ฐœ๋ฐœ์ž์˜ ์žฅ์†Œ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐœ๋ฐœ์ž ์•ž์—์„œ ํ–‰ํ•˜๋Š” ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•
        • ํ…Œ์ŠคํŠธ๋Š” ํ†ต์ œ๋œ ํ™˜๊ฒฝ์—์„œ ํ–‰ํ•ด์ง€๋ฉฐ, ์˜ค๋ฅ˜์™€ ์‚ฌ์šฉ์ƒ์˜ ๋ฌธ์ œ์ ์„ ์‚ฌ์šฉ์ž์™€ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•จ๊ป˜ ํ™•์ธํ•˜๋ฉด์„œ ๊ธฐ๋กํ•จ
      • ๋ฒ ํƒ€ ํ…Œ์ŠคํŠธ
        • ์„ ์ •๋œ ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๋ช…์˜ ์‚ฌ์šฉ์ž ์•ž์—์„œ ํ–‰ํ•˜๋Š” ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•
        • ์‹ค์—…๋ฌด๋ฅผ ๊ฐ€์ง€๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ…Œ์ŠคํŠธ

 

 

๐Ÿ“ข ๋ณต์žก๋„

 

  • ์‹œ๊ฐ„ ๋ณต์žก๋„
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ์ˆ˜์น˜ํ™”ํ•œ ๊ฒƒ
    • ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹คํ–‰์‹œ๊ฐ„์ด ์งง๊ณ , ๋†’์„์ˆ˜๋ก ์‹คํ–‰์‹œ๊ฐ„์ด ๊ธธ์–ด์ง
    • ์ข…๋ฅ˜

 

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

 

  • ์ˆœํ•œ ๋ณต์žก๋„(Cyclomatic Complexity)
    • ์ˆœํ™˜ ๋ณต์žก๋„(Cyclomatic Complexity)๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๋…ผ๋ฆฌ์  ๋ณต์žก๋„๋ฅผ ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ฒ™๋„๋กœ ๋งฅ์ผ€์ด๋ธŒ ์ˆœํ™˜๋„(McCabe's Cyclomatic) ๋˜๋Š” ๋งฅ์ผ€์ด๋ธŒ ๋ณต์žก๋„ ๋งคํŠธ๋ฆญ(McCabe's Complexity Metrics)๋ผ๊ณ ๋„ ํ•˜๋ฉฐ ์ œ์–ด ํ๋ฆ„๋„ ์ด๋ก ์— ๊ธฐ์ดˆ๋ฅผ ๋‘ 
    • ์ œ์–ด ํ๋ฆ„๋„ G์—์„œ ์ˆœํ™˜ ๋ณต์žก๋„ V(G)๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Œ
      • ์ˆœํ™˜๋ณต์žก๋„=์ œ์–ด ํ๋ฆ„๋„ ์˜์—ญ ์ˆ˜ ์ด๋ฏ€๋กœ ์˜์—ญ ์ˆ˜๋ฅผ ์„ผ๋‹ค(์™ธ๋ถ€์˜์—ญ ํฌํ•จ)
      • V(G) = E(ํ™”์‚ดํ‘œ) - N(๋…ธ๋“œ) + 2 ์˜ ๊ณต์‹์„ ์ด์šฉํ•˜์—ฌ ๊ณ„์‚ฐ
300x250

 

 

๐Ÿ“ข ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ๊ฐœ์„ 

 

 

  • ์†Œ์Šค ์ฝ”๋“œ ์ตœ์ ํ™”
    • ๋‚˜์œ ์ฝ”๋“œ(Bad Code)๋ฅผ ๋ฐฐ์ œํ•˜๊ณ , ํด๋ฆฐ ์ฝ”๋“œ(Clean Code)๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ
    • ํด๋ฆฐ ์ฝ”๋“œ(Clean Code): ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ์ˆ˜์ • ๋ฐ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ˆœ, ๋ช…๋ฃŒํ•œ ์ฝ”๋“œ, ์ฆ‰ ์ž˜ ์ž‘์„ฑ๋œ ์ฝ”๋“œ
    • ๋‚˜์œ ์ฝ”๋“œ(Bad Code)
      • ํ”„๋กœ๊ทธ๋žจ์˜ ๋กœ์ง์ด ๋ณต์žกํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šด ์ฝ”๋“œ
      • ๋Œ€ํ‘œ์ ์ธ ๋‚˜์œ ์ฝ”๋“œ
        • ์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ: ์ฝ”๋“œ์˜ ๋กœ์ง์ด ์„œ๋กœ ๋ณต์žกํ•˜๊ฒŒ ์–ฝํ˜€ ์žˆ๋Š” ์ฝ”๋“œ
        • ์™ธ๊ณ„์ธ ์ฝ”๋“œ: ์•„์ฃผ ์˜ค๋ž˜๋˜๊ฑฐ๋‚˜ ์ฐธ๊ณ ๋ฌธ์„œ ๋˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์—†์–ด ์œ ์ง€๋ณด์ˆ˜ ์ž‘์—…์ด ์–ด๋ ค์šด ์ฝ”๋“œ
  • ํด๋ฆฐ ์ฝ”๋“œ ์ž‘์„ฑ ์›์น™
    • ๊ฐ€๋…์„ฑ
      • ๋ˆ„๊ตฌ๋“ ์ง€ ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑ
      • ์ฝ”๋“œ ์ž‘์„ฑ ์‹œ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋“ค์—ฌ์“ฐ๊ธฐ ๊ธฐ๋Šฅ๋“ฑ์„ ์‚ฌ์šฉ
    • ๋‹จ์ˆœ์„ฑ
      • ์ฝ”๋“œ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑ
      • ํ•œ ๋ฒˆ์— ํ•œ ๊ฐ€์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์ž‘์„œ์•Ÿ๊ณ  ํด๋ž˜์Šค/๋ฉ”์†Œ๋“œ/ํ•จ์ˆ˜ ๋“ฑ์„ ์ตœ์†Œ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•จ
    • ์˜์กด์„ฑ ๋ฐฐ์ œ
      • ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ตœ์†Œํ™”
      • ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‹œ ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ์˜ํ–ฅ์ด ์—†๋„๋ก ์ž‘์„ฑ
    • ์ค‘๋ณต์„ฑ ์ตœ์†Œํ™”
      • ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ตœ์†Œํ™”
      • ์ค‘๋ณต๋œ ์ฝ”๋“œ๋Š” ์‚ญ์ œํ•˜๊ณ  ๊ณตํ†ต๋œ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉ
    • ์ถ”์ƒํ™”
      • ์ƒ์œ„ ํด๋ž˜์Šค/๋ฉ”์†Œ๋“œ/ํ•จ์ˆ˜์—์„œ๋Š” ๊ฐ„๋žตํ•˜๊ฒŒ
      • ํ•˜์œ„ ํด๋ž˜์Šค/๋ฉ”์†Œ๋“œ/ํ•จ์ˆ˜์—์„œ๋Š” ์ƒ์„ธํ•˜๊ฒŒ
  • ์†Œ์Šค ์ฝ”๋“œ ํ’ˆ์งˆ ๋ถ„์„ ๋„๊ตฌ
    • ์ •์  ๋ถ„์„ ๋„๊ตฌ
      • ์ž‘์„ฑํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ฝ”๋”ฉ ํ‘œ์ค€์ด๋‚˜ ์ฝ”๋”ฉ ์Šคํƒ€์ผ, ๊ฒฐํ•จ ๋“ฑ์„ ํ™•์ธํ•˜๋Š” ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ
      • ์ข…๋ฅ˜: pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura ๋“ฑ
    • ๋™์  ๋ถ„์„ ๋„๊ตฌ
      • ์ž‘์„ฑํ•œ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ฝ”๋“œ์— ์กด์žฌํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜, ์Šค๋ ˆ๋“œ ๊ฒฐํ•จ ๋“ฑ์„ ๋ถ„์„ํ•˜๋Š” ๋„๊ตฌ
      • ์ข…๋ฅ˜: Avalanche, Valgrind ๋“ฑ

 

 

 

 


B๋“ฑ๊ธ‰

 

๐Ÿ“ข ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ

 

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ž ์žฌ๋˜์–ด ์žˆ๋Š” ๊ฒฐํ•จ์„ ์ฐพ์•„๋‚ด๋Š” ์ผ๋ จ์˜ ํ–‰์œ„ ๋˜๋Š” ์ ˆ์ฐจ
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ์˜ ๊ธฐ๋ณธ ์›๋ฆฌ
    • ์™„๋ฒฝํ•œ ํ…Œ์ŠคํŒ… ๋ถˆ๊ฐ€๋Šฅ
      • ์ž ์žฌ์ ์ธ ๊ฒฐํ•จ์„ ์ค„์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์†Œํ”„ํŠธ์›จ์–ด์— ๊ฒฐํ•จ์ด ์—†๋‹ค๊ณ  ํ•  ์ˆ˜ ์—†์Œ
    • ๊ฒฐํ•จ ์ง‘์ค‘(ํŒŒ๋ ˆํ†  ๋ฒ•์น™)
      • ๊ฐœ๋ฐœ์ž ํŠน์„ฑ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋Šฅ์  ํŠน์ง•์œผ๋กœ ํŠน์ • ๋ชจ๋“ˆ์— ๊ฒฐํ•จ์˜ ๋Œ€๋ถ€๋ถ„์ด ์ง‘์ค‘๋˜์–ด ์žˆ์Œ(20%์ฝ”๋“œ์— 80%์˜ ๊ฒฐํ•จ์ด ๋ฐœ๊ฒฌ)
    • ์‚ด์ถฉ์ œ ํŒจ๋Ÿฌ๋…์Šค
      • ๋™์ผํ•œ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋กœ ๋™์ผํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด ๋”์ด์ƒ ๊ฒฐํ•จ์ด ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์Œ, ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ์ง€์†์ ์œผ๋กœ ๊ฐœ์„  ๋ณด์•ˆํ•ด์•ผ ํ•จ
    • ํ…Œ์ŠคํŒ…์€ ์ •ํ™ฉ์— ์˜์กด
      • ์†Œํ”„ํŠธ์›จ์–ด ํŠน์ง•, ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๋“ฑ ์ •ํ™ฉ์— ๋”ฐ๋ผ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋ฏ€๋กœ ์ •ํ™ฉ์— ๋”ฐ๋ฅธ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•จ
    • ์˜ค๋ฅ˜ ๋ถ€์žฌ์˜ ๊ถค๋ณ€
      • ๊ฒฐํ•จ์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•ด๋„ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋ฉด ์†Œํ”„ํŠธ์›จ์–ด์˜ ํ’ˆ์งˆ์„ ๋†’๋‹ค ํ•  ์ˆ˜ ์—†์Œ
    • ํ…Œ์ŠคํŠธ์™€ ์œ„ํ—˜์€ ๋ฐ˜๋น„๋ก€
      • ํ…Œ์ŠคํŠธ๋ฅผ ๋งŽ์ด ํ•  ์ˆ˜๋ก ๋ฏธ๋ž˜์˜ ์œ„ํ—˜์€ ์ค„์–ด๋“ฆ
    • ํ…Œ์ŠคํŠธ์˜ ์ ์ง„์  ํ™•๋Œ€
      • ์ž‘์€ ๋ถ€๋ถ„์—์„œ ์‹œ์ž‘ํ•ด์„œ ์ ์  ํ™•๋Œ€ํ•˜์—ฌ ์ง„ํ–‰ํ•ด์•ผ ํ•จ
    • ํ…Œ์ŠคํŠธ์˜ ๋ณ„๋„ ํŒ€ ์ˆ˜ํ–‰
      • ๊ฐœ๋ฐœ์ž์™€ ๊ด€๊ณ„ ์—†๋Š” ๋ณ„๋„์˜ ํŒ€์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•จ

 

 

๐Ÿ“ข ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ์˜ ๋ถ„๋ฅ˜

 

  • ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์—ฌ๋ถ€์— ๋”ฐ๋ฅธ ํ…Œ์ŠคํŠธ
    • ์ •์  ํ…Œ์ŠคํŠธ
      • ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ช…์„ธ์„œ๋‚˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๋ถ„์„ํ•˜๋Š” ํ…Œ์ŠคํŠธ
      • ์ข…๋ฅ˜: ์›Œํฌ์Šค๋ฃจ, ์ธ์ŠคํŽ™์…˜, ์ฝ”๋“œ ๊ฒ€์‚ฌ
    • ๋™์  ํ…Œ์ŠคํŠธ
      • ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ์ฐพ๋Š” ํ…Œ์ŠคํŠธ
      • ์ข…๋ฅ˜: ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ, ํ™”์ดํŠธ๋ฐ•์Šค ํ…Œ์ŠคํŠธ
  • ์‹œ๊ฐ์— ๋”ฐ๋ฅธ ํ…Œ์ŠคํŠธ
    • ๊ฒ€์ฆ(Verification) ํ…Œ์ŠคํŠธ: ๊ฐœ๋ฐœ์ž์˜ ์‹œ๊ฐ์—์„œ ์ œํ’ˆ์˜ ์ƒ์‚ฐ ๊ณผ์ •์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ
    • ํ™•์ธ(Validation) ํ…Œ์ŠคํŠธ: ์‚ฌ์šฉ์ž์˜ ์‹œ๊ฐ์—์„œ ์ƒ์‚ฐ๋œ ์ œํ’ˆ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ
  • ๋ชฉ์ ์— ๋”ฐ๋ฅธ ํ…Œ์ŠคํŠธ
    • ํšŒ๋ณต(Recovery) ํ…Œ์ŠคํŠธ
      • ๊ฒฐํ•จ์„ ์ฃผ์–ด ์‹คํŒจํ•˜๋„๋ก ํ•œ ํ›„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ณต๊ตฌ๋˜๋Š”์ง€ ํ…Œ์ŠคํŠธ
    • ์•ˆ์ „(Security) ํ…Œ์ŠคํŠธ
      • ๋ถˆ๋ฒ•์ ์ธ ์นจ์ž„์œผ๋กœ๋ถ€ํ„ฐ ์‹œ์Šคํ…œ์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ…Œ์ŠคํŠธ
    • ๊ฐ•๋„(Stress) ํ…Œ์ŠคํŠธ
      • ๊ณผ๋„ํ•œ ์ •๋ณด๋Ÿ‰์ด๋‚˜ ๋นˆ๋„ ๋“ฑ์„ ๋ถ€๊ณผํ•˜์—ฌ ๊ณผ๋ถ€ํ•˜ ์‹œ์—๋„ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š”์ง€ ํ…Œ์ŠคํŠธ
    • ์„ฑ๋Šฅ(Performance) ํ…Œ์ŠคํŠธ
      • ์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ, ์ „์ฒด์ ์ธ ํšจ์œจ์„ฑ์„ ์ง„๋‹จํ•˜๋Š” ํ…Œ์ŠคํŠธ
      • ์†Œํ”„ํŠธ์›จ์–ด์˜ ์‘๋‹ต์‹œ๊ฐ„, ์ฒ˜๋ฆฌ๋Ÿ‰ ๋“ฑ์„ ํ…Œ์ŠคํŠธ
    • ๊ตฌ์กฐ(Structure) ํ…Œ์ŠคํŠธ
      • ๋‚ด๋ถ€์˜ ๋…ผ๋ฆฌ์ ์ธ ๊ฒฝ๋กœ, ์†Œ์Šค ์ฝ”๋“œ์˜ ๋ณต์žก๋„ ๋“ฑ์„ ํ‰๊ฐ€ํ•˜๋Š” ํ…Œ์ŠคํŠธ
    • ํšŒ๊ท€(Regression) ํ…Œ์ŠคํŠธ
      • ๋ณ€๊ฒฝ ๋˜๋Š” ์ˆ˜์ •๋œ ์ฝ”๋“œ์— ์ƒˆ๋กœ์šด ๊ฒฐํ•จ์ด ์—†์Œ์„ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ
    • ๋ณ‘ํ–‰(Parallel) ํ…Œ์ŠคํŠธ
      • ๋ณ€๊ฒฝ๋œ ์†Œํ”„ํŠธ์›จ์–ด์™€ ๊ธฐ์กด ์†Œํ”„ํŠธ์›จ์–ด์— ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•˜๋Š” ํ…Œ์ŠคํŠธ

 

 

๐Ÿ“ข ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค

 

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค
    • ๊ฐœ๋ฐœ๋œ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ๋Œ€๋กœ ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€, ๊ฒฐํ•จ์€ ์—†๋Š”์ง€ ๋“ฑ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ์ ˆ์ฐจ
    • ํ…Œ์ŠคํŠธ ๊ณ„ํš → ํ…Œ์ŠคํŠธ ๋ถ„์„ ๋ฐ ๋””์ž์ธ → ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋ฐ ์‹œ๋‚˜๋ฆฌ์˜ค ์ž‘์„ฑ → ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ → ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ํ‰๊ฐ€ ๋ฐ ๋ฆฌํฌํŒ… → ๊ฒฐํ•จ ์ถ”์  ๋ฐ ๊ด€๋ฆฌ
  • ๊ฒฐํ•จ ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค
    • ์—๋Ÿฌ ๋ฐœ๊ฒฌ → ์—๋Ÿฌ ๋“ฑ๋ก → ์—๋Ÿฌ ๋ถ„์„ → ๊ฒฐํ•จ ํ™•์ • → ๊ฒฐํ•จ ํ• ๋‹น → ๊ฒฐํ•จ ์กฐ์น˜ → ๊ฒฐํ•จ ์กฐ์น˜ ๊ฒ€ํ†  ๋ฐ ์Šน์ธ

 

 

๐Ÿ“ข ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค / ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค / ํ…Œ์ŠคํŠธ ์˜ค๋ผํด

 

  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค(Test Case)
    • ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ •ํ™•ํ•˜๊ฒŒ ์ค€์ˆ˜ํ–ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ํ…Œ์ŠคํŠธ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๋ช…์„ธ์„œ
  • ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค(Test Scenario)
    • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ ์šฉํ•˜๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋ฌถ์€ ์ง‘ํ•ฉ
  • ํ…Œ์ŠคํŠธ ์˜ค๋ผํด(Test Oracle)
    • ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์ „์— ์ •์˜๋œ ์ฐธ๊ฐ’์„ ๋Œ€์ž…ํ•˜์—ฌ ๋น„๊ตํ•˜๋Š” ๊ธฐ๋ฒ•
    • ํŠน์ง•
      • ์ œํ•œ๋œ ๊ฒ€์ฆ: ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ์ ์šฉํ•  ์ˆ˜ ์—†์Œ
      • ์ˆ˜ํ•™์  ๊ธฐ๋ฒ•: ๊ฐ’์„ ์ˆ˜ํ•™์  ๊ธฐ๋ฒ•์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ
      • ์ž๋™ํ™” ๊ฐ€๋Šฅ: ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰, ๊ฒฐ๊ณผ ๋น„๊ต, ์ปค๋ฒ„๋Ÿฌ์ง€ ์ธก์ • ๋“ฑ์„ ์ž๋™ํ™” ํ•  ์ˆ˜ ์žˆ์Œ
  • ํ…Œ์ŠคํŠธ ์˜ค๋ผํด์˜ ์ข…๋ฅ˜
    • ์ฐธ(True) ์˜ค๋ผํด: ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•ด ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์˜ค๋ผํด
    • ์ƒ˜ํ”Œ๋ง(Sampling): ์ „์ˆ˜ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ
    • ์ถ”์ •(Heuristic) ์˜ค๋ผํด: ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•ด ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๊ณ , ๋‚˜๋จธ์ง€ ์ž…๋ ฅ ๊ฐ’๋“ค์— ๋Œ€ํ•ด์„œ๋Š” ์ถ”์ •์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์˜ค๋ผํด
    • ์ผ๊ด€์„ฑ ๊ฒ€์‚ฌ(Consistent) ์˜ค๋ผํด: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ, ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ˆ˜ํ–‰ ์ „๊ณผ ํ›„์˜ ๊ฒฐ๊ณผ ๊ฐ’์ด ๋™์ผํ•œ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ์˜ค๋ผํด

 

 

๐Ÿ“ข ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋„๊ตฌ

 

  • ์ •์  ๋ถ„์„ ๋„๊ตฌ(Static Analysis Tools)
    • ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ถ„์„ํ•˜๋Š” ๋„๊ตฌ
  • ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๋„๊ตฌ(Test Execution Tools)
    • ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋„๊ตฌ
  • ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๋„๊ตฌ(Performance Test Tools)
    • ๊ฐ€์ƒ์˜ ์‚ฌ์šฉ์ž๋ฅผ ๋งŒ๋“ค์–ด ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•จ์œผ๋กœ์จ ์„ฑ๋Šฅ์˜ ๋ชฉํ‘œ ๋‹ฌ์„ฑ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ๋„๊ตฌ
  • ํ…Œ์ŠคํŠธ ํ†ต์ œ ๋„๊ตฌ(Test Control Tools)
    • ํ…Œ์ŠคํŠธ ๊ณ„ํš ๋ฐ ๊ด€๋ฆฌ, ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰, ๊ฒฐํ•จ ๊ด€๋ฆฌ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„๊ตฌ
    • ์ข…๋ฅ˜: ํ˜•์ƒ ๊ด€๋ฆฌ ๋„๊ตฌ, ๊ฒฐํ•จ ์ถ”์ /๊ด€๋ฆฌ ๋„๊ตฌ ๋“ฑ
  • ํ…Œ์ŠคํŠธ ํ•˜๋„ค์Šค ๋„๊ตฌ(Test Harness Tools)
    • ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋  ํ™˜๊ฒฝ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ๋ฐ ๋ชจ๋“ˆ์ด ์ •์ƒ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋˜๋„๋ก ํ•˜๋Š” ๋„๊ตฌ
  • ํ…Œ์ŠคํŠธ ํ•˜๋„ค์Šค์˜ ๊ตฌ์„ฑ ์š”์†Œ
    • ํ…Œ์ŠคํŠธ ๋“œ๋ผ์ด๋ฒ„(Driver): ์ƒํ–ฅ์‹ ํ…Œ์ŠคํŠธ ์‹œ ์ƒ์œ„ ๋ชจ๋“ˆ ์—ญํ• ์„ ๋Œ€์‹ ํ•˜๋Š” ๊ฒƒ
    • ํ…Œ์ŠคํŠธ ์Šคํ…(Stub): ํ•˜ํ–ฅ์‹ ํ…Œ์ŠคํŠธ ์‹œ ํ•˜์œ„ ๋ชจ๋“ˆ ์—ญํ• ์„ ๋Œ€์‹ ํ•˜๋Š” ๊ฒƒ
    • ํ…Œ์ŠคํŠธ ์ŠˆํŠธ(Suites): ํ…Œ์ŠคํŠธ๋“ค์˜ ์ง‘ํ•ฉ ๋˜๋Š” ํŒจํ‚ค์ง€
    • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค
    • ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ
    • ๋ชฉ ์˜ค๋ธŒ์ ํŠธ
  • ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๋‹จ๊ณ„๋ณ„ ํ…Œ์ŠคํŠธ ์ž๋™ํ™” ๋„๊ตฌ

 

 

 


 

์›๋ž˜๋Š” ์ €๋งŒ ๋ณด๋ ค๊ณ  ๋…ธํŠธ ์ •๋ฆฌํ–ˆ๋˜ ๋‚ด์šฉ์ด๋ผ์„œ ํ—ˆ์ˆ ํ•œ ์ ์ด ๋งŽ๊ธฐ๋„ ํ•  ๊ฑฐ๊ณ  ์˜คํƒ€๋„ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ ์šฉ์œผ๋กœ๋งŒ ๋ด์ฃผ์„ธ์š” ๐Ÿ˜‚

 

๋งŽ์ด ๋ถ€์กฑํ•œ ๋‚ด์šฉ์ด์…จ๊ฒ ์ง€๋งŒ ๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด ๋Œ“๊ธ€ ํ•œ ๋ฒˆ์”ฉ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ๋งŽ์ด ๋ฟŒ๋“ฏํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๐Ÿ˜๐Ÿ˜

 

 

 

 

 

 

 

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 8์žฅ SQL ์‘์šฉ

 

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 8์žฅ SQL ์‘์šฉ

์ด๋ฒˆ์—๋Š” 2022๋…„๋„ ์‹ค๊ธฐ ์‹œํ—˜ ์ค€๋น„ํ•˜๋ฉด์„œ ๋…ธํŠธ์ •๋ฆฌ ํ–ˆ์—ˆ๋˜ ๋‚ด์šฉ๋“ค์„ ํฌ์ŠคํŒ… ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด์šฉ์ด ๋งŽ์ด ๋ถ€์กฑํ•˜์‹œ๊ฒ ์ง€๋งŒ ์–ด๋””๊นŒ์ง€ ์ฐธ๊ณ ์šฉ์œผ๋กœ๋งŒ ๋ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜๐Ÿ˜ ์ฐธ๊ณ ๋กœ, ์‹œ๊ฐ„

sm-code.tistory.com

 

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 9์žฅ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ณด์•ˆ ๊ตฌ์ถ•

 

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 9์žฅ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ณด์•ˆ ๊ตฌ์ถ•

์ด๋ฒˆ์—๋Š” 2022๋…„๋„ ์‹ค๊ธฐ ์‹œํ—˜ ์ค€๋น„ํ•˜๋ฉด์„œ ๋…ธํŠธ์ •๋ฆฌ ํ–ˆ์—ˆ๋˜ ๋‚ด์šฉ๋“ค์„ ํฌ์ŠคํŒ… ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด์šฉ์ด ๋งŽ์ด ๋ถ€์กฑํ•˜์‹œ๊ฒ ์ง€๋งŒ ์–ด๋””๊นŒ์ง€ ์ฐธ๊ณ ์šฉ์œผ๋กœ๋งŒ ๋ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜๐Ÿ˜ ์ฐธ๊ณ ๋กœ, ์‹œ๊ฐ„

sm-code.tistory.com

 

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 10์žฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ํ™œ์šฉ

์‹œ๊ฐ„ ๊ด€๊ณ„์ƒ ๋…ธํŠธ ์ •๋ฆฌ ๋Œ€์‹  ๋ฌธ์ œ ํ’€์ด๋กœ ๋Œ€์ฒด... ๐Ÿ˜ข๐Ÿ˜ข

 

 

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 11์žฅ ์‘์šฉ SW ๊ธฐ์ดˆ ์–ธ์–ด ํ™œ์šฉ

์‹œ๊ฐ„ ๊ด€๊ณ„์ƒ ๋…ธํŠธ ์ •๋ฆฌ ๋Œ€์‹  ๋ฌธ์ œ ํ’€์ด๋กœ ๋Œ€์ฒด... ๐Ÿ˜ข๐Ÿ˜ข

 

 

[์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ์‹ค๊ธฐ] 12์žฅ ์ œํ’ˆ์†Œํ”„ํŠธ์›จ์–ด ํŒจํ‚ค์ง•

์‹œ๊ฐ„ ๊ด€๊ณ„์ƒ ๋…ธํŠธ ์ •๋ฆฌ ๋Œ€์‹  ๋ฌธ์ œ ํ’€์ด๋กœ ๋Œ€์ฒด... ๐Ÿ˜ข๐Ÿ˜ข

 

 

 

 

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜Š

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๐Ÿ‘