ArchSummit全球架构师峰会全新主题——「智能进阶·架构重塑」>>> 了解详情
写点什么

兼容性测试为什么非做不可?| 对话优测技术团队

  • 2019-10-15
  • 本文字数:6023 字

    阅读完需:约 20 分钟

兼容性测试为什么非做不可?| 对话优测技术团队

所谓兼容,是指硬件之间、软件之间、软硬件之间相互配合的程度。而兼容性测试,是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操作系统平台上、不同的网络环境中是否能正常运行的测试。当下无论是 Android 系统还是 iOS 系统,一直都在不断更新升级,这无疑给移动终端的兼容性测试带来极大的挑战。为此,InfoQ 专访大连市世纪鲲鹏科技有限公司兼容性测试技术团队,深入了解优测(Utest)如何实现自动化全面兼容性测试,并将采访整理如下。 2019 年 5 月,谷歌再次更新 Android 版本占有情况,从更新数据可以看到,Android 8.0/8.1 和 Android 9.0 的市场份额在持续走高,其原因除了是多款新机上市带动之外,也跟不少厂商积极跟进了新系统的适配有关。但不可忽视的问题是,Android 系统的碎片化问题依然非常严重。


什么是碎片化?举个例子,1000 个 Android 手机制造商拿到 Android 内核之后,可以制造出 1000 种搭载不同硬件平台、界面的 Android 手机,虽然它们仍是基于 Android ,但其实已经不再是原来的 Android 了。经过一系列改造之后,每个手机制造商都拥有一个“独立”的 Android ,这就是碎片化。碎片化会导致的常见问题有:比如,想下载一款应用,但是每次下载都失败;手机一登录 App 就死机,只能删掉;每次进行到游戏最关键的环节就闪退……这些问题归根结底就是 App 的适配性问题。用户设备种类那么多,产品如何匹配?如何保证产品在不同平台及版本、不同网络制式、不同分辨率和机型都有很好的用户体验呢?


这就是兼容性测试要解决的问题。

移动端 App 兼容性测试为什么非做不可?

目前智能手机格局已经是 Android 和 iOS 双强称霸,Android 和 iOS 分别有不同的手机设备,其中 Android 因为开源、厂商多样、价位、机型丰富等原因,已经成为份额上的绝对领导者。由于 Android 系统的源码是开放的,因此只要遵从相应的协议,就可以对源码进行修改。目前,国内很多手机厂商是基于 Android 源码改造成自己对外发布的系统,比如小米手机 MIUI 系统、华为手机 EMUI 系统、OPPO 手机 ColorOS 系统等,虽然只有谷歌 Nexus 和 Pixel 系列才是原生系统,但是目前国内很少人用。



由于每个厂商都修改过 Android 原生系统源码,这里就会出现一个问题,即 Android 碎片化问题。碎片化问题的本质就是不同 Android 系统的应用兼容性不同,哪怕是搭载完全相同的硬件,不同品牌的手机在运行速度、软件兼容上都有所区别。如果是针对一台或者几台手机进行兼容性测试,还远远达不到用户的要求。


App 兼容性测试一直以来被认为是一个高成本、耗时低效、耗人力的测试工作,但兼容性测试又是一项必须要进行的测试项目,因为有不同的机型、系统平台、分辨率、网络、厂商、数据兼容以及不同兼容问题场景需要进行覆盖。现在很多公司其实并没有专门设置兼容性测试的岗位,大部分是测试人员“兼职”去做兼容性测试。


通过传统的方法去测试几款典型设备来保证自家 App 的兼容性是非常困难的,在开展兼容性测试前,最好掌握现网的各种最新设备信息、排行、占比等情况,对这些设备进行分析及分类,能够引入各类自动化开展测试,并且将 CI 及自动化测试、异常检测、提单、覆盖率等过程相结合,来协同提升测试效率。要开展这些前期的工作,投入会非常巨大,包含信息的获取、环境的搭建、设备的管理维护、各方面的关联等,而这些其实又不是对应业务的业务需求,所以性价比最高的方式还是尽量将这些交给有经验的测试服务提供商来解决。优测目前的支持情况如下图所示。



