Regression test selection for TizenRT
作者:互联网
摘要
RTS:跳过不被代码变更影响的测试用例
近期相关工作开发鲁棒的RTS工具,主要面向特定语言,比如JAVA和C#,不能兼容到大型C语言项目,比如TizenRT,一个轻量级的RTOS-based平台
本文开发工具Selfection
,该工具使用objdump
和readelf
工具从二进制文件中静态构建依赖图和检测修改的代码元素。实验部分使用TizenRT
这个项目最新的150个版本,评价指标选取reduction in the number of tests
(测试用例的约减)和reduction in test execution time
(执行时间的约减),和RetestAll相比较。结果显示在模拟器上选择的测试数约减到4.95%,测试时间约减到7.04%,在真实硬件环境中选择测试用例约减到5.74%,测试时间约减到26.82%。
1. 绪论
本文的工作主要解决了当前缺少对于C语言项目的RTS工具的现状
本文实现工具Selfection
,它使用静态分析收集每个测试的依赖关系,在新的版本中,检测修改函数,比较函数的checksum
判断函数是否修改,然后传播变更影响。
实验指标上面说了,采用两种测试环境:
- Qemu模拟器
- 真实硬件板
2. Selfection
包含3个阶段:
- 分析
- 执行
- 收集
2.1 Phases
分析阶段(A-Phase):该阶段目标是检测受当前变更影响的测试用例。当前实现是使用Adler32
算法计算函数的checksum。检测到修改的函数后,在依赖关系上计算传递闭包。
执行阶段(E-Phase):运行选择的测试用例
收集阶段(C-Phase):收集每个测试的依赖关系。
2.2 设计/实现抉择
Source vs. binary analysis:二进制分析更具有一般性,因为任何语言变异得到同样的执行格式。源代码分析要求特定编译器平台。
Static vs. dynamic analysis:静态分析对于依赖进行上近似。动态分析时在测试用例执行时动态收集依赖关系。使用静态分析有如下原因:
- 动态方法需要代码插装
- 动态插装需要额外的内存存储依赖关系
- 在硬件板子上收集依赖关系会引入额外的挑战和开销
7 结论
本文实现RTS工具Selfection
对C语言项目进行RTS。在TizenRT
项目最新的150个版本上进行实验。结果显示,与RetestAll相比,在模拟器上选择的测试数约减到4.95%,测试时间约减到7.04%,在真实硬件环境中选择测试用例约减到5.74%,测试时间约减到26.82%。
标签:selection,测试,依赖,测试用例,TizenRT,RTS,test,Regression,减到 来源: https://blog.csdn.net/u014578266/article/details/89057977