您的当前位置:首页软工题第四章

软工题第四章

2020-12-10 来源:乌哈旅游
第四章习题

一、选择题

1. 从供选择的答案中选出应填入下列( )中的字句。

软件测试的目的是( A )。为了提高测试的效率,应该( B )。使用白盒测试方法时,确定测试数据应根据( C )和指定的覆盖标准。与设计测试数据无关的文档是( D )。

软件的集成测试工作最好由( E )承担,以提高集成测试的效果。 供选择的答案:

A. ① 评价软件的质量 ② 发现软件的错误 ③ 找出软件中的所有错误 ④ 证明软件是正确的 B. ① 随机地选取测试数据

#

② 取一切可能的输入数据作为测试数据 ③ 在完成编码以后制定软件的测试计划 ④ 选择发现错误的可能性大的数据作为测试数据 C. ① 程序的内部逻辑 ② 程序的复杂程度 ③ 使用说明书 ④ 程序的功能

D. ① 该软件的设计人员 ② 程序的复杂程度 ③ 源程序 ④ 项目开发计划

E. ① 该软件的设计人员 ② 该软件开发组的负责人

③ 该软件的编程人员 ④ 不属于该软件开发组的软件设计人员 2. 请从供选择的答案中选出应填入下列( )中的字句。

}

程序的三种基本控制结构是( A )。它们的共同点是( B )。结构化程序设计的一种基本方法是( C )。软件测试的目的是( D )。软件调试的目的是( E )。

供选择的答案:

A. ① 过程,子程序,分程序 ② 顺序,条件,循环 ③ 递归,堆栈,队列 ④ 调用,返回,转移 B. ① 不能嵌套使用 ② 只能用来写简单的程序 ③ 已经用硬件实现 ④ 只有一个入口和一个出口 C. ① 筛选法 ② 递归法 ③ 归纳法 ④ 逐步求精法 D. ① 证明程序中没有错误 ② 发现程序中的错误 ③ 测量程序的动态特性 ④ 检查程序中的语法错误 E. ① 找出错误所在并改正之 ② 排除存在错误的可能性

-

③ 对错误性质进行分类 ④ 统计出错的次数

3. 从下列关于软件测试的叙述中,选出5条正确的叙述。 (1) 用黑盒法测试时,测试用例是根据程序内部逻辑设计的。 (2) 尽量用公共过程或子程序去代替重复的代码段。 (3) 测试是为了验证该软件已正确地实现了用户的要求。 (4) 对于连锁型分支结构,若有n个判定语句,则有2n条路径。 (5) 尽量采用复合的条件测试,以避免嵌套的分支结构。

(6) GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁。

(7) 发现错误多的程序模块,残留在模块中的错误也多。 (8) 黑盒测试方法中最有效的是因果图法。

{

(9) 在做程序的单元测试时,桩(存根)模块比驱动模块容易编写。 (10) 程序效率的提高主要应通过选择高效的算法来实现。

4. 从供选择的答案中选出同下列关于软件测试的各条叙述关系最密切的字句。 (1) 对可靠性要求很高的软件,例如操作系统,由第三者对源代码进行逐行检查。 (2) 已有的软件被改版时,由于受到变更的影响,改版前正常的功能可能发生异常,性能也可能下降。因此,对变更的软件进行测试是必要的。

(3) 在意识到被测试模块的内部结构或算法的情况下进行测试。 (4) 为了确认用户的需求,先做出系统的主要部分,提交给用户试用。

(5) 在测试具有层次结构的大型软件时,有一种方法是从上层模块开始,由上到下进行测试。此时,有必要用一些模块替代尚未测试过的下层模块。

供选择的答案:

A ~ E: ① 仿真器 ② 代码审查 ③ 模拟器 ④ 桩模块 ⑤ 驱动器

)

⑥ 域测试 ⑦ 黑盒测试 ⑧ 原型 ⑨ 白盒测试 ⑩ 退化测试