优测为应用、游戏,H5 混合应用的研发团队提供产品质量检测与问题解决服务。不仅在线上平台提供「全面兼容测试」、「远程真机租用」等多种质量检测工具,更为 VIP 客户配备专家团队提供定制化综合测试解决方案。真机实验室配备上千款手机,覆盖市面 98% 主流机型,7*24 小时在线运行,覆盖亿级用户。

影响兼容性测试的因素有哪些?

提到兼容性测试,很多人常常把它与性能测试和功能测试相混淆。事实上,功能测试只关注 App 本身的逻辑功能,性能测试关注 App 本身的性能指标(如 CPU、内存、FPS 等),而兼容性测试侧重在软件品质特性的可移植性,其主要包括:


  • 适应性:软件产品无需作相应变动就能适应不同环境的能力。

  • 易安装性:尽可能少地提供选择,方便用户直接安装。

  • 共存性:软件产品在公共环境中与其他软件分享公共资源的能力。

  • 易替换性:软件产品在同样的环境下,替代另一个相同用途的软件产品的能力。

  • 可移植性的依从性:遵循相关的标准。


有哪些因素会影响兼容性?


  • App 端的编码:例如,targetSDK28 增加了一个 API,在 APP 编写的时候开发人员没有考虑到 targetSDK28 以下的 Android 版本没有该 API 的场景,会引发 Crash 。

  • 手机 / Pad 环境:兼容性最最重要的就是考虑软件产品适应不同环境的能力。而手机 /pad 就 APP 所接触的环境,手机 /pad 环境的类型越多,出现问题的几率就越高,质量风险就越大。

  • ROM 版本:不同的 ROM 版本都会有不用的功能 Android 版本从 4.X~9.X,定制的 ROM 有华为、OPPO、VIVO、三星、魅族等多个厂商,在功能上都有不同的差异。

  • 手机硬件:因厂商、系列、型号不同,其硬件更是参差不齐。

  • 用户行为:App 的不同导致用户行为习惯的不同,这也造成了大量 Bug 的产生。优测多年来一直与手机 QQ、管家、音乐等不同领域的亿万级用户的 App 合作,掌握了丰富的用户行为的经验,能够为 App 兼容性测试提供精准的设计方案,保障强有力的数据技术支持。


当下,移动终端厂商众多,兼容性测试要覆盖的品类更是数不胜数,要做到所有机型的全覆盖兼容性测试既不经济,也不可能。针对这一痛点,优测的技术专家表示,世间任何事物我们都无法穷尽,兼容性测试亦是如此。优测具有专家级的兼容性测试整体方案,其中的机型选取方案,通过 TOP 用户数排行选取(同类型合并)、SDK 覆盖(大版本特性(向下兼容))、厂商覆盖(整合系列,如华为 Mate 系列、运营商)、重点机型覆盖(分辨率使用人数 TOP 排行)、分辨率覆盖(以往问题集中机型)。通过优测的机型选取方案整合机型属性信息,在保证质量的情况下,能降低适配机型数量的 50%左右。

优测如何破解兼容性测试的难点?

App 兼容性测试的重要性不言而喻,但问题是,企业在做 App 兼容性测试会面临一些难点,比如兼容性测试经验不足、测试人力不足、缺少测试设备。



那么优测是如何解决这些难点的?


首先在设备方面:优测几乎涵盖了市面上所有的 Android 和 iOS 设备,包括手机和 Pad;这些设备上可以覆盖所有 App 端产品需要的机型,而且还在持续更新,帮助企业有效降低采购成本。从设备维度分类的角度,优测可以获取来自腾讯灯塔、历史经验分析、以及数百个行业现象级 App 的机型数据,发现问题命中率高,定位精准。


其次在人员方面:优测拥有百余人的测试团队,核心骨干均具有 10 年以上的测试行业经验,无论是从项目管理人员、自动化框架人员、自动化服务开发人员,还是测试方案设计人员、测试用例编写人员、测试执行人员等,都有非常完整的人员模型,帮助企业提供资深的团队服务。


