一、什么是移动兼容性测试?
什么是移动兼容性测试?
市面上的设备五花八门,不同的操作系统,不同的厂商,不同的分辨率下app有时候会出现UI错位,页面显示异常的情况。
一般来说都要对app去做一些兼容性的测试。
兼容测试的场景主要有:
1、操作系统
取决于实际开发,例如只做android那就只需要考虑andorid不同系统的版本,如果ios,android都有,那android 和ios不同的版本都需要去覆盖。
2、厂商
主要针对于Android,因为android开源,不同厂商间有自己定制化的东西存在,所以也需要进行兼容测试
3、机型
不同的机型配置什么的都是不一样的,这个也是一个影响因素。
4、不同的分辨率。
5、更有甚者可以说不同的网络也是一个兼容测试的条件。
如果针对每一个不同的条件去做兼容测试,那显然是不显示的,一是不可能有这么多的测试设备,二是也不可能投入这么多的人力资源下去
二、目前使用的兼容测试策略
目前使用的兼容测试策略
1、明确知道需要兼容测试
如果明确提及存在兼容性的问题,或已知相关的系统升级引入的问题,在针对这方面的功能会针对这个条件进行不同版本的测试验证。例如android 12蓝牙权限的划分,针对这项需要去覆盖Android12和非Android12的设备功能使用是否正确。
2、未知影响
由于测试时间比较紧张,加上资源不足,在这种情况下,会针对主流的设备和系统搭配进行覆盖测试。
或者是在测试环节使用不同的设备进行覆盖测试,保证主流的设备在测试环节都有使用到,不会存在严重的问题,但不能保证没有问题,或者新上市的设备不存在兼容性的问题
但,这样的方式其实仍会遗漏一些兼容性的问题,大型一些的公司一般会在自动化测试的过程中顺道来达成兼容测试的目前。而针对一些小的项目,可能就是使用一些云测平台完成兼容性的测试,例如Testin。
个人理解兼容测试就是一个效率和质量中取均衡的问题,在没有办法去覆盖所有设备的情况下,首先的目标就是要保证自身app最多人使用的设备和系统下运行是正常的。
三、如何进行兼容性测试
如何进行兼容性测试
兼容性测试本质是功能测试,针对以上兼容性测试维度,不可能逐个测试用例在每个机型每个系统版本每种分辨率等情况下进行全部覆盖,其测试工作量过于庞大。
因此,除了用户亿级的 APP 例如微信、抖音,会搭建测试平台进行全面机型的覆盖外,其他的,对于兼容性测试维度覆盖,一般优先考虑主流机型设备,并同步考虑该机型是否有覆盖到不同厂家、系统版本、分辨率、尺寸等;若无覆盖完全,则依据品牌排名靠前的设备进行补充,并与操作系统、分辨率、尺寸进行交叉组合。例如下表_部分(仅供参考)
确认好需要覆盖的机型设备后,接下来如果在每款设备上逐一执行全量的功能测试用例,较耗时耗力,且测试效率不高。考虑到既要保证质量也要兼顾测试效率,通常做法是:
1、选择在少数主流机型上执行全量的用例,在其他兼容性范围内的设备上覆盖主要功能的用例。
2、根据待测软件特点、场景实现等可进行测试用例裁剪,类似从本地缓存获取数据的页面功能,不涉及网络请求的,可裁剪网络兼容测试用例。
3、另外,对于网络类型的兼容测试,可任选一款真机在 Wifi、2G、3G、4G 等环境下,测试 APP 主要功能对于不同网络带宽、延迟和稳定性的处理。特别是与网络强关联的功能,例如视频直播、文件传输等,需重点验证。
四、浏览器兼容性测试
浏览器兼容性测试
浏览器兼容性测试是需要在不同浏览器上检查Web页面显示,以及交互共享运行等是否正常,要测试的浏览器有:
1、Windows平台的Firefox、IE、Chrome。
2、Mac平台的Chrome,Safari,Firefox等。
3、Android系统的默认浏览器、UC浏览器等。
4、iOS系统的Safari浏览器。
跨浏览器测试一般在B/S结构的产品中常见,在测试时应该注意浏览器版本的升级,仔细阅读更新的版本说明,看是否会影响测试计划。
五、操作系统兼容性测试
操作系统兼容性测试
操作系统兼容性测试是需要在不同操作系统上检查软件功能系统是否正常。
软件可以运行在哪些操作系统平台上,理想的软件应该具有与平台无关性,有些软件在不同的操作系统平台上重新编译即可运行,有些软件需要重新开发或是改动较大,才能在不同的操作系统平台上运行,对于两层体系和多层体系结构的软件,还要考虑前端和后端操作系统的可选择性。
要测试的操作系统有:Windows系列、Mac OSX系列、UNIX/Linux系列、Android系列、iOS系列等。操作系统兼容性测试一般在C/S结构的产品中常见,要注意的是需要观察操作系统的升级是否会对测试计划产生影响,以及同一操作系统在多个版本之间的兼容性要求。
对于手持设备
操作系统版本主要考虑 Android 和 iOS 系统,其中 Android 系统具体的版本分布及市场占有率如下表示(文中数据来源于腾讯大数据研究中心):
其中 iOS 系统具体的版本分布及市场占有率如下表示:
从以上数据得出,android4.x、5.x、6.x 版本市场占比不足 7%,可以同产品开发商议,如果目前软件开发不支持旧版本的兼容,测试可选择放弃旧版本的兼容测试。针对 Android,主要考虑 7.x,8.x,9.x,10.x,针对 iOS,主要考虑 12.x、13.x、14.x。针对每个操作系统大版本下的小版本,由于工作量太大,除非有明确对于 app 的影响,一般不需考虑逐个覆盖小版本。
六、数据兼容性测试
数据兼容性测试
数据兼容性测试是在软件升级改造之后,数据结构发生改变,因此确认数据在新、老版本之间都能正常运行的测试过程,数据兼容性测试时新版本的软件要能正常,且能正确加载读取老版本生成的数据。
1、异构数据库兼容性
很多软件尤其是 MIS(管理信息系统)、ERP、CRM 等软件都需要数据库系统的支持,对这类软件要考虑其对不同数据库平台的支持能力,软件是否可直接挂接,或需提供相关的转换工具。
2、新旧数据转换
软件是否提供新旧数据转换的功能,当软件升级后可能定义了新的数据格式或文件格式,涉及对原来格式的支持及更新,原来用户的记录要能继承,在新的格式下依然可用,这里还要考虑转换过程中数据的完整性与正确性。
3、异种数据兼容性
软件是否提供对其他常用数据格式的支持,支持的程度如何,即可否完全正确地读出这些格式的文件。
七、分辨率兼容性测试
分辨率兼容性测试
分辨率兼容性测试是指在各种不同分辨率的显示器,或移动设备上是否能正常显示的测试过程。分辨率测试时要把普通分辨率和高清分辨率屏幕都考虑进测试计划中,时刻关注显示的内容是否有缺失以及图片文字有无错位等情况。
我们需要覆盖市面上主流设备的各种屏幕的分辨率、还有屏幕的尺寸,这里主要关注的是ui对各种分辨率各种屏幕尺寸的一个设备情况,需要测app的界面显示是否正常还有排版是否正常。
在不同的分辨率、尺寸的设备上,如果代码没有做适配处理,就会出现错位、拉伸、样式异常等问题。截至目前,andoid 的主流分辨率为:1920*1080,1280*720,2340*1080 等,主流尺寸是 5.x、6.x 英寸
iOS 的主流分辨率为:2208*1242, 1334*750, 2436*1125 等,主流尺寸为 5.5~6.5 英寸
八、应用软件兼容性测试
应用软件兼容性测试
主要考察两项内容:
一是软件运行需要哪些其他应用软件的支持;
二是判断与其他常用软件一起使用,是否造成其他软件运行错误或软件本身不能正确实现功能。
九、硬件兼容性测试
硬件兼容性测试
硬件兼容性考察软件对运行的硬件环境有无特殊说明,如对计算机的型号、网卡的型号、声卡的型号、显卡的型号等有无特别声明,有些软件可能在不同的硬件环境中,出现不同的运行结果或是根本就不能执行。
我们的APP不单单是在Android、iOS手机上使用,也有可能会在平板或者穿戴式设备上使用,可以根据APP的使用场景,适配不同类型的设备。
即使只在手机上使用,目前国内外手机生产厂商百花齐放,各家厂商还对自己品牌的手机做了定制化,所以我们必须在厂商定制化差异、屏幕分辨率、屏幕大小这块去考虑做硬件方面的兼容。当然还有一块容易忽略的,就是特殊硬件功能,一旦涉及到相机、蓝牙、NFC这块的硬件功能,需要多考虑兼容。
十、网络兼容性测试
网络兼容性测试
保证不同网络环境的覆盖,目前,主要考虑不同运营商的 Wifi、2G、3G、4G 下的功能情况。
网络类型的兼容测试,可任选一款真机在 Wifi、2G、3G、4G 等环境下,测试 APP 主要功能对于不同网络带宽、延迟和稳定性的处理。特别是与网络强关联的功能,例如视频直播、文件传输等,需重点验证。
1、Wi-Fi切换4G/5G网络情况下功能是否正常。
2、4G/5G网络切换Wi-Fi情况下功能是否正常。
3、有网切换无网情况下功能是否正常。
4、无网切换有网情况下功能是否正常。
十一、兼容测试平台类型
兼容测试平台类型
平台类型,人数从小到大排列:云测,内测,众测
测试平台:百度云平台、testin、TA云测试平台、腾讯WeTest
软件测试人必备的工具(常用的测试平台)
一、测试用例管理平台
jira:推荐原因,定制性很强,大公司java项目常用
JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。
redmine:推荐原因,开源,活跃,定制性很强
Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的一套跨平台项目管理系统。
testlink:流行的测试用例管理平台
TestLink 是基于web的测试用例管理系统,主要功能是测试用例的创建、管理和执行,并且还提供了一些简单的统计功能。
其他:tapd、云效、禅道、gitlab、在线协作文档
无协作模式:excel、 思维导图xmind。
二、bug管理平台
通常与用例管理平台类似
测试用例、bug都可以在平台上进行管理
关联关系设定
测试用例与bug的属性设定
三、代码管理平台
gitlab:可本地部署的git代码管理平台,行业标准
subversion:svn管理,已经过时,现在使用比较少
github:开源项目运作平台
bitbucket:与jira同属一家公司altassian
测试自动化框架Robot Framework
四、持续集成管理平台
jenkins:持续集成与持续交付的主流平台
gitlab runner:gitlab的持续交付方案
github action:github的开源方案
十二、兼容测试中的主要问题
兼容测试中的主要问题
1、App Crash:即崩溃,表现为闪退。报告中详细给到问题日志和堆栈信息。
2、进程退出:表现为闪退,报告中进程退出的过程日志(一般是am_proc_died,或am_killed),未捕捉到崩溃堆栈。
3、ANR:即无响应,报告中会详细给到问题日志、堆栈信息,以及trace文件。
4、安装失败:App进行了安装操作,但没有安装成功。
5、拉起失败:App安装成功,但无法正常启动。
6、UI异常:App界面出现UI错位,显示不全、重影、花屏、资源加载异常等问题。
7、Exception:App中有无法捕获的异常。
8、功能问题:App实现与功能设计意图不符。
十三、兼容性测试策略
兼容性测试策略
1、android设备众多,怎么挑选(不同类型设备)
根据现有市场占有率数据,挑选出top n款手机,溶蚀挑选部分使用较少的手机进行验证
2、同一android设备,存在多种操作系统版本,如何保证测试覆盖全面(不同操作系统版本)
测试设计过程中考虑每个版本差异,并给出差异分析报告。优先满足每款手机主流操作系统
做一些调研,当前市场各版本和品牌的使用率
3、不同设备的分辨率不同,对界面的展示效果不同,怎么进行兼容性测试(不同屏幕分辨率)
与开发讨论在不同的分辨率下系统的适配方案
列出重点测试的几类分辨率
在主要的机型上覆盖
4、不同厂商的ROM(只读存储器)不同,app在调用过程中会出现很多不兼容问题
分析各个厂商ROM存在哪些不同以及系统在使用过程中的调用方式
对差异性进行评估,验证主流厂商的ROM,并分析各个版本的ROM差异
5、(不同网络类型)在不同的网络类型下,对APP的功能的影响
分析不同网络类型的差异性
在前后台交互过程中在不同网络下的差异,并讨论内部实现机制
同时需要分析各个类型的设备在不同网络类型下的区别
6、(不同类型app)手机上安装多种APP,APP之间的兼容性问题
策略:
挑选主流APP与当前APP同时运行
测试多种APP之间是否有影响
十四、兼容性测试总结
兼容性测试总结
通俗讲,是指同一软件在不同平台上是否能够正常运行并显示的测试,这个平台泛指不同操作系统、不同浏览器、不同屏幕、不同分辨率和不同带宽等。
如果是在电脑上做B/S软件的兼容性测试:通常是指在不同操作系统(比如windows、MAC和linux等,每个还包含多个版本)、不同浏览器(比如IE、chrome和firefox等)、不同分辨率和不同带宽的测试;
如果实在电脑上做C/S软件的兼容性测试:通常是指在不同操作系统(比如windows、MAC和linux等,每个还包含多个版本)、不同分辨率和不同带宽的测试;
如果是在手机上做的APP兼容性测试:通常是指在不同操作系统(android、ios等,每个还包含多个版本)、不同厂家手机(华为、小米和苹果等)、不同屏幕尺寸和不同带宽等方面的测试。
兼容性测试到底需要考虑哪些方面的兼容性,以需求文档稳准,如果需求文档没有明确可以找需求人员协商确定。另外兼容性测试属于非功能性测试,我们拿到一个产品时,应优先保证功能性测试的验证,再去兼顾其它非功能性测试,比如兼容性、安全性、性能、可用性和可靠性等方面的验证。