๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“š ์ „๊ณต ๊ณต๋ถ€/์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™

[์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™] 12์žฅ. ํ…Œ์ŠคํŒ…

12์žฅ. ํ…Œ์ŠคํŒ…

SW testing : ํ…Œ์ŠคํŠธ๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์ „์— ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•  ๋ชฉ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์—ฐ์Šตํ•˜๋Š” ๊ณผ์ •์ด๋‹ค.

ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

  • Errors (๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜)
  • Requirements conformance (์š”๊ตฌ์‚ฌํ•ญ ์ผ์น˜ ์—ฌ๋ถ€)
  • Performance (์„ฑ๋Šฅ)
  • Indication of quality (ํ’ˆ์งˆ ์ˆ˜์ค€)

๋ˆ„๊ฐ€ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ• ๊นŒ?

  1. Developer
    1. ์‹œ์Šคํ…œ์„ ์ดํ•ดํ•˜๊ณ  ์žˆ์Œ
    2. ์กฐ์‹ฌ์Šค๋Ÿฝ๊ฒŒ ํ…Œ์ŠคํŠธํ•˜๊ณ 
    3. ์ „๋‹ฌ์„ ์ด๋Œ์–ด๋ƒ„
    4. “๊ตฌ์„ฑ ์ž‘์—…”
  2. Independent Tester
    1. ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ๋ฐฐ์›Œ์•ผ ํ•จ
    2. ๊ณ ์žฅ๋‚ด๋ ค๊ณ  ์‹œ๋„ํ•จ
    3. ํ’ˆ์งˆ์„ ์ด๋Œ์–ด๋ƒ„
    4. “ํŒŒ๊ดด์ ์ธ ์ผ”

์ „๋žต์  ์ ‘๊ทผ

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

V&V: Verification & Validation (๊ฒ€์ฆ ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ)

  • Verification - ํ™•์ธ: ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ํŠน์ • ๊ธฐ๋Šฅ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ์ผ๋ จ์˜ ํƒœ์Šคํฌ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.
  • Validation - ๊ฒ€์ฆ: ๊ตฌ์ถ•๋œ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๊ณ ๊ฐ์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•˜๋Š” ๋‹ค์–‘ํ•œ ์ž‘์—… ์„ธํŠธ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.
  • V&V๋Š” ์•„๋ž˜ SQA๋ฅผ ํฌํ•จํ•œ๋‹ค.
    • Verification : “์šฐ๋ฆฌ๊ฐ€ ์ œํ’ˆ์„ ์•Œ๋งž์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ง“๊ณ  ์žˆ๋‚˜?” - ๋…ผ๋ฆฌ์  ๊ฒ€์ฆ
    • Validation : “์šฐ๋ฆฌ๊ฐ€ ์•Œ๋งž์€ ์ œํ’ˆ์„ ์ง“๊ณ  ์žˆ๋‚˜?” - ์œ ํšจ์„ฑ ๊ฒ€์ฆ

 ๐Ÿ’ก ํ…Œ์ŠคํŒ… ์ „๋žต

  1. ๋‹จ์œ„์‹œํ—˜(Unit test) : code : ๊ฐ ๋‹จ์œ„์— ์ง‘์ค‘
  2. ํ†ตํ•ฉ์‹œํ—˜(Integration test) : design : ์„ค๊ณ„์™€ SW์•„ํ‚คํ…์ฒ˜์— ์ง‘์ค‘
  3. ๊ฒ€์ฆ์‹œํ—˜(Validation test) : requirements : ์š”๊ตฌ์‚ฌํ•ญ ํ™•์ธ
  4. ์‹œ์Šคํ…œ์‹œํ—˜(System test) : system engineering : SW์™€ ๊ธฐํƒ€ ์‹œ์Šคํ…œ ์š”์†Œ๋ฅผ ์ „์ฒด์ ์œผ๋กœ ์‹œํ—˜

