第4章(4) 白盒测试习题课
软件测试技术基础课后习题答案
解:软件缺陷产生的主要原因有:需求规格说明错误;设计错误;程序 代码有误;其他。其中在需求分析阶段引入的缺陷最多,修复的成本又 最低。
4. 当用户登录某网站购物完毕并退出后,忽然想查查购物时付账 的总金额,于是按了浏览器左上角的“退回”按钮,就又回到了 退出前的网页,你认为该购物软件有缺陷吗?如果有,属于哪 一类?
解:有缺陷。其所属类别与软件产品说明书的要求有关。
5. 什么是软件测试?简述其目的与原则。
解:软件测试是为了尽快尽早地发现在软件产品中所存在的各种软件缺 陷而展开的贯穿整个软件开发生命周期,对软件产品(包括阶段性产 品)进行验证和确认的活动过程。
测试目的:(1)证明:获取系统在可接受风险范围内可用的信 心;尝试在非正常情况和条件下的功能和特性;保证一个工作产品是完 整的并且可用或可被集成。 (2)检测:发现缺陷、错误和系统不足; 定义系统的能力和局限性;提供组件、工作产品和系统的质量信息。 (3)预防:澄清系统的规格和性能;提供预防或减少可能制造错误的 信息;在过程中尽早检测错误;确认问题和风险,并且提前确认解决这 些问题和风险的途径。
8. 简述软件测试过程。
解:软件测试过程主要包括如下6个活动:测试计划;测试需求分析; 测试设计;测试规程实现;测试执行;总结生成报告。
9. “软件测试能够保证软件的质量”这句话对吗?软件测试和软件 质量之间是什么关系?
解:不对。软件测试是保障软件质量的手段之一,但不是唯一手段。测 试是产品高质量的必要非充分条件,软件测试不能决定软件质量。
快速原型模式首先构造一个功能简单的原型系统,然后通过对原型 系统逐步求精,不断扩充完善得到最终的软件系统。原型系统在扩充完 善过程中不断被检查、测试和修改。
国防《软件测试》教学资料包 教学参考 第4章
第4章白盒测试技术
教学要求
熟练掌握:熟悉掌握白盒测试的依据和流程,白盒测试的方法以及本章介绍的几个白盒测试工具。
掌握:白盒测试的依据和流程和白盒测试的方法和。
了解:白盒测试的优点和缺点和白盒测试工具。
教学重点
白盒测试的依据和流程和白盒测试的方法。
教学难点
白盒测试的方法。
课时安排
本章安排4课时。
其中,理论讲授2课时。
教学大纲
4.1 白盒测试的优点和缺点
4.2 白盒测试的依据和流程
4.3 白盒测试的方法
4.3.1 逻辑覆盖法
4.3.2 基路径测试法
4.3.3 对循环的测试
4.3.4 数据流测试
4.3.5 静态白盒测试
4.3.6 动态白盒测试技术
4.4 白盒测试工具
4.4.1 C++ Test介绍
4.4.2 Logiscope介绍
4.4.3 BoundsChecker介绍
主要概念
1.逻辑覆盖法
2.基路径测试法
3.对循环的测试
4.数据流测试
5.静态白盒测试
6.动态白盒测试技术。
第4章白盒测试及其实例设计
测试用例
Test Case 1 Test Case 2 Test Case 3 Test Case 4
表4-9 测试用例组9
输入
i
str
num1
期望输出 num2
5
‘T’
0
0
4
‘T’
1
0
4
‘A’
0
0
4
‘F’
0
1
score
执行路径
100
路径1
100
路径2
100
路径3
实例设计
3.设计测试用例 根据上面环形复杂度的计算结果,源程序的基本路径集合中有4条独立路径: 路径1:7->18 路径2:7->9->10->16->7->18 路径3:7->9->11->15->16->7->18 路径4:7->9->11->13->14->15->16->7->18 根据上述4条独立路径,设计了测试用例组9,如表4-9所示。测试用例组9 中的4个测试用例作为程序输入数据,能够遍历这4条独立路径。对于源程序 中的循环体,测试用例组9中的输入数据使其执行零次或一次。
序时,程序中每个判断条件的真值分支和假值分支至少被执行一遍。在保证完 成要求的情况下,测试用例的数目越少越好。
判断覆盖又称为分支覆盖。 以下是针对公共程序段设计的两个测试用例: Test Case 1:x=2000,y=600,z=6000 Test Case 3:x=50,y=600,z=2000
判断/条件覆盖 判断/条件覆盖是指设计若干个测试用例,执行被测试程序时,程序中 每个判断条件的真假值分支至少被执行一遍,并且每个判断条件的内 部判断式的真假值分支也要被执行一遍。 测试用例组6: Test Case 1:x=2000, y=600, z=2000 Test Case 6:x=2000, y=200, z=6000 Test Case 7:x=2000, y=600, z=2000 Test Case 8:x=50, y=200, z=2000
软件测试(第2版 慕课版)课后习题答案
第一章软件测试基础课后习题答案1.什么是软件测试?软件测试发现一个应用从开始到结束时的错误,测试是一个过程。
(Glenford J.Myers 提出对软件测试的定义)测试是发现错误而执行的一个程序或系统的过程测试以发现故障为目的,是为了发现故障而执行程序过程2.软件测试涉及哪几个关键问题?软件测试的经济性原则谁来测试(who)测试什么(what)什么时候测试(when)怎样进行测试(how)测试的停止标准是什么(which)3.为什么说软件需求说明是软件故障的最大来源?软件需求是描述了系统有哪些功能,功能操作,性能如何等问题,是开发阶段的重要文档,也是后期软件开发的重要依据。
如果软件需求一开始就错了,在后面处理过程则会把错误放大,这样使得修复起来成本就是提升。
4.简述软件测试的复杂性和经济性。
复杂性1.完全测试是不现实的2.软件测试是有风险的3.杀虫剂现象4.缺陷的不确定性经济性软件测试是软件生命期中费用消耗最大的环节。
测试费用除了测试的直接消耗外,还包括其他的相关费用5.分析最近发生的软件质量事故,并简要分析产生的原因。
具体案例具体分子6.启动Windows计算器,输入“6,000-6=”(逗号不能少),观察计算结果,这是软件故障吗?为什么?这是软件故障中的界面缺陷。
由于无法输入逗号,无法进行输入,当做一个界面缺陷,因为不符合需求,原本是小数点变成了逗号。
7.软件测试应遵循哪些重要的原则或方针?1.完全测试程序是不可能的2.软件测试是有风险的3.测试无法找到隐藏的软件故障4.存在的故障数量与发现的故障数量成正比5.杀虫剂现象6.并非所有软件故障都能修复7.一般不要丢弃测试用例8.应避免测试自己编写的程序9.软件测试是一项复杂且具有创造性的和需要高度智慧的挑战性任务8.假定无法完全测试某一程序,那么在决定是否应该停止测试时应考虑哪些问题?在工作中,常用的停止测试标准有五类:测试超过了预定时间,停止测试执行了所有测试用例但没有发现故障,停止测试使用特定的测试用例方法作为判断测试停止的基础正面指出测试完成要求,如发现并修改70个软件故障根据单位是见查出故障数量决定是否停止测试9 . 假如星期一测试软件的某一功能时,每小时能发现一个新的软件故障,那么星期二会以什么频率发现软件故障?第一感觉就是与第一天(星期一)的一样,既然前一天发现的频率以每小时都有新的故障,说明软件的缺陷很高,所以第二天也可能有同样的频率。
白盒测试试题答案
先看以下代码:/** 白盒测试逻辑覆盖测试范例*/int logicExample(int x, int y){int magic=0;if(x>0 && y>0){magic = x+y+10; // 语句块1}else{magic = x+y-10; // 语句块2}if(magic < 0){magic = 0; // 语句块3}return magic; // 语句块4}解答:一般做白盒测试不会直接根据源代码,而是根据流程图来设计测试用例和编写测试代码,在没有设计文档时,要根据源代码画出流程图:做好了上面的准备工作,接下来就开始讲解六个逻辑覆盖标准:一、语句覆盖1、概念:设计足够多的测试用例,使得被测试程序中的每条可执行语句至少被执行一次。
在本例中,可执行语句是指语句块1到语句块4中的语句。
2、测试用例:{x=3, y=3}可以执行到语句块1和语句块4,所走的路径:a-b-e-f{x=-3, y=0}可以执行到语句块2、语句块3和语句块4,所走的路径:a-c-d-f这样,通过两个测试用例即达到了语句覆盖的标准,当然,测试用例(测试用例组)并不是唯一的。
3、测试的充分性:假设第一个判断语句if(x>0 && y>0)中的“&&”被程序员错误地写成了“||”,即if(x>0 || y>0),使用上面设计出来的一组测试用例来进行测试,仍然可以达到100%的语句覆盖,所以语句覆盖无法发现上述的逻辑错误。
在六种逻辑覆盖标准中,语句覆盖标准是最弱的。
二、判断覆盖(分支覆盖)1、概念:设计足够多的测试用例,使得被测试程序中的每个判断的“真”、“假”分支至少被执行一次。
在本例中共有两个判断if(x>0 && y>0)(记为P1)和if(magic < 0)(记为P2)。
2、测试用例:两个判断的取真、假分支都已经被执行过,所以满足了判断覆盖的标准。
白盒测试方法习题及答案
[试题分类]:[04]白盒测试方法/[0400][综合]白盒测试方法1.下面不属于白盒测试能保证的是。
A.模块中所有独立途径至少测试一次B.测试所以逻辑决策真和假两个方面C.在所有循环的边界内部和边界上执行循环体D.不正确或漏掉的功能答案:D分数:1题型:单选题难度:12.因果图方法是根据()之间的因果关系来设计测试用例的。
A.输入与输出B.设计与实现C.条件与结果D.主程序与子程序答案:A分数:1题型:单选题难度:13.使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准。
A.程序的内部逻辑B.程序的复杂程度C.使用说明书D.程序的功能答案:A分数:1题型:单选题难度:14.软件测试中常用的静态分析方法是()和接口分析。
A.引用分析B.算法分析C.可靠性分析D.效率分析答案:A分数:1题型:单选题难度:15.软件测试中常用的静态分析方法是引用分析和()。
A.引用分析B.算法分析C.可靠性分析D.接口分析答案:D分数:1题型:单选题难度:16.白盒方法中常用的方法是()方法。
A.路径测试B.等价类C.因果图D.归纳测试答案:A分数:1题型:单选题难度:17.在软件工程中,白箱测试法可用于测试程序的内部结构。
此方法将程序看作是()A.路径的集合B.循环的集合C.目标的集合D.地址的集合答案:A分数:1题型:单选题难度:18.软件测试白箱测试是对软件的结构进行测试,下述:Ⅰ.边缘值分析Ⅱ.语句测试Ⅲ.分值测试Ⅳ.路经测试()是其应包括的内容。
A.ⅠB.Ⅱ和ⅢC.Ⅲ和ⅣD.Ⅱ.Ⅲ和Ⅳ答案:D分数:1题型:单选题难度:19.在进行单元测试时,常用的方法是()。
A.采用白盒测试,辅之以黑盒测试B.采用黑盒测试,辅之以白盒测试C.只适用白盒测试D.只适用黑盒测试答案:A分数:1题型:单选题难度:110.白盒测试法一般使用于()测试。
A.单元B.系统C.集成D.确认答案:A分数:1题型:单选题难度:1[试题分类]:[04]白盒测试方法/[0401]逻辑覆盖法11.关于条件测试错误的是()A.可以检查程序中所包含的逻辑条件B.条件中包含的错误有布尔算子错误C.条件中包含的错误有布尔变量错误D.条件中包含的错误有接口错误答案:D分数:1题型:单选题难度:112.关于条件中包含的错误类型说法错误的是()A.关系算子错误B.算术表达式错误C.条件中包含的错误有布尔变量错误D.条件中包含的错误有接口错误答案:D分数:1题型:单选题难度:113.语句覆盖.判定覆盖.条件覆盖和路径覆盖都是白盒测试法设计测试用例的覆盖准则,在这些覆盖准则中最弱的准则是()。
白盒测试及例题
基本路径测试
• 前提条件 测试进入的前提条件是在测试人员 已经对被测试对象有了一定的了解,基 本上明确了被测试软件的逻辑结构。 • 测试过程 过程是通过针对程序逻辑结构设计 和加载测试用例,驱动程序执行,以对 程序路径进行测试。测试结果是分析实 际的测试结果与预期的结果是否一致。
基本路径测试
• 在程序控制流图的基础上,通过分析控制构造的环 路复杂性,导出基本可执行路径集合,从而设计测 试用例。包括以下4个步骤和一个工具方法: 1. 程序的控制流图:描述程序控制流的一种图示 方法。 2. 程序圈复杂度:McCabe复杂性度量。从程序的 环路复杂性可导出程序基本路径集合中的独立 路径条数,这是确定程序中每个可执行语句至 少执行一次所必须的测试用例数目的上界。 3. 导出测试用例:根据圈复杂度和程序结构设计 用例数据输入和预期结果。 4. 准备测试用例:确保基本路径集中的每一条路
条件组合覆盖
• 针对上述问题又提出了另一种标准——―条 件组合覆盖”。它的含义是:执行足够的 例子,使得每个判定中条件的各种可能组 合都至少出现一次。显然,满足“条件组 合覆盖”的测试用例是一定满足“分支覆 盖”、“条件覆盖”和“分支/条件覆盖” 的。
条件组合覆盖
再看例1的程序,我们需要选择适当 的例子,使得下面 8种条件组合都能 够出现:
基本路径测试
工具方法: 图形矩阵:是在基本路径测试中起辅 助作用的软件工具,利用它可以实现自 动地确定一个基本路径集。
控制流图的符号
• 在介绍基本路径方法之前,必须先介绍一种简单的 控制流表示方法,即流图。流图是对待测试程序过 程处理的一种表示。流图使用下面的符号描述逻辑 控制流,每一种结构化构成元素有一个相应的流图 符号。
• • • • 白盒测试概念 测试覆盖标准 逻辑驱动测试 基本路径测试
软件测试基本原理与实践第四章课后习题答案
软件测试基本原理与实践第四章课后习题答案1. 白盒测试只能由程序员完成。
[判断题] *对错(正确答案)2. 控制流图中只有结点和边。
[判断题] *对(正确答案)错3. 程序员与测试工作无关。
[判断题] *对错(正确答案)4. 白盒测试的“条件覆盖”标准强于“判定覆盖”。
[判断题] *对错(正确答案)5. 白盒测试中,满足条件覆盖的测试用例一定能够满足判定覆盖。
[判断题] *对错(正确答案)6. 语句覆盖是白盒测试中覆盖程度最弱的一种覆盖。
[判断题] *对(正确答案)错7. 白盒测试能够发现100%的程序缺陷。
[判断题] *对错(正确答案)8. 软件开发全过程的测试工作都可以实现自动化。
[判断题] *对错(正确答案)9. 采用自动化测试有可能延误项目进度。
[判断题] *对(正确答案)错10. 程序员兼任测试员可以提高工作效率。
[判断题] *对错(正确答案)11. 测试人员要坚持原则,缺陷未修复完坚决不予通过。
[判断题] *对(正确答案)错12. 好的测试员坚持不懈追求完美。
[判断题] *对错(正确答案)13. 单元测试通常应该先进行“人工走查”,再以白盒法为主,辅以黑盒法进行动态测试。
[判断题] *对(正确答案)错14. 单元测试能发现约80%的软件缺陷 [判断题] *对(正确答案)错15. 单元测试属于动态测试 [判断题] *对(正确答案)错16. 测试是证明软件正确的方法。
[判断题] *对错(正确答案)17. 等价类划分属于黑盒测试技术而循环测试属于白盒测试。
[判断题] *对(正确答案)错18. 测试中应该对有效和无效、期望和不期望的输入都要测试。
[判断题] *错19. 程序中隐藏错误的概率与其发现的错误数成正比。
[判断题] *对(正确答案)错20. 测试应从“大规模”开始,逐步转向“小规模”。
[判断题] *对错(正确答案)21. 找出的软件缺陷越多,说明剩下的软件缺陷越少。
最新北大测试全套课件和教案_第4章_白盒测试_图文幻灯片课件
QQ:498944848
IT Education & Training
例:实现一个简单的数学运算
1. Dim a,b As Integer 2. Dim c As Double
Y a>0 and b>0
3. If (a>0 And b>0) Then
4.
c=c/a
N
Y
5. End if
a>1 or c>1
6. If (a>1 or c>1) Then
7.
c=c+1
N
8. End if 9. c=b+c
c=b+c
c=c/a c=c+1
anhuisoft@
QQ:498944848
1.语句覆盖
IT Education & Training
• 基本思想是:设计若干测试用例,运行 被测程序,使程序中每个可执行语句至 少执行一次。
白盒测试 —带上X光眼镜测试
anhuisoft@
QQ:498944848
4.2白盒测试方法
这个流程图,其中包括了一 个执行达20次的循环。那么 它所包含的不同执行路径数 高达520条,若要对它进行穷 举测试,覆盖所有的路径。 假使测试程序对每一条路径 进行测试需要1毫秒,同样 假定一天工作24小时,一年 工作365 天, 那么要想把如 图所示的小程序的所有路径 测试完,则需要3170年。
anhuisoft@
QQ:498944848
4.2.1 逻辑覆盖法
IT Education & Training
• 白盒测试中的逻辑覆盖方法有以下6种: 1. 语句覆盖 2. 判定覆盖 3. 条件覆盖 4. 判定-条件覆盖 5. 条件组合覆盖 6. 路径覆盖
白盒测试作业参考答案
第四章白盒测试参考答案(注意:答案仅供参考,若有误,请自行修改。
)1、使用逻辑覆盖法测试以下程序段。
private void DoWork(int x, int y, int z)1 {2 int k = 0, j = 0;3 if ((x > 3) && (z < 10)) //3-a 和 3-b4 {5 k = x * y - 1;6 j = (int)Math.Sqrt(k);7 }8 if ((x == 4) || (y > 5)) //8-a 和 8-b9 j = x * y + 10;10 j = j % 3;11 lbResult.Text = "k=" + k.ToString() +" j=" +j.ToString () ;12 }说明:程序段中每行开头的数字是对每条语句的编号。
要求:(1)画出程序的控制流图(用题中给出的语句编号表示)。
(2)分别以语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
(3)执行测试用例,并记录测试结果。
参考答案:(1):控制流图:(2)(3)测试用例略。
2.基本路径测试按要求对下面的代码进行测试。
代码功能是:用折半查找在元素呈升序排列的数组中查找值为key的元素。
代码如下:private int BinSearch(int [] array,int key)1 {2 int mid,low,high;3 low=0;4 high = array.Length - 1;5 while (low <= high)6 {7 mid = (low + high) / 2;8 if (key == array[mid])9 return mid;10 else if (key < array[mid])11 high = mid - 1;12 else13 low = mid + 1;14 }15 return -1;16 }参考答案:(1)控制流图:(2)环形复杂度V(G)=3+1=4;(3)独立路径:5→15→165→8→165→8→10→11→14→5→……5→8→10→13→14→5→……测试用例表略。
4(2)第4章 白盒测试用例2-基本路径法
TC3
TC4
练习题
Logo
• 根据左图给出的程序流程 图,完成以下要求:
(1)画出相应的控制流 图。
(2)计算环形复杂度。
(3)给出相应的图矩阵。 (4)找出程序的独立 路径集合。
f b
c
3
d
4
e
5
• 在控制流图中只 有两种图形符号, 它们是: 1. 节点:以标有编 号的圆圈表示。 2. 控制流线或弧: 以箭头表示。
1. 程序的控制流图
Logo
节点
1、标有编号的圆圈 2、程序流程图中矩形框所表示的处 理 3、菱形表示的两个甚至多个出口判 断 4、多条流线相交的汇合点
1. 程序的控制流图
设计测试用例
Logo
• 根据上一步得出的独立路径,涉及测试用例, 如下: 输入数据 预期输出 TC1 TC2 irecordnum=0 itype=0 irecordnum=1 itype=0 irecordnum=1 itype=1 irecordnum=1 itype=2 x=0 y=0 x=0 y=0 x=10 y=0 x=0 y=20
Logo
X=X/A
2
3
( a ) 流程图
1
A>1
B=0
2
X=X/A
4 (d ) 流程图 c 对应的流图
3
( c ) 详细流程图
1. 程序的控制流图
Logo
1. 程序的控制流图
Logo
2. 程序环路复杂性
Logo
• 环路复杂性即McCabe复杂性度量,在 进行程序的基本路径测试时,从程序 的环路复杂性可导出程序基本路径集 合中的独立路径条数。
• 程序的环路复杂性给出了程序基本 路径集中的独立路径条数,这是确 保程序中每个可执行语句至少执行 一次所必需的测试用例数目的上界。
第4章 白盒测试及其用例的设计PPT课件
A Free sample background from
第四章 白盒测试及其用例的设计
判定覆盖
• 要实现DoWork函数的判定覆盖,需要设计两个测试用例。
➢ 测试用例的输入为:{x=4、y=5、z=5};{x=2、y=5、z=5}
➢ 程序执行的路径分别是:abd;ace
• 分析:
上述两个测试用例不仅满足了判定覆盖,同时还做到语 句覆盖。从这点看似乎判定覆盖比语句覆盖更强一些,但 仍然无法确定判定内部条件的错误。例如把第二个判定中 的条件y>5错误写为y<5,使用上述测试用例,照样能按原 路径执行而不影响结果。因此,需要有更强的逻辑覆盖准 则去检验判定内的条件。
第四章 白盒测试及其用例的设计
条件覆盖(续)
• 根据条件覆盖的基本思想,要使上述4个条件可能产生的 8种情况至少满足一次,设计测试用例如下:
测试用例 执行路径 覆盖条件 覆盖分支
x=4、y=6、z=5
abd
T1、T2、 T3、T4
bd
x=2、y=5、 z=15 ace
-T1、-T2、 -T3、-T4
假设此时开发工作已结束,程序 送交到测试组,没有人知道代码中有 一个潜在的被 0 除的错误。若测试组 采用的测试用例的执行路径没有同时 经过x=0和y=5/x进行测试,显然测试 工作似乎非常完善,测试用例覆盖了 所有执行语句,也没有被 0 除的错误 发生。
Return
A Free sample background from
A Free sample background from
第四章 白盒测试及其用例的设计
判定覆盖(续)
• 说明:以上仅考虑了两出口的判断,我们还应把判定覆盖 准则扩充到多出口判断(如Case语句)的情况。因此,判 定覆盖更为广泛的含义应该是使得每一个判定获得每一种 可能的结果至少一次。
第4章 白盒测试方法总结
•
VI x>=90,y<90,x+y>=140
•
VII x<90,y>=90,x+y>=140
•
VIII x<90,y<90,x+y>=140
•
IX x>=90,y>=90,x+y<140 不存在
•
X x>=90,y<90,x+y<140
•
XI x<90,y>=90,x+y<140
•
XII x<90,y<90,x+y<140
付款金额P -
100 100 100 100 100
101 100 99
2 1 0
预期结果 无效输入 (0,0,0,0) (0,0,0,1) (1,0,0,0) (1,4,1,3) (1,4,1,4) 无效输入 无效输入 (1,0,0,0) (0,4,1,4) 无效输入 无效输入 无效输入
输入/输出条件组合出可能的情况:
第3、4章 黑盒白盒测试方法总结
第3、4章思考题 ❖第3章 黑盒测试方法作业题与思考题
▪ 作业1:等价类划分法 ? ▪ 作业2:因果图法? ▪ 思考题1:第三章课后题4(边界值和等价类结合) ? ▪ 直角三角形判定问题(决策表法) ?
❖第4章 白盒测试方法作业题与思考题?
计算保费费率的程序
(1)分析程序规格说明中给出和隐含的对输入条件的要求,列出等价 类表(包括有效等价类和无效等价类)。
❖ R > 100 ;0 < R < = 100;R <= 0 ;P > 100 ;R<= P <= 100;P < R
白盒测试习题课
习题3 习题 解答
习题课总体评价: 习题课总体评价:
知识掌握不够牢固,部分概念不清晰。比如, 组合覆盖的定义,独立路径,基本路径集。 对大家模糊的知识点,现重复如下:
组合覆盖:每个判定中条件的各种可能组合
都至少出现一次。
独立路径:程序中至少引入一个新的处理语 至少引入一个新的处理语
句集合或一个新条件的程序通路 程序通路 包涵独立路径,使程序中每个 基本路径集:包涵独立路径,使程序中每个 可执行语句至少执行一次。 可执行语句至少执行一次。
}
入入
习题2 习题 流程图
a No (x>3)&&(z<10) b Yes 执执执执执1 e c
(x= =4)||(y>5) d Yes
No
执执执执执2
执执执执执3
出入
习题3 习题
下列程序流程 图描述了最 多输入50个 多输入 个 值(以-1作 作 为输入结束 标志), ),计 标志),计 算其中有效 的学生分数 (0——100) ) 的个数、 的个数、总 分数和平均 值。
易错点分析: 易错点分析: 画控制流图时,需要将复合条件的 判断化为一系列只有单个条件的嵌 套的判断。 确定基本路径集。
习题3 习题
任务: 任务:
做出控制流图,计算环形复杂度,给出程序的 基本路径集。不需要给出测试用例
习题4 习题
应用基本路 基本路 径法给出测 径法 试用例。 (见kp83)
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Hale Waihona Puke main() { char c; int i=0,j=0,k=0; c=getchar(); while (c!='#') { if (c>='A'&&c<='Z'||c>='a'&&c<='z') i++; else if (c>='0'&&c<='9') j++; else k++; c=getchar(); } printf("i=%d,j=%d,k=%d\n",i,j,k); }
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题2
void DoWork(int x,int y,int z) 设计测试用例,实 { int k=0,j=0; 现: if((x>3)&&(z<10)) { ①条件覆盖, k=x*y-1; //语句块1 ②判定/条件覆盖, j=sqrt(k); ③条件组合覆盖, } if((x= =4)||(y>5)) ④路径覆盖. { j=x*y+10; //语句块2 } j=j%3; //语句块3
}
习题3 解答
Logo
Logo
}
入口
习题2 流程图
a No (x>3)&&(z<10) b Yes 执行语句块1 e c
Logo
(x= =4)||(y>5) d Yes 执行语句块2
No
执行语句块3
出口
习题3
下列程序流程 图描述了最 多输入50个 值(以-1作 为输入结束 标志),计 算其中有效 的学生分数 (0——100) 的个数、总 分数和平均 值。
Logo
习题3
Logo
• 任务:
• 做出控制流图,计算环形复杂度,给出程 序的基本路径集。不需要给出测试用例
习题4 main()
1. 2.
Logo
{
3.
• 应用基本 路径法给 出测试用 例。(见 kp83)
4. 5. 6.
7.
8. 9. 10.
11.
12. 13. 14. 15. 16.
char c; int i=0,j=0,k=0; c=getchar(); while (c!='#') { if (c>='A'&&c<='Z'||c>='a'&&c<='z') i++; else if (c>='0'&&c<='9') j++; else k++; c=getchar(); } printf("i=%d,j=%d,k=%d\n",i,j,k);
软件测试
第4章
白盒测试 ——习题课
习题1
设计测试用例,实现:①语句覆盖 ②判定覆盖
Logo
• int • { • • • • • • • • • • • • }
testCov(ห้องสมุดไป่ตู้nt a , int b)
int s; s=1; if(a > 1 || b < 0 ) s = a + b; else if(a < = -1) s = a - b; else s = a * b; s = s + 1; return s;