๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿ–ฅ dev-ruby

[์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™] Verification & Validation ๋ณธ๋ฌธ

์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™

[์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™] Verification & Validation

ruby_s 2021. 12. 12. 07:07
728x90
๋ฐ˜์‘ํ˜•
SMALL

Verification (๊ฒ€์ฆ)

์ฃผ์–ด์ง„ ๋‹จ๊ณ„์˜ ์ œํ’ˆ์ด ์ด์ „ ๋‹จ๊ณ„์—์„œ ์˜จ ์‚ฌ์–‘์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค
-> ์ด์ „์˜ ๋‹จ๊ณ„๊ฐ€ ํ˜„์žฌ์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ๊ฒ€์ฆ

Validation (ํ™•์ธ)

์š”๊ตฌ์‚ฌํ•ญ ์ค€์ˆ˜๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ ์ข…๋ฃŒ ์‹œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค

๋ชฉํ‘œ

  • ํ’ˆ์งˆ ์ข‹์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ
  • ์†Œํ”„ํŠธ์›จ์–ด ์ œํ’ˆ์—์„œ ์˜ค๋ฅ˜ ๋ฐ ๊ฒฐํ•จ์„ ์ฐพ๊ธฐ

์š”๊ตฌ์‚ฌํ•ญ

  • ๋ชจ๋“  ์‚ฌํ•ญ์„ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.
  • ๊ฒ€์ฆ ๊ฒฐ๊ณผ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์•„๋‹ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฒ€์ฆ์€ ๊ฐ๊ด€์ ์ด๊ฑฐ๋‚˜ ์ฃผ๊ด€์ ์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ๋‚ด์žฌ์  ํ’ˆ์งˆ๋„ ๊ฒ€์ฆํ•ด์•ผ ํ•œ๋‹ค.

V & V ํ™œ๋™์˜ ๋ถ„๋ฅ˜

  • error : ์—”์ง€๋‹ˆ์–ด์˜ ์‹ค์ˆ˜
  • Fault : ์‚ฌ์šฉ์ž์—๊ฒŒ ์ •ํ™•ํ•œ ์„œ๋น„์Šค ์ œ๊ณต์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ
  • Failure : ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์€ ์˜ค๋ฅ˜, ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ˆ˜๋ฅผ ํ–ˆ๋Š”๋ฐ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™

Static ํ™œ๋™ - ์†Œ์Šค์ฝ”๋“œ ์‹คํ–‰ X

  • ์‹œ์Šคํ…œ ๋™์ž‘์„ ๊ด€์ฐฐํ•˜์ง€ ์•Š์Œ
  • ์‹œ์Šคํ…œ ๊ฒฐํ•จ์„ ์ฐพ์ง€ ์•Š์Œ
  • ๊ฒฐํ•จ์ด ์ง์ ‘ ํƒ์ง€๋จ

dynamic

  • ์‹œ์Šคํ…œ ๋™์ž‘์ด ๊ด€์ฐฐ๋จ
  • ์‹คํŒจ์˜ ์กด์žฌ๋ฅผ ๊ฒฐ์ •
  • ์‹คํŒจ์˜ ๋ถ€์žฌ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฒฐํ•จ์˜ ์กด์žฌ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ์‹ค์ œ ๊ฒฐํ•จ์€ "๋””๋ฒ„๊น…" ํ™œ๋™์œผ๋กœ ์‹๋ณ„๋œ๋‹ค.
  • ์‹คํŒจ๊ฐ€ ์—†๋‹ค๊ณ  ํ•ด์„œ ๊ฒฐํ•จ์ด ์—†๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. (๊ณ ์žฅ์ด ์•ˆ๋‚œ๋‹ค๊ณ  ํ•ด์„œ ๊ฒฐํ•จ์ด ์—†๋‹ค๊ณ  ๋งํ•  ์ˆ˜ X)
  • ํ…Œ์ŠคํŠธ(dynamic testing)

3๊ฐ€์ง€ ์ข…๋ฅ˜

  • Review
  • Walkthrough
  • Inspection

