一 开发背景
传统的测试范围广版本频繁,测试不知道变更的地方在哪里,通常情况下要么测试范围定小了,遗漏了,要么测试范围过大,付出过多的代价。测试人员需要明确测试对象,找到版本间的差异以及差异部分所影响的功能。
精准测试核心思想是识别版本间代码变更并推送预先对应好的测试用例和历史故障,做到改了哪里测哪里,并使用这些量化数据进行数据挖掘促进测试过程不断完善。
二 系统总体架构
该系统已落地实际业务,有效提升了测试质量和测试效率。
前端人机交互JavaScript实现,后端业务逻辑由python实现,Android插桩功能由c++实现。
三 核心技术点
- 前后版本对比:对比版本文件前后代码变更情况列出所有变更代码
- 代码插桩录制:代码插桩录制可以记录代码运行过程中的函数调用并保存为用例与代码的关联关系。运行一个测试用例以后,通过录制工具可以自动记录这个测试用例执行过的代码
- 根据1和2,把变更的代码关联测试用例,得出推荐要测试的用例
- AI代码分析:AI大模型在训练过程中学习了海量的开源代码例如linux代码 Android代码,所以能理解相关的代码变更并给出详细的测试建议
四 效果收益
1.提升测试设计质量
根据各模块代码覆盖率情况,找到未覆盖用例的函数或者函数分支补充测试用例。
当某个场景的代码覆盖率不高的时候,我们可以反向追溯导致覆盖率不高的用例设计方案存在什么缺陷,从而提高用例设计水平。每条测试用例对应的代码都可以进行量化分析和统计函数覆盖,分支覆盖,用例冗余度都是质量评价指标。
2.最小用例集
由于用例存在大量冗余,可以根据代码覆盖情况优化一个满足当前代码覆盖的一个最小用例集合,这个集合里覆盖了全部的代码,从而滤掉了很多重复测试的用例。
3.聚类用例集
聚类算法是通过测试用例关联的代码相似程度得出结果的,可以划分出来有哪些测试用例的代码相似程度比较高,这些用例就分为一组。可以选取每组各一条用例优先测试。
4.提高测试执行效率
做到改哪里测哪里,用例执行数量减少一大半。
5.测试数据挖掘
输入版本名称可以查询该版本的所有变更,输入变更号查询哪些版本包含该变更,便于分析波及影响,展示每个代码变更的推荐用例、历史故障、变更详情。