ํฐ์คํ ๋ฆฌ ๋ทฐ
์๋ ํ์ธ์?
๋๊ตฌ๋ฆฌ์ ๋๋ค.
์์ฆ ํ ์คํธ๋ผ๋ ์ฃผ์ ์ ๋น ์ ธ์์ต๋๋ค.
๊ธฐํ์์ ๋ฐ๊ณ ์ฒ์ ๊ฐ๋ฐ์ ํ ๋๋ ๋ชจ๋ ์ผ์ด์ค์ ๋ํด ๊ณ ๋ คํ๋ฉด ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ํ์ง๋ง
๊ธํ๊ฒ ์์ ํ๊ฑฐ๋ ์์ ํ์ง ์ค๋๋ ์ฝ๋๋ฅผ ์์ ํ๋ค ๋ณด๋ฉด ์์์น ๋ชปํ๊ฒ ์ฌ์ด๋ ์ดํํธ๊ฐ ๋๊ธฐ ๋ง๋ จ์ ๋๋ค.
์์ฆ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ์์ฑํด์ผ ํ ๊น ๊ณ ๋ฏผํ๋ ์ค ์ค๋ฅ๋ฅผ ์ค์ด๊ณ ์ถํ ์์ ํ๋๋ผ๋
์ด๋ฐ ์ฌ์ด๋ ์ดํํธ๋ฅผ ์ก์๋ด๋ ์ฝ๋๋ฅผ ์์ฑํด๊ฒ ๋ค ์๊ฐ์ด ๋ค์์ต๋๋ค.
๊ทธ๋์ ๊ธฐ๋ฅ ๊ตฌํ์ ๋ฐ๋ ค๋ ์๋ Test Code์ ๋ํด ๊ด์ฌ์ด ์๊ฒผ๊ณ TDD์ ๋ํด ๊ณต๋ถํด๋ณด๊ณ ์ ํฉ๋๋ค.
TDD(Test - Driven Development) ๋?
TDD๋ Test-Driven-Development, ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ ๋๋ค.
๋งค์ฐ ์งง์ ๊ฐ๋ฐ ์ฌ์ดํด์ ๋ฐ๋ณตํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค
์ค ํ๋์ด๋ค. ๊ฐ๋ฐ์๋ ๋จผ์ ์๊ตฌ์ฌํญ์ ๊ฒ์ฆํ๋ ์๋ํ๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ค. ๊ทธ๋ฐ ํ์, ๊ทธ ํ ์คํธ ์ผ์ด์ค๋ฅผ ํต๊ณผํ๊ธฐ ์ํ ์ต์ํ์ ์ฝ๋๋ฅผ ์์ฑํ๋ค. ๋ง์ง๋ง์ผ๋ก ์์ฑํ ์ฝ๋๋ฅผ ํ์ค์ ๋ง๋๋ก ๋ฆฌํฉํ ๋งํ๋ค. - ์ํค๋ฐฑ๊ณผ
๊ธฐ์กด์ ๊ธฐ๋ฅ์ ์ฐ์ ์ผ๋ก ์์ ์ ํ์๋๋ ์๋์ฒ๋ผ ์ฌ์ดํด์ด ๊ตฌ์ฑ๋๋ค.

ํ์ง๋ง TDD์์๋ ๊ธฐ๋ฅ๊ฐ๋ฐ๋ณด๋ค Test Code๋ฅผ ๋จผ์ ์์ฑํ๊ฒ ๋๋ค.
์๋์ ๊ฐ์ด ์์ ์ด ์งํํ๊ฒ ๋๋ค

TDD์์๋ ๊ฐ๋ฐ ๋ผ์ดํ ์ฌ์ดํด์ ์๋์ ๊ฐ๋ค.

