gkac 2015 apr. - 테스트 코드에서 코드 커버리지까지

55
안드로이드 TDD 정착기 (Robolectric Jacoco) 토스랩 Steve 승욱 Jung (Robolectric Contributor)

Upload: gdg-korea

Post on 17-Jul-2015

576 views

Category:

Software


3 download

TRANSCRIPT

안드로이드 TDD 정착기(Robolectric 과 Jacoco)토스랩 Steve 승욱 Jung(Robolectric Contributor)

Android Test 시작하기

Android Instrument 사용

2012년 4월쯤

Android Instrument 사용- 목표 커버리지 : 80%- 실제 커버리지 : 60%

UI 테스트를 제외하면 사실상 80%...

에뮬레이터를 통한 자동화 테스트

장점

지나치게 복잡한 테스트 준비 단계

단점1

1. 테스트 대상 APK 빌드2. 에뮬레이터에 설치 3. 테스트 프로젝트 빌드 4. 테스트 코드 설치5. 테스트 시작

시간이 돈인데...

단점2

테스트 프로젝트의 완전한 분리1. 테스트 프로젝트 단독 실행 불가

(의존성 연결 필요)2. 자동화의 큰 걸림돌

단점3

에뮬레이터의 한계

1. 테스트 환경 구성의 어려움2. 리눅스 콘솔에서의 테스트

JVM 에서 테스트하기

해결방법

GDG 세미나 카카오에서 사례 공유

직접 Android SDK 와 테스트 프로젝트 의존성 연결

꽤 복잡한 설정에 무슨 말인지 하나도 기억이...

Vingle 개발자 Party에서 사례 공유

Robolectric 사용

Robolectric 첫 대면

2013년 제대로 편한 TDDWeb Spring 환경

Spring 프레임워크의 최대 장점

쉬운 테스트 환경 구성테스트에 대한 높은 접근성

정착된 TDD 문화

Android 에서의 TDD 다시 고민

Test 를 위한 코드가 아닌 TDD

짧고 간결해야 한다.

짧고 간결해야 한다.쉽게 적용할 수 있어야 한다.

짧고 간결해야 한다.쉽게 적용할 수 있어야 한다.실제와 가까워야 한다.

JUnit4 를 사용 여부최소한의 환경 설정으로 적용 여부

UI 테스트 여부

그래서 Robolectric 도입 시도

너로 정했어!

JUnit4 사용 가능Runner 설정

Shadow(Mock) 지원

Roboletric 시작하기

환경 구성

1. Build Script 추가2. Plug-in 추가3. Dependency 추가4. Configration 추가

1. Build Script 추가2. Plug-in 추가3. Dependency 추가4. Configration 추가

1. Build Script 추가2. Plug-in 추가3. Dependency 추가4. Configration 추가

1. Build Script 추가2. Plug-in 추가3. Dependency 추가4. Configure 추가

1. 테스트 코드 작성2. 테스트 동작 설정3. 테스트 코드 실행

1. 테스트 코드 작성2. 테스트 동작 설정

3. 테스트 코드 실행

1. 테스트 코드 작성2. 테스트 동작 설정

3. 테스트 코드 실행

그래서 준비한 라이브 코딩

실제 Http 테스트를 하려면?- HttpLayer 설정하기멀티 쓰레드 테스트를 하려면?- Awaitility 사용하기초기 설정을 세밀화 하고 싶으면?- 커스텀 Runner 이용하기

테스트 Tip

Jacoco 설정하기

매우 복잡하니 가급적 샘플 코드를 따라하시길..

Flavor 처리 주의!!

Flavor 처리 주의!!

Flavor 처리 주의!!

어려운 듯 아닌 듯 해서라이브 코딩

Flavor 설정시 경로 및 Task 이름 주의

Tip

테스트는 오류의 부재가 아닌 존재를 보기 위함이다.

Testing shows the presence, not the absense of bug.- Edsger W. Dijikstra

마지막 말

QnA

개발자 블로그 : http://tosslab.github.io

감사합니다.