Reviews
์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ ๋‹จ๊ณ„์˜ ์ข…๋ฃŒ์‹œ์ ์— ์‹ค์‹œ
๊ฒ€ํ† ํŒ์ด๋‚˜ ํŒจ๋„์„ ์œ„ํ•œ ์ž๋ฃŒ ๋ฐœํ‘œ๋กœ ๊ตฌ์„ฑ

  • Informal review : ๋‚ด๋ถ€ ๊ฒ€ํ† 
  • Formal review : ๊ณ ๊ฐ ๋˜๋Š” ์Šคํฐ์„œ์™€ ๊ฒ€ํ† 

Walkthrough : ์‚ฐ์ถœ๋ฌผ์„ ๊ฒ€ํ† ์ž์—๊ฒŒ ๋ณด๋‚ด์„œ ์ƒ์„ธํ•˜๊ฒŒ ์‚ดํŽด๋ด„

  • ๋‹จ๊ณ„๋ณ„ ๋˜๋Š” ๋ผ์ธ๋ณ„ ์ œํ’ˆ ์ƒ์„ธ ๊ฒ€์‚ฌ
  • 3 ๋˜๋Š” 5๋ช…์˜ ์ฐธ๊ฐ€์ž์™€ ๋ช‡ ์‹œ๊ฐ„ ํšŒ์˜
  • ์ˆ˜์ • ์ž‘์—…์ด ์•„๋‹Œ error ๋ฐœ๊ฒฌ์— ์ง‘์ค‘ -> ๊ฐœ๋ฐœ์ž์˜ ์‹ค์ˆ˜๋ฅผ ์ฐพ๋Š”๋ฐ ํฌ์ปค์Šค
  • ์ˆ˜์ž‘์—…์œผ๋กœ ์ œํ’ˆ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์‹คํ–‰

Inspection :

  • ๋‹จ๊ณ„๋ณ„ ๋˜๋Š” ๋ผ์ธ๋ณ„ ์ œํ’ˆ ์ƒ์„ธ ๊ฒ€์‚ฌ
  • ์กฐ์ง ์ธก๋ฉด์—์„œ walkthrough๊ณผ ์œ ์‚ฌํ•˜๋‹ค.
  • error ์œ ๋ฌด ํ™•์ธ
  • ์ž˜ ์•Œ๋ ค์ง„ error ์œ ํ˜•์€ ๋ฏธ๋ฆฌ ๋ถ„๋ฅ˜๋˜์–ด ์žˆ๋‹ค.

Software testing

Dynamic verification activities (Dynamic ํ™œ๋™)
๋ชฉ์ 

  • ์‹ค์ œ ๊ฒฐ๊ณผ์™€ ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘ ๊ฐ„์˜ ๋ถˆ์ผ์น˜ ํ™•์ธ
  • ์ •ํ™•์„ฑ, ์‹ ๋ขฐ์„ฑ, ์„ฑ๋Šฅ ๋“ฑ์— ๋Œ€ํ•œ ๋†’์€ ๋ณด์ฆ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด


๊ธฐ๋ณธ ํ…Œ์ŠคํŠธ ์งˆ๋ฌธ

  • ์–ด๋–ค ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด์•ผํ•˜๋‚˜?
    • ์–ด๋–ค ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜?
    • ์†Œํ”„ํŠธ์›จ์–ด์˜ ์–ด๋–ค ์ธก๋ฉด์„ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•˜๋‚˜?
  • ์ถœ๋ ฅ์ด ์˜ฌ๋ฐ”๋ฅธ๊ฐ€?
    • ์‚ฌ์–‘์„ ์ถฉ์กฑํ•˜๋Š”๊ฐ€
    • ๊ณ ๊ฐ์˜ ์š”๊ตฌ๋ฅผ ์ถฉ์กฑํ•˜๋Š”๊ฐ€
  • ์–ธ์ œ ํ…Œ์ŠคํŠธ๋ฅผ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    • ์ถฉ๋ถ„ํ•œ ์ˆ˜์˜ ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ–ˆ๋Š”๊ฐ€?
    • ์ œํ’ˆ์„ ๋งŒ์กฑ์Šค๋Ÿฝ๊ฒŒ ์ปค๋ฒ„ํ–ˆ๋Š”๊ฐ€?
  • ์–ผ๋งˆ๋‚˜ ์ž˜ํ–ˆ๋Š”์ง€?
    • ๋†’์€ ๋ณด์ฆ์„ ์ œ๊ณตํ•˜๋Š”๊ฐ€?

