Top

테스트 주도 iOS 애플리케이션 개발

  • 원서명Test-Driven iOS Development (ISBN 9780321774187)
  • 지은이그레이엄 리
  • 옮긴이김진혁, 배장호
  • ISBN : 9788960774919
  • 30,000원
  • 2013년 11월 20일 펴냄 (절판)
  • 페이퍼백 | 332쪽 | 185*235mm
  • 시리즈 : 모바일 프로그래밍

판매처

  • 현재 이 도서는 구매할 수 없습니다.

책 소개

처음 요구사항 정의부터 완전히 작동하는 상태까지 테스트 주도 개발 방법론으로 iOS 앱을 한 단계, 한 단계씩 만드는 과정을 설명하면서 테스트 주도 개발에 대한 기본적인 이해도를 높여준다. 앱을 완성하는 단계를 마친 이후 개발을 하고 있는 팀의 고민인 테스트가 없는 기존 프로젝트에 테스트 주도 개발 방법론을 적용하는 방법과 테스트 주도 방법론에 맞게 설계하는 방법, 테스트를 자동으로 만드는 방법 등을 설명한다.

이 책에서 다루는 내용

■ iOS 환경에서 단위 테스트의 목적, 장점, 비용 이해
■ 테스트 주도 개발(TDD)의 원리를 이해하고, 앱 설계에서 리팩토링까지의 영역에 TDD 적용
■ 가용성과 가독성이 좋으며 반복 가능한 iOS 단위 테스트 작성
■ OCUnit을 사용한 TDD용 엑스코드 프로젝트 설정
■ 도메인 분석을 이용해 클래스와 앱에 필요한 상호작용 식별, 설계
■ iOS 단위 테스트에 사용할 서드파티 도구 고려
■ 테스트 주도로 네트워크 관련 코드 개발
■ 사용자와 상호작용하는 뷰 컨트롤러 코드의 테스트 자동화
■ 구현이 아닌 인터페이스에 설계
■ 보통 백그라운드로 실행되는 병행 코드 테스트
■ 기존 앱에 TDD 적용
■ 행동 주도 개발(BDD) 준비

저자/역자 소개

저자 서문

다른 사람들 앞에서 오브젝티브C의 테스트 주도 개발(TDD, test driven development)을 말하게 된 건 그야말로 우연이었다. 한 학회에서 친구가 TDD를 주제로 발표하기로 했고, 나는 TDD 외의 주제를 발표하기로 했다. 그런데 학회가 있는 주말에 친구의 아내가 쌍둥이를 출산하기로 예정일을 잡아서(나는 그 분야엔 문외한이라, 어떻게 그리 됐는진 모르지만 다들 그렇게 하나 보다) TDD를 발표하지 못하게 됐고, (결국 이 책의 산파역할을 한) 척(Chuck)은 내게 자신이 발표하기로 한 TDD도 발표하는 건 어떻겠냐고 물었다. 이렇게 해서 이 책을 쓰는 1년간의 여정이 시작됐다.

보통 현실은 우리 생각만큼 잘 정돈돼 있지 않다. 사실 나는 수년간 단위 테스트(Unit Test)를 접한 경험이 있다. 전문적인 소프트웨어 개발자가 되기 전에 GNUstep(리눅스와 그 밖의 운영체제에 사용하는 코코아 라이브러리의 무료 소프트웨어 버전)에 기반한 제품을 만드는 회사의 테스터였다. 그때 알기로 단위 테스트는 소프트웨어 제품의 작은 부분이 제대로 동작하는지 확인하는 것이었다. 그래서 소프트웨어의 큰 부분에 통합됐을 때 큰 부분도 잘 작동할지를 알려고 썼던 방법 중 하나였다.

나는 다양한 플랫폼에서 사용 가능한 보안 제품의 맥 이식(porting) 팀에서 소프트웨어 개발자로 일하면서 관련 지식을 처음 접했다(간단히 말하면, 몇 년 전 리스프(LISP) 프로그램 하나를 작성하는 6주짜리 일을 돈을 받고 한 적이 있었다. 때로는 그리 자랑스럽지 않는 일을 하며 살기도 한다). 이 일을 하면서 나는 『프로그래머가 알아야 할 97가지(97 Things Every Programmer Should Know)』의 저자이자 객체지향 프로그래밍 학회의 회원인 케블린 헤니(Kevlin Henny)가 운영하는 TDD 교육과정을 들었다. 이때 코드 작성과 수정을 더욱 자신있게 하는 것이 테스트 주도 기반 개발의 핵심임을 깨달았다. 나는 실수를 하면서 배우고 TDD를 일상적으로 사용하며 어떤 방법이 스스로에게 적합했는지를 알아낼 수 있을 만큼 TDD를 잘 이해하게 됐다. 그로부터 몇 년 후 자기 대신 발표해달라는 척의 요청을 수락할 만큼의 위치에 올랐다.

