Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
UI Test 연동으로 배포 두려움 없애기: CI, Espresso, Dagger2,...
Search
Jimmy Kim
November 19, 2017
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
UI Test 연동으로 배포 두려움 없애기: CI, Espresso, Dagger2, Mockito, Firebase Test Lab
2017년 11월 19일 GDG DevFest17 Seoul 에서 발표한 자료입니다. 배포 프로세스 개선을 통해서 점진적 제품 품질 향상 방안에 관한 내용입니다.
Jimmy Kim
November 19, 2017
More Decks by Jimmy Kim
See All by Jimmy Kim
Gradle Plugin 제작 실패기
wotomas
2
240
Other Decks in Programming
See All in Programming
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
630
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
ジョジョの世界をXRで再現する
mofurune
0
160
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
750
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
1.1k
Agents on Rails - Rails at Scale 2026
irinanazarova
0
560
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
260
Domain-Driven Transformation
hschwentner
2
2.3k
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
420
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
phperだってパンチカードでコーディングしたい
o0h
PRO
0
330
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
Being A Developer After 40
akosma
92
590k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Deep Space Network (abreviated)
tonyrice
0
370
Docker and Python
trallard
47
4.2k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
480
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
270
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
600
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Odyssey Design
rkendrick25
PRO
2
870
Transcript
김지혁 Developer of Flitto Jihyok Kim UI Test 연동으로 배포
두려움 없애기
실제 개발자들의 마음이 반영 어떻게 방지? 개발자의 속마음
수동 테스트 우리는 개발자 효율적으로 Scale Up 테스트 또 테스트
CI, Espresso, Dagger2, Mockito, Firebase Test Lab 새로운 기능 개발
버그 수정 기능 개발 안전하게 기능 및 버그 수정 배포 배포 필수 기능 점검 Mock UI Testing 성능 저하 확인 및 방지 Performance Testing 최소 단위 테스팅 코어 모듈 점검 Unit Testing
배포 프로세스 공유 및 개선 안드로이드 테스팅 설계 및 시행착오
이번 발표에 포함되는 내용 앞으로 개발 방향
악명 높은 안드로이드 단위 테스트 Context 분리 스파게티 코드 제거
Fast and Unfragile 로직의 근간: 코드는 틀리지 않는다 Unit Testing Product Development Unit Testing Mock UI Testing Release Performance Testing
화면 노출시 API 호출 이후 화면에 내용 렌더링 에러시 토스트로
알림 View의 역할은? Presenter의 역할은? Unit Testing: 시나리오 Product Development Unit Testing Mock UI Testing Release Performance Testing
View의 역할 Product Development Unit Testing Mock UI Testing Release
Performance Testing
Presenter의 역할 Product Development Unit Testing Mock UI Testing Release
Performance Testing
Unit Testing 준비: Triple A Testing Product Development Unit Testing
Mock UI Testing Release Performance Testing Arrange Given Valid Post URL is Returned Act When View is Attached Assert Should Correctly Render with Valid Data
Product Development Unit Testing Mock UI Testing Release Performance Testing
Given Valid Post URL is Returned When View is Attached Should Correctly Render with Valid Data
Circle.yml 생성 Base Directory 공식 문서에 제공되는 스크립트에서 조금 수정
Circle CI 연동 Product Development Unit Testing Mock UI Testing Release Performance Testing
UI Testing Product Development Unit Testing Mock UI Testing Release
Performance Testing Espresso 공식 지원 무작정 UI 테스트 설계시 UI 테스트 수백개 네트워크 환경 불안정, 기능 변경 등 유지보수 포인트 추가
Dagger2를 통한 의존성 주입 Product Development Unit Testing Mock UI
Testing Release Performance Testing 안정성을 위해 UI 테스트시 가짜 객체 주입 상용 코드에 최대한 영향을 주지 않게
Dagger2 모듈 재구성 Product Development Unit Testing Mock UI Testing
Release Performance Testing Application Component Mock Application Component Mock Application Module Mock Network Module Network Module Application Module Presenter Module
Activity Test Rule 통해 원하는 시점에서 콜백 Product Development Unit
Testing Mock UI Testing Release Performance Testing
환경에 맞는 Mock Dependencies 주입 Product Development Unit Testing Mock
UI Testing Release Performance Testing
Espresso를 이용해서 테스트 케이스 작성 Product Development Unit Testing Mock
UI Testing Release Performance Testing Espresso Cheat Sheet: https://developer.android.com/training/testing/espresso/cheat-sheet.html
Android Test Gradle Dependencies Product Development Unit Testing Mock UI
Testing Release Performance Testing
Firebase Test Lab Product Development Unit Testing Mock UI Testing
Release Performance Testing 로컬 환경에서 남는 노트북으로 세팅 가능 안정적 테스팅 환경을 위해 Test Lab 이용 로그, 영상, CPU 및 메모리 성능 확인 가능
Firebase Test Lab 설계 순서 Product Development Unit Testing Mock
UI Testing Release Performance Testing CI 환경에서 AndroidTest apk를 빌드한다 저장해둔 Gcloud 서비스 키를 이용해서 firebase 에 업로드 한다 결과값을 받아서 개발자들에게 노티를 보낸다
앞으로 방향: 성능 테스트 Product Development Unit Testing Mock UI
Testing Release Performance Testing 스크롤시 평균 FPS Cold Start Time
평균 FPS Product Development Unit Testing Mock UI Testing Release
Performance Testing 스크롤시 평균 FPS 값 계산 24 FPS -> Fluid Motion 30 ~ 60 FPS: 차이 못느낌
Tiny Dancer 연동 Product Development Unit Testing Mock UI Testing
Release Performance Testing
Cold Start Time Product Development Unit Testing Mock UI Testing
Release Performance Testing 앱이 커질수록 초기에 세팅 방대 reportFullyDrawn() 메소드를 통해서 접근 UI 테스트와 동시에 진행
진입장벽이 높고, 우선순위에 밀리지만 개선된 프로세스를 통해 품질 향상이 가능하다
고로, 테스팅을 합시다! 발표에 사용된 코드는 모두 깃허브에서 확인 가능하다 https://github.com/wotomas/NewYorkTimesMVP
많이 지원해주세요!