업무 중에 '앱 사용 배터리가 빠르게 닳는다'는 voc이슈를 받으면, 모바일팀은 그 이슈를 해결하기 위해 보이지 않는 적과 싸우는 경우가 있다.
앱의 배터리 성능을 높여야 해!
- 성능을 어떻게 높이지?
- 얼마나 높이지???
- 높아진지 검증은 어떻게 하지????? 등등..
배터리와 관련된 voc가 들어왔을 경우 우리 앱의 버전 변경이 배터리에 큰 영향도가 없다 생각하지만 입증이 참 어렵다. 그래서 나는 객관적인 지표를 통해 현재 얼마나 배터리 성능이 나빠졌는지, 얼마나 성능을 높였는지 등을 확인하고 추상적인 목표를 구체화하여 해결하고 싶었다.
성능분석툴을 이용해 구체적인 수치로
라는 결과물을 내고 싶었다.(장점 : 커뮤니케이션 쉬움, 목표설정 명확, 구체화된 결과물 등등)
기본 개념
모바일 디바이스에서 Battery Stats 파일을 생성하여 브라우저의 Battery Historian HTML로 파일 전달 -> 데이터 시각화한다.
안드로이드 프레임워크 배터리 정보를 adb commands로 얻거나 안드로이드 시스템의 (개발자옵션 -> 버그리포트 -> 대화형 보고서)를 통해 bugreport file을 얻는다.
https://github.com/google/battery-historian
docker pull gcr.io/android-battery-historian/stable:3.0
<port>
는 사용자가 직접 지정 (ex.1234)docker -- run -p <port>:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999
step 1. 기기 배터리 충전을 완료.
step 2. pc에 기기를 연결시키고 BatteryStats를 초기화.
adb shell dumpsys batteryStats --reset
step 3. pc에서 분리시켜 측정하고자하는 앱을 사용.
step 3 시나리오
1) 테스트 방식에 맞춰 애플리케이션을 사용.
2) 디바이스 배터리를 20~50%까지 사용하게 한 뒤 report를 확인하여 측정하고자 하는 앱의 배터리 소모를 확인.
3) 디바이스를 다시 pc에 연결하고 command를 통해 로그를 얻음.
로그 확보 방법 1)
os7.0이상 :adb bugreport > /path/bugreport.zip
os6.0이하 :
adb bugreport > /path/bugreport.txt
로그 확보 방법 2)
디바이스의 개발자옵션 -> 버그리포트 -> 대화형 보고서 -> 신고
-> dumpstate-****.zip 파일 확보
step 4. Battery Historian 웹에 bugreport 로그 파일을 넣고 submit.
이 화면처럼 디바이스에서 기기가 동작한 모든 정보들을 시각화. 그 정보를 가지고 우리는 어떻게 이 앱이 사용되고 있는지, 실제 어떤 동작이 많이 일어나고, 배터리가 얼마나 빠르게 소모되는지 등을 확인할 수 있다.
step 5. 버전별 app 성능 비교
같은 앱 사용 시나리오를 버전이 다른 두 앱에 똑같은 환경에서 돌려보고 battery historian을 이용하여 앱별 배터리 소모 상태를 확인하여 버전별로 앱 성능을 비교할 수 있게 된다.
+ 네트워크 통신 호출 빈도, cpu 사용 등등에 대한 데이터는 덤!