Motivation
κΈ°λ₯μ μμ νκ² κ΅¬ννλ €λ©΄?
- μ΅κ·Ό κ³Όμ μ νμ λ§μΉκ³ μ μΆνλ μ½λλ₯Ό λ€μ μ΄ν΄λ³΄μλ€.
- μꡬμ¬νμ λ°λΌ λμνκ² λ§λ€μμ§λ§ μλ¬ νΈλ€λ§, μμΈ μ²λ¦¬, ν¨μ¨ μΈ‘λ©΄μμ λμΉ λΆλΆμ΄ λ§μλ€λ κ±Έ κΉ¨λ¬μλ€.
- λ¨μν κΈ°λ₯μ ꡬννλ κ²κ³Ό, μμνμ§ λͺ»ν λμκ³Ό μνλ₯Ό λλΉν΄μ μ λ§λλ 건 μ ν λ€λ₯Έ λ¬Έμ μλ€.
- κ³Όμ μμ ν¬κ² μ κ²½μ μ°μ§ λͺ»ν Testing μμμ΄ λμ λ€μ΄μκ³ ‘μ½λκ³Ό ν μ€νΈ μ½λμ μμλ₯Ό λ°κΏ¨μλλΌλ©΄?‘μ΄λΌλ μκ°μ΄ λ€μλ€.
Code First
μꡬμ¬ν νμΈ β κΈ°λ₯ κ°λ° β ν μ€νΈ μ½λ μμ± β ν μ€νΈ
- κΈ°μ‘΄ κ°λ° νλ‘μ°λλ‘λΌλ©΄ λ³΄ν΅ μꡬμ¬ν νμΈ β κΈ°λ₯ κ°λ° β ν
μ€νΈ μ½λ μμ± -> ν
μ€νΈ μ€ν μμλ‘ μ§νν κ² κ°λ€.
- ‘κ² κ°λ€’λ‘ μ΄μΌκΈ°ν μ΄μ λ, μ€μ νλ‘μ νΈμμ ν μ€νΈ μ½λλ₯Ό νμ©ν κ²½νμ΄ μκΈ° λλ¬Έμ΄λ€.
- μ΄ μμλ‘ μμ
μ ν κ²½μ° βλ΄κ° λ§λ κΈ°λ₯μ΄ λ§λ€κ³ λ―Ώλ λ²μβ μμμλ§ ν
μ€νΈλ₯Ό μ½λλ₯Ό μμ±ν μνμ΄ μκ² λ€λ μκ°μ΄ λ€μλ€.
- λ΄κ° ꡬνν ννμ λ§μΆ° ν μ€νΈλ₯Ό μ€κ³νκ² λλ©΄, νμ¦ νΈν₯μ²λΌ μꡬμ¬νμ κ²μ¦νλ€κΈ°λ³΄λ€ ꡬνμ μ λΉννλ ν μ€νΈκ° λ κ² κ°λ€.
Test Code First
μꡬμ¬ν νμΈ β ν μ€νΈ μ½λ μμ± (μμ μΆλ ₯ μλ μ λ ₯) β κΈ°λ₯ κ°λ° -> ν μ€νΈ (μ€μ μΆλ ₯κ³Ό λΉκ΅)
- κ·Έλ λ μ€λ₯Έ λ°©λ²μ΄ βμλλ¦¬μ€ κΈ°λ° ν μ€νΈλ₯Ό λ¨Όμ λ§λ€κ³ κ°λ°μ μμνλ λ°©μβμ΄μλ€.
- μμλ₯Ό λ°κΏμ, μꡬμ¬ν νμΈ β ν
μ€νΈ μ½λ μμ± β κ°λ°μ μ΄ν°λ μ΄μ
μ λλ €λ³΄μλ μκ°μ νλ€.
- νΉν μꡬμ¬νμ μ μ μλ리μ€λ‘ νμ΄ ν μ€νΈλ₯Ό λ¨Όμ μ€κ³νλ©΄, βμ μ μ λ ₯λ§ λ€μ΄μ¨λ€βλ κ°μ μμ λ²μ΄λ λ λμ μμΌλ‘ λ¬Έμ λ₯Ό λ³Ό μ μμ κ² κ°μλ€.
- μλ₯Ό λ€μ΄ μ€ν¨ μΌμ΄μ€(μλͺ»λ μ λ ₯, λΉ κ°, μ€λ³΅ μμ², νμμμ λ±)λ₯Ό μμ°μ€λ½κ² λ μ¬λ¦¬κ² λκ³ , κ·Έ κ³Όμ μμ μμΈ μ²λ¦¬μ μλ¬ νΈλ€λ§μ νμ§λ ν¨κ» μ¬λΌκ° κ°λ₯μ±μ΄ ν¬λ€.
TDDμ BDD
- ν
μ€νΈ μ½λμ λν΄ μμ보면μ, λ΄κ° λλ λ¬Έμ μμμ΄ TDDμ κ΄λ ¨μλ€λ κ²λ μκ² λμλ€.
- TDDλ “ν μ€νΈ λ¨Όμ , ꡬν λμ€” μμΉμΌλ‘, Red(μ€ν¨νλ ν μ€νΈ μμ±) β Green(ν μ€νΈ ν΅κ³Όνλ μ΅μ μ½λ μμ±) β Refactor(μ½λ κ°μ ) μ¬μ΄ν΄μ λ°λ³΅νλ©° κ°λ°νλ λ°©λ²λ‘ μ΄λ€.
- λμμ λ΄κ° μκ°νλ “μ μ μλλ¦¬μ€ κΈ°λ° ν
μ€νΈ"λ₯Ό λ νμ₯ν κ°λ
μ΄ BDDμ μ μ¬νλ€λ μ λ ν₯λ―Έλ‘μ λ€.
- BDDλ TDDμμ λ°μ ν κ°λ μΌλ‘, μ¬μ©μ νλ(Behavior) κ΄μ μμ Given-When-Then νμμΌλ‘ ν μ€νΈλ₯Ό μμ±νλ€.
- λμ ν΅μ¬ μ°¨μ΄λ ν
μ€νΈ λ²μκ° μλλΌ κ΄μ μ΄λ€.
- TDDκ° “μ΄ ν¨μκ° μ¬λ°λ₯΄κ² λμνλκ°?”, “μ±λ₯μ μ΄λ νκ°?“λ₯Ό 묻λλ€λ©΄, BDDλ “μ¬μ©μκ° Xλ₯Ό νμ λ Yκ° μΌμ΄λλκ°?“λ₯Ό 묻λλ€.
- TDDλ κ°λ°μ κ΄μ μμ μ½λμ μ νμ±κ³Ό μ±λ₯μ, BDDλ μ¬μ©μ/λΉμ¦λμ€ κ΄μ μμ μꡬμ¬ν μΆ©μ‘±μ κ²μ¦νλ€.
- λ λ€ ν¨κ» μ°λ λ°©λ²λ μμκΉ μκ°νλλ°, κ²μ¦νλ €λ μμμ΄ μ¬λ¬ ν μ€νΈ μ½λμ κ±Έμ³ μ€λ³΅λκ±°λ ν μ€νΈ μ½λ μμ±μλ§ μκ°μ΄ κ³Όλνκ² μμμ§ μν(λ³Έλ§μ λ)λ μκ² λ€λ μκ°μ΄ λ€μλ€.
AI μλμ ν μ€ν
- AI μλμ ν μ€νΈ μ½λκ° μ΄λ€ μλ―Έμλμ§ κΆκΈν΄μ Έμ μμμ μ°Ύμ보λ€κ° 2025λ 6μ μΌνΈλ°±μ TDD ν ν¬λ₯Ό λ°κ²¬νλ€.
- TDD, AI agent and coding with Kent Beck λ΄μ©μ μ§§κ² μμ½νμλ©΄ λ€μκ³Ό κ°λ€.
- AI μλμ μ¬κ³ λ°©μ:
- λΉμ κ³Ό μ€κ³ λ₯λ ₯μ΄ ν΅μ¬ μ€ν¬λ‘ λΆμ (λΉμ μ€μ , μ΄μ ν κ΄λ¦¬, 볡μ‘μ± μ μ΄)
- μΈμ΄ μΈλΆμ¬νμ λ μ΄μ μ€μνμ§ μμ
- μ€νμ μμ μ¦κ°κ° κ²½μ μ°μ
- μ½λ μμ΄ μ¦κ°ν¨μ λ°λΌ νμλ μμ΄λμ΄μ μμ΄ μ€μ
- “λͺ¨λ κ²μ μ€ν”Β ν΄λ΄μΌ νλ μλ

