[북리뷰] Test-Driven iOS Development

린 소프트 개발 실천법인 테스트 주도 개발(Test-Driven Development, TDD)을 iOS 개발에 적용해보기 위해 도서를 검색하던 중, 구글을 통해 무료로 eb00k을 다운로드 할 수 있었다. (다운로드 링크 , Amazon 링크)

번역서는 현재 국내에 없으며, iOS 앱 개발 중심의 TDD 도서 역시 국내에 아직 없다. TDD는 개발론으로 iOS 예시 도서가 학습에 꼭 필요하지 않지만, 본인처럼 iOS 및 TDD 초보자로서 iOS 앱개발과 TDD를 동시에 학습하고 싶은 사람에게 이 책을 추천한다. (영문이 부담되나 이해가 어려운 문장들은 예제 코드를 통해 어느 정도 이해할 수 있다.)

이 책에서 다루는 내용은 다음과 같다.

  • StackOverflow API 를 이용한 앱 개발 과정을 다룬다. 네트워크로부터 데이터(JSON)를 획득하여 Model을 만들고 화면에 표시하는 앱이다. 차후에 비슷한 구조의 앱 개발 시 템플릿으로 활용할 수 있을 것 같다.
  • Model Test -> Application Logic Test -> ViewController Test -> 통합테스트 순인 Bottom-Up 방식으로 진행된다. 대부분의 iOS 앱 개발도서들은 Interface Builder 를 이용한 UI 개발을 주로 다룬다. 하위 구조부터 설명이 잘 되어 있어 실제 앱 개발에 가까운 과정을 학습할 수 있다.
  • StackOverflow API 를 이용하므로 NSURLConnection 사용법을 학습할 수 있다.
  • 네트워크 응답을  delegate 를 이용하여 화면에 전달하는 구조를 학습할 수 있다. 예외 처리도 포함된다.
  • NSNotificationCenter , Introspection , Category 를 사용한다.
  • Mock객체와 delegate 중심의 테스트 케이스 작성을 학습한다.
  • 하나의 TableView 와 두 개의 TableDataSource 로 구성된 화면을 학습한다.
  • 소스 코드가 github에 공개되어 있다.

현재 간단한 앱 개발을 통해 TDD를 학습하고 있다. TDD도 익숙치 않고 iOS 앱 개발도 숙련되지 않아 테스트케이스 작성에 들어가는 수고가 낭비는 아닐까 생각이 들기도 한다. 더욱이 처음부터 완벽한 코드를 작성해야 한다는 집착을 여전히(?) 버리지 못하여 테스트 작성에 망설이는 것도 이런 생각을 부추기는데 한 몫 한다.

불필요한 SW Engineering이 개발자가 제품을 빠르게 만들지 못하는 원인을 제공한다는 글을 본 적이 있다. 본인도 개발자의 으뜸 능력은 안정적인 제품을 빠르게 만드는 것이라 생각한다. 익숙치 않은 개발법이 이를 어렵게 할 수 있지만, 익숙해진다면 TDD가 이를 도울 수 있다는 생각이다.

“클래스 하나를 추가하는데 주저하지 마라” 는 책의 메시지가 기억에 남는다.

 

Advertisements
Leave a comment

2 Comments

  1. 좋은 포스트 감사합니다. 저도 iOS환경에서 TDD를 배우고 싶었는데, 많은 도움이 될 것 같습니다.

    Reply
    • 포스트 내용이 도움이 되셨다니 기쁘네요. 이런 코멘트는 첨이라 ㅋ 저도 한창 공부하면서 정리 중이라 부족한 부분이 많습니다. 포스팅에서 이슈가 있으면 언제든 지적해주세요. 감사합니다.

      Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: