-
๐๋ ธ๋ง๋ ๊ฐ๋ฐ์ ๋ถํด๋ฝ '์ค์ฉ์ฃผ์ ํ๋ก๊ทธ๋๋จธ'(1๊ธฐ) ๊ณผ์ #12๐ IT ๋์ 2022. 4. 4. 01:17
๐ ASSIGNMENT 12. 22.04.01 FRI - 04.02 SAT (11์ผ์ฐจ โฃ ํด์ฆ)
๐ ์ค๋ TIL 3์ค ์์ฝ
- ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ฐ์ฐ์ ์์กดํ์ง ๋ง๊ณ ์ ์ด๋ ๊ฒ ์๋ํ๋์ง ๋์์์ด ์๊ฐํด์ผ ํ๋ค.
- ์ธ๋ถ์ธ์ ์์ ์ผ๋ก ๋ฐ๋ผ๋ณด๊ณ ํ ์คํธ๊ฐ ์ฃผ๋ํ๋ ๊ฐ๋ฐ์ ํด์ผ ํ๋ค.
- ์ธ๋ถ์์ ๋ค์ด์ค๋ ๊ณต๊ฒฉ์ ๋ํด์๋ ๋ฐฉ์ด๋ฅผ ํด์ผ ํ๋ค.
๐ ์ค๋ ์ฝ์ ๋ฒ์
7์ฅ. ์ฝ๋ฉํ๋ ๋์
๐ ์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ์ ์จ๋ณด์ธ์
- ์ ๊ทน์ ์ผ๋ก ์๊ธฐ ์ฝ๋์ ๋ํด ์๊ฐํ์ง ์๋ ํ๋ก๊ทธ๋๋จธ๋ ์ฐ์ฐ์ ๋งก๊ธฐ๋ ํ๋ก๊ทธ๋๋ฐ์ ํ๋ ๊ฒ์ด๋ค. ์ฝ๋๊ฐ ์๋ํ๊ธด ํ์ง๋ง ์ ๊ทธ๋ ๊ฒ ์๋ํ๋์ง ์ค๋ช ์ ๋ชปํ๋ค.
- ์ค์ฉ์ฃผ์ ํ๋ก๊ทธ๋๋จธ๋ ๋ชจ๋ ์ฝ๋๋ฅผ ๋นํ์ ์ธ ์๊ฐ์ผ๋ก ๋ฐ๋ผ๋ณธ๋ค. ์๊ธฐ ์์ ์ ์ฝ๋๋ ์์ธ๊ฐ ์๋๋ค. ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ํ๋ก๊ทธ๋จ๊ณผ ์ค๊ณ์์ ์ธ์ ๋ ๊ฐ์ ํ ์ฌ์ง๋ฅผ ์ฐพ์๋ธ๋ค.
- ํ ์คํธ์ ๊ธ์ ์ ์ธ ํจ๊ณผ๋ ๋๋ถ๋ถ ํ ์คํธ๋ฅผ ์ํํ ๋ ๋ํ๋๋ ๊ฒ์ด ์๋๋ผ, ํ ์คํธ์ ๋ํ์ฌ ์๊ฐํ ๋ ๊ทธ๋ฆฌ๊ณ ํ ์คํธ๋ฅผ ์์ฑํ ๋ ๋ํ๋๋ค๋ ๊ฒ์ด๋ค.
- ๋ฐฑ์ง์ ๊ณตํฌ
- ํ์ถฉ๋ฅ์ ๋(๋ณธ๋ฅ)๊ฐ ์ฌ๋ฌ๋ถ์๊ฒ ๋ฌด์ธ๊ฐ ํ ๋ง์ด ์๋ ๊ฒ
- ๊ทธ์ ์ค์ํ ๊น ๋ด ๋๋ ค์ด ๊ฒ, ๊ฐ๋ฉด ์ฆํ๊ตฐ์ ์์ ๋ํ ์์ ๊ฒ (์์ ์ด ๊ฐ์ง ๋ฅ๋ ฅ์ด ๊ณผ๋ํ๊ฐ๋ฅผ ๋ฐ์๊ณ ์์ ์ ์๊ฒฉ์ด ์๋ ์ฌ๋์ด๋ผ๊ณ ์๊ฐํ๋ฉด์ ๋ถ์ํด ํ๋ ๊ฒ)
- ์ฝ๋ฉ์ด ์ ๋ง ์ง์ ์ด ์๋ ๋ ์ด ์๋ค. ์ด ๋ ์ด์ฉ๋ฉด ๊ตฌ์กฐ๋ ์ค๊ณ๊ฐ ํ๋ ธ์ ์๋ ์๊ณ , ์๋ฑํ ๋ฌธ์ ๋ฅผ ๋ถ๋ค๊ณ ์๋ ๊ฑธ ์๋ ์๋ค. ์ฌ๋ฌ๋ถ์ ๋๊ฐ ์ ๋ฆฌ๋ฅผ ์ข ํ ์ ์๋๋ก ์ฝ๊ฐ์ ์๊ฐ๊ณผ ๊ณต๊ฐ์ ํ๋ณดํ๋ผ.
- ์๋ชป๋ ์ฝ๋๊ฐ ์๋ ์ฑ๋ก ํ๋ฉด์ด ์ ๊ทธ๋ ค์ง๋๋ผ๋ ์๋ชป๋ ์ฝ๋๋ ์ ๊ฑฐ๋ฅผ ํด์ผํ๋ค.
- ๋ค๋ฅธ ์ฌ๋์ด ํธ์ถํ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์๋ค๋ฉด ๋ชจ๋ํ๋ฅผ ์ ํด์ผํ๋ค.
- ๊ตฌํ์ ์ ๋ฌธ์ํํ ์ ์ ์์ ์ธํฐํ์ด์ค ์๋์ ์จ๊ฒจ์ผ ํ๋ค.
- ์ธํฐ๋ท ๊ฒ์์ผ๋ก ์ฐพ์ ์ฒซ ๋ฒ์งธ ๋ต์์ ์ฝ๋๋ฅผ ๋ณต์ฌํด ์ฌ ๋ ์ฌ๋ฌ๋ถ๊ณผ ๋์ผํ ์ํฉ์ด๋ผ๊ณ ํ์ ํ๋๊ฐ? ์๋๋ฉด ์๋ฏธ๋ ์ ๊ฒฝ ์ฐ์ง ์๊ณ ๊ทธ๋ฅ ๋ฐ๋ผ ํ๋ 'ํ๋ฌผ ์ญ๋ฐฐ' ์ฝ๋๋ฅผ ๋ง๋ค๊ณ ์๋? ์ ๋๋ ๋ฏํ ๋ต์ ์ฐพ๋ ๊ฒ๊ณผ ์ฌ๋ฐ๋ฅธ ๋ต์ ์ฐพ๋ ๊ฒ์ ๋ค๋ฅด๋ค.
- ํ ์คํธ๋ ๊ฐ์ง ์์ธ๊ณผ ์ฐ์ฐํ ๊ฒฐ๊ณผ๋ก ๊ฐ๋ ์ฐฌ ์์ญ์ด๋ค. X์ ์์ธ์ Y๋ผ๊ณ ๊ฐ์ ํ๊ธฐ ์ฝ๋ค. ๊ฐ์ ํ์ง ๋ง๋ผ. ์ฆ๋ช ํ๋ผ.
- ์๊ณ ๋ฆฌ์ฆ์ ์๋
- ์ผ๋ฐ์ ์ผ๋ก ์ ๋ ฅ์ ํฌ๊ธฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ํฅ์ ์ค๋ค. ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ํด์๋ก ์๊ณ ๋ฆฌ์ฆ์ ์ํ ์๊ฐ์ด ๊ธธ์ด์ง๊ฑฐ๋ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ด ๋์ด๋๋ค. ํ์ง๋ง ์ค์ํ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ถ๋ถ ์ ํ์ ์ด์ง ์๋ค.
- ๊ฐ์ฅ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ด ์ธ์ ๋ ๊ฐ์ฅ ์ข์ ์๊ณ ๋ฆฌ์ฆ์ ์๋๋ค.
- '์ฑ๊ธํ ์ต์ ํ(premature optimization)'๋ฅผ ์กฐ์ฌํ๋ผ. ์ธ์ ๋ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ ํ๋๋ผ ์ฌ๋ฌ๋ถ์ ๊ท์คํ ์๊ฐ์ ํฌ์ํ๊ธฐ ์ ์ ๊ทธ ์๊ณ ๋ฆฌ์ฆ์ด ์ ๋ง๋ก ๋ณ๋ชฉ์ธ์ง ๋จผ์ ํ์ธํ๋ ๊ฒ์ด ์ข๋ค.
- O() ํ๊ธฐ๋ฒ์์ O๋ '...์ฐจ์๋ก(order of)'๋ฅผ ๋ปํ๋ค.
O(1) ์์(๋ฐฐ์ด์ ์์ ์ ๊ทผ, ๋จ์ ๋ช ๋ น๋ฌธ) O(lg n) ๋ก๊ทธ(์ด์ง ๊ฒ์, ๋ก๊ทธ์ ๋ฐ์ ์ค์์น ์๋ค => O(log n)๊ณผ ๋์ผ) O(n) ์ ํ(์์ฐจ ๊ฒ์) O(n lg n) ์ ํ๋ณด๋ค๋ ์ข์ง ์์ง๋ง, ๊ทธ๋๋ ๊ทธ๋ ๊ฒ ๋ง์ด ๋์์ง๋ ์์.
(ํต ์ ๋ ฌ๊ณผ ํ ์ ๋ ฌ์ ํ๊ท ์ํ ์๊ฐ)O(n^2) ์ ๊ณฑ(์ ํ ์ ๋ ฌ๊ณผ ์ฝ์ ์ ๋ ฌ) O(n^3) ์ธ์ ๊ณฑ(๋ n x n ํ๋ ฌ์ ๊ณฑ) O(C^n) ์ง์(์ฌํํ๋ ์ธํ์ ๋ฌธ์ , ์งํฉ ๋ถํ ๋ฌธ์ )
- ๋ฆฌํฉํฐ๋ง์ ์ก์ด ์ ๊ฑฐ๋ ๊ฐํด์ง์ฒ๋ผ ์ํํ์ง ์๋ ์์ ๋จ๊ณ๋ค์ ๋ฐ๋ ์ผ์ ํ๋์ด๋ค. ๋ฌด์ง์ํ๊ฒ ๋๊ท๋ชจ๋ก ์ฝ๋๋ฅผ ๋ค์ ์ฐ๋ ๊ฒ์ด ์๋๋ผ, ์ ํํ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์ ๋ฐํ๊ฒ ์ ๊ทผํ๋ ํ๋์ด๋ค. ๊ทธ๋์ ์ฝ๋๋ฅผ ๋ฐ๊พธ๊ธฐ ์ฝ๊ฒ ์ ์งํ๋ ๊ฒ์ด๋ค.
- ์ฝ๋๋ฅผ ๋ฆฌํฉํฐ๋งํ ์ด์ - ์ค๋ณต, ์ง๊ต์ ์ด์ง ์์ ์ค๊ณ, ๋ ์ด์ ์ ํจํ์ง ์์ ์ง์, ์ฌ์ฉ ์ฌ๋ก(์ค์ฌ์ฉ์ ํ๋ฉฐ ์๊ธฐ๋ ๊ฐ์ ์ฌํญ), ์ฑ๋ฅ ๊ฐ์ , ํ ์คํธ ํต๊ณผ
- ๋ฆฌํฉํฐ๋ง์ ํ๋ ๋ฐฉ๋ฒ
- ๋ฆฌํฉํฐ๋ง๊ณผ ๊ธฐ๋ฅ ์ถ๊ฐ๋ฅผ ๋์์ ํ์ง ๋ง๋ผ.
- ๋ฆฌํฉํฐ๋ง์ ์์ํ๊ธฐ ์ ๋ ๋ ํ ํ ์คํธ๊ฐ ์๋์ง ๋จผ์ ํ์ธํ๋ผ.
- ๋จ๊ณ๋ฅผ ์๊ฒ ๋๋์ด์ ์ ์คํ๊ฒ ์์ ํ๋ผ.
- ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ(TDD test-driven development / test-first development)
- ์ฐ๋ฆฌ์ ๋ฉ์๋์ ํ ์คํธ ์์ฑ์ ๋ํด ์๊ฐํจ์ผ๋ก์จ ์ฝ๋์ ์์ฑ์๊ฐ ์๋๋ผ ์ฌ์ฉ์์ธ ๊ฒ์ฒ๋ผ ๋ฉ์๋๋ฅผ ์ธ๋ถ์ ์์ ์ผ๋ก ๋ณด๊ฒ ๋์๋ค. ํ ์คํธ๊ฐ ์ฝ๋์ ์ฒซ ๋ฒ์งธ ์ฌ์ฉ์๋ค.
- ๋ฌด์ธ๊ฐ๋ฅผ ํ ์คํธํ๊ธฐ ์ข๊ฒ ๋ง๋ค๋ฉด ๊ฒฐํฉ๋๋ ๋ฎ์์ง๋ค.
- ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ ๋ฐฉ๋ฒ
- ์ถ๊ฐํ๊ณ ์ถ์ ์์ ๊ธฐ๋ฅ ํ๋๋ฅผ ๊ฒฐ์ ํ๋ค.
- ๊ทธ ๊ธฐ๋ฅ์ด ๊ตฌํ๋์์ ๋ ํต๊ณผํ๊ฒ ๋ ํ ์คํธ๋ฅผ ํ๋ ์์ฑํ๋ค.
- ํ ์คํธ๋ฅผ ์คํํ๋ค. ๋ค๋ฅธ ํ ์คํธ๋ ํต๊ณผํ๊ณ ๋ฐฉ๊ธ ์ถ๊ฐํ ํ ์คํธ ๋ฑ ํ๋๋ง ์คํจํด์ผ ํ๋ค.
- ์คํจํ๋ ํ ์คํธ๋ฅผ ํต๊ณผ์ํฌ ์ ์๋ ์ต์ํ์ ์ฝ๋๋ง ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ๋ ๋ชจ๋ ํ ์คํธ๊ฐ ํต๊ณผํ๋์ง ํ์ธํ๋ค.
- ์ฝ๋๋ฅผ ๋ฆฌํฉํฐ๋งํ๋ค. ๋ฐฉ๊ธ ์์ฑํ ํ ์คํธ๋ ํจ์๋ฅผ ๊ฐ์ ํ ์ ์๋ ๋ถ๋ถ์ด ์๋์ง ์ดํด๋ณธ๋ค. ๊ฐ์ ํ ํ์๋ ํ ์คํธ๊ฐ ๊ณ์ ํต๊ณผํ๋์ง ํ์ธํ๋ค.
- ํ๊ท ํ ์คํธ(regression testing) - ๋์ผํ ํ ์คํธ๋ฅผ ์ฝ๋ ์์ ํ ๋ค์ ๋๋ ค๋ณด๋ ๊ฒ
- ์์ฑ ๊ธฐ๋ฐ ํ
์คํธ(property-based testing) (์์ฑ - ์ฝ๋์ ์กด์ฌํ๋ ๊ณ์ฝ๊ณผ ๋ถ๋ณ์(ํจ์ ์คํ ์ ํ๋ก ๊ณ์ ์ด๋ค ๋ถ๋ถ์ ์ํ์ ๋ํ์ฌ ์ฐธ์ด ๋๋ ์กฐ๊ฑด)์ ๋ญ๋ฑ๊ทธ๋ ค์ ๋ถ๋ฅด๋ ๊ฒ)
- ์ฅ์ - ์์ฑ ๊ธฐ๋ฐ ํ ์คํธ๊ฐ ๊ฐ๋ ฅํ ๊น๋ญ์ ๊ทธ์ ์ ๋ ฅ์ ์์ฑํ๋ ๊ท์น๊ณผ ์ถ๋ ฅ์ ๊ฒ์ฆํ๋ ๋จ์ ๋ฌธ๋ง ์ค์ ํ ์ฑ ์ ๋ฉ๋๋ก ์๋ํ๋๋ก ๋๋๊ธฐ ๋๋ฌธ
- ๋จ์ - ์ ํํ ๋ฌด์์ด ์คํจํ๋์ง ์ฐพ์๋ด๊ธฐ ๊น๋ค๋ก์ธ ์๋ ์๋ค๋ ๊ฒ. ์์ฑ ๊ธฐ๋ฐ ํ
์คํธ๊ฐ ์คํจํ๋ค๋ฉด ํ
์คํธ ํจ์๊ฐ ์ด๋ค ๋งค๊ฐ ๋ณ์๋ฅผ ์ฌ์ฉํ๋์ง ์์๋ธ ๋ค์ ๊ทธ ๊ฐ์ ์ด์ฉํ์ฌ ๋ณ๋์ ๋จ์ ํ
์คํธ๋ฅผ ์ ์์ผ๋ก ์ถ๊ฐํ๋ ๊ฒ์ด ์ข๋ค. ์ด ๋จ์ ํ
์คํธ๋ ํ์์ ๋๊ฐ์ง ์ญํ ์ ํ๋ค.
- ์์ฑ ๊ธฐ๋ฐ ํ ์คํธ์ ์ฌ๋ฌ ๊ฐ์ง ๋ค๋ฅธ ์ํ ๊ฒฐ๊ณผ์ ์๊ด์์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์ํฉ์ ์ง์คํ ์ ์๊ฒ ํด ์ค๋ค
- ๋จ์ ํ ์คํธ๊ฐ ํ๊ท ํ ์คํธ ์ญํ ์ ํ๋ค
- ์ธ๋ถ ๋ณด์
- ๊ณต๊ฒฉ ํ๋ฉด์ ์ต์ํํ๋ผ - ๋จ์ํ๊ณ ์์ ์ฝ๋๊ฐ ๋ ๋ซ๋ค. ์ฝ๋๊ฐ ์ ์ผ๋ฉด ๋ฒ๊ทธ๋ ์ ๊ณ , ์ฌ๊ฐํ ๋ณด์ ๊ตฌ๋ฉ์ ๋ง๋ค ํ๋ฅ ๋ ์ค์ด๋ ๋ค.
- ์ต์ ๊ถํ ์์น - ์ต์ํ์ ๊ถํ๋ง์ ๊ผญ ํ์ํ ์๊ฐ๋งํผ๋ง ์ ์ผ ์งง๊ฒ ๋ถ์ฌํ๋ผ
- ์์ ํ ๊ธฐ๋ณธ๊ฐ - ์ฌ์ฉ์์ ๊ธฐ๋ณธ ์ค์ ์ ๊ฐ์ฅ ์์ ํ ๊ฐ์ด์ด์ผ ํ๋ค.
- ๋ฏผ๊ฐ ์ ๋ณด ์ํธํ - ํค๋ ์ํธ๋ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ด ์๋ ๋น๋๋ ๋ฐฐํฌ ํ๋ก์ธ์ค ๋ด์์ ์ค์ ํ์ผ์ด๋ ํ๊ฒฝ ๋ณ์๋ก ๊ด๋ฆฌํด์ผ ํ๋ค.
- ๋ณด์ ์ ๋ฐ์ดํธ
- ์์ ๋ ์ํธ - ์ํธ๋ ์ ๋ ์ง์ ๋ง๋ค์ง ๋ง๋ผ
- ์ด๋ฆ์ ์ง์ ๋๋ ์ฌ๋ฌ๋ถ์ด ํํํ๊ณ ์ถ์ ๊ฒ์ ๋ ๋ช ํํ๊ฒ ๋ค๋ฌ๊ธฐ ์ํด ๋์์์ด ๋ ธ๋ ฅํด์ผ ํ๋ค. ์ด๋ ๊ฒ ๋ช ํํ๊ฒ ๋ค๋ฌ๋ ์์ ์ด ์ฌ๋ฌ๋ถ์ด ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ฝ๋๋ฅผ ๋ ์ ์ดํดํ ์ ์๋๋ก ๋์ธ ๊ฒ์ด๋ค.
๐ฌ ์ค๋ ์๊ฐ์? ๋ ์ค๋ฅด๋ ์๊ฐ์ ๊ฐ๋จํ๊ฒ ์ ์ด๋ณด์ธ์
- ๊ฐ๋ฐํ ๋ ๋ด๊ฐ ์ฐ๋ ์ฝ๋๊ฐ ์ ํํ ์ด๋ค ์ญํ ์ ํ๊ณ ์ด๊ฒ ์ ์ ์์๋ํ๋์ง ์ดํดํ์ง ์๊ณ ๋์ด๊ฐ๋ ์ผ์ด ์ข ์ข ์์๋ค. ์์ผ๋ก๋ ์ฐ์ฐ์ ๋งก๊ธฐ์ง ๋ง๊ณ ์ ํํ ์ง๊ณ ๋์ด๊ฐ์ผ๊ฒ ๋ค.
- ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ด๋ผ๋ ๊ฐ๋ ์ ์ฒ์ ์๊ฒ ๋๋ค. ์ค์ ๋ก ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ณด๊ณ ์ถ๋ค. ๊ฐ๋ ์ผ๋ก๋ง ์ฝ์ผ๋ฉด ํ์คํ๊ฒ ๊ฐ์ด ์์จ๋ค.
- ๋ณ์๋ช , ํจ์๋ช ์ ์ง์ ๋ ์ธ์ ๋ ๊ณ ๋ฏผ์ด๋ค. ์ด๋ฆ ์ง๊ธฐ์ ๊ด๋ จ๋ ๊ฐ์๊ฐ ์๋ค๋ ๊ฒ๋ ๋ดค๋ ๊ฒ ๊ฐ์๋ฐ ํ๋ฒ ์ดํด๋ด์ผ๊ฒ ๋ค.
'๐ IT ๋์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