兼容性测试是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能够很友好的运行的测试。–【百度百科】
为什么要做兼容性测试
目前碎片化十分严重,尤其是安卓设备。安卓设备碎片化、品牌碎片化,大家熟知的安卓品牌都有好多家,每家可能还有定制的系统,都给我们适配带来了不小的挑战。除了上面的碎片化,当然还有系统版本碎片化,屏幕碎片化等,为了给用户更好的用户体验,做APP的兼容性测试,还是非常有必要的。
兼容性影响因素
用户
硬件
软件
技术
网络
影响因素大致可以分为以上几类,我们对所测APP做兼容性测试时,可以从以上方面去考虑。
1、用户
我们需要依据自身APP用户群体的特征以及使用习惯,去做相应的兼容。比如用户群体如果大多是老人的话,可以考虑大字体的适配。比如针对旅游人士,可以考虑过程中网络的状况。如果拥有大量海外用户,可以考虑多币种、多语言、多度量、时区问题。
2、硬件
设备类型(手机、平板、穿戴式设备)
生产商(安卓手机存在每个厂商的定制化差异)
显示屏(屏幕大小、分辨率)
特殊硬件功能(NFC、蓝牙、相机、定位功能等)
3、软件
操作系统
浏览器内核
伴生应用
4、技术
RN、H5、native
开发语言(oc、swift)
5、网络
2G、3G、4G、wifi
兼容各种网络下APP的表现
iOS APP兼容性
屏幕分辨率
屏幕尺寸(含异形)
操作系统版本
Xcode版本
开发语言
第三方库或SDK
安装、升级
Android APP兼容性
屏幕分辨率
屏幕尺寸(含异形)
Android版本
系统版本
处理器架构(arm、x86)
开发语言(Java、koltin、混合)
第三方库或SDK
安装、升级
H5兼容性
CSS样式兼容(一些属性的浏览器标示前缀没有添加,导致默认浏览器不认识这个属性,所以样式错乱。有些布局不灵活,样式边界处理不好,导致宽窄屏显示异常)
JS兼容(主要是浏览器或者系统版本,新的js api不支持,但是没有做降级处理)
第三方库或SDK
框架(react、vue……)
缓存(sessionstorage、localstorage)
哪些场景需要做兼容性验证
UI显示
多次快速点击
拉起虚拟键盘挡住输入区
虚拟物理按键收起与显示
多个输入框来回切换
控件焦点热区文体
前后台、多个应用切换
指纹识别和faceid等
框架升级
网络
新老版本兼容
第三方依赖库或者SDK升级
前后端版本兼容
如何做兼容性测试
主要分为内部和外部。内部由测试人员自己覆盖主要机型。机型选取的原则是,根据自己APP用户的机型,选取至少top10进行人工兼容性测试。内部还可以进行的就是UI自动化测试。外部可以借助云测平台,比如testin、testbird等。
软件测试分为手工测试和自动化测试,手工测试分为功能测试、性能测试、接口测试几个方向,自动化测试又分为功能自动化测试、性能自动化测试、接口自动化测试几个方向。每个方向用到的测试工具都不尽相同:一、Selenium
Selenium是常用的功能测试工具之一,它是一套完整的 Web应用程序测试系统,包含了测试的录制、编写及运行和测试的并行处理。这个工具的主要功能包括:测试与浏览器的兼容性,测试系统功能。
二、Loadrunner
Loadrunner是一种预测系统行为和性能的负载测试工具,它通过模拟大量用户实施并发负载及实时性能检测的方式来确认、查找问题,对整个企业架构进行测试。
三、禅道
禅道是一款国产开源项目管理软件、支持产品管理、项目管理、质量管理、文档管理等。
四、Jmeter
JMeter是Apache组织开发的基于Java的压力测试工具。用于对服务器、网络或对象模拟巨大的负载来做压力测试,在不同压力类别下测试他们的强度和分析整体性能。
五、Postman
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。
六、Fiddler
能够支持所有浏览器、系统和平台的调试代理。位于客户端和服务器的中间,它能记录所有客户端和服务器的请求响应。