5. 从供选择的答案中选出应填入下面有关软件测试的叙述的( )内的正确答案。 软件测试方法可分为黑盒测试法和白盒测试法两种。

黑盒测试法是通过分析程序的( A )来设计测试用例的方法。除了测试程序外,它还适用于对( B )阶段的软件文档进行测试。

白盒测试法是根据程序的( C )来设计测试用例的方法。除了测试程序外,它也适用于对( D )阶段的软件文档进行测试。

白盒法测试程序时常按照给定的覆盖条件选取测试用例。( E )覆盖比( F )覆盖严格,它使得每一个判定的每一条分支至少经历一次。( G )覆盖既是判定覆盖,又是条件覆盖,但它并不保证使各种条件都能取到所有可能的值。( H )覆盖比其他条件都要严格,但它不能保证覆盖程序中的每一条路径。

单元测试一般以( I )为主,测试的依据是( J )。 供选择的答案:

A, C:① 应用范围 ② 内部逻辑 ③ 功能 ④ 输入数据 B, D:① 编码 ② 软件详细设计 ③ 软件总体设计 ④ 需求分析

`

E, F, G, H:① 语句 ② 判定 ③ 条件 ④ 判定/条件 ⑤ 多重条件 ⑥ 路径 I:① 白盒法 ② 黑盒法

J:① 模块功能规格说明 ② 系统模块结构图 ③ 系统需求规格说明 6. 从供选择的答案中选出应该填入下列关于软件测试的叙述的( )内的正确答案。 软件测试中常用的静态分析方法是( A )和( B )。( B )用于检查模块或子程序间的调用是否正确。分析方法(白盒方法)中常用的方法是( C )方法。非分析方法(黑盒方法)中常用的方法是( D )方法和( E )方法。( E )方法根据输出对输入的依赖关系设计测试用例。

供选择的答案:

A ~ B: ① 引用分析 ② 算法分析 ③ 可靠性分析 ④ 效率分析 ⑤ 接口分析 ⑥ 操作分析

C ~ E: ① 路径测试 ② 等价类 ③ 因果图 ④ 归纳测试

^

⑤ 综合测试 ⑥ 追踪 ⑦ 深度优先 ⑧ 调试 ⑨ 相对图 二、简答题

1.编程时使用的程序设计语言,对软件的开发与维护有何影响

2.如果一个程序有两个输入数据,每个输入都是一个32位的二进制整数,那么这个程序有多少个可能的输入如果每微妙可进行一次测试,那么对所有可能的输入进行测试需要多长时间

3.假设有一个由5000行FORTRAN语句构成的程序(经编译后大约有25000条机器指令),你估计在对它进行测试期间将发现多少个错误为什么

4.设计下列伪码程序的语句覆盖和路径覆盖测试用例: START INPUT(A,B,C) IF A>5

}

THEN X=10 ELSE X=1 END IF IF B>10 THEN Y=20 ELSE Y=2

END IF IF C>15 THEN Z=30 ELSE Z=3

END IF

PRINT(A,B,C) STOP

5.设计下列伪码程序的分支覆盖和条件组合覆盖测试用例: START INPUT(A,B,C,D) IF (A>0) AND (B>0) THEN X=A+B ELSE X=A-B END

IF (C>A) OR (D THEN Y=C-D ELSE Y=C+D END PRINT(X,Y) STOP

6.使用基本路径测试方法,设计测试下面列出的伪码程序的测试用例: 1:START INPUT(A,B,C,D) 2:IF (A>0)

3: AND (B>0) 4:THEN X=A+B 5:ELSE X=A-B 6:END 7:IF (C>A) 8: OR (D 9:THEN Y=C-D 10:ELSE Y=C+D 11:END 12:PRINT(X,Y)

:

STOP

7.设计测试下列函数的测试方案:、

函数SEARCH(somearray,size,value)的功能是,在一组整数数组somearray中搜索一个值为value的整数,如果数组中有这个数,则函数值等于该数的下标,否则函数值等于-1.数组的长度由参数size指定。假定数组第一个元素的下标为1.

8.一个折半查找程序可搜索按字母顺序排列的名字列表,如果查找的名字在列表中则返回真,否则返回假。为了对它进行功能测试,应该使用哪些测试用例

9.某图书馆有一个使用CRT终端的信息检索系统,该系统有下列四个基本检索命令,如表所示。

表 检索命令

要求:

(1)设计测试数据以全面测试系统的正常操作; (2)设计测试数据以测试系统的非正常操作。

{

10.航空公司A向软件公司B订购了一个规划飞行路线的程序。假设你是软件公司C的软件工程师。A公司已雇用你所在的公司对上述程序进行验收测试。你的任务是,根据下述事实设计验收测试的输入数据。

领航员向程序输入出发地点和目的地,以及根据天气和飞行型号而初步确定的飞行高度。程序读入途中的风向风力等数据,并且制定出三套飞行计划(高度,速度,方向及途中的五个位置校核点)。所制定的飞行计划应该做到燃料消耗和飞行时间都最少。

11.对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h.

要求:

(1)根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间t的关系曲线。在画这条曲线时你做了什么假设

(2)为做到MTTF=100h,必须进行多长时间的集成测试当集成测试结束时总共改正了多少个错误,还有多少个错误潜伏在程序中

12.在测试一个长度为48000条指令的程序时,第一个月由甲、乙两名测试员各种独立测试这个程序。经一个月测试后,甲发现并改正了20个错误,使MTTF达到8h。与此同时,乙发现24个错误,其中的6个甲也发现了。以后由甲一个人继续测试这个程序。问:

(1)刚开始测试时程序中总共有多少潜藏的错误 (2)为使MTTF达到240h,必须再改正多少个错误

第四章习题解答

]

一、选择题

1. A. ② B. ④ C. ① D. ④ E. ④

软件测试的目的是软件中的错误。因为不可能把所有可能的输入数据都拿来测试(时间花费不起),为了提高测试的效率,应该选择发现错误的可能性大的数据作为测试数据。

使用白盒测试方法时,确定测试数据应根据程序的内部逻辑和指定的覆盖标准,可以不考虑程序的功能。与设计测试数据无关的文档是项目开发计划。

软件的集成测试工作最好由不属于该软件开发组的软件设计人员承担,以提高集成测试的效果。

2. A. ② B. ④ C. ④ D. ② E. ①

1966年,Bohm与Jacopini提出任何单入口单出口的没有“死循环”的程序都能由三种最基本的控制结构构造出来。这三种基本控制结构就是“顺序结构”、“选择IF-THEN-ELSE结构”、“重复DO-WHILE或DO-UNTIL结构”。 它们的共同点是只有一个入口和一个出口。提出了程序要实现结构化的主张,并将这一类程序设计称为结构化程序设计。这种方法的一个重要原则就是采用自顶向下、逐步求精的方法编写程序。曾做过如下说明:“我们对付一个复杂问题的最重要的方法就是抽象。 因此,对于一个复杂的问题,不要急于马上用计算机指令、数字和逻辑符号来表示它,而应当先用较自然的抽象的语句来表示,从而得到抽象的程序。抽象程序对抽象的数据类型进行某些特定的运算,并用一些合适的记号(可以是自然语言)来表示。下一步对抽象程序再做分解,进入下一个抽象的层次。这样的细化过程一直进行下去,直到程序能被计算机接受为止。此时的程序已经是用某种高级语言或机器指令书写的了。”

软件调试则是在进行了成功的测试之后才开始的工作。它与软件测试不同,软件测试的目的是尽可能多地发现软件中的错误,但进一步诊断和改正程序中潜在的错误,则是调试的任务。调试活动由两部分组成:① 确定程序中可疑错误的确切性质和位置。② 对程序(设计,编码)进行修改,排除这个错误。

3. 正确的叙述有(4)、(5)、(6)、(7)、(10)。

黑盒测试主要是根据程序的有关功能规格说明和覆盖准则来设计测试用例,进行测试的,不是根据程序的内部逻辑来设计测试用例,这是白盒测试做的事情。在所有黑盒测试方法中,最有效的不是因果图法,而是边界值分析方法。测试的目的是尽可能多地发现软件中的错误,其附带的收获才是验证该软件已正确地实现了用户的要求。测试的一条重要原则是:发现错误多的程序模块,残留在模块中的错误也多。软件可靠性模型(Shooman)就是依据这个原则建立它的公式的。对于连锁型分支结构,若有n个判定语句,则有2n条路径。因此,随着n的增大,路径数增长非常快。单元测试时,因为桩模块要模拟子模块的功能,这不是一件容易的事情,而驱动模块只是控制被测模块的执行,所以桩模块的编写比驱动模块的编写要难得多。

在程序设计风格方面,如果重复的代码段没有明显的功能,不可以抽取出来形成独立的公共过程或子程序,只有在这些代码段表现出独立的功能时,才可把它们抽取出来形成独立的公共过程或子程序。另外,程序效率的提高主要应通过选择高效的算法或使用高效的语言编译器来实现。GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁,这句话是正确的。

4. (1) ② (2) ⑩ (3) ⑨ (4) ⑧ (5) ④

(1) 对可靠性要求很高的软件,由第三者对源代码进行逐行检查,这是代码审查。 (2) 软件变更时可能发生退化现象:原来正常的功能可能发生异常,性能也可能下降。因此,对变更的软件要进行退化测试。

(3) 基于被测试模块的内部结构或算法设计测试用例进行测试,这是白盒测试。 (4) 为了确认用户的需求,先做出系统的原型,提交给用户试用。

(5) 自顶向下对具有层次结构的大型软件进行集成测试时,需要设计一些虚拟模块来替代尚未测试过的下层模块,这些模块叫做桩模块。

5. A. ③ B. ④ C. ② D. ② E. ② F. ① G. ④ H. ⑤ I. ① J. ①

{

软件测试方法可分为黑盒测试法和白盒测试法两种。黑盒测试法是基于程序的功能来设计测试用例的方法。除了测试程序外,它还适用于对需求分析阶段的软件文档进行测试。白盒测试法是根据程序的内部逻辑来设计测试用例的方法。除了测试程序外,它也适用于对软件详细设计阶段的软件文档进行测试。

白盒法测试程序时常按照给定的覆盖条件选取测试用例。判定覆盖比语句覆盖严格,它使得每一个判定的每一条分支至少经历一次。判定/条件覆盖既是判定覆盖,又是条件覆盖,

但它并不保证使各种条件都能取到所有可能的值。多重条件覆盖,也叫组合条件覆盖,比其他条件都要严格,但它不能保证覆盖程序中的每一条路径。

单元测试一般以白盒法为主,测试的依据是系统的模块功能规格说明。 6. A. ① B. ⑤ C. ① D. ② E. ③

软件测试中常用的静态分析方法是引用分析和接口分析。接口分析用于检查模块或子程序间的调用是否正确。分析方法(白盒方法)中常用的方法是路径测试方法。非分析方法(黑盒方法)中常用的方法是等价类(划分)方法和因果图方法。因果图方法根据输出对输入的依赖关系设计测试用例。

二、简答题

1.答:程序设计语言是人用计算机解决问题的基本工具,因此,它将影响软件开发人员的思维方式和解题方式。

程序设计语言是表达具体的解题方法的工具,它的语法是否清晰易懂,阅读程序时是否容易产生二义性,都对程序的可读性和可理解性有较大影响。

程序设计语言所提供的模块化机制是否完善,编译程序差错能力的强弱等,对程序的可靠性有明显影响。

程序设计语言实现设计结果的难易程度,是否提供了良好的独立编译机制,可利用的软件开发工具是否丰富而且有效,都对软件的开发效率有影响。

$

编译程序优化能力的强弱,程序设计语言直接操纵硬件设施的能力等,将明显地影响程序的运行效率。

程序设计语言的标准化程度,所提供的模块封装机制,源程序的可读性和可理解性等,将影响软件的可维护性。

2.答:每个32位的二进制整数具有232个可能的值,因此,具有两个整数输入的程序应该具有264个可能的输入。

每微妙可进行一次测试,即每秒可进行106个测试,因此,每天可进行的测试数为 60*60*24*106=*1010

这等于每年大约可进行*1013个测试。 因为210=1024≈103 ,所以264=(210 )≈。

(*1013)>105,所以做完全部测试将至少需要105年(即10万年)。

3.答:经验表明,在类似的程序中,单位长度里的错误数ET/IT近似为常数。美国的一些统计数字告诉我们,通常

*10-2≤ET/IT≤2*10-2

~

也就是说,在测试之前每1000条指令中大约有5~20个错误。

假设在该程序的每1000条指令中有10个错误,则估计在对它进行测试期间将发现的错误数为

25000*(10/1000)=250

4.答:(1)语句覆盖的测试用例

因为每个判定表达式为真或为假时均有赋值语句,为了使每个语句都至少执行一次,总共需要两组测试数据,以便使得每个判定表达式取值为真或为假各一次。下面是实现语句覆盖的典型测试用例:

1)使3个判定表达式之值全为假 输入:A=1, B=1, C=1 预期的输出:X=1, Y=2,Z=3 2)使3个判定表达式之值全为真 输入:A=20, B=40, C=60

预期的输出:X=10, Y=20,Z=30 (2)路径覆盖的测试用例

本程序共有8条可能的执行通路,为做到路径覆盖总共需要8组测试数据。下面是实现路径覆盖的典型测试用例:

1)3个判定表达式之值全为假 输入:A=1, B=1, C=1 预期的输出:X=1, Y=2, Z=3

2)3个判定表达式依此为假、假、真 输入:A=1, B=1, C=60 预期的输出:X=1, Y=2, Z=30

3)3个判定表达式依此为假、真、假

<

输入:A=1, B=40, C=1

预期的输出:X=1, Y=20, Z=3

4)3个判定表达式依此为假、真、真 输入:A=1, B=40, C=60 预期的输出:X=1, Y=20, Z=30 5)3个判定表达式依此为真、假、假 输入:A=20, B=1, C=1 预期的输出:X=10, Y=2, Z=3

6)3个判定表达式依此为真、假、真 输入:A=20, B=1, C=60

·

预期的输出:X=10, Y=2, Z=30

7)3个判定表达式依此为真、真、假 输入:A=20, B=40, C=1 预期的输出:X=10, Y=20, Z=3

8)3个判定表达式全为真 输入:A=20, B=40, C=60 预期的输出:X=10, Y=20, Z=30

5.答:(1)分支覆盖(即判定覆盖)标准为,不仅使每个语句至少执行一次,而且使每个判定表达式的每个分支都至少一次。

为做到分支覆盖,至少需要两组测试数据,以使每个判定表达式之值为真或为假各一次。下面是典型的测试用例:

1)使两个判定表达式之值全为假

#

输入:A=-1, B=-2, C=-3,D=1 预期的输出:X=1, Y=-2

2)使两个判定表达式之值全为真 输入:A=1, B=2, C=3,D=1 预期的输出:X=3, Y=2

(2)条件组合覆盖标准为,使得每个判定表达式中条件的各种可能组合都至少出现一次。 本题程序中共有两个判定表达式,每个判定表达式中有两个简单条件,因此,总共有8种可能的条件组合,它们是:

1)A>0,B>0 2)A>0,B≤0 3)A≤0,B>0

?

4)A≤0,B≤0 5)C>A,D 6)C>A,D≥B 7)C≤A,D 8)C≤A,D≥B

下面的4个测试用例,可以使上面列出的8种条件组合每种至少出现一次: 1)实现1,5两种条件组合 输入:A=1, B=1, C=2,D=0 预期的输出:X=2, Y=2 2)实现2,6两种条件组合

:

输入:A=1, B=0, C=2,D=1 预期的输出:X=1, Y=1 3)实现3,7两种条件组合 输入:A=0, B=1, C=-1,D=0 预期的输出:X=-1, Y=-1

4)实现4,8两种条件组合 输入:A=0, B=0, C=-1,D=1 预期的输出:X=0, Y=0

6.答:用基本路径测试方法设计测试用例的过程,有下述4个步骤: (1)根据过程设计的结果画出流图

与本题给出的伪码程序相对应的流图如图所示。

(2)计算流图的环形复杂度

使用下述3种方法中的任一种都可以算出图所示流图的复杂度为5. 1)该流图共有15条边,12个结点,所以环形复杂度为 15-12+2=5

2)该流图共有5个区域,因此环形复杂度为5. 3)该流图中共有4个判定结点,因此环形复杂度为 4+1=5

(3)确定线性独立路径的基本集合

所谓线性独立路径是指至少引入程序的一个新语句集合或

一个新条件的路径,用流图术语来描述,独立路径至少包含一 条在定义该路径之前不曾用过的边。

使用基本路径测试法设计测试用例时,程序的环形复杂度 决定了程序中独立路径的数量,而且这个数值是确保程序中所 以语句至少被执行一次所需的测试数量的上界。 对于图所示流图来说,由于它的环形复杂度为5,因 此共有5条独立路径。下面列出了5条独立路径: 路径1:1-2-3-4-6-7-9-11-12 路径2:1-2-5-6-7-9-11-12

?

路径3:1-2-3-5-6-7-9-11-12 路径4:1-2-3-4-6-7-8-9-11-12 路径5:1-2-3-4-6-7-8-10-11-12 图 与第6题伪码程序对应的流图

(4)设计可强制执行基本路径集合中每条路径的测试用例 1)执行路径1(两个判定表达式全为真) 输入:A=1, B=1, C=2,D=2(任意) 预期的输出:X=2, Y=0

2)执行路径2(第一个判定表达式为假,第二个判定表达式为真) 输入:A=0, B=1(任意), C=2,D=0(任意)

|

预期的输出:X=-1, Y=2

3)执行路径3(第一个判定表达式为假,第二个判定表达式为真) 输入:A=1, B=0, C=2,D=0(任意) 预期的输出:X=1, Y=2

4)执行路径4(两个判定表达式全为真) 输入:A=1, B=1, C=0,D=-1 预期的输出:X=2, Y=1

5)执行路径5(第一个判定表达式为真,第二个判定表达式为假) 输入:A=1, B=1, C=0,D=2 预期的输出:X=2, Y=2

:

7.答:题中并没有给出实现函数SEARCH的算法,仅仅描述了它的功能,因此,只能用黑盒测试技术设计测试它的测试方案.

为了用等价划分法设计测试用例,首先需要划分输入数据的等价类。根据该函数的功能,可以把它的输入数据划分成以下等价类:

(1)有效输入的等价类

● 数组有偶数个元素,第1个元素是所要找的数。 ● 数组有偶数个元素,最后一个元素是所要找的数。 ● 数组有偶数个元素,数组中没有所要找的数。 ● 数组有奇数个元素,第1个元素是所要找的数。 ● 数组有奇数个元素,最后一个元素是所要找的数。 ● 数组有奇数个元素,数组中没有所要找的数。 ● 数组有多个元素,其中一个正整数是所要找的数。

<

● 数组有多个元素,其中一个负整数是所要找的数。 ● 数组有多个元素,其中一个0是所要找的数。 (2)无效输入的等价类

数组实际长度不等于变元size的值。

为了使用边界值分析法设计测试方案,应该再考虑下述几种边界情况: ● 数组长度为1,其元素是所要找的数。 ● 数组长度为1,其元素不是所要找的数。 ● 数组为空(长度为0)。

根据上面划分出的等价类及边界情况,可以设计出下述测试方案: 1)数组长度为1,其正整数元素是所要找的数

输入:somearray={6},size=1,value=6 预期的输出:1

2)数组长度为1,其负整数元素是所要找的数 输入:somearray={-20},size=1,value=-20 预期的输出:1

3)数组长度为1,其元素0是所要找的数 输入:somearray={0,size=1,value=0 预期的输出:1

4)数组长度为1,其元素不是所要找的数 输入:somearray={6},size=1,value=8

预期的输出:-1 5)数组为空

输入:somearray={ },size=0,value=6 预期的输出:-1

6)数组有偶数个元素,第1个元素是正整数且是所要找的数 输入:somearray={1,2,3,4},size=4,value=1

预期的输出:1

7)数组有偶数个元素,最后一个元素是负整数且是所要找的数 输入:somearray={1,2,3,-4},size=4,value=-4 预期的输出:4

8)数组有偶数个元素,其中一个元素0是所要找的数 输入:somearray={1,2,0,3},size=4,value=0 预期的输出:3

9)数组有偶数个元素,元素中没有所要找的数 输入:somearray={1,2,3,4},size=4,value=5 预期的输出:-1

10)数组有奇数个元素,第1个元素是0且是要找的数 输入:somearray={0,1,2},size=3,value=0 预期的输出:1

11)数组有奇数个元素,最后一个元素是负整数且是所要找的数

&

输入:somearray={1,2,-3},size=3,value=-3 预期的输出:3

12)数组有奇数个元素,没有要找的数 输入:somearray={1,2,3},size=3,value=-3 预期的输出:-1

13)数组实际长度不等于size

输入:somearray={1,2,3},size=3,value=1 预期的输出:“无效的size值”

8.答:为了对这个折半查找程序进行功能测试,应该使用下述测试用例: 1)查找列表中第一个名字

^

预期的输出:TRUE

2)查找列表中最后一个名字 预期的输出:TRUE

3)查找第一个名字后的名字 预期的输出:TRUE

4)查找最后一个名字前的名字 预期的输出:TRUE

5)查找位于列表中间的一个名字 预期的输出:TRUE

6)查找不在列表中但按字母顺序恰好在第一个名字后的名字

预期的输出:FALSE

7)查找不在列表中但按字母顺序恰好在最后一个名字前的名字 预期的输出:FALSE

9.答:(1)测试系统正常操作的测试数据 1)顺序执行下列3个命令: b(KEYWORD) s (L) d (N)

其中,KEYWORD是正确的关键字;L是执行命令b后在屏幕上显示的约20个行号中的一个(至少应该使L分别为第一个、最后一个和中央一个行号);N是执行命令s后列出的索引号中的一个(至少应该使N分别为第一个、最后一个和中央一个索引号)。

针对若干个不同的KEYWORD重复执行上述命令序列。

<

2)顺序执行下列2个命令: f (NAME) d (N)

其中,NAME是已知的作者姓名;N是执行命令f后列出的索引号中的一个(至少应该使N分别为第一个、最后一个和中央一个索引号)。

针对若干个不同的NAME重复执行上述命令序列。 (2)测试系统非正常操作的测试数据

1)用过长的关键字作为命令b的参数,例如,b(reliability software and hardware combined)

预期的输出:系统截短过长的关键字,例如,上列命令中的关键字可能被截短为reliability software

2)用不正确的关键字作为命令b的参数,例如,b(AARDVARK) 预期的输出:显示出最接近的匹配结果,例如,执行上列命令后可能显示

{

1. AARON,JULES(book)

3)用比执行命令b后列出的最大行号大1的数作为命令s的参数 预期的输出:“命令s的参数不在行号列表中” 4)用数字和标点符号作为命令b和命令f的参数 预期的输出:“参数类型错”

5)用字母符号作为命令s和命令d的参数 预期的输出:“参数数值错”

6)用0和负数作为命令s和命令d的参数 预期的输出:“参数数值错”

7)命令顺序错,例如,没执行命令b就执行命令s,或没执行命令s就执行命令d

预期的输出:“命令顺序错”

8)命令语法错,例如,遗漏命令名b、s、d或f,或命令参数没用圆括号括起来 预期的输出:“命令语法错”

9)命令参数空,例如,b()、s()、d()或f() 预期的输出:系统提供默认参数或给出出错信息 10)使用拼错了的作者姓名作为命令f的参数 预期的输出:“找不到这位作者的著作”

10.答:应该分别使用正常的输入数据和异常的输入数据,作为验收测试数据。 (1)用正常的输入数据作为测试数据

1)输入常规的出发点、目的地、5个位置校核点、高度、速度及飞机型号。

'

2)针对5对不同的出发点和目的地,重复执行测试1)。

3)固定出发点、目的地、位置校核点、高度和速度,分别输入3~5种不同的飞机型号,重复执行测试1)。

4)固定出发点、目的地、位置校核点、高度和飞机型号,分别输入3~5个不同的速度,重复执行测试1)。

5)固定出发点、目的地、位置校核点、速度和飞机型号,分别输入3~5个不同的高度,重复执行测试1)。

6)固定出发点、目的地、高度、速度和飞机型号,分别输入3~5组不同的位置校核点,重复执行测试1)。

7)固定出发点、位置校核点、高度、速度和飞机型号,分别输入3~5个不同的目的地,重复执行测试1)。

7)固定目的地、位置校核点、高度、速度和飞机型号,分别输入3~5个不同的出发点,重复执行测试1)。

9)同时改变一对参数的值,其他参数的值固定,重复执行测试1)。 10)同时改变3个参数的值,其他参数的值固定,重复执行测试1)。 11)以适当的方式改变描述天气状况的数据,重复执行测试1)。

(2)用边界数据值作为测试数据

1)分别使用距离非常近和距离非常远的两个地点作为出发点和目的地。 2)输入位置校核点的非常规组合。 3)分别输入非常高和非常低的高度值。 4)分别输入非常高和非常低的速度值。 5)输入极其少见的飞机型号。 (3)用无效的数据作为测试数

1)用由字母数字字符和控制字符混合在一起组成的字符串作为出发点或目的地。 2)用数字0作为所有参数的值。 3)用负数作为高度和速度的值。

11.答:(1)假设在程序的平均无故障时间MTTF和测试时间t之间存在线性关系,即 MTTF=a+bt

根据题意可知,当t=1时MTTF=10,当t=2时MTTF=15,把这些已知的数据代入上列方程后得到下列的联立方程式

a+b=10 a+2b=15

解上列联立方程得出a=5,b=5 因此,MTTF与t之间有下列关系 MTTF=5+5t

根据上列方程式画出平均无故障时间MTTF与测试时间t的关系曲线,如图所示。

图 平均无故障时间MTTF与测试时间τ的关系

(2)为使MTTF=100h需要的测试时间可由下面的方程式得出 100=5+5t 解上列方程式得 T=19

即,需要进行19个月的集成测试。

已知平均无故障时间与单位长度程序中剩余的错误数成反比,具体到本题程序即有 MTTF=10000/K(ET-EC(t))

根据题意可知,改正了15个错误后MTTF=10,改正了25个错误后MTTF=15,把这些已知的数据代入上列方程之后,得到下列的联立方程式

10=10000/K(EC -15) 15=10000/K(EC -25)

接上列联立方程式得出= ET 45,K= 已知当集成测试结束时MTTF=100h,即 100=10000/(45- EC(19)) 所以 EC(19)=42

也就是说,当集成测试结束时总共改正了42个错误,还有45-42=3个错误潜伏在程序中。

12.答:(1)本题中采用了分别测试法,因此,可以估算出刚开始测试程序中错误总数为

ET =24/6*20=80

(2)因为 8=48000/ K(ET-20))=48000/ K*60 所以 K=100

因为 240=48000/ 100(80- EC) 所以 EC =78

为了使平均无故障时间达到240h,总共需要改正78个错误,测试员甲在与乙分别测试时已经改正了20个错误,因此,还需再改正58个错误。

因篇幅问题不能全部显示,请点此查看更多更全内容