SQA/Theory (6) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ White Box Testing ์ํ ๋ณต์ก๋ Cyclomatic Complexity (์ํ ๋ณต์ก๋) ๋ณต์ก๋(Complexity) - ์์คํ ์ด ๊ฒ์ฆํ๊ธฐ ์ด๋ ค์ด ๋์์ธ์ด๋ ๊ตฌํ์ ๊ฐ์ง ์ ๋ ์ํ ๋ณต์ก๋(Cycolmatic Complexity), v(G) - ํ๋ก๊ทธ๋จ์ ๋ณต์ก๋๋ฅผ ์ ๋์ ์ผ๋ก ํ๊ฐํ๋ ๋ฐฉ๋ฒ - ํ๋ก๊ทธ๋จ์ ๋ ๋ฆฝ์ ์ธ ๊ฒฝ๋ก์ ์ - ๋ชจ๋ ๊ตฌ๋ฌธ์ด ํ ๋ฒ์ฉ์ ์คํ๋์์์ ๋ณด์ฅํ๊ธฐ ์ํ ํ ์คํธ ํ์์ ์ํ์ผ๋ก ์ฌ์ฉ ๊ณ์ฐ๋ฒ ์์๋ณด๊ธฐ ์ํ ๋ณต์ก๋ ๊ณต์ v(G) = E - N + 2 v(G) = P + 1 - E : edge์ ๊ฐ์ - N : node์ ๊ฐ์ - P : ๋ถ๊ธฐ(predicate) ๋๋ node์ ๊ฐ์ ์ํ ๋ณต์ก๋ - ๊ฐ๋จํ ์์ - N = 6, E = 7, P = 2 ใด node, edge๋ฅผ ์ฌ์ฉํ ๊ณ์ฐ โ v(G) = E - N + 2 = .. White Box Testing ํํฅ์ ํ ์คํธ์ ์ํฅ์ ํ ์คํธ ํน์ ์ปดํฌ๋ํธ ๊ฐ๋ฐ์ด ์๋ฃ๋์ง ์์ ์ํฉ์์ ํ์ํ ํ ์คํธ๋ฅผ ์งํํ๊ธฐ ์ํด ๋๋ฏธ ์ปดํฌ๋ํธ(Dummy Component)๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธํ๋ ๊ฒ์ ๋งํ๋ค. ํํฅ์ ํ ์คํธ Top-Down - ์์ ๋ชจ๋๋ก๋ถํฐ ํ์ ๋ชจ๋์ ํฅํ์ฌ ํ ์คํธ๋ฅผ ์งํํ๋ ๊ฒ - ์์คํ ์ ๊ตฌํ๋ ๋ชจ๋ ๋ชจ๋์ ๋ค์ฌ๋ค๋ณผ ์ ์๋ค. - ์คํ ์ ์ด์ฉํ์ฌ ์์ ๋ชจ๋์ ํ ์คํ ํ๋ค. - ์คํ (stub) : ๊ฐ์ง ํ์ ๋ชจ๋ ์ํฅ์ ํ ์คํธ Down-Top - ํ์ ๋ชจ๋๋ก ๋ถํฐ ์์ ๋ชจ๋์ ํฅํ์ฌ ํ ์คํธ๋ฅผ ์งํํ๋ ๊ฒ - ๊ฐ๋ฐ ์ค์ธ ๋ชจ๋(์์คํ ) ์ค, ๋ถํ์คํ ์์๋ฅผ ํฌํจํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค. - ๋ถํ์คํ ์์ : ์ค์ ๋ก ์คํ์ด ๊ฐ๋ฅํ์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๊ฒ์ด ์ด๋ ค์ด ์์ - ๋๋ผ์ด๋ฒ๋ฅผ ์ด์ฉํ์ฌ ํ์ ๋ชจ๋์ ํตํฉํ์ฌ ํ ์คํ ํ๋ค. - ๋๋ผ์ด๋ฒ(drive.. 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, whi.. White Box Testing ๋ฐ์ดํฐ ํ๋ฆ ํ ์คํ Data Flow Testing (๋ฐ์ดํฐ ํ๋ฆ ํ ์คํ ) ์ ์ - Data๊ฐ ์ ์๋๊ณ ์ฌ์ฉ๋ ์์น์ ๋ฐ๋ผ์ Path๋ฅผ ์ ํํ๋ ๊ธฐ๋ฒ ํน์ง - Data Flow Test๋ Data์ ์ํด์ ๋ฐ์ํ๋ ์ค๋ฅ๋ฅผ ํ์ ํ๊ธฐ ์ํด Control Flow Graph๋ฅผ ์ฌ์ฉํ๋ค. - Path Teating, Branch Teating, Statement Testing ๊ณผ์ ๊ฐญ ์ฐจ์ด๋ฅผ ๋ฉ์ฐ๋ Path ์ ํ ๊ธฐ๋ฒ์ด๋ค. read(x,y): z = x + 2; if (x < y ) w = x + 1; else y = y + 1; print (x,y,w,z) - ์์ ๊ฐ์ ์ฝ๋๊ฐ ์์ ๋, y์ ํ๋ฆ์ ๋ฐ๋ผ ํ ์คํธ๋ฅผ ์งํํ ์ ์๋ค. (x, z๋ ๊ฐ๋ฅํ๋ค) Data Flow Test์ Data์ "Define"๊ณผ "Use"๋ฅผ ์ค์ฌ.. ์ด์ 1 2 ๋ค์