๐Ÿ’ก '์• ์ž์ผ(Agile) ๋ฐฉ๋ฒ•๋ก ' ์ด๋ž€? - feat. TDD

Hi! I'm JENNIEยท2022๋…„ 6์›” 11์ผ
5

TIL : ๊ธฐ๋ก

๋ชฉ๋ก ๋ณด๊ธฐ
1/16
post-thumbnail

๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด์„œ ์ข…์ข… ๋ณด์˜€๋˜ ๋‹จ์–ด, 'Agile'
๋ญ”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ '์• ์ž์ผ ๋ฐฉ์‹์œผ๋กœ..' '์• ์ž์ผ ์กฐ์ง..' '์• ์ž์ผ์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ....''์• ์ž์ผ...''์• ใ…ˆ...' ์•„๋ฌดํŠผ ์—„์ฒญ ๋งŽ์ด ์–ธ๊ธ‰๋˜๋Š” ๋‹จ์–ด์˜€๋‹ค.
์–ธ์  ๊ฐ€ ์ฐพ์•„๋ณด์ง€ ๋ญ ํ•˜๊ณ  ๊ณ„์† ๋„˜๊ธฐ๋‹ค๊ฐ€ Testing ๊ด€๋ จ๋œ ๊ธ€์— TDD์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ฝ๋Š”๋ฐ ๋˜ ๋“ฑ์žฅํ•œ Agile !!!!!

์•„ ๊ทธ๋ž˜์„œ ์• ์ž์ผ์ด ๋ญ”๋ฐ????๐Ÿคฏ

..๋ผ๋Š” ๊ถ๊ธˆ์ฆ๊ณผ ๋Œ€์ถฉ์ด๋ผ๋„ ์•Œ๊ณ  ๋„˜์–ด๊ฐ€๋ผ๋Š” ๊ณ„์‹œ ๊ฐ™์•„์„œ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•ด ๋ณด๋ ค๊ณ  ์‹œ์ž‘ํ•˜๋Š” ํฌ์ŠคํŒ….

์ฐพ์•„๋ณด๋‹ˆ ์ดˆ์ดˆ์ดˆ์ญˆ๋‹ˆ์–ด(๋„ ์•„๋‹Œ)์—๊ฒŒ๋Š” ์‚ด์ง ๋ชจํ˜ธํ•˜๊ธฐ๋„ ํ•œ ๊ฐœ๋…์ด๋ผ ์ •๋ง ๐Ÿ“๊ฐ„๋‹จํžˆ ๊ฐœ๋…๋งŒ ์ •๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํฌ์ŠคํŒ…์ž„์„ ๋ฐํžŒ๋‹ค.



1. ์• ์ž์ผ(Agile)๋ฐฉ๋ฒ•๋ก ์ด ๋ญ”๋ฐ?

'์• ์ž์ผ(Agile)'์ด๋ž€ ์šฉ์–ด๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐฉ์‹์˜ ํ•˜๋‚˜๋กœ,
์ž‘์—… ๊ณ„ํš์„ ์งง์€ ๋‹จ์œ„๋กœ ์„ธ์šฐ๊ณ  ์ œํ’ˆ์„ ๋งŒ๋“ค๊ณ  ๊ณ ์ณ ๋‚˜๊ฐ€๋Š” ์‚ฌ์ดํด์„ ๋ฐ˜๋ณตํ•จ์œผ๋กœ์จ ๊ณ ๊ฐ์˜ ์š”๊ตฌ ๋ณ€ํ™”์— ์œ ์—ฐํ•˜๊ณ ๋„ ์‹ ์†ํ•˜๊ฒŒ ๋Œ€์‘ํ•˜๋Š” ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์ด๋‹ค.

Agile = '๊ธฐ๋ฏผํ•œ, ๋‚ ๋ ตํ•œ' ์ด๋ž€ ๋œป์ธ ๋งŒํผ,
์ข‹์€ ๊ฒƒ์„ ๋น ๋ฅด๊ฒŒ ์ทจํ•˜๊ณ , ์œ ์—ฐํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๊ฐœ๋ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๋ก ์„ ํ†ต์นญํ•ด ์ผ์ปซ๋Š” ๋ง์ด๋‹ค.