在机房方面:优测可实现千款真机机房管理,24 小时运维服务,提供远程的真机使用,远程的机房输出能力。


能力方面:优测具备成熟并完备的测试体系,可提供多种测试方案,具备自动化、远程真机、设备分享,设备远程调度等能力。


最后是经验优势:优测多年来已经服务上百个 App,包括亿级用户量级的产品(如 QQ、管家、同步助手、应用宝、空间等),具备极为丰富的兼容性测试经验,在实践过程中积累了大量的行业数据指标和各类不同领域的 App 数据。


兼容性测试的分类与权衡 优测的兼容性测试服务主要分为三类:机型适配测试、ROM 适配测试、自动化测试。机型适配测试可以理解为对产品功能逻辑的兼容性测试,整个优测技术团队在实践中,会分析产品需要适配的功能点,通过机型来智能选取获取需要适配的测试机型,配合测试专家针对产品功能点制定的测试方案进行测试,达到全面覆盖功能、深入挖掘 Bug 的效果。


ROM 适配测试是针对手机厂商或谷歌系统差异特性可能对产品造成影响的功能进行测试,会有专项开发调研系统的变更特性,分析功能影响范围,测试专家输出测试方案对相关功能进行测试,快速发现问题,保证产品体验。


自动化测试的用途是把以人为驱动的手动测试转化为机器自动执行测试的一种方式 ,用于快速验证产品基础功能,包括安装、启动、卸载、控件遍历等,发现产品是否存在严重的 crash 问题。


提到自动化测试,有些厂商通过机器人来模拟人类操作来实现自动化兼容性测试。根据测试金字塔模型可知,虽然通过 UI 测试的成本更高,反馈更慢,但测试结果的置信度也更高。那么优测是如何做到自动化测试呢?



优测技术专家表示, 一般来说,通过外一层的机器人模拟真实操作都是用来做一些有针对性的测试,比如规则统一的重复操作、一些暴力测试等,其优点是可以跨平台,只要录制规则、点击坐标就可以适配一系列设备;但这样的做法也有其劣势,如机器人自身的判定误差导致的坐标偏移等问题。


优测目前采用的还是基于软件接口层面的模拟操作,目前这种方式已经完全满足现有的自动化需求。而 UI 类自动化测试的成本确实不小,但考虑到其可以完全反映真实操作,权衡来看 UI 测试仍是不可或缺的。优测通过 case 管理、case 分层分级、有效的 case 封装,以及智能遍历及 AI 接入等一系列操作提高 ROI 。另外,对于企业而言,可以尽量多地开展单元测试、接口测试等对环境因素要求小的测试,从而提升自己 App 的质量。


机型适配测试解决的痛点和使用场景 机型适配测试解决的主要痛点是:


  • Andriod 碎片化严重,缺少相关设备;

  • 企业内部人员编制不足,缺少测试资源;

  • 产品质量要求很高,缺少相关人才。


其使用场景主要有以下两类:


  • 初创团队


具体表现为:缺少相关测试机型;缺少专业测试团队;产品质量有一定要求;节约成本,费用不足。


  • 千万级用户量产品团队


具体表现为:缺少相关测试机型;需要专业团队快速响应,提升效率;产品质量要求很高;缺少专业兼容性测试人才。



优测在机型适配测试上的技术亮点:


  1. 专业本地测试团队,团队成员均有多年腾讯亿级用户量产品(如 QQ、管家、同步助手、应用宝、空间等)测试的经验,覆盖多个产品领域。

  2. 深耕兼容性测试领域 10 年,积累了大量的兼容性测试经验,可以根据产品功能快速输出定制化测试解决方案。

  3. 优测有稳定的腾讯供应商渠道,机型采购周期短,更新快,机型覆盖全面,极大缩短 Bug 生命周期。

  4. 严格遵守腾讯产品质量标准,严格把控产品质量。


优测如何做定制化 ROM 适配测试? ROM 测试主要解决以下痛点:


  • 产品功能对纵向系统版本的兼容;

  • 产品功能对横向厂商版本的兼容;

  • 问题发现后,找不到合适的方案解决。


