移动端精准测试简介

本文介绍了精准测试的基本概念,重点讲述了移动端精准测试的现状、整体架构、工作流程以及面临的挑战,包括优化推荐算法、测试用例精简和加强与开发的合作。作者强调了精准测试在提高测试效率和质量中的作用,以及未来的发展方向。
摘要由CSDN通过智能技术生成

 在测试领域每隔一段时间,就会有一些主流的测试技术,比如说:接口自动化,WebUI, AppUI自动化,然后就是测试平台的开发,各类专项测试(性能,安全),再到前几年的手机集群云测平台,现在的流量回放结合机器学习,人工智能处理用例,图像识别,还有就是精准测试。这就要求我们要持续学习,否则就会落伍。这两年在公司有幸接触到了比较流行的精准测试,并负责移动端精准测试的建设,现在已经小有成就,准备写个文章,总结一下。

一,精准测试简介

    精准测试是基于源代码变更分析,结合一些分析算法,从而确定改动代码影响的范围,设计测试用例进行针对性测试,一方面可以提升测试效率,另一方面精准测试还可以将测试用例与程序代码之间的逻辑映射关系建立起来, 而这个过程则是通过工具去采集测试过程执行的代码逻辑及测试数据。

如果你去网上搜索相关信息的话,也能看到非常多的内容,如:

1,精准测试技术十年发展漫谈:星云的精准测试 https://testerhome.com/topics/34557;

2,阿里/蚂蚁文件级RTS:http://users.ece.utexas.edu/~gligoric/papers/GligoricETAL15Ekstazi.pdf

3,字节跳动SmartEye:https://mp.weixin.qq.com/s/wUrm8gycgLHhCSHbpG8Hkw

4, Facebook Predictive Test Selection:https://engineering.fb.com/2018/11/21/developer-tools/predictive-test-selection/

https://research.facebook.com/publications/enhancing-genetic-improvement-of-software-with-regression-test-selection/

5,学术界Hybrid Regression Test Selection:http://lingming.cs.illinois.edu/publications/icse2018.pdf

6,走出回归测试困境,爱奇艺精准测试体系建设:https://xie.infoq.cn/article/781b1a4fa4aca12e38caf86aa

    基本的原理和实现逻辑都差不多,没有多高深的东西,至于为什么要做精准测试,精准测试要解决的问题等,在此就不再赘述。但是真正做起来的时候就会发现,中间的太多的实现细节,有很多技术难点需要进行攻克。

二,移动端精准测试

1,移动端精准测试现状

    目前做服务端精准测试的较多,原因是服务大多是使用java开发的,语言比较集中,遇到问题方便处理;同时服务端可以借助于接口自动化,快速实现用例推荐,提高测试覆盖率,投入产出比较较高。而移动端就比较复杂了,具体表现在:

(1)开发语言较多:如Android就有java , kotlin; iOS的有OC, Swift;每种语言就是不同的体系,相应的工具,处理方案都不相同;

(2)开发模式复杂:如果一个应用采取原生的开发模式,还相对简单点;混合模式的开发普遍存在,如原生模式+Flutter+H5等,OC与Swift混合开发,不说其他的,就算是只采集覆盖率,就相当麻烦。

(3)手机设备系统间,版本间的相应影响;一个好的应用要兼容常用的设备系列,这有相当多的开发同学进行兼容处理;而做精准测试想要做到兼容设备,兼容应用其中的工作量是非常大的,所以很多现有的移动端精准测试会针对特定的产品和设备进行开发。

(4) 不同厂商定制的系统。现在不少厂商都号称自研手机系统,虽然底层都是Android系统,但是为了显示与其他人不同,都会做一些定制化的东西,反而让系统的兼容性不好,很多原来的工具无法使用。Android系统的升级,兼容性做的也不好,比如升级到Android13后,原来的蓝牙相关的功能就会受到影响。

2,精准测试整体架构

    经过两年左右的开发,差不多已经实现一套完整的精准测试体系,以最小的成本在产品中引入精准测试,在测试同学无感的情况下进行覆盖率测试;在测试同学关联了相应用例的基础上,自动化实现整体精准测试体系的测试与分析。移动端精准测试整体架构如下:

图片