๋ชจ๋“  ์ž…๋ ฅ ์กฐ๊ฑด ํ…Œ์ŠคํŠธ

: ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ž…๋ ฅ ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์˜ค๋ฅ˜๊ฐ€ ์—†์Œ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค.
๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์€ ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ํ•ฉ๋ฆฌ์ ์ธ ์ˆ˜์ค€์˜ ์‹ ๋ขฐ์„ฑ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋Š” ์†Œ์ˆ˜์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ค๊ณ„

Q : ์˜ฌ๋ฐ”๋ฅธ ์›์น™์„ ์„ ํƒํ•˜๋ผ
ํ…Œ์ŠคํŒ…์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ •ํ™•์„ฑ์„ ์ฆ๋ช…ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. (X)
์ž๋ช…ํ•˜์ง€ ์•Š์€ ๋ชจ๋“ˆ์ด๋‚˜ ์‹œ์Šคํ…œ์„ ์™„์ „ํžˆ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. (X)
ํ…Œ์ŠคํŒ…๋Š” ์ฐฝ์˜๋ ฅ๊ณผ ๋…ธ๋ ฅ์„ ํ•„์š”๋กœ ํ•œ๋‹ค. (O)
ํ…Œ์ŠคํŒ…๋ฅผ ํ†ตํ•ด ์˜ค๋ฅ˜ ๋ฐœ์ƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. (X) -> ๋˜ ๋‹ค๋ฅธ ์—๋Ÿฌ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ์Œ
ํ…Œ์ŠคํŒ…๋Š” ์—ฌ๋Ÿฌ ๋…๋ฆฝ์ ์ธ ํ…Œ์Šคํ„ฐ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹๋‹ค. (O) -> ๋‚ด๊ฐ€ํ•œ ๊ฐœ๋ฐœ์€ ๋‚ด๊ฐ€ ํ…Œ์ŠคํŠธ

ํ…Œ์ŠคํŠธ ์ ˆ์ฐจ

  • ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค ๊ณ„ํš
  • ํ…Œ์ŠคํŠธ ๋ชฉํ‘œ ๋ฐ ๋ชฉํ‘œ ์ •์˜: ๊ทœ์น™ ์ค‘์ง€
  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ค๊ณ„
  • ํ…Œ์ŠคํŠธ ์ค€๋น„
  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์‹คํ–‰
  • ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ํ‰๊ฐ€
  • ์†Œํ”„ํŠธ์›จ์–ด ๋ถ„์„
  • ํ”„๋กœ์„ธ์Šค ๊ฐœ์„ 


Test Cases
2๊ฐ€์ง€ ๋ฌธ์ œ:
1. ํ”„๋กœ๊ทธ๋žจ์ด ํ•ด์•ผํ•  ๊ฒƒ์„ ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
2. ํ”„๋กœ๊ทธ๋žจ์ด ํ•˜์ง€ ๋ง์•„์•ผ ํ•  ๊ฒƒ์„ ํ•˜๋Š” ๊ฒฝ์šฐ
Test Case๋Š” validํ•˜๊ณ  ์˜ˆ์ƒ๋˜๋Š” ์ž…๋ ฅ ์กฐ๊ฑด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ invalidํ•˜๊ณ  ์˜ˆ๊ธฐ์น˜ ์•Š์Œ์— ๋Œ€ํ•ด์„œ๋„ ์ž‘์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.
test case๋Š” input + expected result

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋ช…์„ธ๋Š” ๋‹ค์Œ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.

  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์‹๋ณ„์ž
  • ํ…Œ์ŠคํŠธ ํ•ญ๋ชฉ
  • ์ž…๋ ฅ ์‚ฌ์–‘
  • ์ถœ๋ ฅ ์‚ฌ์–‘
  • ํ™˜๊ฒฝ์  ํ•„์š” ๋ฐ ํŠน๋ณ„ ์ ˆ์ฐจ ์š”๊ตฌ ์‚ฌํ•ญ

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

  • ํ…Œ์ŠคํŠธ ์˜ค๋ผํด์€ ํ…Œ์ŠคํŠธ ์‹คํ–‰ ๋™์ž‘์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค.

