๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ Computer Science/Programming

[CS] BDD(Behavior-Driven-Development)๋ž€?

by Fomagran ๐Ÿ’ป 2021. 8. 31.
728x90
๋ฐ˜์‘ํ˜•

 

์•ˆ๋…•ํ•˜์„ธ์š” 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๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์ด์ฃ .

 

์ถœ์ฒ˜: if kakao "Kotest๊ฐ€ ์žˆ๋‹ค๋ฉด TDD ๋ฌป๊ณ  BDD๋กœ ๊ฐ€!"

 

์•„๋ž˜์™€ ๊ฐ™์ด BDD๋กœ ์ •์˜ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค ์•ˆ์—์„œ ํ–‰์œ„๋“ค์„ BDD๋กœ ํ…Œ์ŠคํŠธํ•˜๋ฉฐ ์•ˆ์— ์žˆ๋Š” ์ฝ”๋“œ๋“ค์„ ๊นŠ๊ฒŒ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์œ„ํ•ด TDD๊ฐ€

 

์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด์ฃ !

 

์ถœ์ฒ˜: if kakao "Kotest๊ฐ€ ์žˆ๋‹ค๋ฉด TDD ๋ฌป๊ณ  BDD๋กœ ๊ฐ€!"

 

๊ตฌ์ฒด์ ์ธ ์ฐจ์ด๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ชฉ์ ๊ณผ ์„ค๊ณ„ ์žฅ์  ๋“ฑ์œผ๋กœ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ถœ์ฒ˜: if kakao "Kotest๊ฐ€ ์žˆ๋‹ค๋ฉด TDD ๋ฌป๊ณ  BDD๋กœ ๊ฐ€!"

 


BDD์˜ ์žฅ์ 

 

๋จผ์ € BDD์˜ ์žฅ์ ์€ TDD์˜ ๋‹จ์ ์ด๊ธฐ๋„ ํ•œ ์ผ์ •๊ด€๋ฆฌ์™€ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ์ž…๋‹ˆ๋‹ค.

 

TDD ๊ฐœ๋ฐœ ๋ฐฉ์‹์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์œ ์ง€๋ณด์ˆ˜ ํ•ด์•ผํ•˜๋ฏ€๋กœ ๋งŽ์€ ์ผ์ •๊ณผ ๋ฆฌ์†Œ์Šค๊ฐ€ ํˆฌ์ž…๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

์ด๋Ÿฌํ•œ ์ผ์ •๊ณผ ๋ฆฌ์†Œ์Šค๋Š” ๊ณง ๋น„์šฉ์œผ๋กœ ์ด์–ด์ง€๊ณ  ๊ธฐ์ˆ  ๋ถ€์ฑ„์˜ ์•…์ˆœํ™˜์„ ๋งŒ๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ BDD๋Š” ์ด๋ฏธ ์ž‘์„ฑ๋œ ๊ธฐํš์„œ์˜ ์š”๊ตฌ์‚ฌํ•ญ์ด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ๋˜๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž์˜ ๊ณ ๋ฏผ์€ ์ค„๊ณ 

 

๊ณง ๋น„์šฉ๊ฐ์ˆ˜๋กœ ์ด์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๋˜ํ•œ BDD๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉด ๊ธฐํš์„œ์˜ ์š”๊ตฌ์‚ฌํ•ญ ์ž์ฒด๊ฐ€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ๋˜๋ฏ€๋กœ ๊ธฐํš์„ ๊ผผ๊ผผํžˆ ๊ฒ€ํ† ํ•˜๊ฒŒ ๋˜๊ณ  ๊ธฐํš์„œ์˜

 

๋ˆ„๋ฝ์„ ์ฝ”๋“œ ์ž‘์„ฑ ์ „์— ๋ฐœ๊ฒฌํ•ด ๋ฆฌ์Šคํฌ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Reference

 

 

if(kakao)2020

์˜ค๋Š˜๋„ ์นด์นด์˜ค๋Š” ์ผ์ƒ์„ ๋ฐ”๊พธ๋Š” ์ค‘

if.kakao.com

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€