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

[CS] F.I.R.S.T ์›์น™์ด๋ž€? (feat.UnitTest)

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

 

์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค!

 

์˜ค๋Š˜ ์•Œ์•„๋ณผ ์ฃผ์ œ๋Š” ์ข‹์€ ์œ ๋‹› ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ F.I.R.S.T ์›์น™์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~


F.I.R.S.T ์›์น™์ด๋ž€?

 

First ์›์น™์€ 'ํด๋ฆฐ ์ฝ”๋“œ' ๋ผ๋Š” ์•„์ฃผ ์œ ๋ช…ํ•œ ์ฑ…์˜ ์ €์ž์ธ Bob Martin์ด ์ฒ˜์Œ ์ œ์‹œํ•œ ๊ทœ์น™์ž…๋‹ˆ๋‹ค.

 

์ด ๊ทœ์น™์€ ํšจ์œจ์ ์ด๊ณ  ์ข‹์€ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ 5๊ฐ€์ง€ ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋น ๋ฅด๊ณ (Fast),๋…๋ฆฝ์ ์ด๊ณ (Independent),๋ฐ˜๋ณต๊ฐ€๋Šฅํ•˜๋ฉฐ(Repeatable),์ž์ฒด ๊ฒ€์ฆ๊ฐ€๋Šฅํ•˜๊ณ (Self-validating),์ฒ ์ €ํ•˜๊ณ  ์ ์‹œ์—(Thorough&Timely)

 

์ž‘์„ฑ ๊ฐ€๋Šฅํ•œ ํ…Œ์ŠคํŠธ๋ฅผ First ์›์น™์„ ์ค€์ˆ˜ํ•œ ์œ ๋‹›ํ…Œ์ŠคํŠธ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

์ด 5๊ฐ€์ง€ ์›์น™์— ๋Œ€ํ•ด์„œ ์„ธ์„ธํ•˜๊ฒŒ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


Fast

 

์œ ๋‹› ํ…Œ์ŠคํŠธ๋Š” ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋˜๊ณ  ๋น ๋ฅด๊ฒŒ ๊ฒฐ๊ณผ๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ•˜๋Š” ์ผ์˜ ๋‹จ์œ„๊ฐ€ ์ตœ๋Œ€ํ•œ ์ž‘์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๋˜ํ•œ ๋น ๋ฅธ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„  ์‹ค์ œ ์„œ๋ฒ„๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๊ณ 

 

๊ฐ€์งœ ๋ฐ์ดํ„ฐ(๋ชจ์˜ ๋ฐ์ดํ„ฐ)๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์‹  ๋‚ ์งœ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๊ฐ€์žฅ ์ตœ๊ทผ ๋ฐ์ดํ„ฐ 5๊ฐœ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ

 

์‹ค์ œ ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ ๋ฐ์ดํ„ฐ๊ฐ€ ๋Š๋ฆฌ๊ฒŒ ๋ฐ›์•„์ ธ ์˜ค๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค๊ฒ ์ฃ ?

 

๊ทธ๋Ÿฌ๋‹ˆ๊น ๊ฐ€์งœ ๋ฐ์ดํ„ฐ๋กœ ์‹ค์ œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ณ ์‹ถ์€ ๋ถ€๋ถ„๋งŒ ์ž˜๋ผ์„œ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.


Independent

 

์œ ๋‹› ํ…Œ์ŠคํŠธ๋Š” ๊ทธ ์ž์ฒด๋งŒ์œผ๋กœ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ฆ‰, ๋…๋ฆฝ์ ์ด์–ด์•ผ ํ•˜๊ณ  ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ์— ์˜์กดํ•˜๊ฑฐ๋‚˜ ์˜ํ–ฅ์„ ์ฃผ์–ด์„  ์•ˆ๋ฉ๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ ํฌ๋งˆ๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์ด ๋ฐ์ดํ„ฐ๋Š” ๊ทธ ์ „ ํ…Œ์ŠคํŠธ์—์„œ ์ด๋ฆ„์ด ์ž˜ ๋ฐ”๋€Œ๋Š”์ง€ (ํฌ๋งˆ -> ๊ทธ๋žœ) ํ…Œ์ŠคํŠธ ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณค ์ด๋ฆ„์— 'ํฌ' ์ž๊ฐ€ ๋“ค์–ด๊ฐ€๋Š”์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ ๋งŒ์•ฝ ๊ทธ ์ „ ํ…Œ์ŠคํŠธ์— ์˜์กดํ•œ๋‹ค๋ฉด

 

๊ทธ ์ „ ํ…Œ์ŠคํŠธ์—์„œ ์–ด๋–ป๊ฒŒ ์ด๋ฆ„์„ ๋ฐ”๊ฟจ๋Š๋ƒ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ”๋€Œ๊ฒ ์ฃ ?

 

๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ชจ๋“  ํ…Œ์ŠคํŠธ์—๋Š” ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.


Repeatable

 

์œ ๋‹› ํ…Œ์ŠคํŠธ๋Š” ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

ํ…Œ์ŠคํŠธ๋ฅผ ์–ด๋””์„œ ์–ด๋–ป๊ฒŒ ๋ช‡ ๋ฒˆ์„ ์ง„ํ–‰ํ•˜๋“  ๋˜‘๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™€์•ผํ•ฉ๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ ์–ด๋–ค ์ˆซ์ž์— 5๋ฅผ ๊ณฑํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด

 

ํ•ญ์ƒ 5๋ฅผ ๊ณฑํ•œ ์ˆซ์ž๊ฐ€ ๋‚˜์™€์•ผํ•ฉ๋‹ˆ๋‹ค. (๋‹น์—ฐํ•œ ์–˜๊ธฐ์ง€๋งŒ...)

 

์ด ์›์น™์€ ์˜์กด์„ฑ๊ณผ ์•„์ฃผ ๊ด€๊ณ„๊ฐ€ ๊นŠ์€๋ฐ์š”.

 

(์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ํ–ฅ์„ ๋ผ์นœ๋‹ค๋ฉด ๋˜‘๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š๊ฒ ์ฃ ?)


Self-validating

 

์œ ๋‹› ํ…Œ์ŠคํŠธ๋Š” ์ž์ฒด ๊ฒ€์ฆ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

ํ…Œ์ŠคํŠธ ์ž์ฒด๋กœ ํ†ต๊ณผ์ธ์ง€ ์‹คํŒจ์ธ์ง€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™€์•ผ ํ•˜๋ฉฐ ์ด๊ฒƒ์€ ์ž๋™์ ์œผ๋กœ ์ด๋ค„์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๋ง ๊ทธ๋Œ€๋กœ ์ด๊ฑด ํ†ต๊ณผ์ธ ๊ฒƒ๋„ ์•„๋‹ˆ๊ณ ... ์‹คํŒจ์ธ ๊ฒƒ๋„ ์•„๋‹Œ...์• ๋งคํ•œ ์ƒํ™ฉ์ด ์—†์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๋˜ํ•œ ์ž๋™์ ์œผ๋กœ ์ด๋ค„์ง„๋‹ค๋Š” ๊ฒƒ์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์‚ฌ๋žŒ์ด ์ถœ๋ ฅ์ด๋‚˜ ๋กœ๊ทธ๋ฅผ ํ†ตํ•ด์„œ ์ˆ˜๋™์ ์œผ๋กœ

 

๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ทธ ํ…Œ์ŠคํŠธ๋Š” ์ž์ฒด์ ์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™€์•ผํ•ฉ๋‹ˆ๋‹ค.

 

(iOS๋ผ๋ฉด XCTest๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.)


Thorough & Timely

 

์œ ๋‹› ํ…Œ์ŠคํŠธ๋Š” ์ฒ ์ €ํ•˜๊ณ  ์ ์ ˆํ•œ ๋•Œ์— ์ž‘์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ฒ ์ €ํ•˜๋‹ค๋Š” ๊ฒƒ์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์‚ฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ตœ์†Œ์—์„œ ์ตœ๋Œ€๊นŒ์ง€ ๋ฒ”์œ„๋ฅผ ํฌํ•จํ•˜๊ณ  

 

์—ญํ• ์— ๋”ฐ๋ผ์„œ ๋ฐ”๋€Œ๋Š” ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ์ž์ผ๋•Œ ๊ด€๋ฆฌ์ž์ผ ๋•Œ ๋ชจ๋‘ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฉฐ

 

์–ด๋–ค ์ผ€์ด์Šค๊ฐ€ ์‹คํŒจ(์˜ˆ์™ธ๋‚˜ ์˜ค๋ฅ˜)ํ•˜๋Š”์ง€๋„ ํ…Œ์ŠคํŠธ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

 

๋˜ํ•œ ์œ ๋‹› ํ…Œ์ŠคํŠธ๋Š” ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ๋ฐ”๋กœ ์ „์— ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€