1. Red: ์คํจํ๋ ํ ์คํธ๋ฅผ ์์ฑํ๋ค.
2. Green: ํ ์คํธ๋ฅผ ํต๊ณผํ๋ ์ต์ํ์ ์ฝ๋๋ง ์์ฑํ๋ค.
3. Refactor: ํ ์คํธ ์ฑ๊ณตํ ํ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ๋ค.
4. Repeat: ์ฌ์ดํด ๋ฐ๋ณตํ๋ค.
TDD์ ์ฅ๋จ์ ์?
์ฅ์ !
- ์๋ฌ๋ ๋ฒ๊ทธ๋ฅผ ์ค์ผ ์ ์๋ค.
- ์ ์ง๋ณด์์ ์ฉ์ดํ๋ค.
- ์ถ๊ฐ ์๊ตฌ์ฌํญ์ ๋น ๋ฅด๊ฒ ๋ฐ์ํ ์ ์๋ค.
- ์์ ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
๋จ์ ใ
- ํ ์คํธ ์ฝ๋ ์์ฑ์ ๊ฐ๋ฐ ์๋๊ฐ ๋๋ ค์ง ์ ์๋ค.
F.I.R.S.T - Test Code๋ฅผ ์์ฑํ๊ธฐ ์ํ ์์น
test code๋ฅผ ์ ์์ฑํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ์์น์ ๋ฐ๋ผ์ผ ํฉ๋๋ค.
Fast - ํ ์คํธ๋ ๋นจ๋ผ์ผ ํฉ๋๋ค.
Independent - ํ ์คํธ๋ ๋ ๋ฆฝ์ ์ด์ฌ์ผ ํ๋ฉฐ ์์กดํ์ง ์์์ผ ํฉ๋๋ค.
Repeatable - ํ ์คํธ๋ ์ด๋ ํ๊ฒฝ์์๋ ๋ฐ๋ณต ๊ฐ๋ฅํ๋ฉฐ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด์ผ ํฉ๋๋ค.
Self-Validating - ํ ์คํธ์ ์์ฒด์ ์ผ๋ก ๊ฒ์ฆ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๋ ๊ณผ์ ์์ ๊ฐ๋ฐ์๊ฐ ๊ฐ์ ํ์ง ์์ต๋๋ค.
Timly - ํ ์คํธ๋ ์ค์ ์ฝ๋ ๊ฐ๋ฐ ์ง์ ์ ์ค์ํฉ๋๋ค.
iOS์์ Test
1. Unit Test(๋จ์ ํ ์คํธ)
- ๋ค๋ฅธ ํ ์คํธ ๋ณด๋ค ๊ฐ์ฅ ๋จผ์ ๊ทธ๋ฆฌ๊ณ , ๊ฐ์ฅ ๋น ๋ฅธ ํ ์คํธ์ ๋๋ค.
- data base์ ์ฐ๊ฒฐํ๊ฑฐ๋ http๋ก ์์ฒญ๋ณด๋ด์ง ์๊ณ mock์ด๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํด์ ํ ์คํธ ํฉ๋๋ค
- ๋น ๋ฅด๊ณ ์์กด์ฑ ์๋ ํ ์คํธ๋ฅผ ํ๊ธฐ ์ํจ์ ๋๋ค.
2. Integration Test(ํตํฉ ํ ์คํธ)
- Unit Test์ ๋น์ทํ์ง๋ง data base์ ์ฐ๊ฒฐํ๊ฑฐ๋ http๋ก ์์ฒญ๋ณด๋ด์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธํฉ๋๋ค.
- ์ ์ฒด์ ์ธ ์์คํ ๊ด์ ์์ ํ ์คํธ ํฉ๋๋ค.
3. UI Test(UI ํ ์คํธ)
- ์ฑ์ ์คํ ํ ์ค์ ์ฌ์ฉ์๊ฐ ํ๋ ๋์์ ์๋ฎฌ๋ ์ด์ ํ์ฌ ์ ๋๋ก ๋์ํ๋์ง ํ ์คํธ ํฉ๋๋ค.
๊ฐ๋จํ ํ ์คํธ์ผ ๊ฒฝ์ฐ unit test๋ฅผ ๋จผ์ ํฉ๋๋ค.
๋ค์์ unit test์ ๊ด๋ จ๋ ๊ฒ์๋ฌผ๋ก ์ฐพ์์ค๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
'iOS > Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [iOS/Swift] TestCode๋ฅผ ์์ฑํด ๋ณด์ - Test Doubles(Mock, Stub, Fake, dummy) (0) | 2023.10.20 |
|---|---|
| [iOS/Swift] Test Code๋ฅผ ์์ฑํด ๋ณด์ - Unit Test (1) | 2023.10.15 |
| [iOS/Swift] Alamofire ์์๋ณด๊ธฐ (0) | 2023.07.23 |
| [iOS/Swift] URLSession ์์๋ณด๊ธฐ (0) | 2023.06.04 |
| [iOS/Swift] URL Loading System ์์๋ณด๊ธฐ (0) | 2023.05.29 |
- Total
- Today
- Yesterday
- xcode
- URLSession
- Protocol
- ํ๋กํ ์ฝ
- Swift Network
- set
- test
- ํ๋กํผํฐ
- autolayout
- swift
- swift urlsession
- Property
- RxSwift
- ํ ์คํธ
- func
- ๊ณต๋ถ
- ์ค์ํํธ
- RX
- ์ค์ํํธ ๊ณต๋ถ
- Unit Test
- XCTest
- swift ๊ณต๋ถ
- ios
- observable
- network
- ์ค์ํํธ map
- Clean
- swift ํ๋กํ ์ฝ
- ์ค์ํํธ ํ๋กํ ์ฝ
- ์คํ ๋ ์ด์์
| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 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 |