软件结构性测试

上传人:痛*** 文档编号:247337916 上传时间:2024-10-18 格式:PPT 页数:84 大小:1.27MB
返回 下载 相关 举报
软件结构性测试_第1页
第1页 / 共84页
软件结构性测试_第2页
第2页 / 共84页
软件结构性测试_第3页
第3页 / 共84页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,软件结构性测试,概览,在本章中,我们将学习:,结构性测试概述,程序结构分析,逻辑覆盖,结构性测试案例,目标,完成此课程之后,学员将具备以下能力:,了解结构性测试的含义,进行程序结构分析,使用逻辑覆盖的方法进行白盒测试,使用,Devpartner,进行白盒测试,课程目录,结构测试,概述,程序结构分析,逻辑覆盖,结构测试案例分析,结构测试工具使用,结构测试定义,把测试对象看做一个透明的盒子,白盒测试是根据被测程序的内部结构设计测试用例并完成测试的一种测试方法,白盒测试或逻辑驱动测试,基于一个应用代码的内部逻辑知识,测试覆盖全部代码、分支、路径和条件,结构测试特点,可以构成测试数据使特定程序部分得到测试,有一定的充分性度量手段,可获得较多工具支持,通常只用于单元测试,结构测试的方法,程序结构分析,代码走查,代码审查,控制流分析,数据流分析,信息流分析,逻辑覆盖,语句覆盖,分支覆盖,条件覆盖,分支-条件覆盖,路径覆盖,结构测试的局限,不可能查出程序是否违反了设计规范,不可能查出程序中因遗漏路径而出错,可能发现不了一些与数据有关的错误,不易生成测试数据,代码覆盖率,采用白盒法进行测试时,考虑的是测试用例对程序内部逻辑的覆盖程度,最彻底的白盒法是覆盖程序中的每一条路径,但这往往无法实现,采用其它一些标准来量度覆盖的程度,并希望覆盖程度尽可能高些,课程目录,结构测试,概述,程序结构分析,逻辑覆盖,结构测试案例分析,结构测试工具使用,程序结构分析,代码走查,代码,审查,控制流分析,数据流分析,信息流分析,代码走查,含义,代码走查是由一组程序和错误检查技术组成,并以代码审查组方式进行,人员,组长(有威信的资深程序员担任):负责分配资料、安排计划、主持会议、记录并保存被发现的错误,资深程序员,测试人员,程序开发员(可做会议主持),代码走查,原因,功能性测试很难实现,有太多的条件,有太多的测试用例,代码,审查,内容,检查代码和设计的一致性,检查代码对标准的遵循、可读性,检查代码的逻辑表达的正确性,检查代码结构的合理性,代码,审查,步骤,准备,程序阅读,审查会,跟踪及报告,控制流分析,非结构化程序会给测试、排错、和程序的维护带来许多困难,要求写出的程序结构良好,检查程序的控制结构成为十分有意义的工作,程序流程图,1,3,2,5,控制流图,1,2,4,3,5,a,b,c,d,e,f,控制流图,节点,标有编号的圆圈,程序流程图中矩形框所表示的处理,菱形表示的两个甚至多个出口判断,多条流线相交的汇合点,控制流图,控制流线或弧,箭头,与程序流程图中的流线一致,,,表明了控制的顺序,控制流线通常标有名字,控制流图矩阵,a,c,b,d,e,f,1,2,3,4,5,1,2,3,4,5,控制流图矩阵,便于机器表示和处理控制流图,连接弧的节点的号码决定了矩阵中元素的位置,注意控制流的方向,两个节点没有弧线,所对应的位置也就没有元素,程序结构的基本要求,写出的程序不应包含:,转向并不存在的标号,没有用的语句标号,从程序入口进入后无法达到的语句,不能达到停机语句的语句,数据流分析,查找引用未定义变量等程序错误,查找对以前未曾使用的变量再次赋值等数据流异常的情况,常见的错误表现形式,错拼名字,名字混淆,语句丢失,数据流,如果程序中某一语句执行时能改变某程序变量,V,的值,则称,V,被该语句定义,如果一语句的执行引用了内存中变量,V,的值,则称,V,被该语句引用,例如:,X=Y+Z;,if YZ then return;,控制流图与数据流表,1,2,3,4,10,6,7,5,8,9,11,节点,被定义变量,被引用变量,1,X,Y,Z,2,X,W,X,3,X,Y,4,Y,Z,5,Y,V,Y,6,Z,V,Z,7,V,X,8,W,Y,9,Z,V,10,Z,Z,11,Z,信息流分析,通过对输入数据、输出数据、语句之间的关系的分析来检查程序错误,整除算法例子,输入:,in_m,是被除数,,in_n,是除数,输出:,out_q,是商,,out_r,是余数,整除算法例子,out_q=0;,out_r=in_m;,While(out_r=in_n),out_q+;,out_r=out_r in_n;,信息流关系图,in_m,in_n,1,2,3,4,5,out_q,out_r,1,2,3,4,5,out_q,out_r,in_m,In_n,(1),(2),(3),信息流分析,能够列出对输入变量的所有可能的引用,在程序的任何指定点检查其执行可能影响某一输出变量值的语句,输入输出关系提供一种检查,看每个输出值是否由相关的输入值,而不是其他值导出,课程目录,白盒测试,概述,程序结构分析,逻辑覆盖,结构测试案例分析,结构测试工具使用,覆盖准则,测试到什么地步可以结束测试?,覆盖准则,被测小程序,if(A 1&B=0),X=X/A;,if(A=2|X 1),X=X+1;,被测程序段流程图,A 1&B=0,a,A=2|X 1,X=X/A,F,T,b,c,X=X+1,T,e,F,d,逻辑覆盖测试方法,语句覆盖,分支覆盖,条件覆盖,分支-条件覆盖,路径覆盖,语句覆盖,原理:如果语句中有错误,仅靠观察不执行可能发现不了,在测试时,首先设计若干个测试用例,然后运行被测程序,使程序中的每个可执行语句至少执行一次,若干个-尽量少,语句覆盖、程序段覆盖、程序块覆盖,语句覆盖率,语句覆盖率,已执行的可执行语句占程序中可执行语句总数的百分比,复杂的程序不可能达到语句的完全覆盖,语句覆盖率越高越好,语句覆盖测试用例,达到语句覆盖,100%,的测试用例(路径,ace),A=2,B=0,X=3,未达到语句覆盖,100%,的测试用例(路径,abe,),A=2,B=1,X=3,语句覆盖的优点,检查所有语句,结构简单的代码的测试效果较好,容易实现自动测试,代码覆盖率高,如果是程序块覆盖,则不涉及程序块中的源代码,语句覆盖不能检查出的错误,条件语句错误,“,A 1&B=0”,-,“,A 0&B=0”,逻辑运算(&、|)错误,“,A 1&B=0”,-,“,A 1|B=0”,“,U=A2,”,-,“,U=A1,”,语句覆盖不能检查出的错误,循环语句错误,循环次数错误,跳出循环条件错误,语句覆盖不能检查出的错误,循环语句例子,for(i=0;i3),statement;,for(i=0;i3&x 1,,记为,T1,A 1,,记为,T4,X 1,B=0,记为,T1,T2,(2)A 1,B!=0,记为,T1,F2,(3)A=1,B=0,记为,F1,T2,(4)A 1,记为,T3,T4,(6)A=2,X 1,记为,F3,T4,(8)A!=2,X,=,=,C,时,选择,A=C,小正数,当,AC,时,选择,A=C,小正数,对于测试用例取值,在每个测试用例中尽量不同的值或符号,覆盖率要求,对单元测试来说,语句覆盖和分支覆盖是最基本的要求,由于程序中错误(异常)处理工作的重要性以及其结构相对简单,要求错误处理要做到路径覆盖,对质量要求高的软件单元,可根据情况提出条件覆盖、分支-条件覆盖以及路径覆盖要求,课程目录,结构测试,概述,程序结构分析,逻辑覆盖,结构测试案例分析,结构测试工具使用,结构测试案例,求最小值,求数组中的最小值,k=i;,for(j=i+1;j=n;j+),if(Aj Ak),k=j;,程序流程图,k=i;j=i+1,j=n?,Aj Ak?,k=j,j+,a,c,b,d,e,f,最少测试用例数,3,测试用例(最少),用例编号,输入,输出,循环,i,n,Ai,Ai+1,路径,k,1,0,1,1,1,ac,1,2,1,1,2,1,2,abefc,1,3,1,1,2,2,1,abdfc,2,疑问,测试,用例是否足够?循环测试是否足够?,在结构复杂,测试用例数非常多的情况下,这些测试用例已经可以满足测试,但并不具有充分性,如何达到充分性?,测试2次循环,测试用例(充分),用例编号,输入,输出,循环,i,n,Ai,Ai+1,Ai+2,路径,k,1,0,1,1,1,ac,1,2,1,1,2,1,2,abefc,1,3,1,1,2,2,1,abdfc,2,4,2,1,3,1,2,3,a,befbef,c,1,5,2,1,3,2,1,3,a,bdf,bef,c,2,6,2,1,3,2,3,1,a,bef,bdf,c,3,7,2,1,3,3,2,1,a,bdfbdf,c,3,课程目录,结构测试,概述,程序结构分析,逻辑覆盖,结构测试案例分析,结构测试工具使用,目前的白盒测试工具,DevPartner(Compuware,),PURE,(,Rational,),NUnit,JUnit,CppUnit,Devpartner,的,使用,演示,本课总结,结构性测试包含程序结构分析和代码覆盖测试,衡量结构性测试的优劣的标准是代码覆盖率,使用工具将提高结构性测试的质量和加快测试的时间,Thanks!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!