[iOS/Swift] TestCode๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์ž - Test Doubles(Mock, Stub, Fake, dummy)

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ ์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์—์„œ Stub, Mock ๋“ฑ ์ด๋Ÿฐ ๋‹จ์–ด๋“ค์„ ์ž์ฃผ ๋ณด์…จ์„ ํ…๋ฐ์š”. ๊ทธ๋ƒฅ ๋”๋ฏธ ๋ฐ์ดํ„ฐ์ธ๊ฐ€? ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ๋„˜์–ด๊ฐˆ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์šฉ์–ด ์ •๋ฆฌ๋ฅผ ํ•˜๊ณ  ๊ณต๋ถ€ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค Test Double์ด๋ž€? test double์€ ๋ฌด์—‡์ผ๊นŒ? ํ…Œ์ŠคํŠธ๋ฅผ ๋‘๋ฒˆ ํ•œ๋‹ค๋Š” ๋œป์ผ๊นŒ? ์ด ๋œป์„ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์ž ์‹œ ์ฃผ์ œ๋ฅผ ์˜ํ™”๋กœ ์˜ฎ๊ฒจ๋ณผ๊ฒŒ์š”. ์˜ํ™” ์ดฌ์˜์žฅ์—์„œ stunt double์ด๋ผ๋Š” ์šฉ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. stunt double์€ stunt man๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋ฐฐ์šฐ์™€ ๋น„์Šทํ•œ ์ฒด๊ฒฉ, ์™ธ๋ชจ, ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด์„œ ์œ„ํ—˜ํ•œ ์”ฌ์„ ๋Œ€์‹  ์ดฌ์˜ํ•˜๋Š” ์‚ฌ๋žŒ์„ ๋งํ•˜๋Š”๋ฐ์š”. ๊ทธ๋ ‡๋‹ค๋ฉด test double์€ ์‹ค์ œ๋กœ ์žˆ๋Š” ์ฝ”๋“œ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์‹ค์ œ๋กœ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ์™€ ๋น„์Šทํ•œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋„๋ก ๋•๋Š” ..

iOS/Swift 2023. 10. 20. 00:20
[iOS/Swift] Test Code๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์ž - Unit Test

Unit Test๋ž€ unit test๋ž€ ๋ฌด์—‡์„๊นŒ์š”? ์œ„ํ‚ค๋ฐฑ๊ณผ๋ฅผ ํ†ตํ•ด ์ฐพ์•„๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ๋‹› ํ…Œ์ŠคํŠธ(unit test)๋Š” ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์†Œ์Šค ์ฝ”๋“œ์˜ ํŠน์ • ๋ชจ๋“ˆ์ด ์˜๋„๋œ ๋Œ€๋กœ ์ •ํ™•ํžˆ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ์ ˆ์ฐจ๋‹ค. ์ฆ‰, ๋ชจ๋“  ํ•จ์ˆ˜์™€ ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ๋งํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ์–ธ์ œ๋ผ๋„ ์ฝ”๋“œ ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, ๋‹จ์‹œ๊ฐ„ ๋‚ด์— ์ด๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๋ฐ”๋กœ ์žก์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ์ด์ƒ์ ์œผ๋กœ, ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ์„œ๋กœ ๋ถ„๋ฆฌ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๊ฐ€์งœ ๊ฐ์ฒด(Mock object)๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. ์œ ๋‹› ํ…Œ์ŠคํŠธ๋Š” (์ผ๋ฐ˜์ ์ธ ํ…Œ์ŠคํŠธ์™€ ๋‹ฌ๋ฆฌ) ๊ฐœ๋ฐœ์ž(developer) ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ณด๋‹ค ๋” ์‹ฌ๋„์žˆ๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ํ…Œ์Šคํ„ฐ(tester)์— ์˜ํ•ด ์ˆ˜ํ–‰๋˜๊ธฐ๋„ ํ•œ..

iOS/Swift 2023. 10. 15. 17:53
[iOS/Swift] Test Code๋ฅผ ์ž‘์„ฑํ•ด๋ณด์ž - TDD๋ž€?

์•ˆ๋…•ํ•˜์„ธ์š”? ๋„ˆ๊ตฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์š”์ฆ˜ ํ…Œ์ŠคํŠธ๋ผ๋Š” ์ฃผ์ œ์— ๋น ์ ธ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐํš์•ˆ์„ ๋ฐ›๊ณ  ์ฒ˜์Œ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ๋Š” ๋ชจ๋“  ์ผ€์ด์Šค์— ๋Œ€ํ•ด ๊ณ ๋ คํ•˜๋ฉด ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ํ•˜์ง€๋งŒ ๊ธ‰ํ•˜๊ฒŒ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ž‘์—…ํ•œ์ง€ ์˜ค๋ž˜๋œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋‹ค ๋ณด๋ฉด ์˜ˆ์ƒ์น˜ ๋ชปํ•˜๊ฒŒ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๊ฐ€ ๋‚˜๊ธฐ ๋งˆ๋ จ์ž…๋‹ˆ๋‹ค. ์š”์ฆ˜ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ํ• ๊นŒ ๊ณ ๋ฏผํ•˜๋˜ ์ค‘ ์˜ค๋ฅ˜๋ฅผ ์ค„์ด๊ณ  ์ถ”ํ›„ ์ˆ˜์ •ํ•˜๋”๋ผ๋„ ์ด๋Ÿฐ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ฅผ ์žก์•„๋‚ด๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๊ฒ ๋‹ค ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ๋ฐ€๋ ค๋‚˜ ์žˆ๋˜ Test Code์— ๋Œ€ํ•ด ๊ด€์‹ฌ์ด ์ƒ๊ฒผ๊ณ  TDD์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. TDD(Test - Driven Development) ๋ž€? TDD๋ž€ Test-Driven-Development, ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ์ž…๋‹ˆ๋‹ค. ๋งค์šฐ ์งง์€ ๊ฐœ๋ฐœ ์‚ฌ์ดํด์„ ๋ฐ˜๋ณตํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•˜๋‚˜..

iOS/Swift 2023. 10. 11. 00:28
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