文档详情

软件测试白盒测试方法剖析.ppt

发布:2016-06-18约1.48万字共70页下载文档
文本预览下载声明
软件测试方法 白盒测试方法(基于结构) 本章教学要点 教学目标: 通过本章学习,掌握白盒测试方法,并能应用到单元测试中去。 教学重点与难点: 控制流图的绘制方法 根据指定的覆盖率要求设计出相应的单元测试用例 白盒测试的各种覆盖标准及彼此间的关系 目录 目录 将程序结构转化为控制流图CFG 绘制程序流程图 按语句结构将程序流程图转化为控制流图 顺序结构、选择结构、循环结构 对所有节点及控制流向进行编号 控制流图:条件拆分 控制流图:循环结构 #includestdio.h main() { char s[80]; int i=0; scanf(%s,s); while( s[i]!=\0) { if(s[i] = 97) s[i]=s[i]-32; i++; } puts(s); } 控制流图:循环结构(2) while(true){? if(i==12){? i++;? continue;? }? if(i==20){? break;? } }? 练习:控制流图(循环结构) getit (int m) { int i, k; k = sqrt(m); for (i =2; i =k; i++) if (m % i == 0) break; if (i =k+1) printf(%d is a selected number\n, m); else printf(%d is not a selected number\n, m); } 目录 练习2 三角形案例:白盒测试 三角形案例:白盒测试 三角形案例:白盒测试 多分支结构的圈复杂度 每个IF、ElSE IF 、 CASE、WHILE、FOR都算一个判定节点数 圈复杂度愈高,代表出错可能性愈大 目录 看一个程序 int x,y; float z; scanf(%d,%d,x,y); z=0; if (x != 0) z=z+y; else z=z-y; if (y!=0) z=z/x; else z=z * x; printf(“%d,%d\n,z); 数据流基本概念 定义def:一个在内存中存储变量值的程序位置 使用use:一个变量被访问的程序位置 定义使用对du-pair:定义-使用对 定义使用路径du-path: 从定义到使用的一条路径 数据流的def和use 变量x的一个def可能会在如下情况发生: x出现在一个赋值语句的左边 x是一个程序的输入 X是一个方法的形参 示例:数据流的def和use 示例:数据流的du-pair 示例:数据流的du-path 数据流测试的覆盖标准 所有定义对All-defs: 每个def至少到达一个use 所有定义使用对All-uses: 每个def到达所有可能use 所有定义使用对All-paths: 每个def通过所有可能path到达所有可能use 测试覆盖:所有定义对All-defs 测试覆盖:所有定义对All-uses 测试覆盖:所有定义对All-paths 本章小结 {3,4,5,6},{3,4,5,8},{3,4,5,6,9},{3,4,5,8,9} 3 y z z z z z x {12,13} 12 {4,5,6}, {4,5,8}, {4,5,8,9,10},{4,5,6,9,10},{4,5,8,9,12},{4,5,6,9,12} {4,5,8,9,10,13},{4,5,6,9,10,13},{4,5,8,9,12,13},{4,5,6,9,12,13} 4 {3,4,5,8,9,10},{3,4,5,6,9,10} {3,4,5,8,9,12},{3,4,5,6,9,12}, {3,4,5} 3 {6,9,10}, {6,9,12}, {6,9,10,13}, {6,9,12,13} 6 {10,13} 10 {8,9,10}, {8,9,12}, {8,9,10,13}, {8,9,12,13} 8 du-path 4 5 6 8 9 10 12 13 def={z} use={x} def={z} use={z,y} def={z} use={z,y} def={z} use={z,x} def={z} use={z,x} use={y} use={z} 3 def={x,y} All-paths All-uses All-defs 3,4,8,12 3,4,6,10 覆盖def 0.0 1.0 z 0,0 2 1 case 1,1 x,y 4 5 6 8 9 10 12
显示全部
相似文档