针对这些痛点,优测给出的 ROM 测试方案如下:



  • 分析 Android 各大版本,各大厂商(华为、小米、OPPO、vivo 等)ROM 之间的差异功能,整合成 ROM 功能点,针对 APP 的具体功能,分析 ROM 对功能的影响范围;

  • 测试专家根据影响范围制定相关的测试解决方案;

  • 测试人员反馈问题,终端开发排查问题,输出解决方案;

  • 测试人员问题回归,同步主干代码,完成服务闭环。



自动化测试的分类与常见技术难点 自动化测试主要分为 3 种:


  • 浅度自动化测试:简单的启动、安装、卸载以及轻度遍历测试,提供截图和 log 日志;

  • 深度自动化测试:通过特定算法遍历 App 70% 以上控件,并提供截图和 log 日志;

  • 定制化脚本测试:支持 UI2 的自动化测试框架,提供编写自动化脚本能力。


标准自动化测试的流程如下图所示。



自动化测试常见的技术难点与解决思路:


  • 测试框架存在机型适配问题:通过适配大量机型,积累了大量的技术经验,做到框架兼容性高,稳定性高;

  • APK 安装过程系统弹窗无法处理:框架测试过程中集成单独辅助点击服务,做到手机系统弹窗自动点击;

  • APK 控件无信息导致无法获取:集成控件 xpath 属性、图像识别,做到无属性控件的获取。

各个兼容性测试服务商“虎视眈眈”,优测有何不同?

随着硬件的发展,新的移动设备可能会加入新的元件,如之前的 GPS、NFC,新发布的 iPhone 内置的全新 A13 仿生芯片等,这对兼容性测试的影响很大。我们知道,智能移动设备由非常多的元器件、传感器构成,这些部件由很多厂商提供,虽然一些共有的标准是相同的,但内部的函数实现有可能不同,这就会导致在函数调用时产生误差值,从而提升用户的体验。


经验和数据积累对于兼容性测试至关重要,只有在该领域深耕,并能够积累大量兼容性测试经验,才能帮助用户有针对性地发现及解决该类型的问题。这一点,优测的优势不言而喻。


最近几年 DevOps 非常火,毋庸置疑的是, DevOps 已经大大改变了测试人员和开发人员的软件开发和测试方案。但是 DevOps 在质量保证中的作用也在被讨论和质疑。优测如何应对 DevOps 呢?优测技术专家表示,传统类的兼容性测试一般是在集成测试阶段进行,但这会出现一个问题,就是发现问题的时间点滞后,给到测试的时间也很有限。


优测致力于提升整个兼容性测试链条的每个环节的效率,可以很方便地接入 App 的 CI,在代码变更时主动触发自动化测试,优选对应设备运行指定 case ,同时支持过程中的异常监控。发现问题后,根据代码和研发对应关系,自动提单给到对应研发人员,提单包含本次构建线、发现问题设备信息、时间、log、截图等信息,并可以提供对应的设备远程调试入口,方便开发回溯问题。测试结束后发送对应的测试报表给到相关人员了解版本质量,测试完毕后还可以根据代码覆盖率数据进行精准判定,这就极大地提升了测试效率,降低了企业成本。成本在企业考量测试方案时占了很大的比重。由于手机产品及其型号、操作系统版本及其升级补丁、系统及软件配置的多种多样,而它们的组合近乎是一个天文数字,要达到测试的全覆盖是不可能的任务。如何以更低的成本达成更理想的测试效果呢?


优测技术专家表示,做任何测试肯定要讲究投入产出比,优测会尽量用性价比最高的方式去开展测试,像手机型号、系统、厂商、软件配置等都属于一个数据积累和优选的过程,优测每月都会对现网的智能移动设备做统计分析,分类各维度的 TOP 排行榜,如 SDK 分布排行、分辨率排行、手机品牌排行、各设备用户量排行、各厂商型号用户量变化趋势等信息;同时,根据历史 Bug 数据,优测会智能分析出不同类 App 可能在哪些设备上更容易产生问题;将这些设备筛选出后可以通过自动化的方式同时在大批量设备上运行,从而在短时间内做到测试收益最大化。优测在做兼容性测试服务的过程中也遇到过困难。技术专家提到,优测曾为某一世界 TOP500 强企业做兼容性测试,在现场解决问题时,出现了一个情况,就是技术团队需要携带或来回邮寄大量的手机,这大大增加了时间的成本,也影响了解决问题的速度。怎么办?优测技术团队痛定思痛,开发了全国首个远程设备分享,实现云真机远程调试。现在优测的测试服务具有设备远程分享和远程调试的功能,能够在跨地域、甚至跨国籍团队之间,瞬间使用手机进行远程验证与调试,这大大节省了时间成本,加速了问题解决的及时性,并且发版不受影响,得到用户的高度好评。


