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

SQA/Theory

Whith Box Testing ์ œ์–ด ํ๋ฆ„ ํ…Œ์ŠคํŒ…

Control Flow Testing ์ œ์–ด ํ๋ฆ„ ํ…Œ์ŠคํŒ… ์ด๋ž€?

- ํ”„๋กœ๊ทธ๋žจ์˜ ์ œ์–ด ํ๋ฆ„์„ ์ด์šฉํ•˜๋Š” ๋ชจ๋ธ

- ๊ตฌ์กฐ์  ํ…Œ์ŠคํŒ… ๊ธฐ๋ฒ•์— ์†ํ•œ๋‹ค.

- ํ”„๋กœ๊ทธ๋žจ ๋‚ด์˜ ๋ชจ๋“  path๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์„ ํƒํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค.

 

 

์ œ์–ด ํ๋ฆ„ ํ…Œ์ŠคํŒ… ์ด๋ก 
์ œ์–ด ํ๋ฆ„ ํ…Œ์ŠคํŒ… ์ด๋ก 

 


์ „์ œ์กฐ๊ฑด

 

1. ์„ค๊ณ„ ๋ช…์„ธ์„œ๊ฐ€ ์ •ํ™•ํ•ด์•ผ ํ•œ๋‹ค.

2. Data๋Š” ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ •์˜/์ ‘๊ทผ๋˜์–ด์•ผ ํ•œ๋‹ค.

3. Control Flow์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ  ๋ฒ„๊ทธ๊ฐ€ ์—†์–ด์•ผ ํ•œ๋‹ค.

 


 

Control Structure ์ œ์–ด ๊ตฌ์กฐ

 

- Control Flow Test๋Š” "Control Structure"๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ๋„์ถœ
- Sequence : a → b → c๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ
- Branching(Selection) : a์—์„œ b๋กœ ๊ฐˆ์ง€ c๋กœ ๊ฐˆ์ง€ ๊ณ ๋ฅด๋Š” ์กฐ๊ฑด๋ฌธ
- Iteration : for, while ๋“ฑ์˜ ๋ฐ˜๋ณต๋ฌธ
โ€‹


Control Flow Graph ์ œ์–ด ํ๋ฆ„ ๊ทธ๋ž˜ํ”„

 

- CFG: ์ œ์–ด ํ๋ฆ„ ๊ทธ๋ž˜ํ”„
- ํ”„๋กœ๊ทธ๋žจ์˜ ์ œ์–ด ํ๋ฆ„์„ ๊ทธ๋ž˜ํ”„๋กœ ํ‘œํ˜„

Three Premitives

1. Decision(branch) :  ์ œ์–ด ํ๋ฆ„์ด ๋ถ„๊ธฐ๋˜๋Š” ์ง€์  (if, case)

2. Junction(join) :  ์ œ์–ด ํ๋ฆ„์ด ํ•ฉ์ณ์ง€๋Š” ์ง€์  (end if, end loop)

3. Process Block :  ํ๋ฆ„์ด ์—ฐ์†์ ์ธ ์ƒํƒœ, ํ•˜๋‚˜์˜ ์ž…๊ตฌ(Entry)์™€ ํ•˜๋‚˜์˜ ์ถœ๊ตฌ(Exit)๋ฅผ ๊ฐ€์ง.

three-premitive-image

 

์ œ์–ด ํ๋ฆ„ ๊ทธ๋ž˜ํ”„์˜ ์˜ˆ์‹œ

example-of-cfg


 

Path ๊ฒฝ๋กœ


- Entry, Decision, Junction์—์„œ ์‹œ์ž‘ํ•˜์—ฌ, ๋‹ค๋ฅธ Decision, Junction, Exit์—์„œ ๋๋‚˜๋Š” ์ƒํƒœ(statement)์˜ ์ˆœ์„œ
- Link(edge)๋Š” ๊ฐ€์žฅ ์ž‘์€ ๊ตฌ๋ถ„์œผ๋กœ ๋‘ Node ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ด๋‹ค.
- Complete Path(Entry/Exit path)๋Š” ์–ด๋–ค ์ฒ˜๋ฆฌ ์ˆœ์„œ์˜ ์‹œ์ž‘์ ์—์„œ ์‹œ์ž‘ํ•˜๊ณ , ๋™์ผํ•œ ์ฒ˜๋ฆฌ ์ˆœ์„œ์˜ ์ข…๋ฃŒ์ ์—์„œ ๋๋‚˜๋Š” path์ด๋‹ค. โ˜ž์™„์ „ํ•œ ๊ฒฝ๋กœ๋ฅผ ๋งํ•จ.

 

 


