测试实验题目.docx
《测试实验题目.docx》由会员分享,可在线阅读,更多相关《测试实验题目.docx(23页珍藏版)》请在冰豆网上搜索。
![测试实验题目.docx](https://file1.bdocx.com/fileroot1/2022-11/24/d450bd8c-1b56-4755-964f-829bfe65f973/d450bd8c-1b56-4755-964f-829bfe65f9731.gif)
测试实验题目
一、简答题
1.什么是黑盒测试?
黑盒测试主要采用的技术有哪些?
黑盒测试(Black-boxTesting,又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。
利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。
采用黑盒技术设计测试用例的方法有:
等价类划分、边界值分析、错误推测、因果图和综合策略。
2.简单描述黑盒测试各种方法的特点。
黑盒测试的方法主要有边界值分析法、等价类划分法、因果图法、决策表测试法等。
(2分)
边界值分析利用输入变量的最小值、略大于最小值、输入值域内的任意值、略小于最大值和最大值来设计测试用例。
(2分)
等价类划分法是把程序的输入域划分为若干部分,然后从每个部分中选取少数代表性数据当作测试用例。
经过类别的划分后,每一类的代表性数据在测试中的作用都等价于这一类中的其他值。
(2分)
因果图方法就是从程序规格说明书的描述中找出因和果,将因果图转换为决策表,最后为决策表中的每一列设计一个测试用例。
这种方法考虑到了输入情况各种组合以及各个输入情况之间的相互制约关系。
(2分)
在所有的黑盒测试方法中,基于决策表的测试是最为严格、最具有逻辑性的。
即:
针对不同逻辑条件的组合值,分别执行不同的操作。
(2分)
3.如果能够执行完美的黑盒测试,还需要进行白盒测试吗?
为什么?
需要,黑盒测试,测试人员完全不考虑程序内部的逻辑结构和内部特征,只依据程序的需求分析规格说明,检查程序的功能是否符合它的功能说明。
4.什么是等价类?
如何划分等价类?
等价类测试中有哪些方法?
等价类是指某个输入域的子集合。
在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:
测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。
等价类分为两种,即为:
有效等价类与无效等价类。
怎样划分等价类:
1、如果按照区间划分,规定了取值范围,则可确定一个有效等价类和两个无效等价类;
2、如果按照数值划分,则可划分一个有效等价类和一个无效等价类;
3、如果按照限定条件,则可确定一个有效等价类和若干个无效等价类;
5.等价分类法的测试技术采用的一般方法?
举例说明?
答:
(1) 为每个等价类编号;
(2) 设计一个新的测试方案,以尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步骤,直到所有有效等价类被覆盖为止。
(3) 设计一个新的测试方案,使它覆盖一个尚未被覆盖的无效等价类,重复这一步骤,直到所有无效等价类被覆盖为止。
6.为什么要进行等价类的划分?
等价类划分应该遵循哪些原则?
例如在测试某一程序时,为了保证足够的测试,需要一直测到尽可能的数据,这样测试的工作量可想而知是根本不可能做到的,这时就需要找到一个更好的测试方法来简化测试过程,没有必要一个一个的测试,应该有更好的方法进行测试,例如能否找出某一具有代表性的数据来进行测试,这就产生了等价类划分。
规则:
1)在输入条件规定了取值范围的情况下,可确立一个有效等价类和两个无效等价类;
2)在输入条件规定了输入值的个数的情况下,可确立一个有效等价类和两个无效等价类;
3)在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和多个无效等价类;
4)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类;
5)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类;
6)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类和多个无效等价类;
二、黑盒用例设计题
1.有一个小程序,能够求出三个在0到9999间整数中的最大者,请分别用边界值分析和健壮性测试方法设计测试用例。
因三个数在0-9999之间,因此可以划分为一个有效等价类和两个无效等价类
(X1,X2,X3)<0
0<(X1,X2,X3)<9999
(X1,X2,X3)>9999
根据数值等价类设计测试用例:
用例序号
测试用例
应产生行为
1
输入-2
程序必须能判断输入的数越界并告知用户
2
输入5000
程序必须能接受,输入并运行正常
3
输入9997
程序必须能接受,输入并运行正常
4
输入10000
程序必须能判断输入的数越界并告知用户
边界值测试
1.输入上述
2.功能测试
X1>X2
X2>X3
X1>X2>X3
X2=X3
X1>X2=X3
X2X1>X3X1>X3>X2
X1=X3X1=X3>X2
X1X1>X2
X1=X2
X2>X3
X1=X2>X3
X2=X3
X1=X2=X3
X2X1=X2X1X2>X3
X1>X3X3X1=X3X3=X1X1X2=X3
X1X2X1测试用例
正常运行
最大值
321
是
3
322
是
3
312
是
3
323
是
3
213
是
3
331
是
3
333
是
3
223
是
3
231
是
3
121
是
2
132
是
3
233
是
3
123
是
3
2.假定一台ATM机允许提取增量为50元,总金额从100到2000(包含2000元)不等的现金。
请结合等价类方法和边界值分析进行测试。
答:
等价类划分:
有效等价类100<=x<=2000(x为50的倍数)
无效等价类x<100、x>2000、x不是50的倍数
用例编号
输入数据
预期结果
1
一次取0元
提取失败
2
一次取50元
系统提示“最少提取100元”
3
一次取100元
提取成功
4
一次性取1950元
提取成功
5
一次取2000元
提取成功
6
一次取20元
提取失败
7
一次性取2100
系统提示“一天最多取2000元”
8
取两次:
1000+1000=2000
提取成功
9
取五次:
100+100+100+100+100=500
提取成功
10
ATM余额不足
友好提示“ATM机余额不足”用户的提款取消
11
卡内余额不足
友好提示“卡内余额不足”用户的提款取消
12
取款过程中机器出现故障
友好提示“机器故障”用户的提款取消
13
卡被吞掉
友好提示“请和工作人员联系”用户的提款取消
3.程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:
1≤month≤12、1≤day≤31、1900≤year≤2050。
),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上隔一天(第三天)的日期。
例如,输入为2005年11月29日,则该程序的输出为2005年12月1日。
请用等价类测试和边界测试法设计测试用例。
答:
1.用边界值测试方法设计测试用例
1.用健壮性测试法设计测试用例,按照下列步骤进行:
(1)分析各变量的取值
健壮性测试时,各变量分别取:
略小于最小值、最小值、略高于最小值、正常值、略低于最大值、最大值和略大于最大值。
month:
-1,1,2,6,11,12,13;
day:
-1,1,2,15,30,31,32
year:
1899,1900,1901,1975,2049,2050,2051;
(2)测试用例数
有n个变量的程序,其边界值分析会产生6n+1个测试用例。
这里有3个变量,因此会产生19个测试用例。
2.设计测试用例
表1-1NextDate函数测试用例
用例编号
输入数据
预期输出
mouth
day
year
1
6
15
1899
year超出[1900,2050]
2
6
15
1900
1900.6.17
3
6
15
1901
1901.6.17
4
6
15
1975
1975.6.17
5
6
15
2049
2049.6.17
6
6
15
2050
2050.6.17
7
6
15
2051
year超出[1900,2050]
8
6
-1
1975
day超出[1…31]
9
6
1
1975
1975.6.3
10
6
2
1975
1975.6.4
11
6
30
1975
1975.7.2
12
6
31
1975
输入日期超界
13
6
32
1975
day超出[1…31]
14
-1
15
1975
Mouth超出[1…12]
15
1
15
1975
1975.1.17
16
2
15
1975
1975.2.17
17
11
15
1975
1975.11.17
18
12
15
1975
1975.12.17
19
13
15
1975
Mouth超出[1…12]
4.假设商店货品价格(R)都不大于100元(且为整数),若顾客付款(P)在100元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。
假定此商店的货币面值只包括:
50元(N50)、10元(N10)、5元(N5)、1元(N1)四种。
请结合等价类划分法和边界值分析法为上述程序设计出相应的测试用例。
一、分析输入的情形。
R>100
0R<=0
P>100
R<=P<=100
P二、分析输出情形。
N50=1
N50=0
4>=N10>=1
N10=0
N5=1
N5=0
4>=N1>=1
N1=0
三、由上述之输入/输出条件组合出可能的情形,为满足以上之各种情形,测试资料设计。
输入
输出
测试用例
商品价格
付款
找零
结果
商品价格
顾客付款金额
R>100
无效
101
R<=0
无效
0
1
0P>100
无效
100
101
0P
无效
100
99
0R<=P<=100
N50=1
成功
50
100
0R<=P<=100
N10=4,N5=1,N1=4
成功
51
100
0R<=P<=100
N10=1
成功
90
100
0R<=P<=100
N5=1,N1=4
成功
91
100
0R<=P<=100
N5=1
成功
95
100
0R<=P<=100
N1=4
成功
96
100
0R<=P<=100
N1=1
成功
99
100
0R<=P<=100
0
成功
100
100
5.某城市电话号码由三部分组成,分别是:
地区码——空白或4位数字;
前缀——为三位数字,但不能“0”,“1”开头;
后缀——4位数字。
假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。
请写出每个输入条件的有效等价类和无效等价类。
输入条件
有效等价类
编号
无效等价类
编号
地区码
空白
1
有非数字字符
5
四位数
2
少于四位数字
6
多于4位数字
7
前缀
200-999
3
有非数字字符
8
起始位为’0’
9
起始位为’1’
10
少于3位数字
11
多于3位数字
12
后缀
4位数字
4
有非数字字符
13
少于4位数字
14
多于4位数字
15
6.某程序规定:
“…对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理…”。
这里假定:
“维修记录不全”和“优先维修处理”均已在别处有更严格的定义。
请建立判定表。
答:
根据问题中描述的输入条件和输出结果,列出所有的条件桩和动作桩。
其中条件桩有三项:
1)功率大于50马力吗?
2)维修记录不全吗?
3)运行超过10年吗?
动作桩有两项:
1)进行优先处理;2)作其他处理;
判定表如下表所示:
1
2
3
4
5
6
7
8
条
件
功率大于50马力吗?
Y
Y
Y
Y
N
N
N
N
维修记录不全吗?
Y
Y
N
N
Y
Y
N
N
运行超过10年吗?
Y
N
Y
N
Y
N
Y
N
动
作
进行优先处理
作其他处理
7.某公司招聘人员,其要求为:
学历:
本科及以上;专业:
计算机、通信、自动化;年龄:
22-30岁。
请划分出各条件的有效等价类和无效等价类。
答:
学历的等价类:
A1={本科,硕士,博士},
A2={专科,高中,初中,小学,无}
专业的等价类:
B1={计算机、通信、自动化},B2={其他}
年龄的等价类:
C1={22-30岁},C2={小于22岁},C3={大于30岁}
8.某个软件的规格说明中包含了下面的要求:
第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文字的修改。
但如果第一列字符不正确,则给出信息L,如果第二列字符非数字,则给出信息M。
请用基于决策表的测试方法进行测试,并设计测试用例覆盖每一种情况。
答:
输入条件:
第一列字符:
{A},{B},{其他};第二列字符:
{数字},{其他}
动作:
修改文件,给出L,给出M。
(6分)
决策表如下表所示:
条件
第一列
A
B
其他
A
B
其他
第二列
数字
数字
数字
其他
其他
其他
动作
修改文件
√
√
给出L
√
√
给出M
√
√
√
测试用例
A6
B2
M1
A!
B%
V+
三、简答题
1.请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。
答:
根据不同的测试阶段,测试可以分为单元测试、集成测试、系统测试和验收测试。
体现了测试由小到大、由内至外、循序渐进的测试过程和分而治之的思想。
单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。
集成测试界于单元测试和系统测试之间,起到“桥梁作用”,一般由开发小组采用白盒加黑盒的方式来测试,既验证“设计”,又验证“需求”。
系统测试的粒度最大,一般由独立测试小组采用黑盒方式来测试,主要测试系统是否符合“需求规格说明书”。
验收测试与系统测试相似,主要区别是测试人员不同,验收测试由用户执行。
2.什么是白盒测试?
白盒测试主要采用的技术有哪些?
答:
白盒测试:
测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致。
白盒测试主要采用的技术有:
路径测试技术、事务处理流程技术和基于逻辑的测试技术。
3.白盒测试有那几种方法?
并简单描述各种方法的特点。
答:
白盒测试的测试方法有逻辑覆盖法和基本路径覆盖法,逻辑覆盖法分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
逻辑覆盖法:
是通过对程序逻辑结构的遍历实现程序的覆盖。
1)、语句覆盖:
就是选择足够的测试用例,使得程序中的可执行语句至少执行一次
2)、判定覆盖:
就是执行足够的测试用例,使得程序中的每个分支都至少执行一次。
3)、条件覆盖:
执行足够的测试用例,使程序每个判定的每个条件的所有可能至少执行一次。
4)、判定/条件覆盖:
执行足够的测试用例,使得判定中每个条件的所有可能至少出现一次,同时每个判定本身的判定结果也至少出现一次。
5)、条件组合覆盖:
执行足够的测试用例,使得每个判定中条件的所有可能组合至少出现一次。
6)、路径覆盖:
执行足够的测试用例,要求覆盖程序中所有可能的路径
4.常用的逻辑覆盖测试方法有哪几种?
并简单描述各种方法的目的。
答:
1)、语句覆盖:
就是选择足够的测试用例,使程序中的每个可执行语句至少执行一次。
2)、判定覆盖:
就是执行足够的测试用例,使得程序中的每个判定的"true"和"false"值都至少执行一次,这种测试也称为“分支测试”。
3)、条件覆盖:
执行足够的测试用例,使程序每个判定中的每个条件的"true"和"false"值至少执行一次。
4)、判定/条件覆盖:
执行足够的测试用例,使得判定中每个条件的所有可能至少出现一次,同时每个判定本身的判定结果也至少出现一次。
5)、条件组合覆盖:
执行足够的测试用例,使得每个判定中条件的各种可能组合至少出现一次。
6)、路径覆盖:
执行足够的测试用例,要求覆盖程序中所有可能的路径
5.逻辑覆盖中几种主要覆盖的含义?
举例说明?
答:
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
逻辑覆盖包含多种:
语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖和路径覆盖。
语句覆盖:
就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。
这里的“若干个”,意味着使用测试用例越少越好。
判定覆盖:
有时也称分支覆盖,就是指设计若干测试用例,运行被测程序,使得每个判定的取真分支和取假分支至少经历一次。
条件覆盖:
设计足够多的测试用例,使得每一判定语句中每个逻辑条件的可能取值至少满足一次。
判定条件覆盖:
设计足够多的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果也至少出现一次。
条件组合覆盖:
也称多条件覆盖,设计足够多的测试用例,使得每个判定中条件的各种可能组合都至少出现一次(以数轴形式划分区域,提取交集,建立最少的测试用例)。
路径覆盖:
路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。
路径覆盖是覆盖率最高的一种覆盖技术。
四、白盒用例设计题
1.使用逻辑覆盖测试方法测试以下程序段:
voidDoWork(intx,inty,intz) {
1 intk=0,j=0;
2 if((x>3)&&(z<10)){
4 k=x*y-1;
5 j=sqrt(k);
6 }
7 if((x==4)||(y>5)){
8 j=x*y+10;
9}
10 j=j%3;
11 }
说明:
程序段中每行开头的数字(1~10)是对每条语句的编号。
(1)画出程序的控制流图(用题中给出的语句编号表示)。
(2)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
(1)
(2)
语句覆盖 取x=4y=5 z=9执行路径:
1 2 4 5 6 7 8 9 10 11
判定覆盖 取x=4y=5 z=9执行路径:
124567891011
x=5 y=5 z=11执行路径:
1 2 7 10 11
条件覆盖取x=4 y=5 z=9执行路径:
1 2 4 5 6 7 8 910 11
x=5 y=5 z=11执行路径:
1 2 7 10 11
判定/条件覆盖取x=4 y=6 z=5执行路径:
1 2 4 5 6 7 8 910 11
x=3 y=5 z=11执行路径:
1 2 7 10 11
组合覆盖取x=4 y=6 z=5执行路径:
1 2 4 5 6 7 8 910 11
x=4 y=5 z=15执行路径:
1 2 7 10 11
x=3 y=6 z=9执行路径:
1 2 7 8 910 11
x=5 y=5 z=5执行路径:
1 2 4 5 6 710 11
路径覆盖 取x=4y=5 z=9执行路径:
1 2 4 5 6 7 8 9 10 11
x=3 y=5 z=11执行路径:
1 2 7 10 11
x=3 y=6 z=9执行路径:
1 2 7 8 910 11
x=5 y=5 z=5执行路径:
1 2 4 5 6 710 11
2.以下代码由java语言书写,用于判断闰年。
请按要求回答问题。
publicbooleanisLeap(intyear){
booleanleap;1
if(year%4==0){2
if(year%100==0){3
if(year%400==0){4
leap=true;5
}else{6
leap=false;7
}
}else{8
leap=true;9
}
}else{10
leap=false;11
}
returnleap;12
}
(1)请画出以上代码的控制流图
(2)请计算上述控制流图的圈复杂度V(G)(独立线性路径数)
(3)假设输入的取值范围是0(1)请画出以上代码的控制流图
579原来的箭头去掉换成图中的无箭头的
(2)请计算上述控制流图的圈复杂度V(G)(独立线性路径数)
V(G)=8-5+1=4
独立线性路径数:
4
圈复杂度的计算方法很简单,计算公式为:
V(G)=e-n+2。
其中,e表示控制流图中边的数量,n表示控制流图中节点的数量。
其实,圈复杂度的计算还有更直观的方法,因为圈复杂度所反映的是“判定条件”的数量,所以圈复杂度实际上就是等于判定节点的数量再加上1,也即控制流图的区域数,对应的计算公式为:
V(G)=区域数=判定节点数+1。
V(G)=3+1=4 或V(G)=14-12+2=4
(3)假设输入的取值范围是0测试用例:
用例1:
year是0~2010之间不能被4整除的整数,如1、13、102、2001等(2分)。
用例2:
year是0~2010之间能被4整除但不能被100整除的整数,如4、16、160、2004等(2分)。
用例3:
year是0~2010之间能被100整除但不能被400整除的整数,如100、1500、1700、1900(2分)。
用例4:
year是0~2010之间能被400整除的整数,如400