부디 이 책이 단위 테스트와 테스트 주도 개발로 첫 발걸음부터, 여러분의 일상적인 작업 방식으로 몸에 익을 때까지 내내 도움이 되기를 바란다. 그리고 내가 걸린 5년여의 시간보다 더 짧은 기간 안에 TDD에 익숙해지게 도움을 줄 수 있다면 좋겠다. 지금까지 출간된 책들은 대부분 프레임워크를 작성하고 테스트 과정을 설계하면서 단위 테스트를 다뤘다. 그 책들도 모두 훌륭한 책이지만 코코아터치 개발자에게 특별한 뭔가를 알려주지는 않았다. 이 책에서는 오브젝티브C 언어를 이용한 예제를 보여주고 엑스코드와 관련된 개발 도구를 이용한다. 또한 코코아 용어로 설명함으로써 iOS 개발자에게 테스트 주도 개발의 원칙이 더 친숙하고 유의미한 것이 되도록 노력했다.

기능에 따라 단위 테스트에 사용할 수 있는 개발 도구와 프레임워크는 매우 많다. 비록 이 책에서 이 도구들의 차이점에 대해서 자세히 다루지는 않지만, 적용 가능성 때문에 애플이 엑스코드와 OCUnit 프레임워크에서 제공하는 기능에만 집중하기로 했다. 즉 단위 테스트나 TDD를 시도하는 데 관심이 있는 사람은 누구나 이 책의 지식과 표준 개발 도구와 결정권을 쉽게 활용할 수 있다. 좀 부족하다거나 불만스럽다고 느낀다면 여러분이 스스로 대안을 찾거나 직접 만들어 볼 수도 있을 것이다. 실제로 테스트해야 한다는 것만 꼭 기억하자.

테스트에 미친 개발자가 되려고 노력하는 긴 시간 동안 얻은 교훈 중 하나는, 궁금증을 다른 현역 개발자들에게 거침없이 물어보는 것이었다. 그것이 더 나은 소프트웨어 개발자가 되는 가장 좋은 방법이다. 그 밖에 책을 읽고 찾아냈거나 일반적인 TDD 관련 의견이 있다면 트위터 계정(@iamleeg)을 찾아 주저 없이 이야기 전해주길 바란다.

저자 소개

그레이엄 리(Graham Lee)

스스로 만든 코드를 상당히 자신감 있게 생각하는 스마트폰 보안 연구자다. OCUnit과 단위 테스트는 GNUStep 기반의 서버 응용프로그램 테스트를 이끌던 6년 전쯤 처음 접했다. iOS 작업이 주요한 일이 되기 전 그레이엄은 맥 OS X, 넥스트스텝(NeXTSTEP)을 비롯한 다수의 변종 유닉스 관련 응용프로그램을 만들었다. 이 책은 그레이엄이 자신 외의 사람에게 컴퓨팅을 설명하는 방법을 찾으면서 스스로 컴퓨팅을 많이 배우려는 계획에서 출발한 그의 두 번째 책이다. 이 계획에는 전 세계의 학회에서 자주 발표하기, 고향 옥스포드 근처에서 열리는 개발자 모임 참가, 스윈던(Swindon)의 컴퓨팅 박물관에서 자원 봉사활동 등이 포함돼 있다.

옮긴이의 말

최근 가장 주목받고 있는 개발방법론인 테스트 주도 개발(TDD)은 그 관심 정도에 비해 한국에서 실제로 진행 중인 프로젝트 수는 더 적은 듯하다. 예측하건대 이는 실제로 적용하기 힘든 프로젝트 일정, 매니지먼트 팀의 단위 테스트에 대한 이해도 부족, 개발 팀 구성원의 이해도의 차이와 단위 테스트가 없던 기존 프로젝트 탓일 것이다.

대개 테스트 주도 개발이라 하면 단순히 코드에 단위 테스트를 많이 붙이는 것이라고만 생각한다. 하지만 막상 단위 테스트를 작성하려 하면 각 기능별로 단위 테스트를 작성하기가 그렇게 쉽지는 않다. 이를 잘 적용하기 위해서는 기능을 좀더 작게 만들고 클래스도 한 역할만 하게 설계하는 등 객체 지향 설계의 원칙을 잘 따라야 한다. 따라서 이를 잘 따른다면 명확히 필요한 기능 단위로 코드를 작성하기 때문에 당장 필요하지 않은 기능을 배제한 간결한 시스템을 만들 수 있다. 또한 기능 단위 테스트의 존재로 인해 이후 추가적인 기능 개발을 하면서 기존 구현코드를 변경할 필요가 있을 때 기존 기능이 망가지는 두려움을 줄여주는 부수적인 효과도 있다. 즉 테스트 주도 개발은 단위 테스트의 개수, 적용 범위를 확보하는 표면적인 효과보다는 단위 테스트로 인해 생기는 긍정적인 효과가 더 큰 개발방법론이다.

