[toc]
移动端测试相较其他端测试的区别
移动端测试的定义
广义上,对业务载体为移动客户端的各类型测试,都可以叫做移动端测试;狭义上,移动端测试主要指对移动端应用本身的测试,主要衡量应用本身满足需求的程序。
移动端特性
从测试思想而言,移动端测试和其他端测试具备一致性;差异点主要在于,移动端应用本身的一些场景、特性是独有的,需在在测试方案层面加以考虑,下面列举一些常见的移动端测试时需考虑的特性:
随时中断
移动端的使用场景大部分是高频次、碎片化的,因此,大部分的移动应用都会随时面临中断的问题;包括不限于前后台切换、通讯打断、系统意外、升级安装等等
网络状况不确定
由于通讯技术的不断升级和网络运营商的多样性,移动端的网络类型从各家的2、3、4、5G网络,到随处可见的wifi热点都存在可能性;且由于移动场景的特殊性,并不能总是保证网络是畅通无阻的。
设备、系统版本繁多
目前移动端主要分为两大系统阵营,Android和iOS,无论是哪方,基本都存在着版本众多的问题;而具体到Android,更是存在各家厂商均对Android源码存在一定的修改,导致应用在各家Rom上可能存在不一致的表现。
权限不受控
移动端应用的权限是由移动操作系统总管的,且部分权限的开启权利掌握在用户手里,用户可以随时将应用的某个权限回收;因此,对移动端应用而言,应用权限是不能自控的,需要特别注意做好兜底措施。
硬件资源不可扩展
不同于服务端资源基本可以通过动态横向扩展来达到满足业务部分峰值场景的需求;移动端的硬件资源,包括Cpu、内存、存储(少部分可以扩展)等,均不具备扩展性;而移动设备的多样性导致了硬件资源也天差地别,因此需要特别注意应用在不同硬件上的资源占用表现。
移动端常见测试类型
通用的测试场景结合以上移动端特性,衍生出相对应的测试方案,并逐渐收敛成一类的测试类型;下图列举了移动端常见的测试类型,后面会更加具体的介绍每个测试类型。
前言
在移动端测试发展的历史中,诞生了很多知名好用的工具,他们在各种测试类型下均发挥了不可或缺的作用;基于本课程的受众(初级测试)和整体篇幅,将直接介绍各重点测试类型下经过公司内部实战应用的工具,并将篇幅重点着眼于工具能发挥的作用上进行说明;
希望通过本课程的科普,给初学者接触移动端测试时,提供一个初步的视野范围,在面对移动端的各种测试类型时,工具选用上有所参考。
移动端测试工具介绍
自动化测试工具
移动端自动化测试介绍
广义上,自动化测试一般是指,将人为驱动的测试行为,转变为机器或程序驱动的测试行为;在移动端自动化上,一般代指移动端UI自动化;描述将人工进行的UI操作行为,通过自动化case进行实现。
测试工具推荐:Airtest
Airest
Airtest是由网易游戏推出的UI自动化测试解决方案,是一个跨平台的、 基于图像识别 的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Android和iOS,Web。并且提供了基于UI控件识别的Poco框架,目前也支持Android原生、iOS原生、Unity3D、cocos2dx、UE4和Egret等平台。
提供了AirtestIDE工具,内置了Airtest和Poco的相关插件功能,能够使用它快速简单地编写 Airtest 和 Poco 代码。
通过使用Airtest,你可以做到:
- 对android、ios、pc、web的端应用进行相关自动化脚本编写
- 对主流引擎开发的大部分游戏应用进行相关自动化脚本编写
- 结合技术中心基于airtest封装的自动化测试框架,获得诸如多设备、多账户的并行运行能力;同时集成了用例管理和测试报告、自动邮件通知等功能
- 结合公司云测平台,将你的自动化脚本使用云端机器执行
移动端稳定性测试工具
移动端稳定性测试介绍
广义上,稳定性是指对被测对象进行长时间、大量负载的行为,观察测试对象是否存在意料之外的问题;在移动端而言,稳定性主要分为两个负载方向:对应用施加大负载的UI操作,观察应用是否存在问题;以及对载体设备施加大负载的资源操作,观察应用的应对是否合理。
导致APP闪退的因素主要有以下几类:
- 内存管理错误:可用内存过低导致无法申请到所需内存或内存泄漏导致应用用尽全部内存
- 程序逻辑错误:数组越界、堆栈溢出、并发错误或其他逻辑问题
- 设备兼容:设备、系统版本等不同导致原本正常的方法不存在或调用错误等
- 网络:网速过慢导致响应超出应用处理时间等
测试工具推荐:Android一键体检工具、Fastbot、Stress
Android一键体检工具(IMonkey)
Android一键体检工具(IMonkey)是公司自研的一款基于控件的、自动化的遍历工具,采用有序遍历+随机控件+随机场景的策略;在有效的控件点击滑动输入事件上,增加了异常场景的随时接入,如第三方应用的突然拉起导致应用被切换到后台,屏幕任意方向旋转、应用自身的权限管控等;支持Android5.0+的系统上运行,支持Android原生控件以及H5页面点击、输入等,支持自动登陆等特定步骤运行,支持屏蔽activity、支持屏蔽任意控件或区域点击,实时监控应用的crash情况,包括java层、native层以及系统层的异常,支持性能实时采集、activity启动耗时采集,可以在问题发生时更好的追溯现场。
使用移动应用一键体检工具(IMonkey)你可以做到:
- 相较于Android端传统UI稳定性测试工具Monkey,更高的页面覆盖率、更全的功能集成度(自动性能收集、报告展示);可完全代替Monkey使用
- 低人力成本的对被测Android应用进行长时间、自动化的遍历操作;并且支持原生和混合应用两大类应用
iOS的Monkey:Fastbot
iOS系统上目前没有官方的类似Monkey的稳定性测试工具,而市面上绝大部分方案均不同程度的对项目源码存在侵入式操作;Fastbot是实践下来门槛相对最低,版本兼容性最好的一个。
Fastbot 是字节出品的一个基于模型的测试工具,用于施加随机的UI操作负载以发现应用程序稳定性问题;它结合了机器学习和强化学习技术,以更智能的方式帮助发现问题。
使用Fastbot,你可以做到:
- 对iOS应用进行类似Monkey工具的UI稳定性测试
Android设备负载生成器:Stress
无论是一键体检还是Fastbot,都是通过不间断施加UI操作提供负载,而不是对设备本身进行负载输出;Stress是一款可以对设备本身进行负载输出的工具,通过对设备本身进行高强度、长时间的负载,观察被测应用是否会存在问题。
使用Stress,你可以做到:
- 对Android/linux设备进行Cpu、内存、IO等长时间高负载测试
- 模拟高资源占用下的异常场景,如内存被占满、Cpu满负载等
移动端性能监控工具
移动端性能测试介绍
和服务端性能测试不同,相较于服务端性能测试对全链路上各组件的负载关注,移动端的性能测试更加偏重对应用本身对设备的资源消耗表现;并且,基于移动端的设备特点,还需要额外关注诸如耗电量、流量等专项指标。
测试工具推荐:Android/Linux性能分析工具、iOS Perf
Android/Linux性能分析工具
性能分析工具是一款兼容多平台(android,linux,qnx)的性能数据监控工具;工具可以监控对象进程的CPU和内存,并实时绘图显示在界面上;
支持一键导出数据,生成报告,同时提供了内存,CPU,IO压测等辅助功能;并且工具支持CPU线程数据实时监控,开创性的加入了性能绘图和对象日志关联方案,辅助测试、研发快速定位性能问题。
使用Android/Linux性能分析工具,你可以做到:
- 在pc端对移动端性能测试流程中的设备和应用的资源使用情况进行监控和记录
- 通过实时图表排查应用使用流程中的性能瓶颈点
- 通过性能数据和关联的设备日志,进行性能问题点分析
iOS端的性能监控工具:iOS Perf
iOS Perf是一款可以对iOS设备上应用进行性能数据监控的工具,基于mysql、Grafana进行数据持久化和展示,支持docker一键部署;支持指定应用、多指标监控;支持通过Mac和Windows设备进行使用。
使用iOS Perf,你可以做到:
- 对iOS设备上的应用进行多项指标监控,如Cpu、内存、Fps、流量情况等
- 通过Grafana仪表盘进行实时显示设备的性能情况
移动端兼容性测试工具
移动端兼容性测试介绍
兼容性测试是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能够很友好的运行的测试;对移动端而言,较难的地方是如何节约兼容性测试中大量设备带来的人力成本问题和如何找到合适的兼容性测试设备使用。
测试工具推荐:Android一机多控工具IflyMultiControl、讯飞云测平台
Android一机多控工具IflyMultiControl
一款用于Android平台兼容性测试的工具;操作一台设备,同步动作到其他设备;达到一次兼容性测试,搞定多部设备;
支持点击、滑动、手写(连续滑动)、长按、拖拽应用安装;支持返回、主页(Home)、菜单、电源等模拟事件;一拖4点击事件同步的响应时间<1s;一拖15响应时间<1.5s;Android设备屏幕同步到PC的响应时间<100ms。
使用IflyMultiControl,你可以做到:
- 通过PC客户端鼠标事件、Android设备控制主机,设置群控后会同步主机动作到多部从机,达到操控一台机器,控制多带机器的目的
- 针对多部设备需要安装相同应用,只需设置主控,在主控上拖拽安装,批量安装应用
- 针对项目组、内部客户、外部客户演示App功能时,可使用实时投屏功能进行项目功能演示
讯飞云测平台
公司内部的一款远程真机平台,可通过该平台预约远程设备,同时在不同的远程设备上使用自动化遍历功能或自定义的UI自动化脚本来进行兼容性测试。
使用讯飞云测平台,你可以做到:
- 通过远程设备预约使用功能,复现排查线下没有的特定机型的兼容性问题
- 通过远程真机自动化遍历功能,同时对多台云真机安装指定应用,并进行自动化遍历,根据测试报告排查是否存在设备兼容性问题