안드로이드 앱 배터리 성능 측정 분석 툴-Battery Historian

Gunt·2021년 10월 25일
1
post-thumbnail

안드로이드 배터리 및 성능 측정 tool (Battery Historian - google)

업무 중에 '앱 사용 배터리가 빠르게 닳는다'는 voc이슈를 받으면, 모바일팀은 그 이슈를 해결하기 위해 보이지 않는 적과 싸우는 경우가 있다.

앱의 배터리 성능을 높여야 해!

  • 성능을 어떻게 높이지?
  • 얼마나 높이지???
  • 높아진지 검증은 어떻게 하지????? 등등..

배터리와 관련된 voc가 들어왔을 경우 우리 앱의 버전 변경이 배터리에 큰 영향도가 없다 생각하지만 입증이 참 어렵다. 그래서 나는 객관적인 지표를 통해 현재 얼마나 배터리 성능이 나빠졌는지, 얼마나 성능을 높였는지 등을 확인하고 추상적인 목표를 구체화하여 해결하고 싶었다.
성능분석툴을 이용해 구체적인 수치로

'현 버전은 얼마의 배터리 소모를 하고 있고 수정버전은 *%의 배터리 효율이 증가했다.'

라는 결과물을 내고 싶었다.(장점 : 커뮤니케이션 쉬움, 목표설정 명확, 구체화된 결과물 등등)


기본 개념
모바일 디바이스에서 Battery Stats 파일을 생성하여 브라우저의 Battery Historian HTML로 파일 전달 -> 데이터 시각화한다.

안드로이드 프레임워크 배터리 정보를 adb commands로 얻거나 안드로이드 시스템의 (개발자옵션 -> 버그리포트 -> 대화형 보고서)를 통해 bugreport file을 얻는다.

https://github.com/google/battery-historian

준비물(for mac)

  1. docker
    : https://docs.docker.com/desktop/mac/install 에서 설치 가능
  2. adb(android debug bridge)
    : brew install --cask android-platform-tools

Battery Historian 준비 과정

  1. BatteryHistorian Image를 pull한다.
docker pull gcr.io/android-battery-historian/stable:3.0
  1. Battery Historian Iamge를 Run한다. <port>는 사용자가 직접 지정 (ex.1234)
docker -- run -p <port>:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999
  1. browser를 이용하여 로컬호스트의 본인이 지정한 포트로 진입.(Battery Historian 툴 사용 준비 완료)
    배터리 히스토리안

배터리 성능 측정 과정

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 사용 등등에 대한 데이터는 덤!


이슈를 구체화하여 업무를 수행할 때 더 명확하게 목표를 잡을 수 있고, 그 결과를 눈으로 확인할 수 있는 것까지 개발자의 역량이라 생각한다. 다양한 툴들을 이용하여 내가 만든 프로그램의 성능을 유지하고 개선시키는 과정을 거쳐 더 나은 개발자이자 같이 일하고 싶은 개발자로 성장하고 싶다.
profile
기술에 생각 더하기

0개의 댓글