软件测试-白盒测试用例练习题,DOC
白盒测试用例练习
一、为以下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖,并画出相应的程序流程图。
voidDoWork(intx,inty,intz) {
intk=0,j=0;
if((x>3)&&(z<10)) {k=x*y-1;
j=sqrt(k);//语句块1 }
if((x==4)||(y>5)) {
j=x*y+10; }//语句块2 j=j%3;//语句块3 } a Y c
N
b e
Y
N d 由这个流程图可以看出,该程序模块有4条不同的路径: P1:(a-c-e)P2:(a-c-d)
P3:(a-b-e)P4:(a-b-d)
将里面的判定条件和过程记录如下: 判定条件M ={x>3andz<10} 判定条件N={x=4ory>5} 1、 语句覆盖
测试用例输入
输出
判定M 的取值 判定N 的取值
覆盖路径
x=4,z=5,y=8 k=31,j=0 T
T
P1(a-c-e)
2、判定覆盖
x>3 and z<10
x=4 or y>5 j=j%3
j=x*y+10
k=x*y-1
j=sqrt(k )
k=0
j=0
p1和p4可以作为测试用例,其中p1作为取真的路径,p4作为取反的路径。
测试用例输入输出判定M的取
值
判定N的取值覆盖路径
x=4,z=5,y=8 k=31,j=0 T T P1(a-c-e) x=2,z=11,y=
5
k=0,j=0 F F P4(a-b-d) 也可以让测试用例测试路径P2和P3。
相应的两组输入数据如下:
测试用例输入输出判定M的取
值
判定N的取
值
覆盖路径
x=5,z=5,y=4 k=19,j=sqrt(1
9)%3
T F P2(a-c-d)
x=4,z=11,y=
6
k=0,j=1 F T P3(a-b-e)
3、条件覆盖
对于M:x>3取真时T1,取假时F1;
z<10取真时T2,取假时F2;
对于N:x=4取真时T3,取假时F3;
y>5取真时T4,取假时F4。
条件:x>3,z<10,x=4,y>5
条件:x<=3,z>=10,x!=4,y<=5
根据条件覆盖的基本思路,和这8个条件取值,组合测试用例如表所示: 测试用例输
入
输出取值条件具体取值条件覆盖路径
x=4,z=5,y=8 k=31,j=
0 T1,T2,T3,
T4
x>3,z<10,x=4,y>5 P1(a-c-e)
x=3,z=11,y= 5 k=0,j=0 F1,F2,F3,
F4
x<=3,z>=10,x!=4,
y<=5
P4(a-b-d)
4、判定/条件覆盖
测试用例输
入
输出取值条件具体取值条件覆盖路径
x=4,z=5,y=8 k=31,j=
0 T1,T2,T3,
T4
x>3,z<10,x=4,y>5 P1(a-c-e)
x=3,z=11,y= 5 k=0,j=0 F1,F2,F3,
F4
x<=3,z>=10,x!=4,
y<=5
P4(a-b-d)
5、组合覆盖
条件组合
1)x>3,z<102)x>3,z>=10
3)x<=3,z<104)x<=3,z>=10
5)x=4,y>56)x=4,y<=5
7)x!=4,y>58)x!=4,y<=5
测试用例输入输出覆盖条件取值覆盖条件组覆盖路径
合
x=4,z=5,y=6 k=23,j=1 T1,T2,T3,T4 1,5 P1(a-c-e) x=4,z=10,y=5 k=0,j=0 T1,F2,T3,F4 2,6 P2(a-c-d) x=3,z=5,y=6 k=14j=1 F1,T2,F3,T4 3,7 P3(a-b-e) z=3,z=10,y=5 k=0,j=2 F1,F2,F3,F4 4,8 P4(a-b-d) 6、路径覆盖
测试用例输入输出覆盖条件取值覆盖条件
组合
覆盖路径
x=4,z=5,y=8 k=31,j=0 T1,T2,T3,
T4
1,5 P1(a-c-e)
x=5,z=5,y=4 k=19,j=sqrt(1
9)%3 T1,T2,F3,
F4
1,8 P2(a-c-d)
x=4,z=11,y=6 k=0,j=1 T1,F2,T3,
T4
2,5 P3(a-b-e)
x=2,z=11,y=5 k=0,j=0 F1,F2,F3,
F4
4,8 P4(a-b-d) 二、冒泡法排序:
#include<stdio.h>
main()
{
inti,j,temp;
inta[10];
for(i=0;i<10;i++)
scanf("%d,",&a[i]);
for(j=0;j<=9;j++){
for(i=0;i<10-j;i++)
if(a[i]>a[i+1]){
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;}
}
for(i=0;i<10;i++)
printf("%5d,",a[i]);
printf("\n");
}
2、程序流程图
i=0,j=0
3白盒测试:
3.1语句覆盖 测试用例 测试输入 覆盖对象
测试结果 I=0,j=0
1,4,3,2,5,7,6,8,9,11 1,2,4,5,6,3,7
1,2,3,4,5,6,7,8,9,11
3.2判定覆盖 测试用例 测试输入 覆盖对象 测试结果 I=0,j=0
1,4,3,2,5,7,6,8,9,11 1,2,6,7,8,9,4,5,3 1,2,3,4,5,
6,7,8,9,11
3.3条件覆盖 测试用例 测试输入 覆盖对象 测试结果 I=0,j=0
1,4,3,2,5,7,6,8,9,11 1,2,6,7,8,9,4,5,3 1,2,3,4,5,
6,7,8,9,11
3.4路径覆盖 测试用例
测试输入
覆盖对象
测试结果
输入要排序的一组元
j<9 i<10
j=j+
i=i+1 a[i]>a[i +1]
N Y
N
tamp=a[i] a[i]=a[i+1]
a[i+1]=temp
结束
Y
N Y 1 2
3 4
5
6
7 8
9
9 1
2
3
4 5 6
7
I=0,j=0 1,4,3,2,5,7,6,8,9,11 1,2,6,7,8,9,4,5,31,2,3,4,5,
6,7,8,9,11。
软件测试-白盒测试用例练习题
白盒测试用例练习一、为以下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖,并画出相应的程序流程图。
void DoWork (int x,int y,int z) {int k=0,j=0; if ( (x>3)&&(z<10) ) { k=x*y-1;j=sqrt(k); //语句块1} if ( (x==4)||(y>5) ) {j=x*y+10;} //语句块2 j=j%3; //语句块3 } a Y cN b eYx>3 and x=4 ork=x*y-1 k=0Nd由这个流程图可以看出,该程序模块有4条不同的路径: P1:(a-c-e) P2:(a-c-d) P3:(a-b-e) P4:(a-b-d) 将里面的判定条件和过程记录如下: 判定条件M ={x>3 and z<10} 判定条件N={x=4 or y>5} 1、 语句覆盖测试用例输入输出判定M 的取值判定N 的取值覆盖路径x=4,z=5,y=8 k=31,j=0 TTP1(a-c-e) 2、判定覆盖p1和p4可以作为测试用例,其中p1作为取真的路径,p4作为取反的路径。
测试用例输入 输出 判定M 的取值判定N 的取值覆盖路径x=4,z=5,y=8k=31,j=0TTP1(a-c-e) x=2,z=11,y =5k=0,j=0FFP4(a-b-d)也可以让测试用例测试路径P2和P3。
相应的两组输入数据如下: 测试用例输输出判定M 的取判定N 的取覆盖路径j=j%3j=x*y+1入值值x=5,z=5,y= 4 k=19,j=sqrt(19)%3T F P2(a-c-d)x=4,z=11,y=6k=0,j=1 F T P3(a-b-e)3、条件覆盖对于M:x>3取真时T1,取假时F1;z<10取真时T2,取假时F2;对于N:x=4取真时T3,取假时F3;y>5取真时T4,取假时F4。
白盒和黑盒测试用例测试题目
一、问题:报表日期等价类划分和边界值分析设某公司要打印2001~2005年的
报表,其中报表日期为6位数字组成,其中,前4位为年份,后两位为月份。
二、请结合等价类方法给出getNumDaysInMonth(int month, int year)方法
的测试用例,其中getNumDaysInMonth方法根据给定的月份和年份返回该月份的总天数。
三、阅读下列说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。
[说明]在 ERP(企业资源计划)系统中,“计划管理”模块的流程图如下:
[问题1]因果图法是功能测试案例设计方法中的一种,简述利用因果图导出测试用例需要经过哪几个步骤?
[问题2]根据题干中的流程图,利用因果图法,找出哪些是正确的输入条件,那些是正确的输出结果,将下列描述的字母编号填入表中。
a.可以进行销售发货管理
b.可用库存不满足销售需求(有可用库存)
c.可用库存不满足销售需求(无可用库存)
d.可用库存满足生产需求
e.可用库存不满足生产需求
f.可用库存不满足生产需求(无可用库存)
g.可以进行 MPS 运算
h.可用库存满足销售需求
i.生成主生产计划
j.生成计划采购单
k.生成计划生产定单
l.可以进行 MRP 运算
[问题3]下图画出“计划管理”模块的因果图。
请把问题2中列出的输入条件和输出结果的字母编号填入到空白框中相应的位置。
四、有一个在线购物的实例,用户进入一个在线购物网站进行购物,选购物品
后,进行在线购买,这时需要使用帐号登录,登录成功后,进行付钱交易,交易成功后,生成订购单,完成整个购物过程。
五、根据如下流程图,写出白盒测试测试用例。
软件测试练习题
软件测试练习题白盒测试单元测试学号姓名1.以程序内部的逻辑结构为基础的测试用例设计技术属于()。
A.灰盒测试B.数据测试C.黑盒测试D.白盒测试2.即使对程序的所有路径都进行了测试,程序也可能存在没能检查出来的缺陷,其原因可能是()。
A.程序可能会因为缺少某些路径而存在问题B.即使是穷举路径测试也不能保证程序符合其设计规格说明C.穷举路径测试也可能不会暴露数据敏感性错误D.以上全部3.下列关于测试方法的叙述中不正确的是()。
A.从某种角度上讲,白盒测试和黑盒测试都属于动态测试B.功能测试属于黑盒测试C.对功能的测试通常要考虑程序的内部结构D.结构测试属于白盒测试4.不需要运行程序,通过收集有关代码的结构信息来对程序进行的测试是()。
A.性能测试B.黑盒测试C.白盒测试D.静态分析5.在白盒测试中,程序员要运用自己的智力和程序理解力,深入到源程序中进行测试,这样的好处是()。
A.重点测试B.数据完整性和内部边界C.测试覆盖和控制流D.以上全部6.关注在一连串的测试中如何选择合适的程序或子程序路径来执行有效的检查,这种测试极有可能是()。
A.结构测试B.黑盒测试C.功能测试D.静态测试7.在覆盖准则中,最常用的是()。
A.语句覆盖B.条件覆盖C.分支覆盖D.以上全部8.大多数实际情况下,性能测试的实现方法是()。
A.黑盒测试B.白盒测试C.静态分析D.可靠性测试9.如果一个判定中的复合条件表达式为(A>1)or(B<=3),则为了达到100%的条件覆盖率,至少需要设计()个测试用例。
A.1B.2C.3D.410.下列逻辑覆盖中,最强的是()A.语句覆盖B.条件覆盖C.路径覆盖D.条件组合覆盖11.关于逻辑覆盖,说法错误的是()。
A.DDP(判定路径覆盖)是判定覆盖的一个变体B.满足条件覆盖也一定满足判定覆盖C.指令块覆盖属于语句覆盖D.若判定覆盖率达到100%,则语句覆盖率也达到100%。
软件测试用例测验题1
1单选在黑盒测试方法中,设计测试用例的主要根据是()3单选凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选择测试用例的测试方法叫()4单选2元地铁票售票软件:投币2元时,按下“2元”按钮,弹出相应地铁票;投币5元,则弹出地铁票同时退还3元,若对该功能进行测试用例设计最宜选择哪种方法5单选黑盒测试技术,使用最广的用例设计技术是等值分析测试边界值分析测试错误推测法逻辑覆盖测试6单选既可以用于黑盒测试,也可以用于白盒测试的方法的是逻辑覆盖法边界值法基本路径法正交试验设计法7单选某购物中心电梯限坐15人。
在电梯中安装计数器来统计乘客数量。
如出现超出规定人数以外的任何情况,会有不同的警示音。
软件编写后进行边界值测试,应选取的边界值是:()1,15,16.1 1510,1515,208单选关于等价类划分法,下面说法不正确的是(9单选某系统对每个员工一年的出勤天数进行核算和存储(按每月22个工作日计算),使用文本框的模式进行填写,在此文本框的测试用例编写中使用了等价类。
下列关于等价类划分法,划分错误的是()无效等价类,出勤日>264无效等价类,出勤日<0有效等价类,0< =出勤日< =264有效等价类,0<出勤日<26410单选若一个通讯录最多可以输入100条记录,则下列哪组测试用例最优?分别输入1、50、100条记录分别输入0、1、50、99、100条记录分别输入0、1、99、100、101条记录分别输入0、1、50、99、100、101条记录11单诜对于功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应优先维修单选处理。
根据这段话,使用判定表法设计测试用例,以下说法不正确的是()12单选以下不属于因果图约束中的输入约束的是()要求强制13单选因果图中,关系符号“V”代表的是(恒等14单选现有一个处理单价为1元的盒装饮料的自动售货机软件,若投入1元币,按下“可乐”、“雪碧”或“红茶”按钮,相应的饮料就送出来,若投入的是2元币,在送出饮料的同时还退还1元币。
白盒测试试题答案
先看以下代码:/** 白盒测试逻辑覆盖测试范例*/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、测试用例:两个判断的取真、假分支都已经被执行过,所以满足了判断覆盖的标准。
软件测试用例设计考核试卷
5. 以下哪些情况下可能需要回归测试?( )
A. 软件修复了一个bug
B. 软件添加了新功能
C. 环境发生变化
D. 代码重构
E. 更新了测试用例
6. 以下哪些工具可以用于自动化测试?( )
A. QTP
B. Selenium
C. JMeter
D. LoadRunner
E. Microsoft Word
D. 回归测试
10. 以下哪个不是软件测试的主要类型?( )
A. 功能测试
B. 性能测试
C. 安全性测试
D. 编码测试
11. 在软件测试用例设计中,以下哪个方法主要用于测试输入的有效性?( )
A. 等价类划分
B. 边界值分析
C. 错误推测法
D. 因果图法
12. 以下哪个测试主要用于检测软件的编码错误?( )
10. 在软件测试过程中,______是测试人员根据测试用例执行测试并记录测试结果的活动。
四、判断题(本题共10小题,每题1分,共10分,正确的请在答题括号中画√,错误的画×)
1. 软件测试的目的是证明软件是正确的。( )
2. 单元测试主要是由开发人员来执行的。( )
3. 测试用例设计完成之后,无需根据项目的变化进行更新。( )
2. 功能
3. 代码
4. 测试工具
5. 不能替代人工测试
6. 响应速度
7. 单元测试
8. 用户
9. 兼容性测试
10. 测试执行
四、判断题
1. ×
2. √
3. ×
4. √
5. ×
6. √
7. √
8. ×
9. √
10. ×
白盒测试及例题
基本路径测试
• 前提条件 测试进入的前提条件是在测试人员 已经对被测试对象有了一定的了解,基 本上明确了被测试软件的逻辑结构。 • 测试过程 过程是通过针对程序逻辑结构设计 和加载测试用例,驱动程序执行,以对 程序路径进行测试。测试结果是分析实 际的测试结果与预期的结果是否一致。
基本路径测试
• 在程序控制流图的基础上,通过分析控制构造的环 路复杂性,导出基本可执行路径集合,从而设计测 试用例。包括以下4个步骤和一个工具方法: 1. 程序的控制流图:描述程序控制流的一种图示 方法。 2. 程序圈复杂度:McCabe复杂性度量。从程序的 环路复杂性可导出程序基本路径集合中的独立 路径条数,这是确定程序中每个可执行语句至 少执行一次所必须的测试用例数目的上界。 3. 导出测试用例:根据圈复杂度和程序结构设计 用例数据输入和预期结果。 4. 准备测试用例:确保基本路径集中的每一条路
条件组合覆盖
• 针对上述问题又提出了另一种标准——―条 件组合覆盖”。它的含义是:执行足够的 例子,使得每个判定中条件的各种可能组 合都至少出现一次。显然,满足“条件组 合覆盖”的测试用例是一定满足“分支覆 盖”、“条件覆盖”和“分支/条件覆盖” 的。
条件组合覆盖
再看例1的程序,我们需要选择适当 的例子,使得下面 8种条件组合都能 够出现:
基本路径测试
工具方法: 图形矩阵:是在基本路径测试中起辅 助作用的软件工具,利用它可以实现自 动地确定一个基本路径集。
控制流图的符号
• 在介绍基本路径方法之前,必须先介绍一种简单的 控制流表示方法,即流图。流图是对待测试程序过 程处理的一种表示。流图使用下面的符号描述逻辑 控制流,每一种结构化构成元素有一个相应的流图 符号。
• • • • 白盒测试概念 测试覆盖标准 逻辑驱动测试 基本路径测试
软件测试_白盒测试
12
控制流图中节点合并
有的时候,我 们可以把几个 节点合并成一 个, 合并的原则: 若在一个节点 序列中没有分 支,则我们可 以把这个序列 的节点都合并 成一个节点。
4 5 6 9
10 12 13 21 15 17 19 20 22 23
22 23 20
7
8
4
9
11
10 12 13
11
14 16 18
Dim a,b As Integer Dim c As Double If (a>0 And b>0) Then c=c/a End if If (a>1 or c>1) Then c=c+1 End if c=b+c
a>0 and b>0 N a>1 or c>1 N c=b+c
Y
c=c/a
Y
c=c+1
21 15
14 16 17 19 18
13
逻辑覆盖法
覆盖测试,是利用程序的逻辑结构设计相应 的测试用例。测试人员要深入了解被测程序 的逻辑结构特点,完全掌握源代码的流程, 才能设计出恰当的用例。 白盒测试中的逻辑覆盖方法有以下6种:
语句覆盖 判定覆盖 条件覆盖 判定-条件覆盖 条件组合覆盖 路径覆盖
28
4.判定-条件覆盖
基本思想是:设计足够的测试用例,使得 判断条件中的所有条件可能至少执行一次 取值,同时,所有判断的可能结果至少执 行一次。
29
1
4.判定-条件覆盖……续1
按照判定-条件覆盖 的要求,我们设计的 测试用例要满足如下 条件: 1. 所有条件可能至少执 行一次取值; 2. 所有判断的可能结果 至少执行一次。
白盒测试逻辑覆盖练习题
白盒测试逻辑覆盖练习题一、语句覆盖if (a > 0 && b > 0) {c = a + b;} else {c = 0;}def check_age(age):if age < 18:return "未成年"elif age >= 18 and age < 60:return "成年人"else:return "老年人"二、分支覆盖if (x > 0) {if (y > 0) {printf("第一象限");} else {printf("第四象限");}} else {if (y > 0) {printf("第二象限");} else {printf("第三象限");}}function calculateGrade(score) {if (score >= 90) {return 'A';} else if (score >= 80) {return 'B';} else if (score >= 70) {return 'C';} else {return 'D';}}三、路径覆盖public int calculate(int a, int b) { if (a > 0) {if (b > 0) {return a + b;} else {return a b;}} else {if (b > 0) {return b a;} else {return 0;}}}public int Max(int a, int b, int c) { if (a > b) {if (a > c) {return a;} else {return c;}} else {if (b > c) {return b;} else {return c;}}}四、条件覆盖def check_password(password):if len(password) >= 8 and any(char.isdigit() for char in password):return "密码强度高"else:return "密码强度低"function validateForm(username, password) {if (username.length > 0 && password.length > 0) { return true;} else {return false;}}五、判定条件覆盖public boolean isEligible(int age, boolean hasLicense) {if (age >= 18 && hasLicense) {return true;} else {return false;}}int isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i < num; i++) {if (num % i == 0) {return 0;}}return 1;}六、多条件覆盖public string GetGrade(int score, bool isFinalExam) { if (score >= 90 || (isFinalExam && score >= 80)) { return "A";} else if (score >= 80 || (isFinalExam && score >= 70)) {return "B";} else if (score >= 70 || (isFinalExam && score >= 60)) {return "C";} else {return "D";}}return "Eligible";} else {return "Not Eligible";}}七、条件组合覆盖def check_login(username, password, is_admin):if (username == "admin" or username == "user") and password == "56" and not is_admin:return "User logged in";elif (username == "admin" and is_admin) and password == "admin123":return "Admin logged in";else:return "Invalid credentials";public String authenticate(String username, String password, boolean hasTwoFactor) {if (username.equals("admin") &&password.equals("admin123") && hasTwoFactor) {return "Admin access granted";} else if (username.equals("user") &&password.equals("user123") && !hasTwoFactor) {return "User access granted";} else {return "Access denied";}}八、路径条件覆盖void processOrder(int quantity, float discount) {if (quantity > 10) {if (discount < 0.1) {printf("Order processed with standard discount");} else {printf("Order processed with special discount");}} else {printf("Order processed without discount");}}function calculateTotal(price, isMember, hasCoupon) { let total = price;if (isMember) {total = 0.9; // 10% discount for members}if (hasCoupon) {total = 0.95; // Additional 5% discount for coupon}return total;}九、修改条件/判定覆盖def upgrade_account(user_type, points):if user_type == "basic" and points >= 100:return "Upgrade to premium"elif user_type == "premium" and points >= 200:return "Upgrade to elite"else:return "No upgrade available"public String checkSubscription(String type, int duration) {if (type.equals("monthly") && duration >= 6) {return "Eligible for annual plan";} else if (type.equals("annual") && duration >= 12) {return "Eligible for lifetime plan";} else {return "Continue current plan";}}答案一、语句覆盖1. 测试用例:a=1, b=1;a=1, b=12. 测试用例:age=15;age=25;age=65二、分支覆盖1. 测试用例:x=1, y=1;x=1, y=1;x=1, y=1;x=1, y=12. 测试用例:score=95;score=85;score=75;score=65三、路径覆盖1. 测试用例:a=1, b=1;a=1, b=1;a=1, b=1;a=1, b=12. 测试用例:a=10, b=5, c=3;a=5, b=10, c=8;a=5, b=5, c=10;a=3, b=3, c=3四、条件覆盖1. 测试用例:password="567";password=""2. 测试用例:username="test", password="pass";username="", password=""五、判定条件覆盖1. 测试用例:age=20, hasLicense=True;age=17, hasLicense=False2. 测试用例:num=2;num=1;num=0;num=1六、多条件覆盖1. 测试用例:score=95, isFinalExam=False;score=85, isFinalExam=True;score=75, isFinalExam=False;score=65, isFinalExam=True七、条件组合覆盖1. 测试用例:username="admin", password="admin123",is_admin=False;username="user", password="56",is_admin=False;username="admin", password="admin123",is_admin=True2. 测试用例:username="admin", password="admin123", hasTwoFactor=True;username="user", password="user123", hasTwoFactor=False;username="admin", password="wrong", hasTwoFactor=True八、路径条件覆盖1. 测试用例:quantity=15, discount=0.05;quantity=8, discount=0.05;quantity=15, discount=0.22. 测试用例:price=100, isMember=True, hasCoupon=True;price=100, isMember=False, hasCoupon=False;price=100, isMember=True, hasCoupon=False九、修改条件/判定覆盖1. 测试用例:user_type="basic", points=50;user_type="basic", points=150;user_type="premium",points=150;user_type="premium", points=2502. 测试用例:type="monthly", duration=3;type="monthly", duration=9;type="annual", duration=9;type="annual", duration=15。
《软件测试》第三章 白盒测试方法
《软件测试》第三章白盒测试方法一、填空题1、语句覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的执行语句。
2、判定覆盖的作用是使真假分支军被执行。
3、条件覆盖是指判定语句中的每个条件都要取真、假值各一次。
4、对于判定语句IF (a>1 AND c1、c1 AND c判断覆盖方法。
5、判定条件覆盖要求判定语句中所有条件取值的可能组合都至少出现一次。
6、在程序插桩法中,插入到程序中的代码称为探针。
二、判断题1、语句覆盖无法考虑分支组合情况。
(X )。
2、目标代码插桩需要重新编译、链接程序。
(√)。
3、语句覆盖可以测试程序中的逻辑错误。
(√)。
4、判定-条件覆盖没有考虑判定语句与条件判断的组合情况。
(X )。
5、对于源代码插桩,探针具有较好的通用性。
(√)。
三、单选题1、下列选项中,哪一项不属于逻辑覆盖?( D )。
A.语句覆盖B.条件覆盖C.判定覆盖D.判定-语句覆盖。
2、关于逻辑覆盖,下列说法中错误的是( C )。
A.语句覆盖的语句不包括空行、注释等。
B.相比于语句覆盖,判定覆盖考虑到了每个判定语句的取值情况。
C.条件覆盖考虑到了每个逻辑条件取值的所有组合情况。
— 1/2 —— 1/2 —D.在逻辑覆盖中,条件组合覆盖是覆盖率最大的测试方法。
3、关于程序插桩法,下列说法中错误的是( D )。
A.程序插桩法就是往被测程序中插入测试代码以达到测试目的的方法。
B. 程序插桩法可分为目标代码插桩法和源代码插桩。
C. 源代码插桩的程序需要重新编译、链接过程,单测试代码不参与编译、链接过程。
D. 目标代码插桩是往二进制程序中插入测试代码四、简答题1、请简述逻辑覆盖的几种方法及他们之间的区别。
答:6种。
语句覆盖(SC):设计足够多的测试用例,抄确保每条语句都被执行过。
判定覆盖(DC):设计足够多的测试用例,确保每个判定都分别取真值与假值。
条件覆盖(CC):设计足够多的测试用例,确保每个条件都分别取真值与假值。