- μΌνΈ λ°±μ μ¦κ°ν μ½λ© νκΈ° λ²μλ μ¬λ―Έμκ² μ½μλ€. (+ TDDλ₯Ό μν ν둬ννΈ)
- μΌν¬νΈ κΉκΈ°(yak shaving)λΌλ νν μ¬λ°λ€.
μλ¬΄νΌ ν μ€ν
- μ΄λ² κ³Όμ λ₯Ό ν΅ν΄ νλμ μλ¨μ΄μ λꡬλ‘μμ ν μ€νΈ μ½λμ νμμ±μ 체κ°νλ€.
- κ°μΈ iOS μ± νλ‘μ νΈμμμ ν μ€νΈ μ½λλ₯Ό μμ±νλ©° λ°°μ΄ κ²λ€μ μ΄ λ¬Έμμ μ°¨κ·Όμ°¨κ·Ό μ 리ν΄λ³΄λ €κ³ νλ€.
Overview
- ν μ€νΈ μ½λμ λͺ©μ
- Testingμ μ’ λ₯
- Apple Platforms κ°λ°μμμ testing frameworks
- XCTest
- Swift Testing
- μ’μ ν μ€νΈ μμ± ν
XCTest
μ€λͺ
- Xcode νλ‘μ νΈμμ λ¨μ ν μ€νΈ(Unit Test)λ₯Ό μμ±νκ³ , Xcodeμ ν μ€νΈ μν¬νλ‘μ μννκ² ν΅ν©λλλ‘ μ€κ³λ Apple 곡μ ν μ€νΈ νλ μμν¬. μν
- μ½λ μ€ν μ€ νΉμ μ‘°κ±΄μ΄ μΆ©μ‘±λλμ§ κ²μ¦νκ³ , μ‘°κ±΄μ΄ λ§μ‘±λμ§ μμΌλ©΄ μ€ν¨ κΈ°λ‘.
- μ½λ λΈλ‘μ μ±λ₯μ μΈ‘μ νμ¬ μ±λ₯ νκ· μ¬λΆλ₯Ό νμΈνλ μ±λ₯ ν μ€νΈλ₯Ό μ 곡.
- XCUIAutomationκ³Ό ν¨κ» μ¬μ©ν κ²½μ°, μ±μ UIλ₯Ό μλμΌλ‘ μ‘°μνμ¬ μ€μ μ¬μ©μ νλ¦μ κ²μ¦νλ UI ν μ€νΈλ₯Ό μμ± κ°λ₯ κΈ°λ³Έ ꡬ쑰
- XCTestCaseλ₯Ό μμν ν μ€νΈ μΌμ΄μ€ νμ μ λ§λ€κ³ , μ΄λ¦μ΄ Β testΒ λ‘ μμνλ λ©μλλ₯Ό μ μ.
- ν΄λΉ λ©μλλ₯Ό κ°λ³ ν μ€νΈλ‘ μΈμ.
- ν μ€νΈ λ©μλ μμμ Β XCTAssertEqual, Β XCTAssertTrueΒ λ± λ€μν assertion ν¨μλ₯Ό μ¬μ©ν΄ κΈ°λ κ°κ³Ό μ€μ κ°μ λΉκ΅ Xcodeμμ ν΅ν©
- ν μ€νΈλ Xcode λ΄μμ λΉλ-μ€ν-κ²°κ³Ό νμΈκΉμ§ ν νλ¦μΌλ‘ μ²λ¦¬
- Test navigatorλ μ€ν΄μμ μμ½κ² μ€ν κ°λ₯
- UI μλν ν μ€νΈλ μ¬λ¬ κΈ°κΈ°, μΈμ΄, μ§μ μ€μ , νκ²½ 쑰건μμ μ¬μ€ν κ°λ₯
- μ¬μ©μ κ²½νμ νλκ² κ²μ¦νλ λ° νμ© Swift Testingκ³Όμ κ΄κ³
- Swift Testingμ μλ‘μ΄ ν μ€νΈ νλ μμν¬
- XCTestμ λΉμ·ν κΈ°λ₯μ μ 곡νμ§λ§ λ€λ₯Έ λ¬Έλ²κ³Ό λμμ± λͺ¨λΈμ μ¬μ©.
- UI μλν(XCUIApplication λ±)λ μ±λ₯ λ©νΈλ¦(XCTMetric λ±)μ μ¬μ©νλ ν μ€νΈ, Objective-C κΈ°λ° ν μ€νΈλ μ¬μ ν XCTestλ₯Ό μ¬μ©ν΄μΌ ν¨
References π
- Apple Developer Testing
- TDD, AI Agents and Coding - μΌνΈλ°± μλ¬Έ
- TDD, AI Agents and Coding - μΌνΈλ°± λ²μ λ° μμ½ (Geeknews)
- iOS κ°λ°μμ μ½κ² μ°λ ν μ€νΈμ½λ, TDDμ μνν(1)-ꡬ쑰μ λ°©μ
- λ± ν¬μλ¬λ iOSνμ΄ μ¨μ¬λ―μ΄ ν μ€νΈμ½λ μ§λ λ°©μ 1νΈ - ν΅ν© UIν μ€νΈ
- μ€μ μμ TDDνκΈ°
- κ°λ μ± μ’μ ν μ€νΈ μ½λλ₯Ό μμ±νλ λ°©λ²
GitHub Comments