作者:杨煦

背景:

测试设计依赖于测试内容,大家对这个观点一定不陌生了。负责终端相关的测试,我们必不可少的一个测试活动就是 “兼容性测试”,而市面上机型多且繁杂,所有机型全部覆盖测试,想想就……

各位同学在做终端兼容性或者终端性能测试方案设计的时候,有没有遇到过以下烦恼?(APP 向)

一起来探索下吧!

第一层思考 --- 设备的不同参数,对软件功能、终端性能的影响

大部分情况下,我们都了解的是:手机的兼容性、性能受制于手机本身的参数,其中有一些关键参数,譬如:cpu、内存、屏幕类型(挖孔屏、刘海屏等)、屏幕分辨率、屏幕刷新率、厂商 ROM 等等。

那么这些参数,分别都影响着什么呢?本人在此抛砖引玉,说上几句:

第二层思考 --- 团子兵法曰:厂商比我更懂搭配……

除了设备参数本身,我们还需要考虑一些技术前瞻性、技术特性、软硬件搭载平衡 等方面,以便我们可以针对性的去做一些选择。春江水暖鸭先知,软件和硬件从来都是相辅相成的,我们通过各大厂商的新品发布会、品牌官网、测评博主等渠道,可以获得许多关键信息。
新机发布:厂商的新机发布,能够让我们了解各个厂商的主打机型,包括一部分概念机。主打机型用户占比一般都比较高,概念机更能够让我们提前看到未来手机可能的样子。

分水岭机型:比如 iPhone X 米奇屏鼻祖,如果仅仅测试米奇屏表现,通常选择这一款就够了。华为的折叠屏、努比亚的前后双屏、三星系列的小屏折叠屏等,都可以用这种方式去进行分类。

招牌旗舰:各家的旗舰机,性能好,系统又比较新,用户占比一般也不会低。
送上门来的测试用例:比如 iOS15 的系统,边界更正方法有修改,有可能触发断言导致软件 crash。
通过这些渠道获取信息,既能节省我们很多时间,也能让我们对后续可能出现的机型有更多的了解,省时且精准高效,岂不美哉?

第三层思考 --- 看占比

测试设计,一般优先覆盖市场占比较高的设备,因为占比越多,代表用户越多,因此保证它不发生兼容性问题就很关键。那么我们需要看哪些占比呢?

第四层思考 --- 分档次,贵在于精准,把精力用在刀刃上

我们前面说了,手机性能会对兼容性有影响,如何划分手机性能,通过性能决定要覆盖哪些手机就很重要。
手机性能主要受 cpu 和内存影响,我们可以按照 cpu 和内存,给手机划分成高中低端机。
cpu 性能好,内存大的就是高端机,性能一般就是中端机,而 cpu 比较差,内存低的就是低端机。
当然,你可能要问,什么是性能好,什么是性能差?根据测试经验,可以按照厂商的旗舰来区分。厂商每年的旗舰机一般都是高性能机,那么与旗舰配置相同或相近的,就可以划分为高性能机。

你可能还要问,旗舰机过了几年性能下降怎么办呢?
观看最近几年机型发布的数据,厂商发布的旗舰机以下机型,会用一些几年前的旗舰机配置,或者 cpu 可能是新出的,但是性能跟几年前的旗舰机 cpu 相近。
那可以将两年作为一个分水岭,两年前的旗舰机放到现在是中端机,与该旗舰机 cpu 性能相近就都可以当做中端机了,例如高通 7 系列芯片,联发科 800 系列等。
那低性能机呢?

低性能机可以按照手机本身的价位去判断,一般而言 1000 价位以下的手机性能都相对会低一些。或者看芯片,高通 6 系列芯片、联发科 700 系列等,都可以归到低端机里面。当然这是我们基于目前业务实践总结出来的,毕竟目前市面上对高中低端机也没有一个准确的说法,仅作为参考。对于机型划分,如果大家有其他建议,欢迎放到评论区里面。
划分以后,再结合占比,选出高占比,高风险的高中低端机型,需要测试什么机型就一目了然了!

第五层思考 --- 不能忘了还有这些 “妖孽”

现在很多厂商为了竞争,那可是十八般武艺全都使出来了。各种五花八门的屏幕、特殊机型定制化的特殊系统等,给测试筛选机型带来了很大的麻烦。
为了防止测试遗漏,我们还要关注一些特殊的机型。比如:折叠屏机型,不只会因为其屏幕类型的特殊性产生兼容性 bug,还会因为系统的特殊性,导致我们的 app 展示出现问题。