Complete Path ์™„์ „ํ•œ ๊ฒฝ๋กœ


Complete Path๊ฐ€ ํ…Œ์ŠคํŠธ์— ์œ ์šฉํ•˜๋‹ค.
- ์ž„์˜์˜ statement์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค.
- ์ž„์˜์˜ statement์—์„œ ์ค‘์ง€ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค.
- ์ผ๋ฐ˜์ ์œผ๋กœ input/output์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ ์ˆœ์„œ๋ฅผ ์ƒ๊ฐํ•œ๋‹ค.

 

 


Testing Criteria ํ…Œ์ŠคํŒ… ๊ธฐ์ค€


1. Path Testing (Pinf)

- ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  path์— ๋Œ€ํ•ด test๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
- ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ Entry/Exit์— ์ œํ•œ๋œ๋‹ค.
- Loop๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌดํ•œ ์ˆ˜์˜ path๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.


2. Statement Testing (P1)

- ๋ชจ๋“  Statement์— ๋Œ€ํ•ด ์ตœ์†Œ 1ํšŒ์˜ test๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.


3. Branch Testing (P2)

- ๋ชจ๋“  ๋ถ„๊ธฐ๋ฌธ์— ๋Œ€ํ•ด ์ตœ์†Œ 1ํšŒ์˜ test๋ฅผ ์ˆ˜ํ–‰


โ€‹ํ…Œ์ŠคํŒ… ๊ฐ•๋„

P1 < P2 < ..... < Pinf
 - ํ…Œ์ŠคํŠธ์— ๋”ฐ๋ผ ๊ฐ•๋„๋ฅผ ๋†’์—ฌ๊ฐ€๋Š” test๋ฅผ ์ˆ˜ํ–‰

 

 

 

 

 

 


์˜ˆ์ œ ์ฝ”๋“œ

์ ˆ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ

Int ABS(int x)
{
     if(x < 0)
         x = -x;
     return 0 ;
}

 

1. Flow Graph

flow-graph

2. Statement Testing

- node๋ฅผ ํ•œ ๋ฒˆ์”ฉ๋งŒ ์ง€๋‚˜๋ฉด ๋œ๋‹ค.

- acde ๊ฒฝ๋กœ ํ•˜๋‚˜๋งŒ ์ง€๋‚˜๋ฉด 100% ๋งŒ์กฑํ•œ๋‹ค.

statement-test

 

3. Branch Testing

- ๋ถ„๊ธฐ๊ฐ€ ๋˜๋Š” T, F๋ฅผ ๊ผญ ํ•œ ๋ฒˆ์”ฉ ์ง€๋‚˜์•ผ ํ•œ๋‹ค.

- acde, ade ๋‘ ๊ฐœ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€๋‚˜๋ฉด 100% ๋งŒ์กฑํ•œ๋‹ค.

branch-test

 

 


ํ•จ๊ป˜ ๊ณต๋ถ€ ํ•ด๋ณผ ๋งŒํ•œ ํ…Œ์ŠคํŒ… ์ด๋ก 

 

White Box Testing ๋ฐ์ดํ„ฐ ํ๋ฆ„ ํ…Œ์ŠคํŒ…

Data Flow Testing (๋ฐ์ดํ„ฐ ํ๋ฆ„ ํ…Œ์ŠคํŒ…) ์ •์˜ - Data๊ฐ€ ์ •์˜๋˜๊ณ  ์‚ฌ์šฉ๋œ ์œ„์น˜์— ๋”ฐ๋ผ์„œ Path๋ฅผ ์„ ํƒํ•˜๋Š” ๊ธฐ๋ฒ• ํŠน์ง• - Data Flow Test๋Š” Data์— ์˜ํ•ด์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด Control Flow Graph๋ฅผ ์‚ฌ์šฉํ•œ

dev-yujin.tistory.com