大致分为如下几个模块:

  •  全流程功能:可提供全流程的打包平台打包,自动注入覆盖率SDK,链路分析,用例推荐,自动执行推荐的AppUI自动化用例,生成推荐的手工用例集,以及生成AppUI执行的用例报告。
  •  覆盖率分析:借助于覆盖率SDK采集覆盖率数据,提供支持各个需求的覆盖率测试,每天,每个人的用例执行覆盖率情况;同时支持测试阶段跨版本覆盖率合并,生成回归测试阶段覆盖率报告。
  •  关联用例:支持通过用例管理平台关联手工用例,同时可以通过DeepLink关联AppUI用例。用例关联后可生成正向,逆向追溯关系。
  •  链路分析:根据不同的分支,版本,借助于java-callgrpah和clang二次开发生成调用关系,最终生成diff对应的调用链路,用于评估开发代码的影响范围,指导业务同学编写用例。
  •  用例推荐:根据diff情况,自动推荐出与本次diff相关手工和AppUI自动化用例,帮助业务同学进行测试范围评估,精简测试用例,缩小测试范围。
  •  Android/iOS Agent :通过不同的代理服务,解决覆盖率报告生成,覆盖率文件解析/合并,用例关联等具体的操作,由于Android和iOS的处理数据对系统要求不同,必须分开进行处理。
  •  覆盖率SDK: 基于jacoco , XcodeCoverage和Swift本身的覆盖率采集功能 ,实现自动注入覆盖率采集插件,覆盖率数据的收集与上报,用例关联时接收用例信息与控制覆盖率的采集。
  •  调用链路服务:Android通过反编译apk,解析Class文件 ,借助于java-callgraph.jar工具生成Android的调用关系数据 ,并生成树型调用链路。iOS通过优化clang,加上解析脚本生成调用关系数据,导入到CCG服务生成静态调用链路,并存储调用数据,提供调用链路查询,分支或自动对比不同的函数列表等功能。

3,精准测试工作流程

    通过对精准测试核心模块的建设,开发了精准测试平台来完成相应的工作流程,打通与其他相关平台的交互,最终形成一套完整的移动端精准测试体系。具体的工作流程如下:

图片

最后通过平台化的页面,为测试同学提供更加简洁的操作,更加清晰化的数据效果展示。

4,移动端精准测试的使用

移动端精准测试已经日常测试工作流程中投入使用,任何一个需求都要走精准测试环节。

(1)需求测试评估

  • 对于新的需求,可以根据覆盖率评估测试的效果,通过增量覆盖率来分析测试遗漏,补充测试用例,以提高测试覆盖率。对于日常需求,增量覆盖率必须达到80%以上,对于覆盖率低的要给出分析结果 。
  • 在发版环节,走精准测试全流程,根据与上一个版本的diff结果,自动推荐出回归测试的测试用例集。然后测试同学再根据调用链路分析,测试用例集执行的覆盖率,来评估回归测试的效果。同时可以补充或是反馈推荐出来的测试用例,使回归测试达到最佳效果。

下面是某周的需求测试数据:

图片

 根据需求增量覆盖率的数据,来评估需求测试的进度和效果,分析测试的范围。

(2)测试质量评估

    对于所有的精准测试情况,可以从数据大盘中进行分析,从而来评估一段时间的测试质量。

图片

(3) 精确定位回归范围

     常规的App发版前都会进行checklist的回归,一个中型规模的应用差不多也要几百条测试用例。发版前回归checklist是为了防止新功能对原来的功能产生影响,通过精准测试可以精准定位本次版本修改的代码 ,通过调用链路来评估新功能的影响,结合调用用例与代码的追溯关系,在一定的推荐算法的推荐下,以最少的测试用例集来达到最大的覆盖率范围。

    我们常规的checklist有两千多条用例,通过精准测试的推荐用例,每次发版回归可以精减50%以上的用例,而增量覆盖率达80%以上,极大的增加了发版的信心。随着使用频率的增量,用例与代码关联更加精准,节省的人日会越来越理想。

三,总结

     目前精准测试已经在日常测试工作中进行使用,在测试中对每个需求的质量数据更加清晰,提高了测试效果,增加测试同学的信心;但是还没有更好地发挥出精准测试的效果,需要在以下几个方面增加投入的精力:

1,优化推荐算法

    由于移动端的特点,加上测试同学对业务和代码的理解程度不同,在用例录制环节会录制较多的与测试点关系不大的前置和后置操作步骤。所以在整体精准测试使用的阶段,发现用例推荐环节准确率不够,从而在降低测试人员的工作量上没有达到理想的状态。后续考虑引入机器学习相关算法,增加测试用例的数据指标,让用例推荐更加准确,辅助测试同学的测试更加精准。

2,测试用例精简

    测试同学在编写用例的,如果没有按要求来写,会存在大量的重复操作,用例覆盖路径几乎相同,就最后几步不同,对于这样的用例,可以根据用例执行过程中对代码的覆盖,计算用例的相似度。通过相似度来供测试同学进行用例精简,对于相似度高的用例进行合并或是删除,以达到用最少的用例覆盖最多的功能。

3,加强与开发的合作

    增强与开发人员的合作,通过链路分析来界定需求修改的内容,以便更精确的编写测试用例;通过增量报告来分析测试效果,或是定位bug。当然精准测试平台也需要根据大家的使用情况,来提供更多方法和维度分析手段,以便更好地为大家服务。

  • 31
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值