2019-10-15 14:016018
用户头像

发布了 124 篇内容, 共 42.8 次阅读, 收获喜欢 176 次。

关注

评论

发布
暂无评论
发现更多内容

Java 反射 getClass()

爱好编程进阶

Java 面试 后端开发

JAVA 百度地图 API

爱好编程进阶

Java 面试 后端开发

Java反射

爱好编程进阶

Java 面试 后端开发

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day26

爱好编程进阶

Java 面试 后端开发

走向数据科学:在字节跳动广告投放这么干

字节跳动数据平台

大数据 字节跳动 ab测试

java冒泡排序的实现以及优化

爱好编程进阶

Java 面试 后端开发

30个实用SQL语句,玩转PostgreSQL

慕枫技术笔记

数据库 后端 4月月更

进程内优雅管理多个服务

万俊峰Kevin

微服务 RPC web开发 go-zero Go 语言

Java IO

爱好编程进阶

Java 面试 后端开发

一起来试玩!在线可编程交互的实时音视频 Web SDK 入门教程

声网

音视频 教程

java高级用法之:JNA中的Structure

程序那些事

Java 程序那些事 JNA 4月月更

关于 WordPress 你了解多少?

海拥(haiyong.site)

4月月更

Flink整合ElasticSearch详细指南及踩坑记录

五分钟学大数据

4月月更

DevOps转型到底值不值?

华为云开发者联盟

DevOps 敏捷 敏捷开发 软件工程 DevSecOps

for(;;)和while(true)的区别

爱好编程进阶

Java 面试 后端开发

Java并发编程(实战)

爱好编程进阶

Java 面试 后端开发

K8S太火了!花10分钟玩转它不香么?

爱好编程进阶

Java 面试 后端开发

J2EE基础集合框架之Map集合

爱好编程进阶

Java 面试 后端开发

java8 Stream API及常用方法

爱好编程进阶

Java 面试 后端开发

java并发锁ReentrantLock源码分析二之Condition实现原理

爱好编程进阶

Java 面试 后端开发

Elasticsearch聚合学习之三:范围限定

爱好编程进阶

Java 面试 后端开发

混迹过超多开源社区的黄之鹏老师,为你解码AI开源的技术应用与未来趋势

OpenI启智社区

Java-进阶:多线程2

爱好编程进阶

Java 面试 后端开发

龙蜥大讲堂:如何利用硬件SIMD指令提升Java程序的性能?|第14期

OpenAnolis小助手

Java simd arm sig 龙蜥大讲堂

IDEA-2021首个大版本发布,Java开发者感动哭了(附新亮点演示

爱好编程进阶

Java 面试 后端开发

DDD实战(8):冲刺1战术之聚合设计

深清秋

DDD 软件架构 生鲜电商系统 4月月更

鲸智WhaleBI 平民化数据消费还业务以真正的“数据自由”

鲸品堂

方法论 数据 数据治理

如何设计一条稳定的应用交付流程?|云效工程师指北

阿里云云效

云计算 阿里云 云原生 持续交付 应用交付

Java 结合实例学会使用 静态代理、JDK动态代理、CGLIB动态代理

爱好编程进阶

Java 面试 后端开发

Java多线程-死锁的出现和解决

爱好编程进阶

Java 面试 后端开发

Java应用日志如何与Jaeger的trace关联

爱好编程进阶

Java 面试 后端开发

兼容性测试为什么非做不可?| 对话优测技术团队_大数据_关贺宇_InfoQ精选文章