Unit Testing ๊ธฐ๋ฒ•

test case ์„ ํƒ ๊ธฐ์ค€
Structural

  • Path selection criteria
  • Data selection criteria
  • Error-oriented criteria

Functional

  • ํœด๋ฆฌ์Šคํ‹ฑ ์‚ฌ์šฉ

Structural vs Functional

Structural (White box)

  • ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์กฐ/๊ตฌํ˜„์— ๋”ฐ๋ฅธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ ์ •
  • ์‹ค์ œ ๊ธฐ๋Šฅ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ํ•ด์•ผ ํ•  ์ผ์„ ํ•˜๋Š”์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์—†์Œ

Functional (Black box)

  • ๊ธฐ๋Šฅ ์‚ฌ์–‘์— ๋”ฐ๋ฅธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ ์ •
  • ์˜๋„๋œ ๊ธฐ๋Šฅ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ํ•ด์•ผ ํ•  ์ผ์„ ํ•˜๋Š”์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์—†์Œ.

Structural testing

: ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์กฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ชฉ์ ์— ๋”ฐ๋ผ ๊ตฌ๋™๋˜๋Š” Dynamic testing

  • Path selection criteria
  • Data selection criteria
  • Error-oriented criteria

Path Selection Criteria

  • ํ…Œ์ŠคํŠธํ•  ๋ช…๋ น๋ฌธ ๋ฐ ๋ถ„๊ธฐ ์ˆœ์„œ ์„ ํƒ์— ํฌ์ปค์Šค
  • ์†Œํ”„ํŠธ์›จ์–ด ํ๋ฆ„ ๊ตฌ์กฐ๋ฅผ ์ปค๋ฒ„ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ…Œ์ŠคํŠธ
  • structural flow graphs์— ๊ธฐ๋ฐ˜
    • Control Flow Coverage : Statement Coverage, Branch Coverage ๋“ฑ
    • Data Flow Coverage

Control Flow Coverage : Statement Coverage

: ํ”„๋กœ๊ทธ๋žจ์˜ ์ œ์–ด ๊ตฌ์กฐ๋ฅผ ์ถฉ๋ถ„ํžˆ ์ปค๋ฒ„ํ•˜๋„๋ก ๊ฒฝ๋กœ(paths)๋ฅผ ์„ ํƒํ•จ์œผ๋กœ์จ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ๊ฐœ๋ฐœ๋œ๋‹ค.

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ ํƒ์„ ๊ฐ€์ด๋“œํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋จ
๋ชจ๋“  ๋ฌธ์žฅ์ด ์‹คํ–‰๋˜์–ด์•ผ ํ•จ

  • ์ •ํ™•์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค๊ณ  ํ•ด์„œ 100% ๋ฌธ์žฅ ๋ฒ”์œ„๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹˜
  • ๊ทธ๋Ÿฌ๋‚˜ 100% ๋ฌธ์žฅ ๋ฒ”์œ„ ๋ฏธ๋งŒ์€ ํ”„๋กœ๊ทธ๋žจ์— ํ…Œ์ŠคํŠธ๋˜์ง€ ์•Š์€ ์ฝ”๋“œ๊ฐ€ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

Branch (Decision) Coverage

: ๊ฐœ๋ฐœ ์†Œ์Šค์˜ ๊ฐ ๋ถ„๊ธฐ๋ฌธ์ด ์ˆ˜ํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ ํƒ์„ ๊ฐ€์ด๋“œํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋จ
๋ชจ๋“  ๋ธŒ๋žœ์น˜๊ฐ€ ์‹คํ–‰๋˜์–ด์•ผ ํ•จ

  • If-then, if-then-else statement
    • True and False branches
  • Case statement
    • each branch and others or default
  • โ€œwhileโ€, โ€œrepeatโ€ and โ€œforโ€ statements
    • ๋ฃจํ”„ ๋ณธ๋ฌธ์— ํ•œ ๋ฒˆ ์ด์ƒ ๋“ค์–ด๊ฐ€๊ณ  ์ข…๋ฃŒํ•ด์•ผํ•œ๋‹ค.

