์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค!
์์ฆ ์งํํ๊ณ ์๋ ํ๋ก์ ํธ๋ฅผ ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐํ๋ ค๊ณ ํ๋ค๊ฐ ์ข์ ํ๋ ์์ํฌ๋ฅผ ์ฐพ๊ฒ ๋์์ต๋๋ค.
Quick/Nimble ์ด๋ผ๋ ํ๋ ์์ํฌ์๋๋ฐ์.
์ฌ๊ธฐ์ Quick์ BDD ํ๋ ์์ํฌ๋ผ๊ณ ์๊ฐํ๋๋ผ๊ตฌ์.
๊ทธ๋์ BDD๊ฐ ๋ญ๊ณ TDD์๋ ๋ฌด์์ด ๋ค๋ฅธ์ง ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋ฐ๋ก ์์ํ ๊ฒ์~
BDD๋?
TDD์์ ํ์๋ ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ผ๋ก ๊ฐ๋ฐ์์ ๋น๊ฐ๋ฐ์๊ฐ์ ํ์ ๊ณผ์ ์ ๋ น์ฌ๋ธ ๋ฐฉ๋ฒ์ด๋ค.
์ฌ์ฉ์์ ํ์๋ฅผ ์์ฑํ๊ณ ๊ฒฐ๊ณผ ๊ฒ์ฆ์ ์งํํ๋ฉฐ BDD๋ก ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํจ์ ๋ฐ๋ผ ์ค๊ณ ์ญ์ ํ์์ ์ค์ฌ์ด ๋๋
๋๋ฉ์ธ ๊ธฐ๋ฐ ์ค๊ณ๊ฐ ๋๋ค.
์ฆ, ์ฌ์ฉ์์ ํ์๋ฅผ ๋ฏธ๋ฆฌ ์์ํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ํ ์คํธ ํด๋ณด๋ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ ๋๋ค.
BDD์ ๊ฐ๋ฐ ์ ์ฐจ
BDD๋ ๋ง์ ์ฌ๋๋ค์ด ์ฐ๊ตฌํ ๋์ ์ ํํ๋ ํ์์ด ๋ง๋ค์ด์ก์ต๋๋ค.
๋ฐ๋ก Given - When -Then ์ธ๊ฐ์ง๋ก ํ ์คํธ๋ฅผ ์งํํ๋ ๊ฒ์ ๋๋ค.
Given
์๋๋ฆฌ์ค ์์์ ์ฃผ์ด์ง ํ๊ฒฝ์ ์ ์ํฉ๋๋ค.
When
์ฌ์ฉ์๊ฐ ์ด๋ค ํ์๋ฅผ ํ๋ ๊ฒ์ ์ ์ํฉ๋๋ค.
Then
๊ทธ์ ๋ฐ๋ฅธ ์ด๋ ํ ๊ฒฐ๊ณผ๋ฅผ ์ ์ํฉ๋๋ค.
์ด๋ ๊ฒ ๋งํ๋ฉด ์ฝ๊ฒ ์ดํด๊ฐ ์๋์ค ์ ์์ผ๋ ์์ ๋ก ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ ์ ๊ฐ ๋ก๊ทธ์ธํ๋ ์ํฉ์์ ๊ธฐํ์์ ์๋์ ๊ฐ์ด ์ ํ์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
"์ฌ๋ฐ๋ฅธ ์ด๋ฉ์ผ๊ณผ ๋น๋ฐ๋ฒํธ๊ฐ ์ ๋ ฅ๋ ์ํ์์ ์ ์ ๊ฐ ๋ก๊ทธ์ธ ๋ฒํผ์ ๋๋ ์ ๋ ๋ค์ ํ๋ฉด์ผ๋ก ์ด๋ํ๋ค"
์ด๋ฐ ์ํฉ์ BDD๋ก ๊ฐ๋ฐํ๋ฉด ์ด๋ป๊ฒ ์งํ๋ ๊น์?
Given
์ฌ๋ฐ๋ฅธ ์ด๋ฉ์ผ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅ๋ ์ํ
When
์ ์ ๊ฐ ๋ก๊ทธ์ธ ๋ฒํผ์ ๋๋ ์ ๋
Then
๋ค์ ํ๋ฉด์ผ๋ก ์ด๋ํ๋ค.
์ด๋ฐ ์์ผ๋ก ํ ์คํธ๋ฅผ ์์ฑํ์ฌ ๊ฐ๋ฐ์ ์งํํด ๋๊ฐ๋ ๊ฒ์ ๋๋ค.
BDD์ TDD์ ์ฐจ์ด์
์ฐ์ TDD๋ ํ ์คํธ๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํ๊ณ ๊ทธ ๋ค์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ธ๋ฐ์.
TDD๋ก ๊ฐ๋ฐ์ ์งํํ๋ค๋ณด๋ฉด ์ฝ๋์ ํ ์คํธ๋ฅผ ์ง์คํ๊ฒ ๋์ด ๋ชจ๋ ๊ธฐ๋ฅ(ํจ์)๋ง๋ค ํ ์คํธ๋ฅผ ์์ฑํด์ฃผ์ด์ผ ํฉ๋๋ค.
ํ์ง๋ง BDD๋ ์์ ์ค๋ช ๋๋ ธ๋ค์ํผ ์ฌ์ฉ์์ ํ๋์ ์ง์คํ์ฌ ํ ์คํธ๋ฅผ ์์ฑํด์ฃผ๋ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด ๊ณ์ฐ๊ธฐ ์ฑ์ด ์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
TDD๋ก ๊ฐ๋ฐํ๊ฒ ๋ ๊ฒฝ์ฐ
๋ํ๊ธฐ๋ฅผ ํ๋ ํจ์ add()๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด add(1,1) 1๊ณผ 1์ด ๋ค์ด์์ ๋ ์ ๋๋ก ๋ ๊ฒฐ๊ณผ๊ฐ์ ๋ํ๋ด๋์ง ํ ์คํธ ํฉ๋๋ค.
BDD๋ก ๊ฐ๋ฐํ๊ฒ ๋ ๊ฒฝ์ฐ
์ฌ์ฉ์๊ฐ '1'๊ณผ '+'์ '1'์ ๋๋ฅด๊ณ '=' ์ ๋๋ฅด๋ฉด '2'๋ผ๋ ์ซ์๊ฐ ํ๋ฉด์ ์ ์์ ์ผ๋ก ๋์ค๋์ง๋ฅผ ํ ์คํธ ํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด BDD์ TDD๋ ์์ ๋ค๋ฅธ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ผ๊น์?
์ ๋ต๋ถํฐ ๋ง์๋๋ฆฌ๋ฉด '์๋๋ค' ์ ๋๋ค.
BDD์ TDD๋ ์๋ก ์ํธ๋ณด์์ ์ธ ๊ด๊ณ์ ์์ต๋๋ค.
์๋์ ๊ฐ์ด BDD๋ก ์ด๋ ํ ํ์๋ฅผ ํ ์คํธํ๊ณ ํด๋น ํ์์์ ๊น๊ฒ ํ ์คํธ ํ๊ธฐ ์ํด์ TDD๊ฐ ํ์ํ ๊ฒ์ด์ฃ .
์๋์ ๊ฐ์ด BDD๋ก ์ ์ํ ์๋๋ฆฌ์ค ์์์ ํ์๋ค์ BDD๋ก ํ ์คํธํ๋ฉฐ ์์ ์๋ ์ฝ๋๋ค์ ๊น๊ฒ ํ ์คํธ ํ๊ธฐ ์ํด TDD๊ฐ
์ฌ์ฉ๋๋ ๊ฒ์ด์ฃ !
๊ตฌ์ฒด์ ์ธ ์ฐจ์ด๋ฅผ ์ดํด๋ณด๋ฉด ์๋์ ๊ฐ์ด ๋ชฉ์ ๊ณผ ์ค๊ณ ์ฅ์ ๋ฑ์ผ๋ก ์ดํด๋ณผ ์ ์์ต๋๋ค.
BDD์ ์ฅ์
๋จผ์ BDD์ ์ฅ์ ์ TDD์ ๋จ์ ์ด๊ธฐ๋ ํ ์ผ์ ๊ด๋ฆฌ์ ๋ฆฌ์์ค ๊ด๋ฆฌ์ ๋๋ค.
TDD ๊ฐ๋ฐ ๋ฐฉ์์ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ ์ง๋ณด์ ํด์ผํ๋ฏ๋ก ๋ง์ ์ผ์ ๊ณผ ๋ฆฌ์์ค๊ฐ ํฌ์ ๋๊ฒ ๋ฉ๋๋ค.
์ด๋ฌํ ์ผ์ ๊ณผ ๋ฆฌ์์ค๋ ๊ณง ๋น์ฉ์ผ๋ก ์ด์ด์ง๊ณ ๊ธฐ์ ๋ถ์ฑ์ ์ ์ํ์ ๋ง๋ค๊ฒ ๋ฉ๋๋ค.
ํ์ง๋ง BDD๋ ์ด๋ฏธ ์์ฑ๋ ๊ธฐํ์์ ์๊ตฌ์ฌํญ์ด ํ ์คํธ ์ผ์ด์ค๊ฐ ๋๋ฏ๋ก ๊ฐ๋ฐ์์ ๊ณ ๋ฏผ์ ์ค๊ณ
๊ณง ๋น์ฉ๊ฐ์๋ก ์ด์ด์ง๊ฒ ๋ฉ๋๋ค.
๋ํ BDD๋ก ๊ฐ๋ฐ์ ์งํํ๋ฉด ๊ธฐํ์์ ์๊ตฌ์ฌํญ ์์ฒด๊ฐ ํ ์คํธ ์ผ์ด์ค๊ฐ ๋๋ฏ๋ก ๊ธฐํ์ ๊ผผ๊ผผํ ๊ฒํ ํ๊ฒ ๋๊ณ ๊ธฐํ์์
๋๋ฝ์ ์ฝ๋ ์์ฑ ์ ์ ๋ฐ๊ฒฌํด ๋ฆฌ์คํฌ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
Reference
๋๊ธ