์šฐ๋ฆฌ๋Š” '์ž‘์€ ๊ฒƒ์—์„œ ์‹œํ—˜'์œผ๋กœ ์‹œ์ž‘ํ•˜์—ฌ 'ํฐ ๊ฒƒ์—์„œ ์‹œํ—˜'์œผ๋กœ ๋‚˜์•„๊ฐ„๋‹ค.

  • ๊ธฐ์กด ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ฒฝ์šฐ
  • ๋ชจ๋“ˆ(๊ตฌ์„ฑ ์š”์†Œ)์ด ์ดˆ๊ธฐ ์ดˆ์ ์ž…๋‹ˆ๋‹ค.
  • ๋ชจ๋“ˆ ํ†ตํ•ฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด์ง€ํ–ฅ SW์˜ ๊ฒฝ์šฐ
    • ๊ฐœ๋ณ„ ๋ชจ๋“ˆ(์ผ๋ฐ˜์ ์ธ ๊ด€์ )์—์„œ ํŠน์„ฑ๊ณผ ์šด์˜์„ ํฌ๊ด„ํ•˜๊ณ  ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜๊ณผ ํ˜‘์—…์„ ์•”์‹œํ•˜๋Š” OOO ํด๋ž˜์Šค๋กœ "์†Œ๊ทœ๋ชจ ํ…Œ์ŠคํŠธ"๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ์ดˆ์ ์„ ๋งž์ถฅ๋‹ˆ๋‹ค.

 

ํ…Œ์ŠคํŒ… ์ „๋žต ์š”๋ น

  • ํ…Œ์ŠคํŠธ๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ํ›จ์”ฌ ์ „์— ์ •๋Ÿ‰ํ™” ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์œผ๋กœ ์ œํ’ˆ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ง€์ •ํ•˜์‹ญ์‹œ์˜ค.
  • ํ…Œ์ŠคํŠธ ๋ชฉํ‘œ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ์†Œํ”„ํŠธ์›จ์–ด ์‚ฌ์šฉ์ž๋ฅผ ์ดํ•ดํ•˜๊ณ  ๊ฐ ์‚ฌ์šฉ์ž ๋ฒ”์ฃผ์— ๋Œ€ํ•œ ํ”„๋กœํŒŒ์ผ์„ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.
  • "์‹ ์†ํ•œ ์ฃผ๊ธฐ ํ…Œ์ŠคํŠธ"๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ํ…Œ์ŠคํŠธ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•ฉ๋‹ˆ๋‹ค.
  • ์ž์ฒด ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋œ "๊ฐ•๋ ฅํ•œ" ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์ถ•
  • ํ…Œ์ŠคํŠธ ์ „์— ํšจ๊ณผ์ ์ธ ๊ณต์‹ ๊ธฐ์ˆ  ๊ฒ€ํ† ๋ฅผ ํ•„ํ„ฐ๋กœ ์‚ฌ์šฉ
  • ๊ณต์‹์ ์ธ ๊ธฐ์ˆ  ๊ฒ€ํ† ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ „๋žต๊ณผ ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€๋ฅผ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์ง€์†์ ์ธ ๊ฐœ์„  ์ ‘๊ทผ ๋ฐฉ์‹ ๊ฐœ๋ฐœ

Unit Testing → SW ์ตœ์†Œ ๋‹จ์œ„์˜ ์ดˆ์  ๊ฒ€์ฆ (using test cases - ์ธํ„ฐํŽ˜์ด์Šค, ๋กœ์ปฌ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ, ๊ฒฝ๊ณ„ ์กฐ๊ฑด, ๋…๋ฆฝ path, ์˜ˆ์™ธ์ฒ˜๋ฆฌ)

 

 ๐Ÿ’ก Driver vs Stub

  • ๋“œ๋ผ์ด๋ฒ„ : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ํ…Œ์ŠคํŠธํ•  ๊ตฌ์„ฑ ์š”์†Œ์— ์ „๋‹ฌํ•˜๊ณ  ๊ด€๋ จ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ƒ์œ„ ๋ฉ”์ธ๋ชจ๋“ˆ์˜ ์—ญํ• .
  • ์Šคํ… : ํ…Œ์ŠคํŠธํ•  ๊ตฌ์„ฑ ์š”์†Œ์—์„œ ํ˜ธ์ถœํ•œ ํ•˜์œ„ ๋ชจ๋“ˆ์„ ๋Œ€์ฒดํ•˜๋Š” ์ž„์‹œ ๋ชจ๋“ˆ
    • ์ตœ์†Œํ•œ์˜ ๋ฐ์ดํ„ฐ ์กฐ์ž‘๊ณผ ์ž…์ถœ๋ ฅ ๊ฒ€์ฆ, ํ…Œ์ŠคํŠธ ์ค‘์ธ ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์ œ์–ด ๊ถŒํ•œ ๋ฐ˜ํ™˜ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ „๋žต

  • ์˜ต์…˜:
    • "๋น…๋ฑ…" ์ „๋žต
    • ์ ์ง„์  ๊ฑด์„ค ์ „๋žต