๐Ÿ“ ์• ์ž์ผ ํ”„๋ ˆ์ž„์›Œํฌ
: ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก ์„ ๋”ฐ๋ฅด๋Š” ๊ฐœ๋ฐœ ๊ธฐ๋ฒ•
ex) Scrum, kanban, XP(eXtreme Programming) ๋“ฑ๋“ฑ

์• ์ž์ผ์€ ์–ด๋– ํ•œ ๊ทœ์ •์ด๋‚˜ ํˆด์ด ์•„๋‹ˆ๋ฉฐ โŒ
๊ฐœ๋ฐœ ์—…๋ฌด๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋˜๋Š” ๊ฒƒ์ด ์ข‹์€์ง€์— ๋Œ€ํ•œ, ํ˜‘์—…๊ณผ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๋ฐ”๋ผ๋ณด๋Š” ๊ด€์ , ๊ฐ€์น˜์ฒด๊ณ„, ๋ฌธํ™”๋ผ๊ณ  ๋ณด๋Š” ๊ฒƒ์ด ๋” ๊ฐ€๊น๋‹ค.
์ฆ‰, ์œ„์˜ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์ด ์ง€ํ–ฅํ•˜๋Š” ๊ฒƒ์„ ํ†ต์นญํ•˜๋Š” ์ƒ์œ„ ๊ฐœ๋…์ด ์• ์ž์ผ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
๐Ÿคš๐Ÿผ ์• ์ž์ผ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ์„ ์–ธ๋ฌธ

2. ์• ์ž์ผ(Agile)์ด ์™œ ์ค‘์š”ํ•ด?

์ƒˆ๋กœ์šด ๋ฐฉ์‹์˜ ํƒ„์ƒ์—๋Š” ๋ถ„๋ช… ๊ธฐ์กด ๋ฐฉ์‹์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ณ ์ž ํ•จ์ด ์žˆ์„ ๊ฒƒ.
์• ์ž์ผ์˜ ํƒ„์ƒ ๋ฐฐ๊ฒฝ์—๋Š” ์›Œํ„ฐํด(Waterfall; ํญํฌ์ˆ˜) ๋ฐฉ์‹์ด ์žˆ๋‹ค.

์›Œํ„ฐํด(Waterfall) ๋ฐฉ์‹์€
์ฃผ๋ฌธ โžช ๋””์ž์ธ โžช ๊ธฐ๋Šฅ๊ตฌํ˜„ โžช ํ…Œ์ŠคํŒ… โžช ๋ฐฐํฌ
์ˆœ์„œ๋Œ€๋กœ ํ˜๋Ÿฌ๊ฐ€๋Š” ๋ฐฉ์‹. ์•„๋งˆ๋„ K-people ๋“ค์—๊ฒŒ ๊ฐ€์žฅ ์ต์ˆ™ํ•œ ๋ชจ๋ธ์ด ์•„๋‹๊นŒ ์‹ถ๋‹ค. ๊ธด ๊ณ„ํš์„ ์งœ๊ณ  ๊ทธ ์•ˆ์—์„œ ์ˆœ์„œ๋Œ€๋กœ ์ฒด๊ณ„์ ์œผ๋กœ ์ง„ํ–‰๋˜๋Š” ์ „ํ†ต์ ์ธ ๋ฐฉ์‹.
ํ•˜์ง€๋งŒ, ์ด๋Š” ์ง€๋‚˜์น˜๊ฒŒ ๊ณ„ํš๊ณผ ์ ˆ์ฐจ์— ์˜์กดํ•ด ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์˜ ๋‚ญ๋น„๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์—ˆ๋‹ค.