이 책의 저자인 그레이엄 리는 처음 요구사항 정의부터 완전히 작동하는 상태까지 테스트 주도 개발 방법론으로 iOS 앱을 한 단계, 한 단계씩 만드는 과정을 설명하면서 테스트 주도 개발에 대한 기본적인 이해를 높여주고 적용하는 방법에 대해 체득하게 해준다. 그러고 난 후 많은 개발자의 고민인 테스트가 없는 기존 프로젝트에서 테스트 주도 개발 방법론을 적용하는 방법을 설명한다. 마지막으로 테스트 주도 방법론에 맞게 설계하는 방법, 테스트를 자동으로 만드는 방법 등을 설명하면서 이 책을 마무리한다.

그러면 이 책에 나오는 한마디로 글을 마친다. “우선 테스트하라.”

옮긴이 소개

김진혁

서울대학교 컴퓨터공학과에서 학사와 석사를 마쳤으며 삼성전자 메모리사업부에서 모바일 디바이스에서 사용하는 낸드 플래시(NAND FLASH) 기반의 저장장치에 필요한 드라이버, 펌웨어에 대한 소프트웨어 개발을 했다. 그 이후 창업에 관심이 생겨 벤처기업 아이디인큐에 합류했고 오픈서베이라는 비즈니스 정보 수집(Business Intelligence)을 위한 서비스를 개발하고 있다. iOS 앱 개발로 시작해 웹, 서버 개발을 거쳐 현재 데이터 저장 및 운용에 대한 개발을 진행 중이다. 번역서로는 에이콘출판사에서 펴낸 『TCP/IP 완벽 가이드』(2006), 『새로 보는 프로그래밍 언어』(2008)가 있다.

배장호

서강대학교 컴퓨터공학과에서 학사와 석사를 마쳤으며 전문연구요원으로 아이큐브를 거쳐 현재 벤처기업 아이디인큐에서 오픈서베이라는 서비스를 개발하고 있다. 아이큐브 재직 당시 HUMAX Remote, WOON, 현재 출시되지 않은 국내외 회사의 RCU App iOS 앱과 국외향 디지털 방송용 안드로이드 앱을 다수 제작했다.

목차

목차
  • 1장 소프트웨어 테스트와 단위 테스트
    • 소프트웨어 테스트의 목적
    • 소프트웨어 테스트 대상
    • 소프트웨어 테스트 시기
    • 테스트의 실제 사례
    • 단위 테스트가 적합한 곳
    • 단위 테스트가 iOS 개발자에게 의미하는 점
  • 2장 테스트 주도 개발용 기법
    • 첫 테스트
    • 적색, 녹색, 리팩토링
    • 테스트 주도 앱 설계
    • 리팩토링
    • YAGNI
    • 코드 작성 전, 작성 중, 작성 후 테스트
  • 3장 단위 테스트의 작성 방법
    • 요구사항
    • 알려진 입력값으로 코드 실행
    • 기대되는 결과
    • 결과 검증
    • 좀 더 보기 쉬운 테스트
    • 다중 테스트 구성
    • 리팩토링
    • 요약
  • 4장 테스트용 도구
    • 엑스코드를 이용한 OCUnit
    • OCUnit의 대안
    • 지속적인 통합
    • 요약
  • 5장 iOS 앱용 테스트 주도 개발
    • 제품 목표
    • 유스 케이스
    • 공략 계획
    • 시작
  • 6장 데이터 모델
    • 주제
    • 질문
    • 사람
    • 다른 클래스에 질문 연결
    • 응답
  • 7장 애플리케이션 로직
    • 공격 계획
    • Question 생성
    • JSON으로부터 질문 생성
  • 8장 네트워킹 코드
    • NSURLConnection 클래스 설계
    • StackOverflowCommunicator 구현
    • 요약
  • 9장 뷰 컨트롤러
    • 클래스 구성
    • 뷰 컨트롤러 클래스
    • TopicTableDataSource와 TopicTableDelegate
    • 뷰 컨트롤러에게 새로운 뷰 컨트롤러 생성 요청
    • 질문 목록 데이터 소스
    • 다음 단계
  • 10장 애플리케이션 완성
    • 애플리케이션의 작업흐름도 완성
    • 사용자 아바타 표시
    • 정리
    • 제출
  • 11장 테스트 주도 개발에 적합한 설계
    • 구현이 아닌 인터페이스에 적합한 설계
    • TDA
    • 작고 집중된 클래스와 메소드
    • 캡슐화
    • 재사용보다 더 나은 사용
    • 병행 코드 테스트
    • 너무 영리한 것
    • 넓고 얕은 상속 계층 구조 선호
    • 요약
  • 12장 기존 프로젝트에 테스트 주도 개발 적용
    • 첫 테스트가 가장 중요하다
    • 테스트를 지원하는 리팩토링
    • 리팩토링을 지원하는 테스트
    • 필요할 때만 테스트 생성
  • 13장 테스트 주도 개발의 미래
    • 입력과 출력 범위 표현
    • 동작 주도 개발
    • 자동 테스트 케이스 생성
    • 테스트 자동 통과 코드 생성
    • 요약
  • 찾아보기

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안