Data Flow Coverage

: ํ”„๋กœ๊ทธ๋žจ ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ์‚ฌ์šฉ์„ ์ถ”์ ํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ ํƒ์„ ๊ฐ€์ด๋“œํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋จ
๋ณ€์ˆ˜ ์„ ์–ธ ํ›„ ์‚ฌ์šฉ๋๋Š”์ง€ ํ…Œ์ŠคํŠธํ•จ
All-Defs : ๊ฐ ์šฉ๋„์˜ ์ •์˜์— ๋„๋‹ฌํ•จ
All-Uses : ๋ชจ๋“  ๊ฐ ์ •์˜์— ๋Œ€ํ•ด ์‚ฌ์šฉ๋จ
All-DU-Paths : ์ •์˜๋ถ€ํ„ฐ ์‚ฌ์šฉ๊นŒ์ง€ ๊ฒฝ๋กœ

Error-Oriented Criteria

Error-Oriented Testing
: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ”„๋กœ์„ธ์Šค์—์„œ ์ธ์  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ๋ฐ ์ดˆ์ ์„ ๋งž์ถ˜ ํ…Œ์ŠคํŒ…
1. Condition Coverage
2. Mutation Coverage

1. Condition Coverage
: ๊ฒฐ์ •์˜ ๊ฐ ์กฐ๊ฑด์€ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฅผ ์ ์–ด๋„ ํ•œ ๋ฒˆ์€ ์ทจํ•ด์•ผ ํ•œ๋‹ค.
Condition/Decision Coverage
: ๊ฐ ์กฐ๊ฑด์˜ ์ฐธ ๋˜๋Š” ๊ฑฐ์ง“์€ ์ ์–ด๋„ ํ•œ ๋ฒˆ ํ…Œ์ŠคํŠธ๋œ๋‹ค.
MC/DC Coverage
Modified Condition / Decision Coverage
: Condition/Decision Coverage + ๊ฐ ๊ฒฐ์ •์—์„œ ์กฐ๊ฑด์€ ๊ฒฐ๊ณผ์— ๋…๋ฆฝ์ ์œผ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

2. Mutation Coverage
: ๋Œ€์ฒด ํ”„๋กœ๊ทธ๋žจ (๋Œ์—ฐ๋ณ€์ด)์€ ์›๋ž˜ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ๋ฌธ์ ์œผ๋กœ ์ˆ˜์ •ํ•˜์—ฌ (์ž๋™์œผ๋กœ) ์ƒ์„ฑ๋œ๋‹ค.

  • Red fish = ์‹ค์ œ ํ”„๋กœ๊ทธ๋žจ faults(์•Œ ์ˆ˜ ์—†๋Š” ์ธ๊ตฌ)
  • Blue fish = ์‹œ๋“œ faults (๋Œ์—ฐ๋ณ€์ด)
  • ์ ์ •์„ฑ : ์žก์€ Blue fish ์ˆ˜, Red fish ์ถ”์ •
  • ์ƒ˜ํ”Œ ๋Œ์—ฐ๋ณ€์ด
    • ๋…ผ๋ฆฌ์  ์ปค๋„ฅํ„ฐ ๊ต์ฒด
    • ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž ๊ต์ฒด
    • ๋ฌธ์žฅ ์‚ญ์ œ
    • ๋‹จํ•ญ ์—ฐ์‚ฐ์ž ์‚ฝ์ž…
    • ๋ฐฐ์—ด ์ฐธ์กฐ ๊ต์ฒด
    • ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž ๋Œ€์ฒด

Functional (Black Box) Testing

: ๊ธฐ๋Šฅ์  ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋ช…์„ธํ•˜๋Š” ๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ํ…Œ์ŠคํŠธ
Exhaustive testing
: ์ž…๋ ฅ, ๊ธฐ๋Šฅ ๋“ฑ์˜ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์„ ํ…Œ์ŠคํŠธ
Random testing
: ์ž„์˜๋กœ ์„ ํƒ๋œ ์ž…๋ ฅ ๋„๋ฉ”์ธ์œผ๋กœ ๋ถ€ํ„ฐ ํ•˜์œ„ ์ง‘ํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ์„ ํƒํ•˜์—ฌ ํ…Œ์ŠคํŠธ