์• ์ž์ผ(Agaile) ๋ฐฉ์‹์€
"์ฃผ๋ฌธ โžช ๋””์ž์ธ โžช ๊ธฐ๋Šฅ๊ตฌํ˜„ โžช ํ…Œ์ŠคํŒ… โžช ๋ฐฐํฌ" x โˆž
๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
๋Œ€์‹ , ๊ธฐ๋Šฅ์„ ์ถ•์†Œํ•˜๊ณ  ๊ทธ ์ฃผ๊ธฐ๋ฅผ ์งง๊ฒŒํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ํ•œ ์ฃผ๊ธฐ๊ฐ€ ๋Œ๊ฒŒ ํ•œ ํ›„ ์ค‘๊ฐ„ ํ…Œ์ŠคํŠธ(ํ”ผ๋“œ๋ฐฑ)๋ฅผ ๋งŽ์ด ๊ฐ€์ง€๋Š” ๋ฐฉ์‹์ด๋‹ค.
๊ทธ ์งง์€ ํ•œ ์ฃผ๊ธฐ = ์Šคํ”„๋ฆฐํŠธ(Sprint) ๋ผ๊ณ  ํ•œ๋‹ค.
์ด๋Š” ์งง๊ณ  ๋ฐ˜๋ณต์ ์ธ ๊ณผ์ •์œผ๋กœ ๋น ๋ฅด๊ณ  ์œ ์—ฐํ•˜๋ฉฐ ์ˆ˜์ •๋„ ์‰ฝ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
๊ณผ๊ฑฐ์™€๋Š” ๋น„๊ต์กฐ์ฐจ ํ•˜๊ธฐ ์–ด๋ ค์šธ ์ •๋„๋กœ ์‹œ์žฅ๊ณผ ๊ณ ๊ฐ ๋“ฑ ๋ณ€ํ™”๊ฐ€ ๋นจ๋ผ์ง€๊ณ  ํ•œ์น˜ ์•ž์„ ์˜ˆ์ƒํ•˜๊ธฐ ์–ด๋ ค์šด ํ™˜๊ฒฝ ๋•Œ๋ฌธ์—, ์ตœ๊ทผ์—๋Š” ๊ฑฐ์˜ ๋ชจ๋“  IT์—…๊ณ„์—์„œ๋Š” ์• ์ž์ผ ๋ฐฉ์‹์„ ์„ ํ˜ธํ•˜๊ณ  ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‘ ๋ฐฉ์‹ ๋ชจ๋‘ ์žฅ๋‹จ์ ์ด ์žˆ์œผ๋ฏ€๋กœ ์กฐ์ง์˜ ๋ชฉ์ ์— ๋”ฐ๋ผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์šฐ๋ฆฌ๋‚˜๋ผ๋Š” ํŠน์„ฑ์ƒ ์•„์ง ํ—ˆ์šธ๋ฟ์ธ ์• ์ž์ผ ๋ฌธํ™”๋„ ๋งŽ๋‹ค๊ณ .

3. ๊ทธ๋ ‡๋‹ค๋ฉด TDD๋Š” ๋ฌด์—‡์ธ๊ฐ€?

TDD๋ž€

: Test Driven Development(ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ)

์ด๋ฆ„์—์„œ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋“ฏย ํ…Œ์ŠคํŠธ๋ฅผ ์ค‘์š”์‹œํ•˜๋Š” ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์ด๋ฉฐ,
์ž‘์€ ๋‹จ์œ„์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค.

์งง์€ ๊ฐœ๋ฐœ ์ฃผ๊ธฐ์˜ ๋ฐ˜๋ณต์— ์˜์กดํ•˜๋Š” ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์ด๋ฉฐ, ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก  ์ค‘ ํ•˜๋‚˜์ธ eXtream Programming(XP)์˜ Test-First ๊ฐœ๋…์— ๊ธฐ๋ฐ˜์„ ๋‘” ๋‹จ์ˆœํ•œ ์„ค๊ณ„๋ฅผ ์ค‘์š”์‹œํ•œ๋‹ค.
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ „์— ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

TDD ํ”„๋กœ์„ธ์Šค

  • { Red = fail test } ๋‹จ๊ณ„ : ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑ.
  • { Green = pass test } ๋‹จ๊ณ„ : ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์„ฑ๊ณต์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ.
  • { Blue = refactor } ๋‹จ๊ณ„ : ์ค‘๋ณต ์ฝ”๋“œ ์ œ๊ฑฐ, ์ผ๋ฐ˜ํ™” ๋“ฑ์˜ ๋ฆฌํŒฉํ† ๋ง ์ˆ˜ํ–‰.

