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