Functional Testing Heuristics
: ๋ชฉํ‘œ๋Š” ์ง€์ •๋œ ๊ฐ ์†Œํ”„ํŠธ์›จ์–ด ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ
Heuristics

  • equivalence partitioning
    • Input/output domain coverage
  • boundary value coverage 
  • special value coverage


Equivalence Partitioning (๋™์น˜๋ถ„ํ• )

  • ๋ชจ๋“ˆ ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜
  • ์ž…๋ ฅ๊ณผ ๊ธฐ๋Šฅ ๊ฐ„์˜ ๊ด€๊ณ„์—์„œ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๋„์ถœ
  • ์ž…๋ ฅ ๋„๋ฉ”์ธ์ด ๋™๋“ฑํ•œ ์ฒ˜๋ฆฌ๋ฅผ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ์˜ ํ•˜์œ„ ์ง‘ํ•ฉ์œผ๋กœ ๋ถ„ํ• ๋œ๋‹ค.
  • ์ถœ๋ ฅ ๊ณต๊ฐ„ ๋ถ„ํ• ๋„ ๊ณ ๋ ค๋  ์ˆ˜ ์žˆ๋‹ค.

Input Domain Coverage

  • ๋ชจ๋“ˆ ์ธํ„ฐํŽ˜์ด์Šค์— ๊ธฐ๋ฐ˜
  • ์ž…๋ ฅ ํŠน์ง•์œผ๋กœ๋ถ€ํ„ฐ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๊ตฌ๋™
  • ์ž…๋ ฅ ์กฐ๊ฑด์˜ ๋ฒ”์œ„์— ๋Œ€ํ•ด ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

Boundary Value Coverage : ๊ฒฝ๊ณ„๊ฐ’ ๊ด€์ ์—์„œ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์ž

  • ๋ชจ๋“ˆ ์ธํ„ฐํŽ˜์ด์Šค์— ๊ธฐ๋ฐ˜
  • ๋ฒ”์œ„์˜ ๊ฒฝ๊ณ„ ํŠน์„ฑ์œผ๋กœ๋ถ€ํ„ฐ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๋„์ถœ
    • ์ž…๋ ฅ ์กฐ๊ฑด์ด ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ: ์˜ˆ: [-1.0, +1.0]
      • ๊ฒฝ๊ณ„ ํ…Œ์ŠคํŠธ
      • ๊ฒฝ๊ณ„ ๋ฐ”๋กœ ๋ฐ”๊นฅ์ชฝ์„ ํ…Œ์ŠคํŠธ
    • ์ž…๋ ฅ ์กฐ๊ฑด์ด ๊ฐ’์˜ ์ˆ˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ: ์˜ˆ: 1..255
      • ์ตœ๋Œ€๊ฐ’ ๋ฐ ์ตœ์†Œ๊ฐ’ ํ…Œ์ŠคํŠธ
      • ์ตœ์†Œ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์„ ์ดˆ๊ณผํ•˜๋Š” ๊ฐ’์„ ํ…Œ์ŠคํŠธ
  • ์ˆœ์„œ๊ฐ€ ์ง€์ •๋œ ์„ธํŠธ์˜ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์™€ ๋งˆ์ง€๋ง‰ ์š”์†Œ์— ํฌ์ปค์Šค๋ฅผ ๋งž์ถ˜๋‹ค.

Special Value Coverage : ํ…Œ์ŠคํŠธํ•  ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŠน์„ฑ ๋ฐ ์ž˜ ์•Œ๋ ค์ง„ ๋ฏผ๊ฐ ๊ฐ’์—์„œ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ๋„์ถœ

SDLC์—์„œ ํ…Œ์ŠคํŒ…

  1. ๊ณ ๊ฐ์˜ ๋‹ˆ์ฆˆ
  2. ์š”๊ตฌ์‚ฌํ•ญ
  3. ์„ค๊ณ„
  4. ์ฝ”๋“œ
  5. Unit Testing
  6. Integration Testing
  7. System Testing
  8. Acceptance Testing

