Skip to content

Latest commit

ย 

History

History
56 lines (37 loc) ยท 4.02 KB

File metadata and controls

56 lines (37 loc) ยท 4.02 KB

Lagacy code ์— Unit Test ์ ์šฉํ•˜๊ธฐ

ํ˜„์žฌ ์ฃผ ์—…๋ฌด๋กœ ๋‹ค๋ฃจ๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์ด iOS Swift ์ด๋‹ค ๋ณด๋‹ˆ, iOS Swift ๊ธฐ์ค€์œผ๋กœ ์ƒ๊ฐํ•ด ๋ณธ๋‹ค.
(ํ˜„ ์—…๋ฌด์—์„œ ์ ์šฉํ•ด๋ณธ ๊ฒฝํ—˜ ์œ„์ฃผ๋กœ ๊ธฐ์ˆ ํ•œ๋‹ค.)

A. Legacy code ๋ฅผ testable ํ•œ ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ

๋ณดํ†ต(๊ฒฝํ—˜์ƒ ๊ฑฐ์˜ ๋‹ค..) Legacy code ๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์—†๊ณ , ์ฝ”๋“œ๋กœ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ค์šด ์ƒํƒœ์ด๋‹ค.
Unit Test ๋ฅผ ์ ์šฉํ•œ๋‹ค๊ณ  ํ•˜๋Š” ๊ฒƒ์€ ์ฝ”๋“œ๋ฅผ ์ฝ”๋“œ๋กœ ํ…Œ์ŠคํŠธ ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๋‹ค.

์ฝ”๋“œ๋ฅผ ์™œ ์ฝ”๋“œ๋กœ ํ…Œ์ŠคํŠธ ํ•ด์•ผ ํ• ๊นŒ?

ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘๊ฑฐ๋‚˜ ์ดˆ๊ธฐ๋ผ๋ฉด, ์†์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์˜ ๋กœ์ง์„ ์‰ฝ๊ฒŒ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๊ณ , ๊ธฐ๋Šฅ์ด ๋งŽ๊ณ , ์˜ˆ์™ธ ์ƒํ™ฉ์ด ๋งŽ๊ณ , ๋ณต์žกํ•œ ํ™˜๊ฒฝ์—์„œ ํ”„๋กœ๊ทธ๋žจ์ด ๋™์ž‘ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค๋ฉด..
(์•„๋งˆ๋„ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ํ•„์—ฐ์ ์œผ๋กœ ์ด๋ ‡๊ฒŒ ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.)

๋ชจ๋“  ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ ์†์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅ(?)ํ•ด์ง„๋‹ค. ๊ทธ๋ƒฅ ๊ทธ๋•Œ ๊ทธ๋•Œ ์ˆ˜์ •ํ•œ ๋ถ€๋ถ„์˜ ์ฝ”๋“œ ์ •๋„๋งŒ ์†์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๊ณ ,
์ถœ์‹œํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. (์–ด๋–ค ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์ „ํ˜€ ์•Œ์ง€ ๋ชปํ•˜๊ณ .. ๋ฆด๋ฆฌ์ฆˆํ•  ๋•Œ๋งˆ๋‹ค ์ „์ „๊ธ๊ธ๋Œ€๊ณ  ๊ธฐ๋„๋ฅผ ํ•˜๊ฒŒ ๋ ์ง€๋„ ๋ชจ๋ฅธ๋‹ค.
์•„๋‹ˆ๋ฉด ๋ฐฐ์งธ๋ผ(?)๋ผ๋Š” ๋งˆ์ธ๋“œ๊ฐ€ ๋˜์–ด ์•„๋ฌด ๊ฑฑ์ • ์—†์ด(?) ์ถœ์‹œํ•˜๊ฒŒ ๋ ์ง€๋„ ๋ชจ๋ฅธ๋‹ค.)

ํ”„๋กœ๊ทธ๋žจ์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜๋ก ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜์— ๋Œ€ํ•ด์„œ ์†์œผ๋กœ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์—†์œผ๋‹ˆ,
์ฝ”๋“œ/๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ์ฝ”๋“œ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ด๋‘๋ฉด,
ํ”„๋กœ๊ทธ๋žจ์ด ์ ์  ๋ณต์žกํ•ด์ ธ๋„ ํ…Œ์ŠคํŠธํ•˜๋Š”๋ฐ ๋“ค์–ด๊ฐ€๋Š” ์‹œ๊ฐ„์ด ๊ทธ๋ ‡๊ฒŒ ๋งŽ์ด ๋Š˜์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๋ช‡๋ฒˆ์ด๊ณ  ๋ฐ˜๋ณตํ•ด์„œ ํ…Œ์ŠคํŠธ๊ฐ€๋Šฅํ•˜๋‹ค.(์†์œผ๋กœ๋Š” ์•„๋งˆ๋„ ์ ์  ํ•œ๋ฒˆ ์ „์ฒด๋กœ ํ…Œ์ŠคํŠธํ•˜๊ธฐ๋„ ๋ถˆ๊ฐ€๋Šฅํ•ด์งˆ ๊ฒƒ์ด๋‹ค.. ใ…กใ…œ)