์•ŒํŒŒ ํ…Œ์ŠคํŠธ : ํŠน์ • ์‚ฌ์šฉ์ž๋“ค์— ์˜ํ•ด ๊ฐœ๋ฐœ์ž์˜ ์ž…์žฅ์—์„œ ํ…Œ์ŠคํŠธ

๋ฒ ํƒ€ ํ…Œ์ŠคํŠธ : ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๋“ค์ด ์ž์‹ ์˜ ์‚ฌ์šฉํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ

 

 

Top-down vs Bottom-up

 

  • ํƒ‘ ๋‹ค์šด : ํ…Œ์ŠคํŠธ๊ฐ€ ์‰ฝ์ง€ ์•Š์ง€๋งŒ ์Šคํ…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ ์ œ์–ด ๊ธฐ๋Šฅ์„ ์กฐ๊ธฐ์— ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค. vs
  • ๋ฐ”ํ…€ ์—… : ์—”ํ‹ฐํ‹ฐ๋กœ์„œ์˜ ํ”„๋กœ๊ทธ๋žจ์€ ๋งˆ์ง€๋ง‰ ๋ชจ๋“ˆ์ด ์ถ”๊ฐ€๋  ๋•Œ๊นŒ์ง€ ์กด์žฌํ•˜์ง€ ์•Š์ง€๋งŒ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์„ค๊ณ„๊ฐ€ ๋” ์‰ฝ๊ณ  ์Šคํ…์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ์ƒŒ๋“œ์œ„์น˜ ํ…Œ์ŠคํŒ… : middle-out ํ…Œ์ŠคํŒ…์œผ๋กœ ํƒ‘๋‹ค์šด๊ณผ ๋ฐ”ํ…€์—…์„ ํ•ฉ์นœ ๊ฒƒ

OOT ์ „๋žต

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

 

High Order Testing (๊ณ ์ฐจ ํ…Œ์ŠคํŠธ)

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

๋””๋ฒ„๊น… : A Diagnostic process(์ง„๋‹จ ํ”„๋กœ์„ธ์Šค)

  • ์„ฑ๊ณต์ ์ธ ํ…Œ์ŠคํŠธ์˜ ๊ฒฐ๊ณผ๋กœ ๋ฐœ์ƒ.
  • ์ฆ์ƒ(symptom)๊ณผ ์›์ธ(cause)์„ ์—ฐ๊ฒฐํ•˜๋Š” ์ •์‹ ์  ๊ณผ์ •์ด ์ œ๋Œ€๋กœ ์ดํ•ด๋˜์ง€ ์•Š์Œ

 

Debugging Techniques

  • brute force testing : ๋ฌด๋ ฅ ์‹œํ—˜
  • back-tracking : ์—ญ์ถ”์ 
  • cause elimination : ์›์ธ ์ œ๊ฑฐ

๐Ÿ’ก ๋ฌด์ฐจ๋ณ„ ๋Œ€์ž… ๋””๋ฒ„๊น…

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

 

๐Ÿ’ก ์—ญ์ถ”์ 

์ด ๋ฐฉ๋ฒ•์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฆ‰์‹œ ๊ด€์ฐฐ ๊ฐ€๋Šฅํ•œ ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋กœ ์‹œ์ž‘ํ•˜๋„๋ก ํ•œ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ์—ญ์ถ”์ ํ•˜์—ฌ ์›์ธ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํ•˜๊ฒŒ๋„, ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ์ฃผ์–ด์ง„ ์ง€์ ์œผ๋กœ ์ด์–ด์ง€๋Š” ์‹คํ–‰ ๊ฒฝ๋กœ์˜ ์ˆ˜๋Š” ๋ฒ„๊ทธ์˜ ์›์ธ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ณณ์—์„œ ๋ฉ€์–ด์งˆ์ˆ˜๋ก ์ƒ๋‹นํžˆ ์ปค์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋”ฐ๋ผ์„œ ์ด ๋ฐฉ๋ฒ•์€ ๋น„์‹ค์šฉ์ ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ’ก ์›์ธ์ œ๊ฑฐ