Unit Testing
์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๋น„๊ตํ•˜๋Š” ๋‹จ์œ„ ํ…Œ์ŠคํŠธ
Integration Testing
์ปดํฌ๋„ŒํŠธ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์ปดํฌ๋„ŒํŠธ์˜ ์ฒด๊ณ„์ ์ธ ๊ฒฐํ•ฉ ๋ฐ ํ…Œ์ŠคํŠธ
System Testing
ํ†ตํ•ฉ ํ•˜๋“œ์›จ์–ด ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ
Acceptance Testing
์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ ๋˜๋Š” ์‹œ์Šคํ…œ์ด ๊ณ ๊ฐ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ์ž…์ฆํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ
Regression Testing
์ˆ˜์ • ํ›„ ์žฌ์‹œํ—˜

Unit Testing
: ๋‹จ์ผ ์œ ๋‹› ๋˜๋Š” ๋ชจ๋“ˆ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋˜๋Š” ์œ ๋‹› ํ…Œ์ŠคํŠธ
Integration Testing

  • ์‹œ์Šคํ…œ์˜ ์š”์†Œ๊ฐ€ ๊ฒฐํ•ฉ๋จ์— ๋”ฐ๋ผ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  • ์ž˜ ํ…Œ์ŠคํŠธ๋œ(์˜ฌ๋ฐ”๋ฅธ) ๋ชจ๋“ˆ์˜ ํ†ตํ•ฉ์œผ๋กœ ์ธํ•ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ž˜๋ชป๋œ ์‚ฌ์šฉ
    • ๊ด€๋ จ ๋ชจ๋“ˆ์˜ ๋™์ž‘์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ๊ฐ€์„ค
    • ๋ถˆ๋Ÿ‰ ๋“œ๋ผ์ด๋ฒ„/์Šคํ… ์‚ฌ์šฉ
  • ํ…Œ์ŠคํŠธ ์ ‘๊ทผ ๋ฐฉ์‹
    • Non-incremental : ๋ชจ๋“  ์š”์†Œ๊ฐ€ ํ•œ ๋ฒˆ์— ๊ฒฐํ•ฉ๋˜์–ด ํ…Œ์ŠคํŠธ๋œ๋‹ค.
    • Incremental : ์š”์†Œ๊ฐ€ ์ ์ง„์ ์œผ๋กœ ์ถ”๊ฐ€๋˜๊ณ  ํ…Œ์ŠคํŠธ๋œ๋‹ค.

Regression Testing

: ์ด์ „ ๋ฒ„์ „์—์„œ ์ƒ์†๋œ ์ด์ „ ๊ธฐ๋Šฅ์˜ ์œ ํšจ์„ฑ์„ ๋‹ค์‹œ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•จ
์ƒˆ๋กœ์šด ๋ฒ„์ „ ๋ฐฐํฌํ•  ๋•Œ๋งˆ๋‹ค ํ…Œ์ŠคํŒ…ํ•œ๋‹ค.

  • ์ˆ˜์ • ์‚ฌํ•ญ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๊ณ ,
  • ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜์ •๋˜์ง€ ์•Š์€ ๋ถ€๋ถ„์€ ์ˆ˜์ •์œผ๋กœ ์ธํ•ด ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค

Object-Oriented Software ํ…Œ์ŠคํŒ…

  • System testing
    • ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ‰๊ฐ€
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋™์ž‘์—์„œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ๋ฐœ ๋„์ถœ
  • Unit testing
    • ํด๋ž˜์Šค์˜ ๋ฐ์ดํ„ฐ์™€ ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค
    • ํด๋ž˜์Šค์— ์žˆ๋Š” ๋ชจ๋“  ๋ฉ”์†Œ๋“œ์™€ ์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋Šฅ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ตฌ์„ฑ
    • ์บก์Šํ™”๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹คํ–‰ ํ™˜๊ฒฝ ํ•„์š”

