TDD
TDD๋ ํ๋ก๊ทธ๋๋ฐ ๋์ค ๋ด๋ฆฐ ๊ฒฐ์ ๊ณผ ๊ทธ ๊ฒฐ์ ์ ๋ํ ํผ๋๋ฐฑ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ธ์งํ๊ณ , ๋ํ ์ด ๊ฐ๊ฒฉ์ ํต์ ํ ์ ์๊ฒ ํด์ฃผ๋ ๊ธฐ์ ์ ๋งํ๋ค.
ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ์์๋ ๋ค์ ๋ ๊ฐ์ง ๋จ์ํ ๊ท์น๋ง ๋ฐ๋ฅธ๋ค.
์ค์ง ์๋ํ๋ ํ ์คํธ๊ฐ ์คํจํ ๊ฒฝ์ฐ์๋ง ์๋ก์ด ์ฝ๋๋ฅผ ์์ฑํ๋ค.
์ค๋ณต์ ์ ๊ฑฐํ๋ค.
ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ ๊ฐ๋ตํ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฝํ ์ ์๋ค.
์ฌ๋นจ๋ฆฌ ํ ์คํธ ํ๋ ์ถ๊ฐํ๋ค.
๋ชจ๋ ํ ์คํธ๋ฅผ ์คํํ๊ณ ์๋ก ์ถ๊ฐํ ๊ฒ์ด ์คํจํ๋์ง ํ์ธํ๋ค.
์ฝ๋๋ฅผ ์กฐ๊ธ ๋ฐ๊พผ๋ค.
๋ชจ๋ ํ ์คํธ๋ฅผ ์คํํ๊ณ ์ ๋ถ ์ฑ๊ณตํ๋์ง ํ์ธํ๋ค.
๋ฆฌํฉํ ๋ง์ ํตํด ์ค๋ณต์ ์ ๊ฑฐํ๋ค.
์ด ๊ณผ์ ์ ๊ฑฐ์น๋ฉด์ ์๋ ๋ด์ฉ๋ค์ ๊ฒฝํํ ์ ์์ ๊ฒ์ด๋ค.
๊ฐ๊ฐ์ ํ ์คํธ๊ฐ ๊ธฐ๋ฅ์ ์์ ์ฆ๊ฐ๋ถ์ ์ด๋ป๊ฒ ์ปค๋ฒํ๋์ง
์ ํ ์คํธ๋ฅผ ๋์๊ฐ๊ฒ ํ๊ธฐ ์ํด ์ผ๋ง๋ ์๊ณ ๋ชป์๊ธด ๋ณํ๊ฐ ๊ฐ๋ฅํ์ง
์ผ๋ง๋ ์์ฃผ ํ ์คํธ๋ฅผ ์คํํ๋์ง
์ผ๋ง๋ ์ ์์ด ์์ ๋จ๊ณ๋ฅผ ํตํด ๋ฆฌํฉํ ๋ง์ด ๋์ด๊ฐ๋์ง
์์กด์ฑ๊ณผ ์ค๋ณต
์คํฐ๋ธ ํ๋ฆฌ๋ง(Steve Freeman)์ ํ ์คํธ์ ์ฝ๋ ๊ฐ์ ๋ฌธ์ ๋ ์ค๋ณต์ด ์๋๋ผ ํ ์คํธ์ ์ฝ๋ ์ฌ์ด์ ์กด์ฌํ๋ ์์กด์ฑ์ด๋ผ๊ณ ๋งํ๋ค. ์ฆ, ์ฝ๋๋ ํ ์คํธ ์ค ํ์ชฝ์ ์์ ํ๋ฉด ๋ฐ๋์ ๋ค๋ฅธ ํ์ชฝ๋ ์์ ํด์ผ๋ง ํ๋ค๋ ๊ฒ์ด๋ค. ์์กด์ฑ์ ์ํํธ์จ์ด ๊ฐ๋ฐ์ ๋ชจ๋ ๋ถ๋ถ์์ ํต์ฌ์ ์ธ ๋ฌธ์ ์ด๋ค.
์์กด์ฑ์ด ๋ฌธ์ ๊ทธ ์์ฒด๋ผ๋ฉด, ์ค๋ณต์ ๋ฌธ์ ์ ์งํ์ด๋ค. ์ค๋ณต์ ๊ฐ์ฅ ํํ ์๋ ๋ก์ง ์ค๋ณต์ด๋ฉฐ, ์ค๋ณต๋ ๋ก์ง์ ํ๋๋ก ํฉ์น๋๋ฐ๋ ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด ์ ์ผ ์ข๋ค.
๋ฌธ์ ์์ฒด๋ ๋จ๊ฒจ๋ ์ฑ๋ก ์งํ๋ง์ ์ ๊ฑฐํ๋ฉด ํ๋ก๊ทธ๋จ์์๋ ์์กด์ฑ๋ ์ ๊ฑฐ๋๋ค. ์ด๊ฒ ๋ฐ๋ก TDD์ "์ค๋ณต์ ์ ๊ฑฐํ๋ค." ๋๋ฒ์งธ ๊ท์น์ด ์กด์ฌํ๋ ์ด์ ์ด๋ฉฐ, ๋ค์ ํ ์คํธ๋ก ์งํํ๊ธฐ์ ์ ์ค๋ณต์ ์ ๊ฑฐํจ์ผ๋ก ์ค์ง ํ๊ธฐ์ง์ ์ฝ๋ ์์ ์ ํตํด ๋ค์ ํ ์คํธ๋ ํต๊ณผ๋๊ฒ ๋ง๋ค ๊ฐ๋ฅ์ฑ์ ์ต๋ํ ํ๋ ๊ฒ์ด๋ค.
์ผ๋ฐ์ ์ธ TDD ์ฃผ๊ธฐ
๋นจ๊ฐ : ์คํจํ๋ ์์ ํ ์คํธ๋ฅผ ์์ฑ
ํ ์คํธ๋ฅผ ์์ฑํ๋ค. ์ด๋ ์ฌ๋ฐ๋ฅธ ๋ต์ ์ฐพ๊ธฐ ์ํด์ ํ์ํ ๋ชจ๋ ์์๋ฅผ ํฌํจ์์ผ์ผํ๋ค.
์ด๋ก: ๋นจ๋ฆฌ ํ ์คํธ๊ฐ ํต๊ณผํ๊ฒ๋ ์์ฑ. ์ด๋ฅผ ์ํด์ ๊ธฐ์กด์ฝ๋ ๋ณต๋ถ, ํ ์คํธ๋ง ํต๊ณผํ๋๋ก ํน์ ์์ ๋ฐํ ํจ์ ๊ตฌํ ๋ฑ๊ณผ ๊ฐ์ด ๊ตฌํํด๋ ๋๋ค.
์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ ๋ค. ์ต๋ํ ์ด๋ก ๋ง๋(ํ ์คํธ ํต๊ณผ)๋ฅผ ๋ณผ ์ ์๊ฒ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํ๋ค.
์ ๊ทผ๋ฒ
๊ฐ์ง๋ก ๊ตฌํํ๊ธฐ : ์์๋ฅผ ๋ฐํํ๊ฒ ๋ง๋ค๊ณ ์ง์ง ์ฝ๋๋ฅผ ์ป์ ๋๊น์ง ๋จ๊ณ์ ์ผ๋ก ์์๋ฅผ ๋ณ์๋ก ๋ฐ๊พผ๋ค.
์ผ๊ฐ์ธก๋๋ฒ(5 == 5, 5 != 6) : ์ด๋ป๊ฒ ํ ์คํธ๋ฅผ ๊ตฌํํด์ผํ ์ง ๋ชจ๋ฅผ ๋ ์์ฑ
๋ช ๋ฐฑํ ๊ตฌํ ์ฌ์ฉํ๊ธฐ : ์ค์ ๊ตฌํ์ ์ ๋ ฅํ๋ค.
๋ฆฌํฉํ ๋ง : ์ผ๋จ ํ ์คํธ๋ฅผ ํต๊ณผํ๊ฒ๋ง ํ๋ ์์ค์ ์๊ฒจ๋ ๋ชจ๋ ์ค๋ณต ์ ๊ฑฐ
์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌํํ๋ค. ์ด๋ ์ค๋ณต์ ์ ๊ฑฐํ๊ณ , ํ ์คํธ๋ฅผ ํต๊ณผํ๊ธฐ ์ํด ๋ง ๊ฐ๋ฐํ๋ ์ฝ๋๋ฅผ ์์ ํ๋ค.
3A ํจํด
ํ ์คํธ ์์ฑ์ ๊ณตํต๋ ํจํด์ ๋ฐ๊ฒฌํ๊ฒ ๋๋ค.
์ค๋น(arrange) : ๊ฐ์ฒด ์์ฑ
ํ๋(act) : ์ด๋ค ์๊ทน์ ์ค๋ค.
ํ์ธ(assert) : ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฌํ๋ค.
ํ๋๊ณผ ํ์ธ ๋จ๊ณ๋ ๋งค๋ฒ ๋ค๋ฅด์ง๋ง ์ค๋น ๋จ๊ณ๋ ์ฌ๋ฌ ํ ์คํธ๊ฐ ๋์ผํ ๊ฒฝ์ฐ๊ฐ ์๋ค.
ํ ์คํธ๋ฅผ ์ํด์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์ผ๋ง๋ ์์ฃผ ์์ฑํด์ผ๋ ๊น?
์ด๋ ๋๊ฐ์ง ์ ์ฝ์ด ์์ถฉํ๋ค.
์ฑ๋ฅ : ์ฌ๋ฌ ํ ์คํธ์์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ๊ฐ์ฒด ํ๋๋ง ์์ฑํด ๋ชจ๋ ํ ์คํธ๊ฐ ์ด ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ค.
๊ฒฉ๋ฆฌ : ํ๋์ ํ ์คํธ์์ ์ฑ๊ณต/์คํจ๊ฐ ๋ค๋ฅธ ํ ์คํธ์ ์ํฅ์ ์ฃผ์ง ์๊ธฐ๋ฅผ ์ํ๋ค. ํ ์คํธ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ๋ ์ํ์์๋ ํ๊ฐ์ ํ ์คํธ์ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅธ ํ ์คํธ์ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น ํ๋ฅ ์ด ๋๋ค.
ํ ์คํธ ์ฌ์ด์ ์ปคํ๋ง์ ํ์คํ ์ง์ ๋ถํ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค๋ฉฐ, ํ ๊ฐ์ ํ ์คํธ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅธ ํ ์คํธ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น ์๋ ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก ํ ์คํธ ์ปคํ๋ง์ ๋ง๋ค๋ฉด ์๋๋ค.
ํ ์คํธ๋ฅผ ๊ฒฉ๋ฆฌํ๊ธฐ ์ํด์๋ ๊ฒฐ๊ณผ์ ์ผ๋ก ์์คํ ์ด ์์ง๋๋ ๋๊ณ ๊ฒฐํฉ๋๋ ๋ฎ์ ๊ฐ์ฒด์ ๋ชจ์์ผ๋ก ๊ตฌ์ฑ๋๊ฒ ํด์ผํ๋ค.
ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ ํจํด
ํ
์คํธ ์ฐ์
ํ ์คํธ๋ ํ ์คํธ๋ชฉ๋ก์ ๋ชจ๋ ์์ฑํ ๋ค ๊ตฌํํ์.
๊ตฌํํ ํ์๊ฐ ์๋ ๋ชจ๋ ์คํผ๋ ์ด์ ์ ์ฌ์ฉ ์๋ฅผ ์์ฑ
์กด์ฌํ์ง ์๋ ์คํผ๋ ์ด์ ์ ๋ํด์๋ null๋ฒ์ ์ ๋ฆฌ์คํธ์ ์ถ๊ฐ
๋ฆฌํฉํ ๋ง ๋ชฉ๋ก์ถ๊ฐ
ํ ์คํธ๋ ํ ์คํธ ๋์์ด ๋๋ ์ฝ๋๋ฅผ ๊ตฌํํ๊ธฐ ์ง์ ์ ์์ฑํ๋ ๊ฒ์ด ์ข๋ค.
๋จ์ธ(Assert) ์ฐ์
ํ ์คํธ ์์ฑ์ ๋จ์ธ์ ์ ์ผ ๋จผ์ ์ฐ๊ณ ์์ํ์.
์๋ฃ๋ ์์คํ ์ด ์ด๋จ์ง์ ๋ํ ๋ด์ฉ๋ถํฐ ์์ฑ
๊ธฐ๋ฅ์ด ์๋ฃ๋๋ฉด ํต๊ณผํ ์ ์๋ ํ ์คํธ ๋ถํฐ ์์ฑ
์๋ฃ๋ ๋ ํต๊ณผํด์ผ ํ ๋จ์ธ๋ถํฐ ์์ฑ
ํ
์คํธ ๋ฐ์ดํฐ
ํ ์คํธ ๋ฐ์ดํฐ๋ ํ ์คํธ๋ฅผ ์ฝ์ ๋ ์ฝ๊ณ ๋ฐ๋ผ๊ฐ๊ธฐ ์ข์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํด์ผํ๋ค. ํ ์คํธ ๋ฐ์ดํฐ์ ๋ํ ๋์์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
์ค์ ์คํ์ ํตํด ์ธ๋ถ ์ด๋ฒคํธ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํ์ฌ ์ค์๊ฐ ์์คํ ์ ํ ์คํธ ํ๋ ๊ฒฝ์ฐ
์ด์ ์์คํ ์ ์ถ๋ ฅ๊ณผ ํ์ฌ ์์คํ ์ ์ถ๋ ฅ์ ๋น๊ตํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ (๋ณ๋ ฌ)
์๋ฎฌ๋ ์ด์ ์์คํ ์ ๋ฆฌํฉํ ๋งํ ํ ๊ธฐ์กด๊ณผ ์ ํํ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋์ง ํ์ธํ๊ณ ์ ํ ๊ฒฝ์ฐ
์์ ๊ฒฝ์ฐ์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฉํ๋ค.
๋ช
๋ฐฑํ ๋ฐ์ดํฐ
ํ ์คํธ์ ์๋๋ฅผ ํํํ๊ธฐ ์ํด์ ํ ์คํธ ์์ฒด์ ์์๋๋ ๊ฐ๊ณผ ์ค์ ๊ฐ์ ํฌํจํ๊ณ , ๋ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ๋ํ๋ด์ผํ๋ค.
๋ค๋ฅธ ํตํ๋ก ํ์ ํ๋๋ฐ ์์ด์ ์์๋ฃ๊ฐ 1.5%๊ฐ ๋ถ๋๋ค. USD์์ GBP๋ก ๊ตํํ๋ ํ์จ์ด 2:1์ด๋ผ๋ฉด $100๋ฌ๋ฌ๋ฅผ ํ์ ํ๋ ค๋ฉด 50GBP - 1.5% = 49.25GBP์ฌ์ผํ๋ค.
๊ณ์ฐ์ ๋ ๋ช ํํ ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. ์์ ์์ ๋ณด๋ค๋ ๊ณ์ฐ์ ๋ ๋ช ํํ ๊ธฐ์ ํ๋ฉด ํ ์คํธ์์ ์ ๋ ฅ์ผ๋ก ์ฌ์ฉ๋ ์ซ์์ ๊ฒฐ๊ณผ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ์ฝ์ด๋ผ ์ ์์ผ๋ฉฐ, ๋ค์์ผ๋ก ํ ์ผ์ ๋ ์ฝ๊ฒ ์ ใ ใ ์๋ค.
์๋ ๊ฒ์์ ๋ชจ๋ฅด๋ ๊ฒ์ผ๋ก
์์ฑํ ํ ์คํธ ๋ชฉ๋ก ์ค์์ ์๋ ๊ฒ๋ถํฐ ๋ชจ๋ฅด๋ ๊ฒ์ผ๋ก ํ ์คํธ ํ๋ ๊ฒ์ด ์ข๋ค.
๋ญ ๊ตฌํํด์ผ๋ ์ง ์๋ฉด, ๋ช ๋ฐฑํ ๊ตฌํ์ ํ๊ณ , ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด ๊ฐ์ง ๊ตฌํ์ ํ๋ฉด ๋๋ค.
๋ชจ์ ๊ฐ์ฒด
๋ชจ์ ๊ฐ์ฒด(Mock Object)๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ์ ์ค์ ๊ฐ์ฒด์ ๋์ผํ ๋ชจ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ํ ์คํธ ํจ์ฉ์ฑ์ ๋์ด๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
๋ชจ์ ๊ฐ์ฒด(Mock Object)๋ ์ฃผ๋ก ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ๊ฐ๋ฐํ ํ๋ก๊ทธ๋จ์ ํ ์คํธ ํ ๊ฒฝ์ฐ ํ ์คํธ๋ฅผ ์ํํ ๋ชจ๋๊ณผ ์ฐ๊ฒฐ๋๋ ์ธ๋ถ์ ๋ค๋ฅธ ์๋น์ค๋ ๋ชจ๋๋ค์ ์ค์ ์ฌ์ฉํ๋ ๋ชจ๋์ ์ฌ์ฉํ์ง ์๊ณ ์ค์ ์ ๋ชจ๋์ "ํ๋ด"๋ด๋ "๊ฐ์ง" ๋ชจ๋์ ์์ฑํ์ฌ ํ ์คํธ์ ํจ์ฉ์ฑ์ ๋์ด๋๋ฐ ์ฌ์ฉํ๋ ๊ฐ์ฒด์ด๋ค.
๋ชจ์ ๊ฐ์ฒด๋ ๋ชจ๋ ๊ฐ์ฒด์ ๊ฐ์์ฑ์ ๋ํด ๊ณ ๋ คํ๋๋ก ๋ง๋ค์ด, ์ค๊ณ์์ ์ปคํ๋ง์ด ๊ฐ์ํ๋๋ก ํ๋ค.
Code Coverage
์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง(Code Coverage)๋ ์ํํธ์จ์ด์ ํ ์คํธ๋ฅผ ๋ ผํ ๋ ์ผ๋ง๋ ํ ์คํธ๊ฐ ์ถฉ๋ถํ๊ฐ๋ฅผ ๋ํ๋ด๋ ์งํ์ค ํ๋๋ค. ๋ง ๊ทธ๋๋ก ์ฝ๋๊ฐ ์ผ๋ง๋ ์ปค๋ฒ๋์๋๊ฐ์ด๋ค. ์ํํธ์จ์ด ํ ์คํธ๋ฅผ ์งํํ์ ๋ ์ฝ๋ ์์ฒด๊ฐ ์ผ๋ง๋ ์คํ๋์๋๋ ๊ฒ์ด๋ค.
์ฝ๋์ ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๋ ๊ฒ์ ํฌ๊ฒ ๊ตฌ๋ฌธ(Statement), ์กฐ๊ฑด(Condition), ๊ฒฐ์ (Decision)์ด๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ์ผ๋ง๋ ์ปค๋ฒํ๋๋์ ๋ฐ๋ผ ์ฝ๋์ปค๋ฒ๋ฆฌ์ง์ ์ธก์ ๊ธฐ์ค์ ๋๋๊ฒ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๋ ์ปค๋ฒ๋ฆฌ์ง๋ ๊ตฌ๋ฌธ(Statement)์ปค๋ฒ๋ฆฌ์ง์ด๋ฉฐ, ์คํ ์ฝ๋๋ผ์ธ์ด ํ๋ฒ ์ด์ ์คํ ๋๋ฉด ์ถฉ์กฑ๋๋ค. ์กฐ๊ฑด(Condition)์ปค๋ฒ๋ฆฌ์ง๋ ๊ฐ ๋ด๋ถ ์กฐ๊ฑด์ด ์ฐธ ํน์ ๊ฑฐ์ง์ ๊ฐ์ง๋ฉด ์ถฉ์กฑ๋๋ค. ๊ฒฐ์ (Decision) ์ปค๋ฒ๋ฆฌ์ง๋ ๊ฐ ๋ถ๊ธฐ์ ๋ด๋ถ ์กฐ๊ฑด์์ฒด๊ฐ ์๋ ์ด๋ฌํ ์กฐ๊ฑด์ผ๋ก ์ธํด ์ ์ฒด ๊ฒฐ๊ณผ๊ฐ ์ฐธ ํน์ ๊ฑฐ์ง์ด๋ฉด ์ถฉ์กฑ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์กฐ๊ฑด๊ณผ ๊ฒฐ์ ์ ๋ณตํฉ์ ์ผ๋ก ๊ณ ๋ คํ๋ MC/DC ์ปค๋ฒ๋ฆฌ์ง ๋ํ ์๋ค. - ์ํค๋ฐฑ๊ณผ ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง
์ธก์ ๊ธฐ์ค
์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง๋ ์์ค ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ํํ๋ ํ์ดํธ ๋ฐ์ค ํ ์คํธ๋ฅผ ํตํด ์ธก์ ํ๋ค.
ํ์ดํธ ๋ฐ์ค ํ ์คํธ(White-box test)
์์ฉ ํ๋ก๊ทธ๋จ์ ๋ด๋ถ ๊ตฌ์กฐ์ ๋์์ ๊ฒ์ฌํ๋ ํ ์คํธ ๋ฐฉ์
์ํํธ์จ์ด ๋ด๋ถ ์์ค ์ฝ๋๋ฅผ ํ ์คํธํ๋ ๊ธฐ๋ฒ
๊ฐ๋ฐ์ ๊ด์ ์ ๋จ์ ํ ์คํธ ๋ฐฉ๋ฒ
๊ตฌ๋ฌธ(Statement)
๊ตฌ๋ฌธ ์ปค๋ฒ๋ฆฌ์ง๋ ๋ผ์ธ(Line) ์ปค๋ฒ๋ฆฌ์ง๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ฉฐ, ์ฝ๋ ํ ์ค์ด ํ ๋ฒ ์ด์ ์คํ๋๋ฉด ์ถฉ์กฑํ๋ค.
์ฌ๊ธฐ์ x = -1
๋ก ํ
์คํธ๋ฅผ ์งํํ๊ฒ ๋๋ฉด (3)์ฝ๋๋ ์คํ๋์ง ์๋๋ค. ์ด 4๊ฐ์ ๋ผ์ธ ์ค 1, 2, 4๋ง ์ํ๋๋ฏ๋ก 75%๊ฐ ๋๋ค.
๊ตฌ๋ฌธ ์ปค๋ฒ๋ฆฌ์ง๊ฐ ๊ฐ์ฅ ๋ํ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ค.
์กฐ๊ฑด(Condition)
๋ชจ๋ ์กฐ๊ฑด์์ ๋ด๋ถ ์กฐ๊ฑด์ด true/false๋ฅผ ๊ฐ์ง๋ฉด ์ถฉ์กฑํ๋ค.
์กฐ๊ฑด ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๋ง์กฑํ๋ ํ
์คํธ ์ผ์ด์ค๋ x = 1, y = 1
, x = -1, y = -1
์ด ์๋ค.
x > 0
์กฐ๊ฑด : true/falsey < 0
์กฐ๊ฑด : false/true
์กฐ๊ฑด ์ปค๋ฒ๋ฆฌ์ง๋ ๋ง์กฑํ์ง๋ง if๋ฌธ ์กฐ๊ฑด์ ํญ์ false์ด๋ฏ๋ก (3) ์ฝ๋๋ ์คํ๋์ง ์๋๋ค.
์กฐ๊ฑด ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ์คํธํ ๊ฒฝ์ฐ, ๊ตฌ๋ฌธ ์ปค๋ฒ๋ฆฌ์ง์ ๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๋ง์กฑํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ ์ ์๋ค.
๊ฒฐ์ (Decision)
๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง๋ ๋ธ๋์น(Branch) ์ปค๋ฒ๋ฆฌ์ง๋ผ๊ณ ๋ ํ๋ฉฐ, ๋ชจ๋ ์กฐ๊ฑด์์ด true/false๋ฅผ ๊ฐ์ง๊ฒ ๋๋ฉด ์ถฉ์กฑํ๋ค.
๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๋ง์กฑํ๋ ํ
์คํธ ์ผ์ด์ค๋ x = 1, y = -1
, x = -1, y = 1
์ด ์๋ค.
x > 0
,y < 0
๋ชจ๋ ๋ง์กฑ : truex > 0
,y < 0
๋ถ์ถฉ์กฑ : false
์กฐ๊ฑด/๊ฒฐ์ ์ปค๋ฒ๋ฆฌ์ง๋ ์ฝ๋ ์คํ์ ๋ํ ํ ์คํธ๋ณด๋ค ๋ก์ง ์๋๋ฆฌ์ค์ ๋ํ ํ ์คํธ์ ๋ ๊ฐ๊น๋ค๊ณ ๋ณผ ์ ์์ผ๋ฉฐ, ๋ ์ปค๋ฒ๋ฆฌ์ง๋ ์กฐ๊ฑด์ ๋ํด ๋ชจ๋ ๋ง์กฑํ๋ฉด ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๋ง์กฑํ๋ค๊ณ ๋ณธ๋ค. ๋ํ ์กฐ๊ฑด๋ฌธ์ด ์กด์ฌํ์ง ์๋ ์ฝ๋์ ๊ฒฝ์ฐ ๋ ์ปค๋ฒ๋ฆฌ์ง ๋์์์ ์์ ํ ์คํธ ๋์์์ ์ ์ธ ๋๋ค.
์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง ๋๊ตฌ์ ์๋ํ๋ธ(SonarQube) ์ ์ ์ฝ๋ ๋ถ์ ๋๊ตฌ๋ฅผ ํจ๊ป ์ฌ์ฉํด ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง๊ฐ ๊ธฐ์กด๋ณด๋ค ๋จ์ด์ง๋ ๊ฒฝ์ฐ ์ปค๋ฐ์ด ๋ถ๊ฐ๋ฅํ๋๋ก ์ ํํ๊ธฐ๋ ํ๋ค.
์ฐธ๊ณ
Last updated