白盒测试和黑盒测试试题库
一、简答题
1、功能测试的定义,并指出几种主要的测试用例设计方法。
答:功能测试也叫黑盒测试或数据驱动测试,是根据产品特征、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。
测试用例设计的主要方法有:等价类划分方法、边界值分析方法、错误推测法、因果图法、判定表方法、功能图法、正交试验法。
2、什么叫集成测试?集成测试策略中增值式测试和非增值式测试是什么?
答:集成测试又称组装测试、联合测试、子系统测试或部件测试。集成测试是在单元测试的基础上,将所有的模块按照设计要求组装成子系统或系统进行的测试活动。
增值式测试就是把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试,直至将所有的单元模块组装成为符合要求的软件系统。
非增值式测试是先分别测试每个模块,再把所有模块按设计要求放在一起组合成所要的程序。
3、简述软件测试的主要过程
答:软件测试过程按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。单元测试集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。然后,进行集成测试,根据设计规定的软件体系结构,把已经测试过的模块组装起来,在组装过程中,检查程序结构组装的正确性。确认测试则是要检查已经实现的软件是否满足了需求规格说明书中的各种需求,以及软件配置是否完全、正确。最后是系统测试,把已经经过确认的软件纳入实际运行环境中,与其他系统成份组合在一起进行测试。严格地说,系统测试已经超出了软件工程的范围。
二、设计题
1、下面是选择排序的程序,其中datalist是数据表,它有两个数据成员:一是元素类型为Element的数组V,另一个是数组大小n。算法中用到两个操作,一是取某数组元素V[i]的关键码操作getKey ( ),一是交换两数组元素内容的操作Swap( )::
void SelectSort ( datalist & list ) {
//对表list.V[0]到list.V[n-1]进行排序, n是表当前长度。 for ( int i = 0; i < list.n-1; i++ ) { int k = i; //在list.V[i].key到list.V[n-1].key中找具有最小关键码的对象 for ( int j = i+1; j < list.n; j++) if ( list.V[j].getKey ( ) < list.V[k].getKey ( ) ) k = j; //当前具最小关键码的对象 if ( k != i ) Swap ( list.V[i], list.V[k] ); //交换
1
} }
(1) 试计算此程序段的McCabe复杂性; (2) 用基本路径覆盖法给出测试路径; (3) 为各测试路径设计测试用例。
(1) McCabe环路复杂性 = 判定节点数 + 1 = 5 (2) 测试路径数等于圈复杂度,即测试路径有5条: ①③
①②⑤⑧„„ ①②⑤⑨„„ ①②④⑥„„ ①②④⑦„„
(3) 为各测试路径设计测试用例: 路径①③:取n = 1
路径①②⑤⑧„„:取n = 2, 预期结果:路径⑤⑧③不可达? 路径①②⑤⑨„„:取n = 2, 预期结果:路径⑤⑨③不可达 路径①②④⑥⑤⑧③:
取n = 2, V[0] = 2, V[1] = 1, 预期结果:k = 1, V[0] = 1, V[1] = 2 路径①②④⑥⑤⑨③:
取n = 2, V[0] = 2, V[1] = 1, 预期结果:k = 1, 路径⑨③不可达 路径①②④⑦⑤⑧③:
取n = 2, V[0] = 1, V[1] = 2, 预期结果:k = 0, 路径⑧③不可达 路径①②④⑦⑤⑨③:
取n = 2, V[0] = 1, V[1] = 2, 预期结果:k = 0, V[0] = 1, V[1] = 2
2、根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。 “一个程序读入三个整数。把此三个数值看成是一个三角形的三个边。这个程序
2
要打印出信息,说明这个三角形是三边不等的、是等腰的、还是等边的。” 解答:
设三角形的3条边分别为A,B,C。如果它们能够构成三角形的3条边,必须满足:A>0,B>0,C>0,且A+B>C,B+C>A,A+C>B。 如果是等腰的,还要判断A=B,或B=C,或A=C。 如果是等边的,则需判断是否A=B,且B=C,且A=C。 划分等价类如下: 输入条件 有效等价类 无效等价类 (A≤0), (7) (B≤0), (8) (C≤0), (9) (A+B≤C), (10) (B+C≤A), (11) (A+C≤B), (12) (A≠B)and(B≠C)and(C≠A) (16) (A>0), (1) (B>0), (2) 是否为三角形的三(C>0), (3) 条边 (A+B>C), (4) (B+C>A), (5) (A+C>B), (6) (A=B), (13) 是否为等腰三角形 (B=C), (14) (C=A), (15) (A=B)and(B=C)and(A≠B), (18) 是否为等边三角形 (C=A) (B≠C), (19) (17) (C≠A), (20)
设计测试用例如下: 序号 【A,B,C】 覆盖等价类 输出 (1),(2),(3),(4),(5),(6) 一般三角形 1 【3,4,5】 (7) 2 【0,1,2】 (8) 3 【1,0,2】 (9) 4 【1,2,0】不能构成三角形 (10) 5 【1,2,3】 (11) 6 【1,3,2】 (12) 7 【3,1,2】 (1),(2),(3),(4),(5),(6),(13) 8 【3,3,4】 (1),(2),(3),(4),(5),(6),(14) 等腰三角形 9 【3,4,4】 (1),(2),(3),(4),(5),(6),(15) 10 【3,4,3】 (1),(2),(3),(4),(5),(6),(16) 非等腰三角形 11 【3,4,5】 (1),(2),(3),(4),(5),(6),(17) 等边三角形 12 【3,3,3】 (1),(2),(3),(4),(5),(6),(14),(18) 13 【3,4,4】 (1),(2),(3),(4),(5),(6),(15),(19) 非等边三角形 14 【3,4,3】 (1),(2),(3),(4),(5),(6),(13),(20) 15 【3,3,4】 3、设要对一个自动饮料售货机软件进行黑盒测试。该软件的规格说明如下: “有一个处理单价为1元5角钱的盒装饮料的自动售货机软件。若投入1元5
3
角硬币,按下“可乐”、“雪碧”或“红茶”按钮,相应的饮料就送出来。若投入的是2元硬币,在送出饮料的同时退还5角硬币。” (1) 试利用因果图法,建立该软件的因果图; (2) 设计测试该软件的全部测试用例。 编号 原因 编号 结果 C1 投入2元硬币 E1 退还5角硬币 C2 投入1元5角硬币 E2 送出“可乐” C3 按下“可乐”按钮 E3 送出“雪碧” C4 按下“雪碧”按钮 E4 送出“红茶” C5 按下“红茶”按钮 11 中间原因1:已投币 12 中间原因2:已按钮
4
4、城市的电话号码由两部分组成。这两部分的名称和内容分别是: 地区码:以0开头的三位或者四位数字(包括0); 电话号码:以非0、非1开头的七位或者八位数字。
假定被调试的程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的号码,就可用等价分类法来设计它的调试用例。请为写出所有可能的有效等价类和无效等价类,并为所有的分类设计一个测试用例。
5
5、某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。请根据题目完成以下操作:
(1) 要求画出因果图;(8分) (2) 并根据因果图建立判定表;(8分)
6
6.设一个控制流图如下,请给出其圈复杂度和基本测试路径。
7
4 9 10 12 11 21 15 14 16 17 19 20 18 解答:V(G)=区域数=5 或者 V(G)=判定节点数+1=4+1=5,其中9、12、14、16为判定节点,因为基本的测试路径数和圈复杂度相等,因此,基本测试路径也为5条,如下: 4-9-10-12-21-22 4-9-11-12-21-22 4-9-10-12-14-15-20-22 4-9-10-12-14-16-17-19-20-22 4-9-10-12-14-16-18-19-20-22
22 8
因篇幅问题不能全部显示,请点此查看更多更全内容