Android MediaCodec硬编兼容性测试方案
作者:阿宝
更新:2016-08-15
来源:彩色世界(https://blog.hz601.org/2016/08/15/android-mediacodec-hardcode-compatibility-testing/index.html)
简述
Android系统在短时间内大放异彩,得益于其源码的开放性;也正因其开放性,各厂商自由定制,导致了系统碎片化严重。Android硬件编码的MediaCodec方案便是著名的难题之一。
关于MediaCodec是什么,怎么用,官网已经进行了详细的讲解,这里不再多述。
下面重点讲解如何测试MediaCodec的硬编兼容性。
国内现状
目前,针对于Android的兼容性测试,常见两种解决方式,一种是购买足够数量的测试机,来满足机型覆盖,这一种我们暂且称为自有解决方案;另一种是租用测试机或者外包测试,我们称为商用解决方案;下面分别讲解。
自有解决方案
这种解决方案多见于大公司,这些公司资金充足,对数据的安全性有一定的要求,整体流程的依赖也比较多,所以需要在内部完成测试工作;要完成这些,首先需要购买足够的测试机型,为了覆盖足够多的机型,TOP200是必不可少的,费用在十万级别;其次,为了提高效率减少人工错误,需要一套系统来管理这些机器;然后是将测试用例转化成测试脚本,脚本依次在所有机型上运行测试,并输出测试报告。
商用测试方案
这种解决方案多见于中小型公司,由于资源的短缺(可能是资金,人力,时间等),不可能在内部完成测试工作,通常情况下,他们会购买少量的机型,用于日常开发测试,发布版本前付费找专业公司测试;
国内测试方案提供商
iTestIn是最早介入测试解决方案的公司之一,在业内也是做的比较好的,算是国内第一代测试公司;也许是当时一家独大,这家公司的进步是渐渐的慢了,主要接中型公司的单子,对小众用户是越来越不关心了,近两年已经明显的落后了。
第二代测试公司,崛起于国内具有的大型移动业务的公司,如百度,阿里,腾讯,纷纷成立了自家的移动云测试中心,在满足了内部的需求后,封装成新业务开放出来商用。
这些公司均提供针对于大公司的一体化方案,也有针对中小用户的通用测试方案。
为了称呼方便,在下文中,阿里云测移动质量中心统一简称阿里云测,百度移动云测试中心统一简称百度云测,腾讯优测统一简称腾讯云测。
测试方案选择
测试目标
测试市面上TOP200机型对MediaCodec硬件编码的兼容性,主要针对常见的H.264图像压缩算法,其他编码原理相同,就不逐个描述了。
机型挑选
Talkingdata的移动观象台提供TOP70机型,按周/月/季度3种单位统计,可以作为参考之一,链接地址
iTestIn提供TOP500机型,可以作为参考之一,链接地址
腾讯云测提供TOP50,TOP100,TOP200机型,符合我们的需求,链接地址 (注:此链接需要登录方可查看)
百度云测和阿里云测也有TOP机型数据,只是需要在付费使用之后,才能拿到,暂且不考虑;
所以我们选用腾讯云测的TOP200机型作为目标机型,整理《安卓MediaCodec硬件编码兼容性测试》文档。
测试方法选择
测试方法分为自动化测试脚本和人工测试两种。
自动测试脚本
自动测试脚本又分为私有脚本和开源脚本两种。
私有脚本
私有脚本,顾名思义,即自家用的脚本,在别家是用不了的。
这里涉及到脚本录制工具的概念,简单做一下描述,脚本录制工具,是一个应用,一般安装在PC或手机上,用于录制APP在手机上的操作动作,录制完成后,生成脚本,可以使用此脚本重复在多台测试机上进行测试,以减少人力成本和操作误差;
iTestIn,阿里云测,腾讯云测,3家均提供脚本录制工具,录制的脚本仅能在自家平台使用,这里不推荐使用,略过;
开源脚本
开源脚本,即由开源测试框架生成的脚本,语言支持范围广,通用性好。
目前市场上常见的测试框架有Appium和Robotium,Appium测试框架,适用于简单的界面功能测试;Robotium测试框架,除了界面功能测试之外,还提供了更多的测试功能,这里就不一一描述了;这两种框架均支持多种开发语言编写测试脚本,且通用性好,推荐使用。
阿里云测,百度云测均支持这两种测试框架,且提供了脚本示例,阿里云测Appium脚本示例, 阿里云测Robotium脚本示例, 百度云测Appium脚本示例, 百度云测Robotium脚本示例
这两种测试框架的脚本编写非常简单,且各家已经提供了示例程序,稍作修改即可使用,普通的小程序数行代码就可以完成测试了。
测试平台选择
自动脚本测试
百度云测默认可选的只有10款热门机型,费用每款10元,更多机型需要联系百度开通;
阿里云测默认可选的有200款机型,费用每款30元,符合我们这次测试的目标;
人工测试
iTestIn,阿里云测,腾讯云测,百度云测,4家均提供了远程真机调试服务:
iTestIn提供了475款可用的远程真机,费用每分钟1元,链接地址;
腾讯云测提供了200款可用的远程真机,费用每分钟1元,目前首次激活送100分钟,链接地址;
阿里云测提供了32款可用的远程真机,费用未知,链接地址;
百度移云测提供了69款可用的远程真机,费用未知,目前处于测试阶段全部机型免费,链接地址;
根据上面的信息,腾讯云测是最合适的人工测试平台;
测试流程
此处我们以直播行业常见的主播推流工具APP来作为测试对象,假设APP的包名为 com.zhibo.publisher,界面上只有两个按钮,ID分别为 @+id/start, @+id/stop,业务逻辑为,点击start按钮,开始直播推流到指定的流媒体服务器,点击stop按钮,停止直播。
自动测试脚本
这里以阿里云测的Python脚本作为示例讲解如何进行自动化测试,入口链接地址
首先,下载阿里云测的示例脚本appium_demo.zip,我们只需要对其中的 main.py 文件作简单的修改(6行代码),修改后如下:
# -*- coding: utf-8 -*-
from appium import webdriver
import desired_capabilities
from unittest import TestCase
from selenium.webdriver.common.by import By
import unittest
import time
class MtsTest(TestCase):
def setUp(self):
desired_caps = desired_capabilities.get_desired_capabilities()
uri = desired_capabilities.get_uri()
self.driver = webdriver.Remote(uri, desired_caps)
def test_searchbox(self):
# 等待2秒,开启直播
time.sleep(2)
self.driver.find_element_by_id("com.zhibo.publisher:id/start").click()
# 等待25秒,停止直播
# 注意: 测试框架有BUG,超时不要超过30秒,否则会出现脚本错误
time.sleep(25)
self.driver.find_element_by_id("com.zhibo.publisher:id/stop").click()
# 等待6秒,让连接断开,结束
time.sleep(6)
def tearDown(self):
self.driver.quit()
然后将main.py文件打成zip包,假设包名为main.py.zip,在阿里云测脚本测试页面提交 publisher.apk 和 main.py.zip ,指定需要测试的机型,即可开始自动化测试,然后坐等结果就好了。
人工测试
这里选择腾讯云测平台,来进行人工测试,入口链接地址
首先,挑选指定的测试机型,打开远程控制页面,然后上传要测试的APP,这里为publisher.apk,安装完成后会自动打开APP,这里手动操作开启直播,停止直播即可,和在普通手机上操作上一样的,完成后记录操作结果;如此重复200次即可;
根据笔者的经验,手动测试示例程序publisher,每款机型1分钟左右,200款机型测下来220分钟就足够了,比起自动脚本测试要省不少的费用 _。
测试结果
最后,奉上某主播推流工具的测试结果

参考
无
Android MediaCodec硬编兼容性测试方案的更多相关文章
- android MediaCodec 音频编解码的实现——转码
原文地址:http://blog.csdn.net/tinsanmr/article/details/51049179 从今天开始 每周不定期更新博客,把这一周在工作与学习中遇到的问题做个总结.俗话说 ...
- APP兼容性测试(三)测试方案设计
1. 背景 App的兼容性问题可能会导致流失潜在的客户,为了尽量减少因兼容性问题导致的同类问题,进一步提高产品的质量,提升用户体验,所以进行兼容性测试,尽可能多的保证更多的用户都可以正常使用app. ...
- 手机APP兼容性测试
兼容性测试方案 兼容性问题 屏幕分辨率兼容性问题 软件(iOS和Android系统版本及不同厂家的定制ROM)兼容性问题 硬件(不同的CPU.内存大小等等)兼容性问题 网络(2G/3G/4G/WIFI ...
- 手机APP测试如何进行兼容性测试?
Android App兼容性测试是一个比较重要的App评价内容,实际上兼容性测试不仅仅和测试人员相关,在开发阶段就应当着重考虑,因为兼容性问题是除了实现App本身要求的功能后,必须要关注.而且至关重要 ...
- ffmpeg mediacodec 硬解初探
ffmpeg mediacodec 硬解初探 1编译: ffmpeg自3.1版本加入了android mediacodec硬解支持,解码器如图 硬件加速器如图(还不清楚硬件加速器的功能) 编译带h26 ...
- 安卓手机APP兼容性测试如何有效进行?
Android App兼容性测试是一个比较重要的App评价内容,实际上兼容性测试不仅仅和测试人员相关,在开发阶段就应当着重考虑,因为兼容性问题是除了实现App本身要求的功能后,必须要关注.而且至关重要 ...
- MediaCodec在Android视频硬解码组件的应用
https://yq.aliyun.com/articles/632892 云栖社区> 博客列表> 正文 MediaCodec在Android视频硬解码组件的应用 cheenc 201 ...
- android 兼容性测试 CTS 测试过程(实践测试验证通过)
source: http://blog.csdn.net/jianguo_liao19840726/article/details/7222814 写这个博客的时候是为了记忆,建议大家还是看官方的说明 ...
- 【转】android 兼容性测试 CTS 测试过程(实践测试验证通过)
原文网址:http://blog.csdn.net/jianguo_liao19840726/article/details/7222814 写这个博客的时候是为了记忆,建议大家还是看官方的说明,官方 ...
随机推荐
- 虚函数&多态
对于经常被问到的虚函数和多态的问题,发现百度百科回答得十分详细,所以自己在百度百科上的解释进行总结 一.虚函数 (1)虚函数简介:在某基类中声明为virtual并在一个或者多个派生类中被重新定义的成员 ...
- Oracle索引批量重置笔记
---单个索引重置语句 alter index indexname rebuild; ---查询数据索引对象语句 select * from user_indexes; ------将数据库的索引 ...
- ubuntu(linux)新装系统恢复备份后无法进入系统问题的解决
1. 引子: 可以跳过直接看3.~5. 我们可能会遇到这样的状况,从ubuntu转到别的系统,兜兜转转又回到了ubuntu. 比如说: Fedora升级后一大堆BUG,与java有关的软件渲染都糟糕的 ...
- 新浪微博的OAuth2认证过程
1. 创建应用 在weibo.com上申请一个应用,获取app key和app secret, 填写redirect uri 2. 获取code 通过在浏览器访问 https://api.weibo. ...
- ASP.NET MVC HttpPostedFileBase文件上传
HttpPostedFileBase文件上传,支持多文件一次上传,如有图片,则支持略缩图保存 文件传输信息封装 /// <summary> /// 文件生成方式 /// </summ ...
- maven依赖jar包更新,业务jar需同步更新(业务jar依赖API)
背景: 环境出现问题,定位为依赖jar缺失,修改工程pom文件补充依赖jar. 更新要点说明: 依赖jar,更新提交 业务jar,也需更新提交:maven构建会把依赖jar引用进去,更新环境如果单独更 ...
- 【SignalR学习系列】3. SignalR实时高刷新率程序
创建项目 创建一个空的 Web 项目,并在 Nuget 里面添加 SignalR,jQuery UI 包,添加以后项目里包含了 jQuery,jQuery.UI ,和 SignalR 的脚本. 创建基 ...
- 【echart】学习笔记
1. x 轴 y轴 的max min 只能为5的倍数 2.
- hadoop环境中误删除tmp文件夹的恢复
情景描述: 种种原因,不小心把系统根目录中的tmp文件删除了!发现jps之后看不到 master主机上面的namenode,resourcemanager,secondarynamenode三个进程了 ...
- ubuntu下处理mysql无法启动故障一例
故障现象: mysql无法启动 1: dmesg |grep mysql [101353.820000] init: mysql post-start process (9077) terminate ...