이미 소장하고 있다면 판매해 보세요.
|
1장 테스트
___간략한 역사 ___소프트웨어 버그 ______프로젝트에 심각한 영향을 미치는 버그 ___왜, 무엇을, 어떻게, 언제, 테스트해야 하는가 ______테스트 해야 하는 것 _________액티비티 생명주기 이벤트 _________데이터베이스와 파일시스템 연산 _________디바이스의 물리적 특성 ___테스트 종류 ______단위 테스트 _________테스트 픽스처 _________setUp() 메소드 _________tearDown() 메소드 _________사전조건 테스트 _________실제 테스트 ______통합 테스트 ______기능 또는 인수 테스트 _________테스트 케이스 시나리오 ______성능 테스트 ______시스템 테스트 ___안드로이드 테스팅 프레임워크 ______측정 ______테스트 타겟 ___요약 2장 안드로이드 테스트 ___JUnit ___안드로이드 메인 프로젝트 생성 ___안드로이드 테스트 프로젝트 생성 ___패키지 탐색기 ___테스트 케이스 생성 ______특별한 메소드 ______테스트 애노테이션 ___테스트 실행 ______이클립스로 모든 테스트 실행 ______이클립스로 하나의 테스트 케이스 실행 ______에뮬레이터에서 실행 ______커맨드라인에서 테스트 실행 _________모든 테스트 실행 _________특정 테스트 케이스만 실행 _________이름으로 특정 테스트 실행 _________종류별로 특정 테스트 실행 _________성능 테스트 실행 _________시운전 ___테스트 디버깅 ___그 외 커맨드라인 옵션 ___요약 3장 안드로이드 SDK의 기본 구성요소 ___데모 애플리케이션 ___단언문 상세 ______사용자 정의 메시지 ______Static Import ___뷰 단언문 ___추가적인 단언문 ___TouchUtils 클래스 ___목 객체 ______MockContext ______IsolatedContext 클래스 ______파일과 데이터베이스 연산의 대안 ______MockContentResolver 클래스 ___TestCase 부모클래스 ______인자 없는 생성자 ______이름 지정 생성자 ______setName() 메소드 ___AndroidTestCase 부모클래스 ______assertActivityRequiresPermission() 메소드 _________설명 _________예제 ______assertReadingContentUriRequiresPermission() 메소드 _________설명 _________예제 ______assertWritingContentUriRequiresPermission() 메소드 _________설명 _________예제 ___Instrumentation ______ActivityMonitor 내부 클래스 _________예제 ___InstrumentationTestCase 클래스 ______launchActivity와 launchActivityWithIntent 메소드 ______sendKeys와 sendRepeatedKeys 메소드 ______runTestOnUiThread 도우미 메소드 ___ActivityTestCase 클래스 ______scrubClass 메소드 ___ActivityInstrumentationTestCase2 클래스 ______생성자 ______setUp 메소드 ______tearDown 메소드 ______testPreconditions 메소드 ___ProviderTestCase2「T」 클래스 ______생성자 ______예제 ___ServiceTestCase「T」 ______생성자 ___TestSuiteBuilder.FailedToCreateTests 클래스 ___테스트 프로젝트에서 외부 라이브러리 사용 ___요약 4장 테스트 주도 개발 ___TDD 시작 ______테스트 작성 ______모든 테스트 실행 ______코드 리팩토링 ______TDD의 장점 ______요구사항 이해 ___샘플 프로젝트 생성: 온도 변환기 ______요구사항 목록 ______사용자 인터페이스 컨셉 디자인 _________프로젝트 생성 ___TemperatureConverterActivityTests 프로젝트 생성 ______픽스처 생성 ______사전 조건 테스트 ______사용자 인터페이스 생성 ______사용자 인터페이스의 존재 여부 테스트 ______정의된 ID 얻기 ______요구사항을 테스트로 변환 _________비어있는 입력 창 _________뷰 속성 ______화면 레이아웃 ___기능 추가 ______온도 변환 ______EditNumber 클래스 ______TemperatureConverter 단위 테스트 ______EditNumber 테스트 ______TemperatureChangeWatcher 클래스 ______더 많은 TemperatureConverter 테스트 ______InputFilter 테스트 ___완성된 애플리케이션 ___요약 5장 안드로이드 테스팅 환경 ___안드로이드 가상 장치 생성 ___커맨드라인에서 AVD 실행 ______UI 없는 에뮬레이터 ______키가드 비활성? ______정리 ______에뮬레이터 종료 ___에뮬레이터 추가 설정 ______네트워크 상황 시뮬레이션 ______추가적인 qemu 옵션 ___monkey 실행 ______클라이언트-서버 monkey ___Monkeyrunner를 통한 테스트 스크립트화 ______스크린샷 테스트 ______녹화하고 다시 재생 ___요약 6장 행위 주도 개발 ___간략한 역사 ___Given, When, Then ___피트네스 ______커맨드라인에서 피트네스 실행 ______TemperatureConverterTests 서브위키 생성 _________서브위키에 자식 페이지 추가 _________인수 테스트 픽스처 추가 _________테스트 클래스 지원부 추가 ___GivWenZen ______테스트 시나리오 생성 ___요약 7장 테스트 레시피 ___안드로이드 단위 테스트 ___액티비티와 애플리케이션 테스팅 ______애플리케이션과 환경설정 _________RenamingMockContext 클래스 _________TemperatureConverterApplicationTests 클래스 ______액티비티 테스팅 ___파일, 데이터베이스, 콘텐트 제공자 테스팅 ______BrowserProvider 테스트 ___예외 테스팅 ___로컬과 원격 서비스 테스팅 ___목 객체의 광범위한 사용 ______라이브러리 import ______testTextChanged 테스트 ______햄크레스트 소개 _________햄크레스트 매처 _________hasToString 매처 ___격리시킨 뷰 테스팅 ___파서 테스트 ______안드로이드 애셋 ______파서 액티비티 ______파서 테스트 ___메모리 누수 테스팅 ___요약 8장 지속적인 통합 ___앤트를 이용한 안드로이드 애플리케이션 수동 빌드 ___깃: 빠른 버전 관리 시스템 ______로컬 깃 저장소 생성 ___허드슨을 이용한 지속적인 통합 ______허드슨 설치와 설정 ______업무 생성 ______안드로이드 테스트 결과 확인 ___요약 9장 성능 테스팅과 프로파일링 ___Ye Olde Logge 메소드 ___안드로이드 SDK의 성능 테스트 ______성능 테스트 실행 _________LaunchPerformanceBase instrumentation 생성 _________TemperatureConverterActivityLaunchPerformance 클래스 생성 ______테스트 실행 ___Traceview와 dmtracedump 플랫폼 도구 사용 ___소규모 성능 평가 ______캘리퍼 소규모 성능 평가 _________TemperatureConverterBenchmark 프로젝트 생성 _________캘리퍼 실행 ___요약 10장 테스트 전략 ___안드로이드 소스 빌드 ______코드 커버리지 _________엠마 기능 ______시스템 요구사항 ______안드로이드 소스 코드 내려 받기 _________리포 설치 _________저장소 복사본 생성 _________빌드 과정 ___TemperatureConverter 코드 커버리지 ______코드 커버리지 분석 보고서 생성 ______인스턴스 상태 복구 커버 ______예외 커버 ______접근 제한 우회 ______옵션 메뉴 커버 ___문서화되지 않은 앤트 커버리지 타겟 ___로보티움 소개 ______로보티움 내려 받기 ______프로젝트 설정 ______테스트 케이스 생성 _________testFahrenheitToCelsiusConversion() 테스트 _________testOnCreateOptionsMenu() 다시보기 ___호스트의 JVM 기반 테스팅 ______TemperatureConverterJVMTest 프로젝트 생성 ______성능 비교 ______안드로이드에 적용 ___로보렉트릭 소개 ______로보렉트릭 설치 ______새로운 자바 프로젝트 생성 ______테스트 작성 ___요약 |
|
★ 저자 서문 ★
많은 시간을 들여 안드로이드 구조를 분석하고 프로그램을 작성할 때 많은 주의를 기울인다 해도 실수와 버그는 발생하게 마련이다. 이 책은 여러분이 안드로이드 프로젝트를 작성할 때 접할 수 있는 오류를 줄여주고 개발 생산성도 향상시켜 줄 것이다. 또한 문제를 어렵지 않게 회피함으로써 좀 더 빨리 테스팅 단계로 넘어갈 수 있도록 도와줄 것이다. 『Android Application Testing Guide 한국어판』은 안드로이드 애플리케이션 개발시 유용하게 쓸 수 있는 각종 실용 기술, 프레임워크, 도구를 망라해 소개하는 유일한 책이다. 애플리케이션 테스트를 어떻게 작성하는지 단계별로 설명하고 품질을 제어하는 다양한 방법도 함께 다룬다. 애플리케이션 테스팅 기법을 실제 프로젝트에 적용해본 저자의 경험과 통찰은 여러분이 전문적인 안드로이드 애플리케이션 작성하는 데 큰 도움을 줄 것이다. 이 책은 소프트웨어 개발 과정에서 버그를 빨리 찾을 수 있는 애자일 기법 중 하나인 '테스트 주도 개발'을 소개하면서 시작한다. 그리고 샘플 프로젝트에 적용하는 기본적인 단위 테스트부터 복잡한 성능 테스트에 이르기까지 안드로이드 테스팅의 다양한 테스트 기법을 요리책처럼 레시피 방식으로 자세히 설명한다. 다양한 소프트웨어 개발 프로젝트를 경험했으며 이러한 경험과 지식을 바탕으로 이 책을 집필했다. 따라서 안드로이드 테스팅의 세계를 탐험하려는 개발자는 이 책을 통해 유용한 통찰을 얻을 수 있을 것이다. ★ 옮긴이의 말 ★ 좋은 코드란 무엇일까요? 간결하고 명확해서 읽기 쉽고 중복이 없어서 수정하기도 쉬운 코드일 것입니다. 하지만 이보다 더 좋은 코드는 코드의 동작과 상태를 검증하는 테스트가 함께 있는 코드입니다. 소프트웨어는 한 번 작성하고 나면 끝이 아닙니다. 버그는 항상 발생하고 요구사항도 계속 변하게 마련이니 유지보수와 새로운 기능 추가는 피할 수 없죠. 결국 코드를 계속 수정할 수밖에 없습니다. 이 때 코드가 스파게티처럼 뒤엉켜 있으면 코드 수정은 고되고 피곤한 작업이 될 것이며 코드 하나를 수정할 때마다 버그가 만들어지는 상황이 올지도 모릅니다. 이래서는 행복하게 개발할 수 없습니다. 코드 수정이 스트레스로 다가오지 않는다면 개발자는 조금 더 행복하게 개발할 수 있지 않을까요? 지금 수정하고 있는 코드에 대해 든든한 누군가가 옳고 그름 여부를 검증해주고, 기존의 동작을 깨지 않는지도 꼼꼼하게 확인해준다면 한결 편하게 개발할 수 있지 않을까요? 행복한 개발을 위해서는 테스트 코드가 필요합니다. 테스트 코드를 작성하면서 개발하면 코드 수정에 대한 스트레스가 줄어듭니다. 유지보수와 기능추가를 한결 빠르고 안정적으로 편하게 할 수 있죠. 지금 수정하는 코드가 잘 동작하는지 그리고 기존의 기능에 영향을 주지는 않는지 생각지도 못할 만큼 빨리 확인할 수 있습니다. 리팩토링을 할 때도 역시 테스트가 힘을 발휘합니다. 테스트 없이 리팩토링을 한다면 맞게 하고 있는 건지 아닌지를 검증할 방법이 없지 않을까요? 코드 한 줄 리팩토링할 때마다 손으로 동작을 검증할 수는 없는 일입니다. 그렇다고 머리로만 검증하면 분명히 생각하지 못한 버그가 생겨나고요. 결국 테스트 코드 없이는 정확한 리팩토링이 힘들 것입니다. 또 테스트를 작성하면서 개발하다 보면 문제를 작은 보폭으로 나눠서 조금씩 해결하게 될 것이고 자연스럽게 좋은 디자인을 고민하게 될 것입니다. 물론 이를 위해서는 험난한 개발과정 중에 테스트 코드가 계속해서 살아남도록 관심을 갖고 물도 주며 사랑해주는 일이 추가로 필요하긴 합니다. 하지만 두고두고 살아남아서 코드를 든든히 지켜준다는 점을 생각해보면 분명히 가치가 있는 일입니다. 테스트가 탄탄할수록 우리는 코드를 가지고 마음껏 뛰어 놀 수 있으니까요. 테스트를 작성하겠다고 마음먹었다면 이제 어떻게 해야 할까요? 테스트에 대한 기본지식과 실무에 적용해볼 수 있는 구체적인 방법을 알아야 합니다. 기본지식은 각종 테스트 전문 서적을 통해 습득한다 치더라도 실무에 적용할 수 있는 구체적인 방법은 대부분 알기가 어렵습니다. 자기가 일하고 있는 분야에 대해서 경험해보고 삽질을 해봐야지만 얻을 수 있는 암묵지를 찾기가 어렵기 때문입니다. 특히 안드로이드 분야의 테스팅 기법은 더욱 그렇습니다. 이 책은 안드로이드 애플리케이션을 개발할 때 테스트를 적용할 수 있는 실용적인 노하우를 공개한 책입니다. 테스트 주도 개발 방식으로 안드로이드 애플리케이션을 하나 만들어 보고 안드로이드에서 제공하는 테스트 프레임워크를 사용해서 UI 테스트는 물론 성능 테스트까지 다양한 상황에 대한 테스트를 실용적인 예제로 설명합니다. 여기에 지속적인 통합을 위한 자동 빌드와 테스트 자동화를 적용하고 코드 커버리지까지 측정해봅니다. 안드로이드 애플리케이션을 개발하고 있지만 테스트에 익숙하지 않은 분들에게 이 책을 추천합니다. 지속적인 통합에 테스트가 스며들어 만들어내는 효율성도 이 책을 통해 경험해볼 수 있을 것입니다. 게다가 테스트에 대한 지식과 경험을 한번 익혀둔다면 개발자의 내공으로 자리잡아 두고두고 활용할 수 있으리라 생각합니다. 무엇인가를 배우고 익히려면 자주 연습하는 수밖에 없습니다. 소프트웨어 개발자가 무언가를 익히려면 결국 실제 업무에 적용해보는 방법이 가장 빠른 길이라 생각합니다. 그래야만 자주 연습하고 몸으로 익힐 수 있기 때문입니다. 혼자서 안드로이드 애플리케이션을 개발하는 개인개발자라면 테스트가 든든한 지원군이 되어줄 것입니다. 테스트 작성은 쉽지 않은 일이지만 이 책을 통해 테스트를 작성하면서 개발하는 대한민국 안드로이드 애플리케이션 개발자들이 많아진다면 좋겠습니다. 또한 개발자들의 지식 함양에 조금이라도 도움이 된다면 더 바랄게 없겠네요. 이 책과 더불어 테스트에 대한 깊은 지식을 이야기하는 『테스트 주도 개발: 고품질 쾌속개발을 위한 TDD 실천법과 도구』(한빛미디어, 2010)과 『테스트 주도 개발』(인사이트, 2004), 『xUnit 테스트 패턴: 68가지 단위 테스트 패턴을 통한 테스트 코드 리팩토링 기법』(에이콘출판사, 2010) 등 테스트 관련 전문 서적을 읽어보길 강력히 추천합니다. ---옮긴이의 말 중에서 |
|
안드로이드 구조를 오랫동안 분석하고 프로그램을 작성할 때 많은 주의를 기울인다 해도 실수와 버그는 발생하게 마련이다. 이 책은 여러분이 안드로이드 프로젝트를 개발할 때 접할 수 있는 오류를 줄여주고 개발 생산성도 향상시켜 줄 것이다. 또한 문제를 어렵지 않게 회피함으로써 좀 더 빨리 테스팅 단계로 넘어갈 수 있도록 도와줄 것이다.
『Android Application Testing Guide 한국어판』은 안드로이드 애플리케이션 개발 시 유용하게 쓸 수 있는 각종 실용 기술, 프레임워크, 도구를 망라해 소개하는 유일한 책이다. 애플리케이션 테스트를 어떻게 작성하는지 단계별로 설명하고 품질을 제어하는 다양한 방법도 함께 다룬다. ★ 이 책에서 다루는 내용 ★ ■ 안드로이드 애플리케이션을 효율적으로 개발하기 위한 테스팅 기술 적용과 도구 활용 ■ 단위 테스트와 기능 테스트의 차이점을 알아보고 안드로이드 프로젝트에 적용 ■ 테스팅 기술을 경험해보기 위한 샘플 안드로이드 테스트 프로젝트 생성 ■ 테스트 주도 개발과 행위 주도 개발 등의 개발 방법론 ■ 안드로이드 애플리케이션을 구성하는 액티비티, 컨텐트 제공자, 서비스 등의 컴포넌트 테스트 ■ 최상의 애플리케이션 품질 관리를 위한 지속적인 통합 기술 적용 ■ 성능 테스트 결과 분석을 통한 애플리케이션 성능 개선 ■ 안드로이드 소스를 빌드해서 EMMA 코드 커버리지를 측정한 뒤 여러분의 코드가 얼마나 테스트되고 있는지 분석해보고 로보티움과 로보렉트릭으로 테스트 작성 ★ 이 책의 대상 독자 ★ 안드로이드 개발자로서 안드로이드 애플리케이션을 테스트하고 싶거나 애플리케이션 개발 과정의 최적화를 원하는가? 그렇다면 바로 당신을 위한 책이다. 애플리케이션 테스팅에 관한 사전지식은 없어도 괜찮다. ★ 이 책의 구성 ★ 1장. '테스트'에서는 테스트의 여러 종류와 테스트가 일반적인 소프트웨어 개발 프로젝트, 특히 안드로이드에 어떻게 적용되는지 설명한다. 2장. '안드로이드 테스트'에서는 안드로이드 플랫폼상의 테스트와 단위 테스트, JUnit을 살펴보고 안드로이드 테스트 프로젝트의 생성과 실행을 살펴본다. 3장. '안드로이드 SDK의 기본 구성요소'에서는 테스트를 작성하는 데 필요한 기본 구성요소를 자세히 살펴보고 단언문, TouchUtils, 사용자 인터페이스 테스트, 목 객체, 측정, 테스트 케이스 클래스 계층구조 등을 살펴본다. 4장. '테스트 주도 개발'에서는 테스트 주도 개발의 원칙을 예제 코드 위주로 살펴보고 일반적인 프로젝트에 적용해본 다음 안드로이드 플랫폼으로 개념을 확장해본다. 5장. '안드로이드 테스트 환경'에서는 테스트를 실행할 수 있는 다양한 환경을 살펴본다. 안드로이드 가상 장치(AVD, Android Virtual Devices)를 생성해보고 환경설정을 통해 다양한 조건으로 애플리케이션을 테스트해본다. 마지막으로 테스트에 사용하는 이벤트를 생성하는 방법인 멍키(monkey)에 대해서도 살펴본다. 6장. '행위 주도 개발'에서는 행위 주도 개발을 소개하고 테스트를 공통된 용어로 표현함으로써 비즈니스 인력들도 소프트웨어 개발 과정에 참여할 수 있는 개념을 소개한다. 7장. '테스트 레시피'에서는 지금까지 설명했던 원칙과 기법을 적용하면서 만날 수 있는 갖가지 상황을 실제 예제를 통해 설명한다. 쿡북(cookbook) 스타일로 예제가 구성돼있으므로 필요한 부분만 찾아서 사용할 수 있을 것이다. 안드로이드 단위 테스트, 액티비티, 애플리케이션, 데이터베이스, 콘텐트 제공자, 로컬과 원격 서비스, UI, 예외, 파서, 메모리 누수 등의 주제를 다룬다. 8장. '지속적인 통합'에서는 소프트웨어 공학의 애자일 기법 중 하나인 변경을 계속 적용해서 통합시간을 줄이고 테스트를 더 자주 실행해 소프트웨어의 질을 높이고 개발시간을 줄일 수 있는 방법을 소개한다. 9장. '성능 테스팅과 프로파일링'에서는 전통적인 로깅 메소드에서부터 프로파일링 도구로 안드로이드 성능 측정 테스트를 작성하는 부분까지 살펴보고 성능 측정과 프로파일에 대해 살펴본다. 10장. '테스트 전략'에서는 안드로이드 소스를 빌드하는 방법과 엠마(EMMA)를 이용한 코드 커버리지 측정, 로보티움(Robotium), 호스트에서 테스트하는 방법, 로보렉트릭(Robolectric) 등을 살펴본다. |