程序插桩

       北航测试课的作业,找一个300行的程序进行动态覆盖测试和静态分析,静态分析包括模块控制流图与模块圈复杂度,动态分析采用人工插装的方式,要求语句覆盖和分支覆盖达到100%。因为概念还不清晰,所以花了一段时间去理解它,不过对于计算机本专业的童鞋应该不陌生吧!对于我还是需要总结一下。

一、程序插桩简介

        一种基本的动态测试方法,向源程序中添加一些语句实现对程序代码的执行、变量的变化等情况的检查,可以获得程序的控制流和数据流信息。如果我们想要了解一个程序在某次运行中可执行语句被覆盖的情况,或是每个语句的实际执行次数,最好的办法就是利用插装技术,它在软件测试技术上占有非常高的地位。最简单的插装:在程序中插入打印语句printf(“ ...”)语句。

1.插桩位置:a.程序的第一条语句;b.分支语句的开始;c.循环语句的开始;d.下一个入口语句之前的语句;e.程序的结束语句;f.分支语句的结束;g.循环语句的结束。

2.插桩策略:

①语句覆盖探针(基本块探针):在基本块的入口和出口处,分别植入相应的探针,以确定程序执行时该基本块是否被覆盖。 

②分支覆盖探针:c/c++语言中,分支由分支点确定。对于每个分支,在其开始处植入一个相应的探针,以确定程序执行时该分支是否被覆盖。 

③条件覆盖探针:c/c++语言中,if, swich,while, do-while, for 几种语法结构都支持条件判定,在每个条件表达式的布尔表达式处植入探针,进行变量跟踪取值,以确定其被覆盖情况。

3.设计插桩程序需要注意的几点:

①探测那些信息;

②在什么位置设置探针;

③设置多少个探测点;

④特定位置插入用以判断变量特性的语句。

*注:实例说明请看该分类下的‘程序插装-实例’

你可能感兴趣的:(软件测试,测试,插桩,插装)