版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件结构性测试第一页,共八十四页,2022年,8月28日概览在本章中,我们将学习:结构性测试概述程序结构分析逻辑覆盖结构性测试案例第二页,共八十四页,2022年,8月28日目标完成此课程之后,学员将具备以下能力:了解结构性测试的含义进行程序结构分析使用逻辑覆盖的方法进行白盒测试使用Devpartner进行白盒测试第三页,共八十四页,2022年,8月28日课程目录结构测试概述
程序结构分析
逻辑覆盖结构测试案例分析结构测试工具使用第四页,共八十四页,2022年,8月28日结构测试定义
把测试对象看做一个透明的盒子白盒测试是根据被测程序的内部结构设计测试用例并完成测试的一种测试方法白盒测试或逻辑驱动测试基于一个应用代码的内部逻辑知识,测试覆盖全部代码、分支、路径和条件第五页,共八十四页,2022年,8月28日结构测试特点可以构成测试数据使特定程序部分得到测试有一定的充分性度量手段可获得较多工具支持通常只用于单元测试第六页,共八十四页,2022年,8月28日结构测试的方法程序结构分析代码走查代码审查控制流分析数据流分析信息流分析逻辑覆盖语句覆盖分支覆盖条件覆盖分支-条件覆盖路径覆盖第七页,共八十四页,2022年,8月28日结构测试的局限不可能查出程序是否违反了设计规范不可能查出程序中因遗漏路径而出错可能发现不了一些与数据有关的错误不易生成测试数据第八页,共八十四页,2022年,8月28日代码覆盖率采用白盒法进行测试时,考虑的是测试用例对程序内部逻辑的覆盖程度最彻底的白盒法是覆盖程序中的每一条路径,但这往往无法实现采用其它一些标准来量度覆盖的程度,并希望覆盖程度尽可能高些第九页,共八十四页,2022年,8月28日课程目录结构测试概述程序结构分析
逻辑覆盖结构测试案例分析结构测试工具使用第十页,共八十四页,2022年,8月28日程序结构分析代码走查代码审查控制流分析数据流分析信息流分析第十一页,共八十四页,2022年,8月28日代码走查含义代码走查是由一组程序和错误检查技术组成,并以代码审查组方式进行人员组长(有威信的资深程序员担任):负责分配资料、安排计划、主持会议、记录并保存被发现的错误资深程序员测试人员程序开发员(可做会议主持)第十二页,共八十四页,2022年,8月28日代码走查原因功能性测试很难实现有太多的条件有太多的测试用例第十三页,共八十四页,2022年,8月28日代码审查内容检查代码和设计的一致性检查代码对标准的遵循、可读性检查代码的逻辑表达的正确性检查代码结构的合理性第十四页,共八十四页,2022年,8月28日代码审查步骤准备程序阅读审查会跟踪及报告第十五页,共八十四页,2022年,8月28日控制流分析
非结构化程序会给测试、排错、和程序的维护带来许多困难要求写出的程序结构良好检查程序的控制结构成为十分有意义的工作第十六页,共八十四页,2022年,8月28日程序流程图1325第十七页,共八十四页,2022年,8月28日控制流图12435abcdef第十八页,共八十四页,2022年,8月28日控制流图节点标有编号的圆圈
程序流程图中矩形框所表示的处理
菱形表示的两个甚至多个出口判断
多条流线相交的汇合点
第十九页,共八十四页,2022年,8月28日控制流图控制流线或弧箭头
与程序流程图中的流线一致,表明了控制的顺序
控制流线通常标有名字第二十页,共八十四页,2022年,8月28日控制流图矩阵
acbdef1234512345第二十一页,共八十四页,2022年,8月28日控制流图矩阵便于机器表示和处理控制流图
连接弧的节点的号码决定了矩阵中元素的位置注意控制流的方向两个节点没有弧线,所对应的位置也就没有元素第二十二页,共八十四页,2022年,8月28日程序结构的基本要求写出的程序不应包含:转向并不存在的标号
没有用的语句标号
从程序入口进入后无法达到的语句
不能达到停机语句的语句
第二十三页,共八十四页,2022年,8月28日数据流分析
查找引用未定义变量等程序错误
查找对以前未曾使用的变量再次赋值等数据流异常的情况
常见的错误表现形式错拼名字名字混淆语句丢失第二十四页,共八十四页,2022年,8月28日数据流如果程序中某一语句执行时能改变某程序变量V的值,则称V被该语句定义如果一语句的执行引用了内存中变量V的值,则称V被该语句引用例如:X=Y+Z;ifY>Zthenreturn;第二十五页,共八十四页,2022年,8月28日控制流图与数据流表1234106758911节点被定义变量被引用变量1X,Y,Z2XW,X3X,Y4Y,Z5YV,Y6ZV,Z7VX8WY9ZV10ZZ11Z第二十六页,共八十四页,2022年,8月28日信息流分析通过对输入数据、输出数据、语句之间的关系的分析来检查程序错误整除算法例子输入:in_m是被除数,in_n是除数输出:out_q是商,out_r是余数第二十七页,共八十四页,2022年,8月28日整除算法例子out_q=0;out_r=in_m;While(out_r>=in_n){out_q++;out_r=out_r–in_n;}第二十八页,共八十四页,2022年,8月28日信息流关系图√√√√√√√in_min_n12345√√√√√√√√out_qout_r12345√√√√out_qout_rin_mIn_n(1)(2)(3)第二十九页,共八十四页,2022年,8月28日信息流分析能够列出对输入变量的所有可能的引用在程序的任何指定点检查其执行可能影响某一输出变量值的语句输入输出关系提供一种检查,看每个输出值是否由相关的输入值,而不是其他值导出第三十页,共八十四页,2022年,8月28日课程目录白盒测试概述程序结构分析
逻辑覆盖
结构测试案例分析结构测试工具使用第三十一页,共八十四页,2022年,8月28日覆盖准则测试到什么地步可以结束测试?覆盖准则第三十二页,共八十四页,2022年,8月28日被测小程序if(A>1&&B==0)X=X/A;if(A==2||X>1)X=X+1;第三十三页,共八十四页,2022年,8月28日被测程序段流程图A>1&&B==0aA==2||X>1X=X/AFTbcX=X+1TeFd第三十四页,共八十四页,2022年,8月28日逻辑覆盖测试方法
语句覆盖
分支覆盖
条件覆盖
分支-条件覆盖
路径覆盖
第三十五页,共八十四页,2022年,8月28日语句覆盖原理:如果语句中有错误,仅靠观察不执行可能发现不了在测试时,首先设计若干个测试用例,然后运行被测程序,使程序中的每个可执行语句至少执行一次若干个->尽量少语句覆盖、程序段覆盖、程序块覆盖第三十六页,共八十四页,2022年,8月28日语句覆盖率语句覆盖率已执行的可执行语句占程序中可执行语句总数的百分比复杂的程序不可能达到语句的完全覆盖语句覆盖率越高越好第三十七页,共八十四页,2022年,8月28日语句覆盖测试用例达到语句覆盖100%的测试用例(路径ace)A=2B=0X=3未达到语句覆盖100%的测试用例(路径abe)A=2B=1X=3第三十八页,共八十四页,2022年,8月28日语句覆盖的优点检查所有语句结构简单的代码的测试效果较好容易实现自动测试代码覆盖率高
如果是程序块覆盖,则不涉及程序块中的源代码
第三十九页,共八十四页,2022年,8月28日语句覆盖不能检查出的错误条件语句错误“A>1&&B==0”
->“A>0&&B==0”逻辑运算(&&、||)错误“A>1&&B==0”
->“A>1||B==0”“U=A<1||B>2”
->“U=A<1”
第四十页,共八十四页,2022年,8月28日语句覆盖不能检查出的错误循环语句错误循环次数错误跳出循环条件错误第四十一页,共八十四页,2022年,8月28日语句覆盖不能检查出的错误循环语句例子for(i=0;i<10;i++){statement;}While(x>3){statement;}for(i=0;i<=10;i++){statement;}While(x>3&&x<7){statement;}第四十二页,共八十四页,2022年,8月28日语句覆盖率的问题能达到很高的语句覆盖率语句覆盖率看似很高,却有严重缺陷
if(x!=1){statements;……;}else{statement;}}99句}1句测试用例x=2语句覆盖率99%50%的分支没有达到第四十三页,共八十四页,2022年,8月28日分支覆盖设计若干测试用例,运行被测程序,使得程序中每个判断的真假分支至少经历一次又称判定覆盖while语句、switch语句、异常处理、跳转语句等等同样可以使用分支覆盖来测试分支覆盖率已取过“真”和“假”两个值的判定占程序中所有条件判定个数的百分比第四十四页,共八十四页,2022年,8月28日分支覆盖测试用例
路径aceA=2B=0X=3
路径abdA=1B=0X=1路径acdA=3B=0X=3
路径abeA=2B=1X=2或第四十五页,共八十四页,2022年,8月28日分支覆盖的利弊分支覆盖要比语句覆盖查错能力强一些:执行了分支覆盖,实际也就执行了语句覆盖分支覆盖与语句覆盖存在同样的缺点不能查出条件语句错误不能查出逻辑运算错误不能查出循环次数错误不能查出循环条件错误第四十六页,共八十四页,2022年,8月28日条件覆盖设计若干测试用例,执行被测程序以后,要使每个判断中的每个条件的可能取值至少满足一次第四十七页,共八十四页,2022年,8月28日条件覆盖分析第1个判断应考虑
A>1,记为T1A<=1,即记为F1B==0,记为T2B!=0,记为F2第2个判断应考虑
A==2,记为T3A!=2,记为F3X>1,记为T4X<=1,记为F4第四十八页,共八十四页,2022年,8月28日条件覆盖测试用例用例编号ABX路径覆盖条件1203aceT1,T2,T3,T42101abdF1,T2,F3,F43211abeT1,F2,T3,F4似乎执行了条件覆盖必然实现了分支覆盖?第四十九页,共八十四页,2022年,8月28日条件覆盖测试用例用例编号ABX路径覆盖条件1103abeF1,T2,F3,T42211abeT1,F2,T3,F4执行条件覆盖并不能实现分支覆盖第五十页,共八十四页,2022年,8月28日条件覆盖的利弊能够检查所有的条件错误不能实现对每个分支的检查用例数量的增加a&&b&&(c||(d&&e))((a||b)&&(c||d))&&e第五十一页,共八十四页,2022年,8月28日分支-条件覆盖设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次第五十二页,共八十四页,2022年,8月28日分支-条件覆盖分析(1)A>1,B==0,记为T1,T2(2)A>1,B!=0,记为T1,F2(3)A<=1,B==0,记为F1,T2(4)A<=1,B!=0,记为F1,F2(5)A==2,X>1,记为T3,T4(6)A==2,X<=1,记为T3,F4(7)A!=2,X>1,记为F3,T4(8)A!=2,X<=1,记为F3,F4第五十三页,共八十四页,2022年,8月28日分支-条件覆盖测试用例用例编号ABX覆盖组合号路径覆盖条件1203(1)(5)aceT1,T2,T3,T42211(2)(6)abcT1,F2,T3,F43103(3)(7)abeF1,T2,F3,T44111(4)(8)abdF1,F2,F3,F4覆盖了3条路径,漏掉了路径acd第五十四页,共八十四页,2022年,8月28日分支-条件覆盖的利弊既考虑了每一个条件,又考虑了每一个分支,发现错误能力强于分支覆盖和条件覆盖并不能全面覆盖所有路径用例数量的增加第五十五页,共八十四页,2022年,8月28日路径覆盖设计足够多的测试用例,要求覆盖程序中所有可能的路径路径ace记为L1abd记为L2abe记为L3acd记为L4第五十六页,共八十四页,2022年,8月28日路径覆盖测试用例用例编号ABX覆盖路径1203ace(L1)2101abd(L2)3211abe(L3)4301acd(L4)第五十七页,共八十四页,2022年,8月28日路径覆盖的利弊实现了所有路径的测试,发现错误能力强某些条件错误可能无法发现路径数庞大,不可能覆盖所有路径用例数量的增加第五十八页,共八十四页,2022年,8月28日循环测试路径覆盖0次循环检查跳出循环1次循环检查循环初始值2次循环检查多次循环m次循环检查某次循环最大次数循环、比最大次数多一次、少一次循环检查循环次数边界第五十九页,共八十四页,2022年,8月28日简化循环路径循环使路径数量急剧增长简化无论循环的形式和实际执行循环体的次数多少,只考虑循环一次和0次两种情况进入循环体一次跳出循环体第六十页,共八十四页,2022年,8月28日循环程序流程图CBCB(1)(2)第六十一页,共八十四页,2022年,8月28日简化循环路径图(1)和(2)都可简化为(3)CB第六十二页,共八十四页,2022年,8月28日最少测试用例数计算对于具体的程序,至少要设计多少测试用例?估算最少测试用例数帮助执行测试有助于估算测试的时间第六十三页,共八十四页,2022年,8月28日结构化程序与N-S图结构化程序是由3种基本控制结构组成顺序型选择型(条件分支)重复型(循环)测试时考虑的结构顺序型选择型(条件分支)第六十四页,共八十四页,2022年,8月28日程序结构与测试用例数第六十五页,共八十四页,2022年,8月28日程序结构与测试用例数当程序中判定多于一个时,形成的分支结构可以分为两类:嵌套型分支结构和连锁型分支结构对于嵌套型分支结构,若有n个判定语句,需要n+1个测试用例对于连锁型分支结构,若有n个判定语句,需要有2n个测试用例,覆盖它的2n条路径第六十六页,共八十四页,2022年,8月28日最少测试用例数计算实例计算最少测试用例数第六十七页,共八十四页,2022年,8月28日最少测试用例数计算实例第六十八页,共八十四页,2022年,8月28日最少测试用例数计算实例第六十九页,共八十四页,2022年,8月28日测试覆盖准则Foster的ESTCA覆盖准则错误敏感测试用例分析(ErrorSensitiveTestCasesAnalysis)问题第七十页,共八十四页,2022年,8月28日ESTCA覆盖准则对于分支A(>,=,<,>=,<=)B,测试时应选择A<B,A=B,A>B的情况分别测试一次对于分支A(>,<)C,A是变量,C是常量当A>C时,选择A=C+小正数当A<C时,选择A=C-小正数对于测试用例取值,在每个测试用例中尽量不同的值或符号第七十一页,共八十四页,2022年,8月28日覆盖率要求对单元测试来说,语句覆盖和分支覆盖是最基本的要求由于程序中错误(异常)处理工作的重要性以及其结构相对简单,要求错误处理要做到路径覆盖对质量要求高的软件单元,可根据情况提出条件覆盖、分支-条件覆盖以及路径覆盖要求第七十二页,共八十四页,2022年,8月28日课程目录结构测试概述程序结构分析
逻辑覆盖结构测试案例分析结构测试工具使用第七十三页,共八十四页,2022年,8月28日结构测试案例求最小值
求数组中的最小值
k=i;for(j=i+1;j<=n;j++){if(A[j]<A[k])k=j;}第七十四页,共八十四页,2022年,8月28日程序流程图k=i;j=i+1j<=n?A[j]<A[k]?k=jj++
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 慢性肾病综合症护理管理培训
- 脊柱侧凸治疗方案
- 2026年成人高考建筑工程技术模拟单套试卷
- 2026年成人高考高起专语文(二)文言文阅读精讲单套试卷
- 2026年成人高考高等数学(一)单套试卷
- COPD 二型呼衰的护理查房
- 2026年5月造价工程师实务单套模拟试卷
- COMT 基因与智商的关联探究
- 2025-2026学年人教版七年级物理下册力学基础测试卷(含答案解析)
- 东台火锅活动策划方案(3篇)
- 2026年民政通APP养老服务消费券申领使用教程
- 2026福建莆田城市园林发展集团有限公司招聘13人笔试历年参考题库附带答案详解
- 高速公路机电考核制度
- 全国金融工作会议精神
- 2026年一季度湖南能源集团社会招聘520人笔试参考题库及答案解析
- 外研社校招会计笔试试题及答案
- 美容抗衰培训课件
- (正式版)JBT 11270-2024 立体仓库组合式钢结构货架技术规范
- 河北省地图介绍模板
- 冶金理论ppt课件(完整版)
- PXUT-330新版操作复习进程
评论
0/150
提交评论