국내외 상용 app들의 주요 문제점과 대응 방안

2009년부터 한국 시장에 풀리기 스마트폰들은 정말로 다양하였고 OS버전 또한 많은 발전을 거듭해 왔다. 바꿔 말하면 시장에는 정말로 다양한 종류의 OS버전들이 사용되고 있는 것이다. 아래 [그림1]에 보인 바와 같이 가로축에 OS버전은 2.1부터 4.4.2까지 존재(2014년 7월 시점)하고 있는 것을 알 수 있다. 흥미로운 것은 검은색 굵은 실선인데, 그것이 의미하는 것은 어떤 app이 특정 OS버전에서 실행되지 않는 확률의 평균치이다. 예를 들면, [그림1]에서 2.1버젼 안드로이드 OS버젼의 경우, 임의의 app을 실행시켰을 때 실행이 안 되는 경우가 30%란다. 이건 구버젼이라 그렇다 치더라도 최신 버전인 4.4 버전의 경우도 30%나 실행이 안된다는 것은 가히 충격이 아닐 수 없다.

os version and failure
[그림1] OS버전에 따른 앱 구동 실패율(이미지출처 : Testroid)

한번만 해당 버전에서 실행이 되는지 확인만 하면 문제를 찾아 금방 해결을 할 수 있을텐데 이렇게 높은 확률로 실행이 되지 않고 있다는 현실을 볼 때, 정말로 안드로이드 단말 종류가 많고 중소기업들이 일일히 테스트 하기 어려운 것이구나 하는 생각이 든다.
이러한 때에 Testyd가 세상에 나와줘서 자동으로 수많은 시장에 출시된 단말들 위에 app을 설치하고 자동으로 실행해 주고 있으니 참으로 많은 개발자들과 테스터들에게 희망의 복음이 아닐 수 없겠다. 앞으로 Testyd의 행복가 주목되는 이유다.
참고로 Testroid가 공유한 운영체제 이슈 검토 결과 및 app개발자들을 위한 팁을 아래에 붙인다.

운영체제에 대한 연구의 주요 내용
• 평균적으로 전체 앱의 23%가 운영체제 버전이 바뀌었을 때 오작동. 오류 발생률의 평균은 아이스크림 샌드위치(1%)에서 가장 적었고, 젤리빈(8%)과 허니컴(8%), 킷캣(21%), 진저브레드(30%) 순. 4분기 데이터(구동 실패율 35%)에 비하면 낮은 편임.
• 테스트된 앱의 약 40%는 2 이하의 구 버전에서도 작동. 그보다 더 오래된 버전에서 구동될 확률 약 40%임.
• 안드로이드 운영체제가 업데이트 되면 50% 이상의 확률로 앱 구동 실패율을 높이는 새로운 문제 발생.
• 100개의 앱 중 임의로 5개를 뽑아 테스트 했을 때 구동 실패율 88%임.
• 플랫폼 당 테스트 평균 57회 시행. 구 버전들은 최근 버전에 비해 테스트되는 횟수 현저히 떨어짐. 진저브레드 12회, 아이스크림 샌드위치 17회, 젤리빈 58회, 킷캣 95회 순임.
• 테스트 1회 당 전체 코딩에서 평균 75%의 버그 감소.
(비고: 테스트 1회는 단일 버전 앱에서 특정한 테스트 스크립트를 1회 시행하는 것.)

팁과 제안
1. 타겟 지역과 상관없이 호환성을 최대화하기 위해서는 가능한 최대한 많은 디바이스에서 실제로 앱을 구동해보는 것을 권합니다. 주요 고객층이 어떤 운영체제 버전을 사용하고 있는지 파악하세요. 전세계적으로 안드로이드 운영체제 버전이 어떻게 사용되고 있는지는 구글 대시보드에서 확인할 수 있음.
2. OS버젼 3.3 이후의 모든 버전은 아직도 널리 사용되고 있습니다. 진저브레드와 아이스크림 샌드위치는 사용자가 전체 안드로이드 유저의 거의 25%를 차지하고 있고, 그 중 상당수는 업데이트를 하지 않기 때문에 이러한 상황은 한동안 계속될 것임.
3. 전체 운영체제의 66% 정도에서 구동되는 것으로 만족한다면 킷캣(4.4.x)과 젤리빈(4.1~4.3)을 테스트하는 걸로도(API 16~19) 충분함.
4. 앱이 75%의 운영체제에서 구동될 수 있으려면 0.3버전(API level 15)부터 테스트해야 함.
5. 다음은 호환성을 높이기 위해 테스트에 활용하기 좋은 디바이스들임.

Amazon Kindle Fire D01400 — 2.3.4
HTC Desire HD A9191 — 2.3.5
Huawei Fusion 2 U8665 — 2.3.6
Sony Xperia U ST25i — 2.3.7
Asus Eee Pad Transformer TF101 — 4.0.3
LG Lucid 4G — 4.0.4
HTC One S X520e — 4.1.1
Motorola Droid XYBOARD 10.1 MX617 4.1.2
Acer Iconia B1-A71 — 4.2
BQ Aquaris 5 HD — 4.2.1
HTC One mini M4 — 4.2.2
Samsung Galaxy Note II GT-N7100 — 4.3
LG Google Nexus 5 D821 — 4.4
HTC One M8 — 4.4.2

(비고: 이 디바이스들은 다양한 OEM 커스터마이징이 도입되어 있으며, 특정한 플랫폼 버전을 테스트하기에 좋은 기반을 갖추고 있음. 다시 말해, 이 디바이스가 일반적으로 높은 수준의 호환성을 갖추고 있으며 비슷한 디바이스들의 특징을 포괄적으로 담고 있어 대표성이 높음.)