软件测试-代码覆盖
来源:互联网 发布:未来软件视频教程 编辑:程序博客网 时间:2024/05/19 12:17
关键词:软件测试,代码覆盖,质量
测试环境:ubuntu 12.04
代码覆盖 CFG(Control flow graph)图。控制流图(CFG)是一个有向图抽象数据结构。它是一个过程或程序的抽象表现。每个在图形中的节点代表一个基本块,例如,没有任何跳跃或跳跃目标的直线代码块;跳跃目标以一个块开始,和以一个块结束。定向边缘被用于代表在控制流中的跳跃。CFG中的每个结点至多只能有两个直接后继。
插桩技术
在实现覆盖测试的过程中,往往需要知道某些信息,如:程序中可执行语句被执行(即被覆盖)的情况,程序执行的路径,变量的引用、定义等。要想获取这类信息,需要跟踪被测程序的执行过程,或者是由计算机在被测程序执行的过程中自动记录。需要在被测程序中插入完成相应工作的代码,即代码插桩技术。如今大多数的覆盖测试工具均采用代码插桩技术。
它是在保证被测程序原有逻辑完整性的基础上在程序中插入一些探针,通过探针的执行并抛出程序运行的特征数据,通过对这些数据的分析,可以获得程序的控制流和数据流信息,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。根据探针插入的时间可以分为目标代码插桩和源代码插桩。
源代码插桩
源代码插桩是在对源文件进行完整的词法分析和语法分析的基础上进行的,这就保证对源文件的插桩能够达到很高的准确度和针对性。但是源代码插桩需要接触到源代码,而且随着编码语言和版本的不同需要做一定的修改。
目标代码插桩
例如gdb插入到目标机的stub代理,实现嵌入式的远程调试。目标操作系统提供支持远程调试协议的通信模块和多任务调试接口,并改写异常处理的有关部分。另外目标操作系统还需要定义一个设置断点的函数;因为有的硬件平台提供能产生特定调试陷阱异常(debug trap)的断点指令以支持调试(如X86的INT 3),而另一些机器没有类似的指令,就用任意一条不能被解释执行的非法(保留)指令代替。目标操作系统添加的这些模块统称为"插桩"。
GCOV工具
Gcov is GCC Coverage, 是一个测试代码覆盖率的工具,是一个命令行方式的控制台程序。
testcov.c
#include <stdio.h>int main(void){int i, total;total = 0;for(i=0; i<10; i++){total += i;}if (total != 45){printf("failure\n");} else {printf("success\n");}return 0;}
编译,并执行。
gcc -fprofile-arcs -ftest-coverage -o testcov testcov.c./testcov
查看testcov程序代码覆盖情况
$ gcov testcov.cFile 'testcov.c'Lines executed:87.50% of 8testcov.c:creating 'testcov.c.gcov'
参考资料:
软件测试方法与技术 - 南京大学软件学院
深入浅出Linux平台代码覆盖率测试——原理、工具、分析v1.pdf
- 软件测试-代码覆盖
- 代码覆盖分析工具在嵌入式软件测试中的应用
- 嵌入式软件的覆盖测试
- 嵌入式软件的覆盖测试
- 软件测试中的逻辑覆盖
- 嵌入式软件的覆盖测试
- 软件测试(四) 路径覆盖
- C++代码覆盖测试工具
- 代码覆盖度测试,gcov
- CodePro Analytix 代码覆盖测试
- Android代码覆盖的测试
- 【软件测试】神马是数据流覆盖
- 测试wifi覆盖范围的软件
- 软件测试中条件覆盖,路径覆盖,语句覆盖,分支覆盖的区别
- 软件测试中条件覆盖,路径覆盖,语句覆盖,分支覆盖的区别
- 软件测试中条件覆盖,路径覆盖,语句覆盖,分支覆盖的区别
- 软件测试中条件覆盖,路径覆盖,语句覆盖,分支覆盖的区别
- 软件测试中条件覆盖,路径覆盖,语句覆盖,分支覆盖的区别
- 接收消息
- The Himalayas(ZOJ)(牡丹江赛区)
- 关于php缓存的问题
- 开源夏令营总结
- Tomcat7开启CGI支持的方法
- 软件测试-代码覆盖
- GPA
- 反向动力学 Inverse Kinematics (IK)
- 黑马程序员-用反射机制修改类中的属性值
- wordpress不能上传图片
- 关于验证码在ie浏览器中刷新不了的解释
- 全志平台boot框架中增加设备驱动过程分析
- COM基础
- catalog database 管理: