软工题第四章.docx
《软工题第四章.docx》由会员分享,可在线阅读,更多相关《软工题第四章.docx(25页珍藏版)》请在冰豆网上搜索。
软工题第四章
第四章习题
一、选择题
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)
IFA>5
THENX=10
ELSEX=1
ENDIF
IFB>10
THENY=20
ELSEY=2
ENDIF
IFC>15
THENZ=30
ELSEZ=3
ENDIF
PRINT(A,B,C)
STOP
5、设计下列伪码程序得分支覆盖与条件组合覆盖测试用例:
START
INPUT(A,B,C,D)
IF(A>0)AND(B>0)
THENX=A+B
ELSEX=A-B
END
IF(C>A)OR(D
THENY=C-D
ELSEY=C+D
END
PRINT(X,Y)
STOP
6、使用基本路径测试方法,设计测试下面列出得伪码程序得测试用例:
1:
START
INPUT(A,B,C,D)
2:
IF(A>0)
3:
AND(B>0)
4:
THENX=A+B
5:
ELSEX=A-B
6:
END
7:
IF(C>A)
8:
OR(D
9:
THENY=C-D
10:
ELSEY=C+D
11:
END
12:
PRINT(X,Y)
STOP
7、设计测试下列函数得测试方案:
、
函数SEARCH(somearray,size,value)得功能就是,在一组整数数组somearray中搜索一个值为value得整数,如果数组中有这个数,则函数值等于该数得下标,否则函数值等于-1、数组得长度由参数size指定。
假定数组第一个元素得下标为1、
8、一个折半查找程序可搜索按字母顺序排列得名字列表,如果查找得名字在列表中则返回真,否则返回假。
为了对它进行功能测试,应该使用哪些测试用例?
9、某图书馆有一个使用CRT终端得信息检索系统,该系统有下列四个基本检索命令,如表4、1所示。
表4、1 检索命令
要求:
(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结构”。
它们得共同点就是只有一个入口与一个出口。
E、W、Dijkstra提出了程序要实现结构化得主张,并将这一类程序设计称为结构化程序设计。
这种方法得一个重要原则就就是采用自顶向下、逐步求精得方法编写程序。
N、Wirth曾做过如下说明:
“我们对付一个复杂问题得最重要得方法就就是抽象。
因此,对于一个复杂得问题,不要急于马上用计算机指令、数字与逻辑符号来表示它,而应当先用较自然得抽象得语句来表示,从而得到抽象得程序。
抽象程序对抽象得数据类型进行某些特定得运算,并用一些合适得记号(可以就是自然语言)来表示。
下一步对抽象程序再做分解,进入下一个抽象得层次。
这样得细化过程一直进行下去,直到程序能被计算机接受为止。
此时得程序已经就是用某种高级语言或机器指令书写得了。
”
软件调试则就是在进行了成功得测试之后才开始得工作。
它与软件测试不同,软件测试得目得就是尽可能多地发现软件中得错误,但进一步诊断与改正程序中潜在得错误,则就是调试得任务。
调试活动由两部分组成:
①确定程序中可疑错误得确切性质与位置。
②对程序(设计,编码)进行修改,排除这个错误。
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=8、64*1010
这等于每年大约可进行3、139*1013个测试。
因为210=1024≈103,所以264=(210)6、4≈1019、2。
1019、2/(3、139*1013)>105,所以做完全部测试将至少需要105年(即10万年)。
3、答:
经验表明,在类似得程序中,单位长度里得错误数ET/IT近似为常数。
美国得一些统计数字告诉我们,通常
0、5*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)根据过程设计得结果画出流图
与本题给出得伪码程序相对应得流图如图4、1所示。
(2)计算流图得环形复杂度
使用下述3种方法中得任一种都可以算出图4、1所示流图得复杂度为5、
1)该流图共有15条边,12个结点,所以环形复杂度为
15-12+2=5
2)该流图共有5个区域,因此环形复杂度为5、
3)该流图中共有4个判定结点,因此环形复杂度为
4+1=5
(3)确定线性独立路径得基本集合
所谓线性独立路径就是指至少引入程序得一个新语句集合或
一个新条件得路径,用流图术语来描述,独立路径至少包含一
条在定义该路径之前不曾用过得边。
使用基本路径测试法设计测试用例时,程序得环形复杂度
决定了程序中独立路径得数量,而且这个数值就是确保程序中所
以语句至少被执行一次所需得测试数量得上界。
对于图4、1所示流图来说,由于它得环形复杂度为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
图4、1 与第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得算法,仅仅描述了它得功能,因此,只能用黑盒测试技术设计测试它得测试方案、
为了用等价划分法设计测试用例,首先需要划分