Day 17, 18
๐ ์ค๋ ์ฝ์ ๋ฒ์ : 9์ฅ ๋จ์ ํ ์คํธ(p.153 ~ p.170)
๐ ์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ
- TDD ๋ฒ์น ์ธ ๊ฐ์ง(p.155)
- ์ฒซ์งธ ๋ฒ์น: ์คํจํ๋ ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ ๋๊น์ง ์ค์ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๋๋ค.
- ๋์งธ ๋ฒ์น: ์ปดํ์ผ์ ์คํจํ์ง ์์ผ๋ฉด์ ์คํ์ด ์คํจํ๋ ์ ๋๋ก๋ง ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ๋ค.
- ์ ์งธ ๋ฒ์น: ํ์ฌ ์คํจํ๋ ํ ์คํธ๋ฅผ ํต๊ณผํ ์ ๋๋ก๋ง ์ค์ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
- ํ ์คํธ ์ฝ๋๊ฐ ๋ณต์กํ ์๋ก ์ค์ ์ฝ๋๋ฅผ ์ง๋ ์๊ฐ๋ณด๋ค ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ถ๊ฐํ๋ ์๊ฐ์ด ๋ ๊ฑธ๋ฆฌ๊ธฐ ์ญ์์ด๋ค. ์ค์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํด ๊ธฐ์กด ํ ์คํธ ์ผ์ด์ค๊ฐ ์คํจํ๊ธฐ ์์ํ๋ฉด, ์ง์ ๋ถํ ์ฝ๋๋ก ์ธํด, ์คํจํ๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ ์ ํต๊ณผ์ํค๊ธฐ ์ด๋ ค์์ง๋ค.(p.156)
- ํ ์คํธ ์ฝ๋๋ ์ค์ ์ฝ๋ ๋ชป์ง์๊ฒ ์ค์ํ๋ค.(p.157)
- ์ฝ๋์ ์ ์ฐ์ฑ, ์ ์ง๋ณด์์ฑ, ์ฌ์ฌ์ฉ์ฑ์ ์ ๊ณตํ๋ ๋ฒํ๋ชฉ์ด ๋ฐ๋ก ๋จ์ ํ ์คํธ๋ค. ์ด์ ๋ ๋จ์ํ๋ค. ํ ์คํธ ์ผ์ด์ค๊ฐ ์์ผ๋ฉด ๋ณ๊ฒฝ์ด ๋๋ ต์ง ์์ผ๋๊น!(p.157)
- ํ ์คํธ ์ผ์ด์ค๊ฐ ์๋ค๋ฉด ๋ชจ๋ ๋ณ๊ฒฝ์ด ์ ์ ์ ์ธ ๋ฒ๊ทธ๋ค.(p.157)
- ํ ์คํธ ์ฝ๋๊ฐ ์ง์ ๋ถํ ์๋ก ์ค์ ์ฝ๋๋ ์ง์ ๋ถํด์ง๋ค. ๊ฒฐ๊ตญ ํ ์คํธ ์ฝ๋๋ฅผ ์์ด๋ฒ๋ฆฌ๊ณ ์ค์ ์ฝ๋๋ ๋ง๊ฐ์ง๋ค.(p.157)
- ๋์ฒด๋ก ๋๋ ๋จ์ผ assert๋ฅผ ์ง์ํ๋ ํด๋น ๋ถ์ผ ํ ์คํธ ์ธ์ด๋ฅผ ๋ง๋ค๋ ค ๋ ธ๋ ฅํ๋ค. ํ์ง๋ง ๋๋ก๋ ์ฃผ์ ์์ด ํจ์ ํ๋์ ์ฌ๋ฌ assert ๋ฌธ์ ๋ฃ๊ธฐ๋ ํ๋ค. ๋จ์ง assert ๋ฌธ ๊ฐ์๋ ์ต๋ํ ์ค์ฌ์ผ ์ข๋ค๋ ์๊ฐ์ด๋ค.(p.165)
- ๊ฐ์ฅ ์ข์ ๊ท์น์ "๊ฐ๋ ๋น assert ๋ฌธ ์๋ฅผ ์ต์๋ก ์ค์ฌ๋ผ"์ "ํ ์คํธ ํจ์ ํ๋๋ ๊ฐ๋ ํ๋๋ง ํ ์คํธํ๋ผ"๋ผ ํ๊ฒ ๋ค.(p.167)
- ๊นจ๋ํ ํ
์คํธ๋ ๋ค์ ๋ค์ฏ ๊ฐ์ง ๊ท์น์ ๋ฐ๋ฅด๋๋ฐ, ๊ฐ ๊ท์น์์ ์ฒซ ๊ธ์๋ฅผ ๋ฐ์ค๋ฉด FIRST๊ฐ ๋๋ค.(p.167 ~ p.168)
- ๋น ๋ฅด๊ฒ(Fast): ํ ์คํธ๋ ๋นจ๋ผ์ผ ํ๋ค.
- ๋ ๋ฆฝ์ ์ผ๋ก:(Independent): ๊ฐ ํ ์คํธ๋ ์๋ก ์์กดํ๋ฉด ์ ๋๋ค.
- ๋ฐ๋ณต ๊ฐ๋ฅํ๊ฒ(Repeatable): ํ ์คํธ๋ ์ด๋ค ํ๊ฒฝ์์๋ ๋ฐ๋ณต ๊ฐ๋ฅํด์ผ ํ๋ค.
- ์๊ฐ ๊ฒ์ฆํ๋(Self-Validating): ํ ์คํธ๋ ๋ถ์ธ ๊ฐ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ด์ผ ํ๋ค.
- ์ ์์(Timely): ๋จ์ ํ ์คํธ๋ ํ ์คํธํ๋ ค๋ ์ค์ ์ฝ๋๋ฅผ ๊ตฌํํ๊ธฐ ์ง์ ์ ๊ตฌํ๋ค.
- ํ ์คํธ ์ฝ๋๊ฐ ๋ฐฉ์น๋์ด ๋ง๊ฐ์ง๋ฉด ์ค์ ์ฝ๋๋ ๋ง๊ฐ์ง๋ค. ํ ์คํธ ์ฝ๋๋ฅผ ๊นจ๋ํ๊ฒ ์ ์งํ์.(p.168)
๐ค ์ค๋ ์ฝ์ ์๊ฐ๊ณผ ๋ ์ค๋ฅด๋ ์๊ฐ
์ด ๋ถ๋ถ์ ์ฝ๊ธฐ ์ ๊น์ง TDD๋ผ๋ ๋ง๋ง ๋ค์ด๋ณด๊ณ ์ค์ ๋ก TDD๊ฐ ๋ฌด์์ธ์ง ์ ํด์ผ ํ๋์ง ๋ชจ๋ฅด๊ณ ์์๋ค.
์ง์ ๋จ์ ํ ์คํธ๋ฅผ ํด๋ณธ ์ ์ด ์์ด์ ์ฝ๋ ์์ ๋ฅผ ๋ดค์ ๋ ์ด๋ค ์์ผ๋ก ์ฝ๋๊ฐ ๋์๊ฐ๋ ๊ฑด์ง ์๋ฒฝํ๊ฒ ์ดํดํ์ง๋ ๋ชปํ์ง๋ง, ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด ์ฐ๋ฆฌ๊ฐ ๊ตฌํํ ๊ธฐ๋ฅ์ ๋ช ํํ๊ฒ ์ ์ ์์๋ฟ๋๋ฌ ์ ์ง๋ณด์๊น์ง ์๋ฒฝํ๊ฒ ํด๋ผ ์ ์๋ค๋ ๊ฑธ ์๊ฒ ๋์๊ณ ๊ฑฐ์ ํ์๋ผ๊ณ ์๊ฐ์ด ๋์๋ค.
๋ค์ ํ๋ก์ ํธ๋ฅผ ํ ๋๋ ์ด ์ฑ ์ ๊ท์น๋ค์ ์ ์ฉํด์ ํ ์คํธ ์ฝ๋๋ ํ๋ฒ ๊ผญ ์์ฑํด ๋ณด๊ณ ์ถ๋ค.
๊ทธ๋ฆฌ๊ณ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ์ต๊ด์ ๋ค์ฌ์ ํ ์คํธ ์ฝ๋ ์์ด๋ ๊ฐ๋ฐ์ ํ ์ ์์ ์ ๋๋ก ์ ์ํ๊ณ ์ถ๊ณ ์ ์ํ ๊ฒ์ด๋ค.
๐ ๊ถ๊ธํ ๋ด์ฉ์ด ์๊ฑฐ๋, ์ ์ดํด๋์ง ์๋ ๋ด์ฉ
x
์๊ฐ 3์ค ์์ฝ
- ํ ์คํธ ์ฝ๋๋ ์ค์ ์ฝ๋ ๋ชป์ง์๊ฒ ์ค์ํ๋ค.
- ํ ์คํธ ์ผ์ด์ค๊ฐ ์๋ค๋ฉด ๋ชจ๋ ๋ณ๊ฒฝ์ด ์ ์ ์ ์ธ ๋ฒ๊ทธ๋ค.
- ๊นจ๋ํ ํ ์คํธ ์ฝ๋๋ FIRST ๊ท์น์ ๋ฐ๋ฅธ๋ค.