第16章 基于结构的测试技术(白盒测试技术)

一、静态测试技术

(一)概述

  • 不运行程序代码的情况下,通过质量准则或其他准则对测试项目进行检查的测试类型,人工或工具检查。

1、代码检查

2、编码规则检查

  • 软件编码规范评测:源程序文档化、数据说明、语句结构、输入和输出

3、静态分析

静态分析概述
  • 不需要执行程序
控制流分析

通过生成程序的有效控制流图,分析代码

(1)控制流图绘制
  • 圆圈
  • 箭头(边)
  • 区域
    结点和箭头围成的封闭的空间就是一个区域
  • 绘制
    一组顺序结构:简化为一个圈
    汇聚结点:分叉之后没有闭合就需要加一个空圆圈
    复合条件表达式
  • 顺序结构
    在这里插入图片描述
total = total + grade;
counter =counter + 1,
i=i+ 1;
  • if分支结构
    第16章 基于结构的测试技术(白盒测试技术)_第1张图片
if (grade >= 45)
	printf( “Passed\n” );
else
	printf( “Failed\n” );

printf(“%s\n”,grade>=45?“Passed\n”:“Failed\n”);
  • Case多分支结构
    第16章 基于结构的测试技术(白盒测试技术)_第2张图片
switch(grade)
	case 'A':
	case 'a':
		++aCount;
		Break;
		……
	default:
		++dCount;
		Break;
  • While循环结构
    第16章 基于结构的测试技术(白盒测试技术)_第3张图片
	int product=2;
	while(product<=1000)
		product=2*product;
  • DO While循环结构
    在这里插入图片描述
	int couter=l;
	do{
		printf(“%d”,counter);
	}while(++counter<=10);

第16章 基于结构的测试技术(白盒测试技术)_第4张图片

int fT(int x ,int y , int z)
{
	if (y>1 && z==0)		//1 //2
	{
		x=(int)(x/y);				//3
	}
	if(y==2 || x>1)				//4 //5
	{
		x=x+1;						//6
	}
	return x;						//7
}
(2)McCabe圈复杂度
  • V(g)=边的数量-节点数量+2
  • V(g)=判断节点数+1
  • V(g)=封闭区域数+1
(3)圈度复杂性建议
  • 我们采用独立路径覆盖方法时,独立路径最大的数量是几条。
(4)独立路径
  • 一条路径中至少有一段路径在之前的路径中没有包含过的就是独立路径。
(5)函数调用关系图
  • 扇入
    当前模块被调用的次数叫做扇入;
    一个模块的扇入越大,就说明当前模块在系统中被重复利用的次数就越多,说明当前模块的通用性就越强。
  • 扇出
    一个模块要完成其功能,需要调用其他模块的数量;
    一个模块的扇出数越大,说明当前模块越复杂,一般不建议扇出数大于7
  • 扇入扇出应用
数据流分析
  • 测试变量设置点和使用点之间的路径的情况,称为“定义-使用对”或“设置-使用对”。

  • 通过“定义一使用对”能发现缺陷

    • 所使用的变量没有被定义(未定义),严重错误
    • 变量被定义,但从来没有使用(未使用),可能是编程错误
    • 变量在使用之前被定义了两次(重复定义),可能是编程错误
    • 撤销变量之后再使用,严重错误(考虑变量撤销情况)
    • 变量被定义随后又被撤销随后又被定义,可能是编程错误(考虑变量撤销情况)
    • 所撤销的变量没有被定义,可能是编程错误(考虑变量撤销情况)
    • 变量撤销后又再次被撤销,可能是编程错误(考虑变量撤销情况)
接口分析

接口一致性
主要是检查接口的情况。
内容

  • 形参与实参在类型、数量、维数、顺序、使用上的一致性
  • 全局变量和公共数据区在使用上的一致性
表达式分析

表达式分析纠正的错误

  • 在表达式中不正确地使用了括号造成错误
  • 数组下标越界造成错误
  • 除数为零

你可能感兴趣的:(软件评测师,测试工具,软件工程)