์ด ๋ฐฉ๋ฒ•์—์„œ ๊ฐœ๋ฐœ์ž๋Š” ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•œ ์ด์œ ์— ๋Œ€ํ•œ ๊ฐ€์„ค์„ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” ๋ฒ„๊ทธ๋ฅผ ์ง์ ‘ ๊ฒ€์‚ฌํ•˜๊ฑฐ๋‚˜ ๊ฐ€์„ค์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ž˜ ์ดํ•ดํ•˜๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์˜์กดํ•˜์ง€๋งŒ ์ข…์ข… ๊ฐ€์žฅ ์งง์€ ๋””๋ฒ„๊ทธ ์‹œ๊ฐ„์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

Correcting the errors

  1. ๋‹ค๋ฅธ ๋ถ€๋ถ„์—์„œ ์žฌํ˜„๋œ ๊ฑด์ง€?
  2. ๋‹ค์Œ ๋ฒ„๊ทธ?
  3. ๋ฐœ์ƒ ์žฅ์†Œ์—์„œ ์˜ˆ๋ฐฉ ๊ฐ€๋Šฅํ•œ์ง€?

Testability : ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ

  • ์šด์˜์„ฑ(Operability) — "์ž˜ ์ž‘๋™ํ• ์ˆ˜๋ก ๋” ํšจ์œจ์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."
  • ๊ด€์ฐฐ ๊ฐ€๋Šฅ์„ฑ(Observability) — "๋ณธ ๊ฒƒ์ด ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค."
  • ์ œ์–ด์„ฑ(Controllability) — "์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋” ์ž˜ ์ œ์–ดํ• ์ˆ˜๋ก ํ…Œ์ŠคํŠธ๋ฅผ ๋” ๋งŽ์ด ์ž๋™ํ™”ํ•˜๊ณ  ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."
  • ๋ถ„ํ•ด์„ฑ(Decomposability) — "ํ…Œ์ŠคํŠธ ๋ฒ”์œ„๋ฅผ ์ œ์–ดํ•จ์œผ๋กœ์จ ๋ฌธ์ œ๋ฅผ ๋ณด๋‹ค ์‹ ์†ํ•˜๊ฒŒ ๊ฒฉ๋ฆฌํ•˜๊ณ  ๋ณด๋‹ค ์Šค๋งˆํŠธํ•œ ์žฌํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."
  • ๋‹จ์ˆœ์„ฑ(Simplicity) — "ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์ด ์ ์„์ˆ˜๋ก ๋” ๋น ๋ฅด๊ฒŒ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."
  • ์•ˆ์ •์„ฑ(Stability) — "๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์„์ˆ˜๋ก ํ…Œ์ŠคํŠธ ์ค‘๋‹จ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค."
  • ์ดํ•ด ๊ฐ€๋Šฅ์„ฑ(Understandability) — "๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ํ™•๋ณดํ• ์ˆ˜๋ก ๋” ํ˜„๋ช…ํ•˜๊ฒŒ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

๐Ÿ’ก ํ›Œ๋ฅญํ•œ ํ…Œ์ŠคํŠธ๋ž€?

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

 

Test Case Design (์‹œํ—˜ ์‚ฌ๋ก€ ์„ค๊ณ„)

  • ๋ชฉํ‘œ: ์˜ค๋ฅ˜ ํŒŒ์•…
  • ๊ธฐ์ค€: ์™„์ „ํ•œ ๋ฐฉ์‹์œผ๋กœ
  • ์ œ์•ฝ ์กฐ๊ฑด: ์ตœ์†Œํ•œ์˜ ๋…ธ๋ ฅ๊ณผ ์‹œ๊ฐ„์œผ๋กœ

Exhaustive Testing vs Selective Testing

White-Box Testing : sw ๊ตฌ์กฐ ํ…Œ์ŠคํŠธ, ๋‚ด๋ถ€ ์„ค๊ณ„ ๋ฐ ์ฝ”๋“œ์˜ ๊ตฌ์กฐ ๋ฐ ์˜ํ–ฅ

  • Glass-box testing
    1. independent path
    2. logical decision
    3. all loop
    4. data structure

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

Basis Path Testing

Black-Box Testing : sw ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ, ์™ธ๋ถ€ ์„ค๊ณ„ ๋ฐ ๋™์ž‘ ํ…Œ์ŠคํŠธ

๋‚ด๋ถ€๋ฅผ ๋ณผ ์ˆ˜ ์—†๋Š” ๋ฐ•์Šค (๋ธ”๋ž™๋ฐ•์Šค)

  • Behavioral testing
    1. incorrect/missing function
    2. interface errors
    3. data structure errors
    4. behavioral errors
    5. initiation/termination errors
  • ๊ธฐ๋Šฅ ์œ ํšจ์„ฑ์€ ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธ๋ฉ๋‹ˆ๊นŒ?
  • ์‹œ์Šคํ…œ ๋™์ž‘ ๋ฐ ์„ฑ๋Šฅ์€ ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธ๋ฉ๋‹ˆ๊นŒ?
  • ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ž…๋ ฅ์ด ์ข‹์€ ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€๊ฐ€ ๋  ๊ฒƒ์ธ๊ฐ€?
  • ์‹œ์Šคํ…œ์ด ํŠน์ • ์ž…๋ ฅ ๊ฐ’์— ํŠนํžˆ ๋ฏผ๊ฐํ•ฉ๋‹ˆ๊นŒ?
  • ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค์˜ ๊ฒฝ๊ณ„๋Š” ์–ด๋–ป๊ฒŒ ๋ถ„๋ฆฌ๋ฉ๋‹ˆ๊นŒ?
  • ์‹œ์Šคํ…œ์—์„œ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์†๋„ ๋ฐ ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ์€ ์–ผ๋งˆ์ž…๋‹ˆ๊นŒ?
  • ํŠน์ • ๋ฐ์ดํ„ฐ ์กฐํ•ฉ์ด ์‹œ์Šคํ…œ ์ž‘๋™์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๊นŒ?

< ๋™๋“ฑ์„ฑ ๋ถ„ํ•  : Equivalence Partitioning >

→ ์ž…๋ ฅ ๋„๋ฉ”์ธ์„ ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค๋กœ ๋‚˜๋ˆ„๋Š” ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•.

  • ์œ ํšจํ•œ ๊ฐ’ ํ•˜๋‚˜, ๋ฒ”์œ„ ๋‚ด์˜ ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฐ’ ๋‘ ๊ฐœ
  • ์œ ํšจํ•œ ๋ฉค๋ฒ„ ํ•˜๋‚˜, ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฉค๋ฒ„ ํ•˜๋‚˜
  • ํ•˜๋‚˜๋Š” ์œ ํšจํ•˜๊ณ  ํ•˜๋‚˜๋Š” ์ž˜๋ชป๋œ ๋ถ€์šธ

< ๊ฒฝ๊ณ„๊ฐ’ ๋ถ„์„ : Boundary Value Analysis >

→ ๋” ๋งŽ์€ ์˜ค๋ฅ˜๊ฐ€ "์ค‘์•™"์ด ์•„๋‹Œ ์ž…๋ ฅ ๋„๋ฉ”์ธ์˜ ๊ฒฝ๊ณ„์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  1. a์™€ b์˜ ๋ฐ”๋กœ ์œ„์™€ ์•„๋ž˜์˜ a์™€ b์˜ ๊ฐ’
  2. ์ตœ์†Œ ๋ฐ ์ตœ๋Œ€ ์ˆ˜, ์ตœ์†Œ ๋ฐ ์ตœ๋Œ€ ๋ฐ”๋กœ ์œ„ ๋ฐ ์•„๋ž˜
  3. ์ถœ๋ ฅ์— 1, 2 ์ ์šฉ
  4. ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ฒฝ๊ณ„