์˜ˆ์ œ ์‹œ์Šคํ…œ์„ ํ…Œ์ŠคํŒ…ํ•˜๊ธฐ

  • Outline method
    • ๊ด€๋ จ ์ •๋ณด๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ์œ ์šฉํ•œ ํˆด
  • Use cases method 
    • ์•กํ„ฐ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ดˆ์ 

์œ ์ฆˆ ์ผ€์ด์Šค์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค

  • ์œ ์ฆˆ ์ผ€์ด์Šค
    • ์š”๊ตฌ์‚ฌํ•ญ ๋ฌธ์„œํ™”๋ฅผ ์œ„ํ•œ ํšจ๊ณผ์ ์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜
    • ์•กํ„ฐ์˜ ๊ด€์ ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋™์ž‘ ์„ค๋ช…
    • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ์‰ฝ๊ฒŒ ๋ฒˆ์—ญ
    • ์ข…์ข… ์„ฑ๋Šฅ ๋ฐ ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ์™€ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.

์œ ์ฆˆ ์ผ€์ด์Šค์˜ 4๊ฐœ ์„น์…˜

  • ๋ฉ”์ธํ—ค๋” : ๊ณ ์œ ํ•œ ์•„์ด๋””์™€ ๊ฐ„๋‹จํ•œ ์„ค๋ช…
  • ์„ฑ๊ณต๋ณด์ฆ์„œ : ์„ฑ๊ณต์‹œ ์ตœ์ข…์ƒํƒœ
  • ์ฃผ์š” ์„ฑ๊ณต ์‹œ๋‚˜๋ฆฌ์˜ค : ๋ชจ๋“  ๋‹จ๊ณ„๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜๊ณ  ๋ณต๊ตฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค
  • ํ™•์žฅ : ์ฃผ์š” ์„ฑ๊ณต ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ํ•œ ๋‹จ๊ณ„์—์„œ ๋ถ„๊ธฐ๋˜๋Š” ๋Œ€์ฒด ๊ณผ์ •

Non-Functional Testing

  • ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ ๋˜๋Š” ์‹œ์Šคํ…œ์ด ์š”๊ตฌ ์‚ฌํ•ญ์— ์ง€์ •๋œ ๋น„๊ธฐ๋Šฅ์  ๊ธฐ๋Šฅ์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ

ํ…Œ์ŠคํŠธ ๊ธฐ์ˆ 

  • ๋ณด์•ˆ ํ…Œ์ŠคํŠธ (Security Testing)
    • ์‹œ์Šคํ…œ์ด ์Šน์ธ๋˜์ง€ ์•Š์€ ์‚ฌ๋žŒ์˜ ์ ‘๊ทผ์„ ์ ์ ˆํ•˜๊ฒŒ ํ†ต์ œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? (๋ฐ์ดํ„ฐ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์•ก์„ธ์Šค)
  • ์ •ํ™•๋„ ํ…Œ์ŠคํŠธ (Accuracy Testing)
    • ๊ฒฐ๊ณผ๊ฐ€ ์ด๋ก ์  ์ •ํ™•์„ฑ์— ๊ฐ€๊น์Šต๋‹ˆ๊นŒ?
  • Performance Testing
    • ์‹œ์Šคํ…œ์ด ๋ชจ๋“  ์กฐ๊ฑด์—์„œ ์‘๋‹ต ์‹œ๊ฐ„, ์ฒ˜๋ฆฌ๋Ÿ‰ ๋ฐ ์ €์žฅ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•ฉ๋‹ˆ๊นŒ?
  •  Load/Stress Testing (๊ณผ๋ถ€ํ•˜)
    • ์‹œ์Šคํ…œ์€ ์—ฌ๋Ÿฌ ๋™์‹œ ์ธํ„ฐ๋ŸฝํŠธ์™€ ๊ฐ™์€ ๋†’์€ ๋ถ€ํ•˜์™€ ์ŠคํŠธ๋ ˆ์Šค์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?
  • Volume Testing
    • ์‹œ์Šคํ…œ์ด ์žฅ๊ธฐ๊ฐ„์— ๊ฑธ์ณ ์ตœ๋Œ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
728x90
๋ฐ˜์‘ํ˜•
LIST