Android 或者 ios 版本:系统是问题大户,有些机型会因为系统的特殊性会导致功能问题。比如 ios14 和 15,就会发生同一款型,ios14 系统没有出问题,但是升级了 ios15 的机型反而出现问题。
这些琳琅满目的手机,我列举的只是一部分,但是一定要考虑进去,可不要让这些妖孽逃脱测试的法眼。

第六层思考 -- 不以测试对象特性开展的测试工作,都是 “耍流氓”

分析了这么多,不结合到测试实践可不行,我们所有的分析都要基于实际的测试场景去落地。我们在测试之前,要了解测试的核心是什么。
比如动画改版,我们就知道,测试重点是动画。比如新功能展示交互,那么就是手机交互类的功能,这就是功能。
在了解功能和参数的互相影响之后,我们还要将其结合到实际业务场景中。比如有一个新功能,核心场景是什么?是动画?还是 UI 展示,把概念结合到实际场景,我们才算分析成功,才能应用起来。
比如我要测试送礼,礼物赠送以后会展示礼物动画,那是不是就和动画的场景结合起来了?只有做到良好的结合,我们才能实际落地,选出合适且最优的兼容性机型。

设计思路:

基于上述这些内容,怎么能让笔者这种勤(懒)劳(惰)的人每次手动写方案呢~来吧!上系统!

首先,要设计系统,我们前面分析也说了,将场景和手机参数结合起来。除此之外,还要整理出一份包含所有机型参数的数据。
有了这两点支撑,算法的基础设计思路就成型了。基于场景对应的参数影响点,与所有机型参数的数据结合,相同参数的机型划为一组,筛选所有机型,保证场景识别的完善性。并且我们还要考虑发生问题较多的机型,对这种机型标记高危,这样机型的识别就相对比较完善了。
在识别完善的基础上,我们给机型一个占有率排名,占有率越高越靠前推荐,这样选择的机型就更加完善且具体了。
实施算法流程:
概览图:

• 数据收集:收集机型参数,app 手机使用占有率数据,以及内部 bug 单库里面发生问题较多的机型,放入对应的数据库中,为后续算法做铺垫。
• 数据维护:收集数据的基础上,实时维护数据,保证机型更新也可以及时维护到数据表中。由于排名数据也是定期更新的,所以需要实时更新排名数据。
• 场景维护:随着需求不断增加,预置的场景肯定是越来越难以满足新的需求,因此场景可以手工添加维护
• 推荐算法:流程图:

步骤 1:系统识别选择的场景,读取对该场景对测试有影响的高权重机型参数,。
步骤 2:将该参数与数据库中的机型数据比对,相同参数的机型划分为一个等价类,分成多个机型组,每组机型按照占有率(即之前收集的 rank 排名数据)从高到低排列,例如分类:刘海屏,1080P。
步骤 3:识别主流厂商(华为、小米、oppo、vivo)占有率最大的机型,标记并优先推荐。
步骤 4:标记该场景发生 bug 最多的机型,高优推荐,标记为高风险。
• 机型展示:将所有组机型按组展示,组名为影响参数的组合名称。

算法详解:

例如某场景,我们假设该场景为 A,对 A 场景影响较大的机型参数为 b、c。我们选择 A 场景,系统读取完该数据以后,会去开始筛选机型,所有机型参数 b 相同,且参数 c 也相同的机型为一组。这些机型理论上核心参数相同,可以作为一个等价类,划分到同一个组中,组名则按照参数 b 和 c 的集合命名。

其中,分辨率是个很特殊的参数,市面上手机分辨率不是完全相同的,可能是 2400*1080,可能是 2216*1080,但是他们都是 1080p 分辨率的手机。因此我们不能取分辨率的详细参数,而是要取 1080p、2k、720p 这种参数。

我们兼容性测试 - 机型筛选相关内容就介绍到这里了,跟着上述思路做好测试设计,你也能让兼容性 bug 无所遁形!

TesterHome 公众号投稿指南

欢迎各位技术大牛、行业专家继续向我们积极投稿,作为国内最大的测试技术社区,TesterHome 已经成立十年,成为测试人的技术交流平台和精神家园,让我们一起提升经验分享、信息互通的技术交流氛围,共同解决技术难题、共同进步!


↙↙↙阅读原文可查看相关链接,并与作者交流