์„œ๋ก ์ด ๊ธธ์—ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ ๊ฐ€์žฅ ๋จผ์ € ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ผ๊นŒ?

1.ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋กœ์ง๊ณผ ๊ทธ๋ ‡์ง€ ์•Š์€ ๋ถ€๋ถ„์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค.

์™œ ๋กœ์ง๊ณผ ๊ทธ๋ ‡์ง€ ์•Š์€ ๋ถ€๋ถ„์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š”๊ฐ€?
ํ”„๋กœ๊ทธ๋žจ์„ ์ฝ”๋“œ๋กœ ํ…Œ์ŠคํŠธํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”๊ฐ€?
์ฝ”๋“œ๋กœ ๋ฌด์—‡์„ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

ํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ ๋กœ์ง์ด๋‹ค. ์–ด๋–ค ์กฐ๊ฑด์ผ ๋•Œ, ์–ด๋–ป๊ฒŒ ๋ถ„๊ธฐ๋˜๊ณ , ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ๋™์ž‘ํ•ด์•ผ ํ•˜๊ณ , ๊ฐ’์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๊ณ  ์ €์žฅ๋˜์–ด์•ผ ํ•˜๋Š”๊ฐ€๊ฐ€ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค.
๋กœ์ง ์ค‘์—์„œ ์–ด๋–ค ๋ถ€๋ถ„์„ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ์‚ฌ์‹ค 100% ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค.
ํŠนํžˆ๋‚˜ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์ฝ”๋“œ๋Š” ๋”์šฑ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ํž˜๋“ค ๊ฒƒ์ด๋‹ค.
ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋Š” ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์‰ฝ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„์˜ ์ฝ”๋“œ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ๋Š” ์ตœ์†Œํ•œ์œผ๋กœ ์ž‘์„ฑํ•˜๊ณ ,
๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š”๋ฐ ์ง‘์ค‘ํ•œ๋‹ค.

iOS ์—์„œ๋Š” ์ผ๋‹จ ๋กœ์ง๊ณผ View๋ฅผ ๋ถ„๋ฆฌํ•œ๋‹ค. ์ด๊ฒƒ์„ ์œ„ํ•ด์„œ MVP๋ฅผ ํ•˜๋“  MVVM, Store/Reactor ๋“ฑ์„ ์ž‘์„ฑํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋‹จ ๋ชฉ์ ์€ ๋ชจ๋‘ ๊ฐ™๋‹ค. View(๋กœ์ง๊ณผ ํฌ๊ฒŒ ์ƒ๊ด€์—†์ด ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š” ๋ถ€๋ถ„) ๊ณผ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋กœ์ง์„ View ์™€ ๋ถ„๋ฆฌํ•˜์—ฌ Presenter๋“ , ViewModel, Store, Reactor๋“  ํ•œ์ชฝ์œผ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ๋ชฐ์•„ ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (* View ์— ๋กœ์ง์„ ํ•˜๋‚˜๋„ ๋‚จ๊ฒจ๋†“์ง€ ์•Š๋Š” ๊ฒƒ์€ Unit Test Code Coverage ๋ฅผ 100% ํ•˜๋ ค๋Š” ๊ฒƒ๋„ ๊ฐ™๋‹ค๋Š” ๋ง๋„ ์žˆ๊ธด ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋””๊นŒ์ง€๋‚˜ ์šฐ๋ฆฌ์˜ ๋ชฉ์ ์€ ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, view ์—์„œ (ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š” ์—†์„ ์ •๋„๋กœ ์ž๋ช…ํ•˜๊ฒŒ) ๊ฐ„๋‹จํžˆ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ฝ”๋“œ๋กœ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ (๋งŽ์ด) ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋ฉด ๋ชฉ์ ๋ณด๋‹ค ์ˆ˜๋‹จ์— ๋„ˆ๋ฌด ์น˜์ค‘ํ•œ ๊ฒƒ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š” ์—†์„ ์ •๋„๋กœ ์ž๋ช…ํ•œ ์ฝ”๋“œ์˜ ๊ธฐ์ค€์ด ์กฐ๊ธˆ ์• ๋งคํ•˜๊ธด ํ•ฉ๋‹ˆ๋‹ค. ใ…กใ…œ)

...