본문 바로가기
Swift

[iOS] About TDD

by dsungc 2024. 10. 30.

TDD

Test - Driven - Development

- 테스트를 먼저 작성한 후에 실제 코드를 구현하는 소프트웨어 개발 방법론

- 일반적으로 소프트웨어 개발 기능은 구현 후, 테스트 작성. But TDD는 반대의 접근 방식

- 코드 작성 전에 동작을 명확히 정의하여 코드 품질을 높이고, 버그를 줄이면서 유지보수를 용이하도록 함

 


TDD의 사이클

1. Red

실패하는 테스트 작성

 

- 요구사항에 기반하여 테스트 코드 작성

- 실패를 위한 테스트

2. Green

테스트를 통과하는 최소한의 코드 작성

 

- 테스트를 통과하기 위한 최소한의 코드 작성

- 복잡한 설계보단 테스트를 통과하는 것에 초점

3. Refactor

코드 리팩토링

 

- 요구사항에 기반하여 테스트 코드 작성

- 실패를 위한 테스트


TDD의 장점

1. 이전보다 견고한 객체지향적인 코드 생산 가능

- TDD가 코드의 재사용성 보장, 결합도 감소, 응집도 증가

2. 재설계 시간 단축

- 사전에 확고하게 정의된 코드 정체성

3. 디버깅 시간 단축

- 모든 레이어를 디버깅 하지 않고 유닛테스트 결과에 따름

4. 테스트 문서 대체 가능

- 테스트를 자동화하여 보다 정확한 테스트 근거 마련

5. 추가 구현에 용이함

- 새 기능 추가 시, 기존 코드에 미치는 영향력 쉽게 검증

 

TDD의 단점

1. 초기 개발 속도 저하

- 프로젝트 초기 단계에서 무엇을 테스트해야할지 확실히 정의해야 하므로 초기 개발 속도가 느리게 느껴질 수 있음

2. 테스트 코드 품질

- 테스트 코드 자체의 품질이 낮다면, 오히려 코드의 신뢰성 떨어뜨림

3. 모든 경우의 수 커버 불가

- 모든 예외 상황과 가능성을 고려하여 테스트를 작성하는 것은 불가능

 


iOS에서의 TDD

 

XCTest

Xcode에서 단위 테스트, 성능 테스트, UI 테스트를 지원하는 프레임워크

 

XCTest 주요 구성 요소

 

XCTest 사용법

 

XCTest 실제 활용 사례

'Swift' 카테고리의 다른 글

[iOS] About 동시성  (0) 2024.11.10
[iOS] About WidgetKit - 2(App Group)  (0) 2024.11.02
[iOS] About Notification & Delegation  (0) 2024.10.26
[iOS] About WidgetKit - 1  (0) 2024.10.24
[iOS] About JWT(Jason Web Token)  (0) 2024.10.17