Test Driven Development๋?
๐งช TDD๋
Test Driven Development : ๋ง๊ทธ๋๋ก ํ ์คํธ๊ฐ ์ด๋์ด ๋๊ฐ๋ ๊ฐ๋ฐ์ ์๋ฏธํ๋ค.
๊ฐ๋ฐ์ ์งํํ๊ธฐ ์์ ํ ์คํธ๋ฅผ ๋จผ์ ๋ง๋ค๊ฑฐ ํ ์คํธ๋ฅผ ํต๊ณผํ๊ธฐ ์ํ ๊ฒ๋ค์ ๊ตฌํํ๋ค.
๐ ์ฐธ๊ณ ๊ธ
[Agile] TDD(ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ)๋
[๋ฒ์ญ]์ฌ์ด ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ๊ณผ ๋จ์ ํ ์คํธ๋ฅผ ์ํ 5๋จ๊ณ ๋ฐฉ๋ฒ๋ก
โ TDD๋ ์ธ์ ํด์ผํ ๊น?
์ฒ์ํด๋ณด๋ ํ๋ก๊ทธ๋จ ์ฃผ์ ์ผ ๋(๋์ ๋ถํ์ค์ฑ)
๊ณ ๊ฐ ์๊ตฌ์กฐ๊ฑด์ด ๋ฐ๋ ์ ์๋ ํ๋ก์ ํธ์ธ ๊ฒฝ์ฐ(์ธ๋ถ์ ์ธ ๋ถํ์ค์ฑ)
์ฆ ๋ถํ์ค์ฑ์ด ๋์ผ๋ฉด ํ ์คํธ๋ฅผ ์ง ๋ค.
๊ฒฐ๊ณผ๊ฐ ๋ช ํํ๋ค๋ฉด TDD๋ฅผ ์ ์ฉํ์ง ์๋๊ฒ ์ข๋ค.
๐คฉ TDD๋ฅผ ์ํ๋ ๋ฒ
- ๋๊ตฌ๋ ๊ท์น์ ์ง์ฐฉํ์ง ๋ง์๋ผ(TDD๋ ์ด๋ค ๋๊ตฌ๊ฐ ์๋๋ค.)
- ์ํฉ์ ๋ง๊ฒ ์ ์์ ์ผ๋ก ์งํ์ ์ผ๋ก ์ ๊ทผํ๋ผ
- ์ด๋ป๊ฒ ํ๋ฉด ํผ๋๋ฐฑ์ ๋ ๋ง์ด ๋ฐ์๊น๋ฅผ ๊ณ์ํด์ ๊ณ ๋ฏผํด๋ณด๋ผ
- ํ ์คํธ ์์ฒด๊ฐ ์ฒ์๋ถํฐ ์๋ฒฝํ ์ ์๋ค!
- ์ํฉ์ ๋ง๊ฒ ๋ฐ๋ณต์ ์ผ๋ก ๊ฐ์ ํด๋๊ฐ์
๐ง ํ ์คํธ ์ฝ๋๋ฅผ ์ ์ง๋ ์ฌ๊ณ ๋ฒ
๋น๋ฐ๋ฒํธ ๊ฐ๋ ์ธก์ ์ด๋ผ๋ ์๋ฅผ ํตํด ๊ณผ์ ์ ์ดํด๋ณด์
1. ์ ๋ ฅ ์ถ๋ ฅ ๊ฒฐ์ ํ๊ธฐ
๊ตฌํ์ ๊ณ ๋ คํ๊ธฐ ์ ์ ์ ์ถ๋ ฅ๋ถํฐ ์๊ฐํด๋ณด์.
- ์ ๋ ฅ๊ฐ: ๋น๋ฐ๋ฒํธ
- ์ถ๋ ฅ๊ฐ: Boolean(๊ฐ๋๊ฐ ์ธ๋ฉด true ์๋๋ฉด false)
2. ํจ์ ์๊ทธ๋์ฒ ์ ํํ๊ธฐ
ํจ์์ ๋งค๊ฐ๋ณ์์ ๋ฐํ๊ฐ์ ์ ์ํ๋ค.
var strong = isStrongPassword('password string goes here');
3. ๊ธฐ๋ฅ์ ์์ฃผ ์์ ํ๋์ ๊ด์ ์ผ๋ก ํ๋จํ๊ธฐ
๋ชฉํ์ ์์ฃผ ์กฐ๊ธ ๋ค๊ฐ๊ฐ๊ธฐ ์ํด ํ์ํ, ์ต๋ํ ๊ฐ๋จํ ๋์์ ์ง์คํ๋ผ.
๋ด๋ถ ๊ตฌํ์ ์ต๋ํ ์ ๊ฒฝ์ฐ์ง ๋ง๊ณ ์ด๋ป๊ฒ ๋์ํ๋์ง์๋ง ์ง์คํ๋ผ.
๋น๋ฐ๋ฒํธ ๊ฐ๋๋ฅผ ์๊ฐํด๋ณด๋ฉด, ํน์๋ฌธ์, ์ซ์, ๊ธธ์ด, ๋ฑ๋ฑ ๋ค์ํ ๊ท์น๋ค์ด ์์ ๊ฒ์ด๋ค. ์ด ๋ชจ๋ ๊ฒ์ ํฌํจํ๋ ํ ์คํธ๋ฅผ ์๊ฐํ๋ ๊ฑด ๋น์ฐํ ์ด๋ ต๋ค!
๋น๋ฐ๋ฒํธ ๊ฐ๋์ ๊ดํด ๊ฐ์ฅ ๋จ์ํ ๊ท์น์ ๋น ๋ฌธ์์ด์ด๋ค. ์ด๊ฑด ๋งค์ฐ ์ฝ๋ค
๋น๋ฐ๋ฒํธ๊ฐ ๋น์ด์๋ค๋ฉด ์ถ๋ ฅ๊ฐ์ ์ธ์ ๋ false์ฌ์ผ ํ๋ค.
4. ํ ์คํธ ๊ตฌํ
ํจ์์ ํ์ค ํ์ค์ ๋ชจ๋ฅธ์ฑ ํ ์คํธ ์ฝ๋ ๋ง์ ์์ฑํด๋ณด์.
describe('isPasswordStrong', function () {
it('should give negative result for empty string', function () {
var password = '';
var result = isPasswordStrong(password);
expect(result).to.be.false;
});
});
5. ์ฝ๋ ๊ตฌํ
์ด์ ํ ์คํธ๋ฅผ ํต๊ณผํ ์ ์๋ ์ต์ํ์ ์ฝ๋๋ง ์์ฑํ๋ค.
function isPasswordStrong(password) {
if (!password) {
return false;
}
}
๊ณ์ํด์ ๋น๋ฐ๋ฒํธ ๊ฐ๋ ์ธก์ ํจ์๋ฅผ ๊ฐ๋ฐํ๊ณ ์ถ๋ค๋ฉด 3๋ฒ๋ถํฐ 5๋ฒ๊น์ง์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด ๋๋ค.
์ด๋ ๊ฒ ์์ ์ ์ฐจ๋ฅผ ๋ฐ๋ณตํ๋ค๋ณด๋ฉด ๊ฒฐ๊ตญ์๋ ์ข์ ๊ฒฐ๊ณผ์ ์ด๋ฅผ ์ ์์ ๊ฒ์ด๋ค.
ํ๋ก์ ํธ ์ ์ฉ ๊ฐ๋ฅ ์ง์
๋ค ์ ์ฉํ๊ธฐ ํ๋ค๊ฒ ๊ฐ๊ณ ์ผ๋จ ์ผ๋ถ๋ถ๋ง TDDํ๊ฒ ์๊ฐํ๋ฉด์ ๊ตฌํํด๋ณด๋ ๊ฑด ์ด๋จ๊น?
- Form Validation Func
- Login Validation Func