์ค‘์š”ํ•œ ๊ฒƒ์€ ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๊นŒ์ง€ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๊ณผ, ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•  ์ •๋„์˜ ์ตœ์†Œ ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‹ค์ œ ์ฝ”๋“œ์— ๋Œ€ํ•ด ๊ธฐ๋Œ€๋˜๋Š” ๋ฐ”๋ฅผ ๋ณด๋‹ค ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•จ์œผ๋กœ์จ ๋ถˆํ•„์š”ํ•œ ์„ค๊ณ„๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๊ณ , ์ •ํ™•ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

TDD์˜ ์žฅ์  & ๋‹จ์ 

์žฅ์ 
1) ์žฌ์„ค๊ณ„ ์‹œ๊ฐ„์„ ๋‹จ์ถ• : ๋†’์€ ํ’ˆ์งˆ์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ณด์žฅ
2) ์ฒ ์ €ํ•œ ๊ธฐ๋Šฅ๋ณ„ ๋ชจ๋“ˆํ™” : ์ข…์†์„ฑ์ด ๋‚ฎ์€ ์ฝ”๋“œ
3) ์ถ”๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ ๋ฐ˜์˜์ด ๋น„๊ต์  ์‰ฌ์›€
4) ๋””๋ฒ„๊น… ์‹œ๊ฐ„์˜ ๋‹จ์ถ•: ์—๋Ÿฌ ๋ฐ ๋ฒ„๊ทธ๊ฐ€ ์ ์Œ

๋‹จ์ 
1) ๋‚ฎ์€ ์ƒ์‚ฐ์„ฑ (ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ฐœ๋ฐœํ•ด์•ผ ํ•˜๋ฏ€๋กœ)
2) ์ดˆ๊ธฐ ๋น„์šฉ ์ฆ๊ฐ€ (์ดˆ๊ธฐ ์„ธํŒ… ๋น„์šฉ์ด ๋“ค๊ณ  ์ˆ™๋ จ๋˜๊ธฐ๊นŒ์ง€ ์‹œ๊ฐ„์ด ์†Œ์š”๋จ)
3) ๊ธฐํ•œ ์ค€์ˆ˜๊ฐ€ ์ค‘์š”ํ•œ ํ”„๋กœ์ ํŠธ์—๋Š” ๋„์ž…์ด ์–ด๋ ค์›€

๐Ÿ“Œ ๋” ๋‹ค์–‘ํ•œ ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก ์ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด? โžช "BDD๋ถ€ํ„ฐ TDD๊นŒ์ง€" ๋‹ค์–‘ํ•œ ์• ์ž์ผ ๊ธฐ๋ฒ•์˜ ์žฅ๋‹จ์ 


์• ์ž์ผ๊ณผ TDD ๋“ฑ ๋‹ค์–‘ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋‹ˆ ๋ฌด์กฐ๊ฑด ์ข‹์€ ๊ฒƒ๋„ ์—†๊ณ , ๊ฐ์ž ์ƒํ™ฉ์— ๋งž๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์š”์ฆ˜ IT์—…๊ณ„์˜ ํฐ ํ๋ฆ„์€ ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก ์„ ์ถ”๊ตฌํ•œ๋‹ค๋Š” ์ ! ์šฐ๋ฆฌ๋‚˜๋ผ์—๋Š” ์ ์šฉ์ด ์–ด๋ ค์šด ๋ถ€๋ถ„์ด ์žˆ๊ฒ ๋‹ค๋Š” ์ ! ใ…Žใ…Žใ…Žใ…Žใ…Ž ์ผ๋‹จ ์š”๊ฒƒ๋งŒ ์•Œ๊ณ ๊ฐ€์ž

๐Ÿ“Œ ์ฐธ๊ณ ์‚ฌ์ดํŠธ
์• ์ž์ผ(Agile)์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€
TDD๋ž€? ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ

profile
Front-End Developer

0๊ฐœ์˜ ๋Œ“๊ธ€