第6章   软件编码和测试  课后习题参考答案

一、选择题

(1)为了提高测试的效率,应该(D)。

A.随机地选取测试数据

B.取一切可能的输入数据作为测试数据

C.在完成编码以后制定软件的测试计划

D.选择发现错误的可能性大的数据作为测试数据

(2)软件测试的目的是(B)。

A.评价软件的质量

B.发现软件的错误

C.找出软件中的所有错误

D.证明软件是正确的

(3)单元测试一般以白盒为主,测试的依据是(A)。

A.模块功能规格说明

B.系统模块结构图

C.系统需求规格说明

D.ABC都可以

(4)软件的集成测试工作最好由(C)承担,以提高集成测试的效果。

A.该软件的设计人员

B.该软件开发组的负责人

C.不属于该软件开发组的软件设计人员

D.该软件的编程人员

(5)下列关于α、β测试的描述中正确的是(C)。

A. α测试不需要用户代表参加

B.β测试不是验收测试的一种

C.α测试需要用户代表参加

D.β测试是系统测试的一种

(6)软件测试用例主要由输入数据和(C)两部分组成。

A.测试计划

B.测试规划

C.预期输出结果

D.以往测试记录分析

(7)在黑盒测试中,着重检查输入条件组合的方法是(D)。

A.等价类划分法

B.边界值分析法

C.错误推测法

D.因果图法

(8)黑盒测试是从(C)观点的测试,白盒测试是从(C)观点的测试。

A.开发人员、管理人员

B.用户、管理人员

C.用户、开发人员

D.开发人员、用户

(9)白盒测试法又称为逻辑覆盖法,主要用于(D)。

A.验收测试

B.系统测试

C.α测试

D.单元测试

(10)以下哪种测试方法不属于白盒测试技术(B)。

A.基本路径测试

B.边界值分析测试

C.循环覆盖测试

D.条件测试

(11)白盒测试法是根据程序的(B)来设计测试用例的方法。

A.输出数据

B.内部逻辑

C.功能

D.输入数据

(12)软件调试的目的是(A)。

A.找出错误所在并改正之

B.排除存在错误的可能性

C.对错误性质进行分类

D.统计出错的次数

二、简答题

(1)软件测试应该划分为几个阶段?各个阶段应重点测试的内容是什么?

软件测试可分为单元测试,集成测试,系统测试,验收测试四个阶段。

单元测试又称模块测试、逻辑测试或结构测试,是针对软件设计的最小单位——程序模块或功能模块,进行正确性检验的测试工作。其目的在于检验每个程序单元能够正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现各个模块内部可能存在的各种错误。

集成测试又称组装测试、综合测试或联合测试。通常在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。集成测试是检验程序单元或部件的接口关系,逐步集成为符合概要设计要求的程序部件或整个系统。

系统测试为验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试。系统测试是在真实或模拟系统运行的环境下,检查完整的程序系统能否和系统(包括计算机硬件、外设、网络和系统软件、支持平台等)正确配置、连接,并满足用户需求。系统测试的主要依据是《系统需求规格说明书》文档。

验收测试又称交付测试,是软件在完成了单元测试、集成测试、系统测试之后,产品发布之前进行的软件测试活动。验收测试又分为Alpha测试(α测试)和Beta测试(β测试),Alpha测试是由一个用户在开发环境下进行的测试,或者是公司内部的用户在模拟实际操作环境下进行的受控测试,Beta测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。

(2)在软件测试中,应遵循哪些原则?

在软件测试过程中,通常应该遵循以下七个原则。

① 所有的测试都应追溯到用户需求。这是因为软件的目的是使用户完成预定的任务,满足其需求。而软件测试揭示软件的缺陷和错误,一旦修正这些错误,就能更好地满足用户需求。

② 应尽早地和不断地进行软件测试。由于软件的复杂性和抽象性,在软件生命周期各阶段都可能产生错误,所以不应把软件测试仅仅看作是软件开发的一个独立阶段,而应当把它贯穿到软件开发的各个阶段中去。在需求分析和设计阶段就应开始进行测试工作,编写相应的测试计划及测试设计文档,同时坚持在开发各阶段进行技术评审和验证,这样才能尽早发现和预防错误,杜绝某些缺陷和错误,提高软件的质量。测试工作进行得越早,越有利于提高软件的质量,这是预防性测试的基本原则。

③ 在有限的时间和资源下进行完全测试并找出软件所有的错误和缺陷是不可能的,软件测试不能无限进行下去,应适时终止。因为,测试输入量大、输出结果多、路径组合多、用有限的资源来达到完全测试是不现实的。

④ 测试只能证明软件存在错误,而不能证明软件没有错误。测试无法显示潜在的错误和缺陷,继续进一步测试可能还会找到其它错误和缺陷。

⑤ 充分关注测试中的集群现象。在测试的程序段中,若发现的错误数目比较多,则残存在该程序段中的错误数目也会比较多,因此应当花较多的时间和代价测试那些具有更多错误数目的程序模块。

⑥ 程序员应避免检查自己的程序。考虑到人们的心理因素,自己揭露自己程序中的错误是件不愉快的事,自己不愿意否认自己的工作。此外,由于思维定式,自己难以发现自己的错误。因此,测试一般由独立的测试部门或第三方机构进行,这样测试相对比较客观。

⑦ 尽量避免测试的随意性。软件测试是有组织、有计划、有步骤的活动,要严格按照测试计划进行,要避免测试的随意性。

(3)什么是黑盒测试?有哪些常用的黑盒测试方法?

黑盒测试又称功能测试或数据驱动测试,指通过软件的外部表现来发现缺陷和错误。黑盒测试把测试对象看成一个黑盒子,完全不考虑程序内部结构和处理过程,测试者仅依据程序功能的需求规范考虑,确定测试用例和推断测试结果的正确性,它是站在使用软件或程序的角度,从输入数据与输出数据的对应关系出发进行的测试。

常用的黑盒测试方法有等价类划分、边界值分析、因果图、决策表、错误推测法、场景法等。

(4)什么是白盒测试?有哪些常用的白盒测试方法?

白盒测试又称结构测试或逻辑驱动测试,指通过对程序内部结构的分析、检测来寻找问题。白盒测试把程序看成装在一个透明的白盒子里,也就是清楚了解程序结构和处理过程,检查是否所有的结构及路径都是正确的,检查软件的内部动作是否按照设计说明的规定正常进行。

常用的白盒测试方法逻辑覆盖、基本路径测试、程序插桩等。

(5)请对比白盒测试和黑盒测试。

白盒测试和黑盒测试是软件测试的两种基本方法。

黑盒测试优点如下:

1)比较简单,不需要了解程序的内部的代码及实现;
2)与软件的内部实现无关;
3)从用户的角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;
4)基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;
5)在做软件自动化测试时较为方便。
黑盒测试缺点如下:
1)不可能覆盖所有的代码,覆盖率较低;
2)自动化测试的复用性较低。
白盒测试优点如下:

  1. 迫使测试人员去仔细思考软件的实现;
  2. 可以检测代码中的每条分支和路径;
  3. 揭示隐藏在代码中的错误;
  4. 对代码的测试比较彻底。

白盒测试缺点如下:
1)程序运行会有很多不同的路径,不可能测试所有的运行路径;
2)测试基于代码只能测试开发人员做的对不对,而不能知道设计是否正确,可能会漏掉一些功能需求;
3)系统庞大时,测试开销会非常大。

(6)请简述静态测试和动态测试的区别。

静态测试不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。

动态测试通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能指标。

(7)什么是集成测试?非增量集成测试与增量集成测试有什么区别?

集成测试又称组装测试、综合测试或联合测试。通常在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。集成测试是检验程序单元或部件的接口关系,逐步集成为符合概要设计要求的程序部件或整个系统。

集成测试有两种方法,一种方法是分别测试各个模块,再把这些模块组合起来进行整体测试,这种方法称为非增量集成测试。另一种方法是把一个要测试的模块组合到已测试好的模块中,测试完后再将一个需要测试的模块组合进来测试,逐步把所有模块组合在一起,并完成测试,该方法称为增量集成测试。

(8)什么是调试?什么是测试?二者有何区别?

软件调试是查找、分析和纠正程序中错误的过程。软件测试的目的是充分发现软件的错误信息,软件调试是在测试完成结果分析之后,对结果分析发现的错误进行程序诊断,并且寻求改正的过程。软件测试和软件调试常常交替进行。

三、应用题

(1)如图6.21所示,Nextdate函数包含3个变量:month、day和year,函数的输出为输入日期后一天的日期。例如,输入为2000年3月3日,则函数的输出为2000年3月4日。要求输入变量month、day和year均为整数值,并且满足条件:1≤month≤12,1≤day≤31,1920≤year≤2050。请运用等价类划分法设计测试用例。

图6.21 Nextdate示意图

解:(1)分析并确定等价类;

Nextdate函数包含3个变量month、day和year。根据等价类划分原则第一条的内容“在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类”,day、month和year分别可以确立一个有效等价类和两个无效等价类。

① day等价类

D1={日期:1≤日期≤31};D2={日期:日期<1};D3={日期:日期>31}。

② month等价类

M1={月份:1≤月份≤12};M2={月份:月份<1};M3={月份:月份>12}。

③ year等价类

Y1={年:1920≤年≤2050};Y2={年:年<1920};Y3={年:年>2050}。

(2)建立等价类表,列出所有划分出的等价类;

Nextdate函数等价类划分表如表6.1所示。

表6.1 Nextdate函数等价类划分表

输入条件

有效等价类

无效等价类

Day

D1{1,…,28}

D2{29}

D3{30}

D4{31}

D5{day<1}

D6{day>31}

Month

M1{1,3,5,7,8,10,12}

M2{2}

M3{4,6,9,11}

M4{month<1}

M5{month>12}

Year

Y1{平年,1920≤year≤2050}

Y2{闰年,1920≤year≤2050}

Y3{year<1920}

Y4{year>2050}

(3)根据列出的等价类表,设计测试用例。

Nextdate函数预期输出分为如下六种情况。

R1: day=day+1;

R2: day=1,month=month+1;

R3: day=1,month=1,year=year+1;

R4: day越界;

R5: month越界;

R6: year越界。

Nextdate测试用例设计结果如表6.2所示。

表6.2 Nextdate测试用例

测试用例

day

month

year

预期输出

覆盖的等价类

Test1

Test2

Test3

Test4

Test5

Test6

Test7

15

28

28

29

31

30

31

6

2

2

2

3

4

12

1999

1999

2000

2000

2006

2010

2016

1999年6月16日

1999年3月1日

2000年2月29日

2000年3月1日

2006年4月1日

2010年5月1日

2017年1月1日

D1,M3,Y1  R1

D1,M2,Y1  R2

D1,M2,Y2  R1

D2,M2,Y2  R2

D4,M1,Y1  R2

D3,M3,Y1  R2

D4,M1,Y2  R3

Test8

Test9

Test10

Test11

Test12

Test13

-1

32

2

2

20

20

6

6

0

13

6

6

2001

2001

2001

2001

1919

2051

Day越界

Day越界

Month越界

Month越界

Year越界

Year越界

D5,M3,Y1  R4

D6,M3,Y1  R4

D1,M4,Y1  R5

D1,M5,Y1  R5

D1,M3,Y3  R6

D1,M3,Y4  R6

(2)用因果图法测试以下程序。程序的规格说明要求:输入的第一个字符必须是A成B,第二个字符必须是一个数字,此情况下进行文件的修改;如果第一个字符不是A或B,则给出信息L,如果第二个字符不是数字,则给出信息M。请运用因果图法设计测试用例。

解:(1)根据题意。原因和结果如下。
原因: c1:第一列字符是A;

c2:第一列字符是B;

c3:第二列字符是一数字。

结果: e21:修改文件;

e22:给出信息L;

e23:给出信息M。

(2)程序规格说明因果图如图6.1所示。其中,11为中间状态,考虑到c1和c2不可能同时为1,因此,在c1和c2上施加E约束。

图6.1程序规格说明因果图

(3)根据因果图建立判定表如表6.3所示。

表6.3 程序规格说明判定表

1

2

3

4

5

6

7

8

原因(条件)

c1

1

1

1

1

0

0

0

0

c2

1

1

0

0

1

1

0

0

c3

1

0

1

0

1

0

1

0

11

1

1

1

1

0

0

动作(结果)

e22

0

0

0

0

1

1

e21

1

0

1

0

0

0

e23

0

1

0

1

0

1

在如表6.3所示的8种情况中,左面两列原因c1和c2同时为1,这是不可能出现的,故应排除这两种情况。这是由于原因c1是第一列字符是A,原因c2是第一列字符是B,所以不可能同时出现第一列字符是A,同时第一列字符是B的情况。

(4)把判定表的每一列拿出来作为依据,设计测试用例如表6.4所示。

表6.4 程序规格说明测试用例

1

2

3

4

5

6

7

8

原因(条件)

c1

1

1

1

1

0

0

0

0

c2

1

1

0

0

1

1

0

0

c3

1

0

1

0

1

0

1

0

11

1

1

1

1

0

0

动作(结果)

e22

0

0

0

0

1

1

e21

1

0

1

0

0

0

e23

0

1

0

1

0

1

测试用例

A6

Aa

B9

BP

C5

HY

A0

A@

B1

B*

H4

E%

(3)请把图6.22中的程序流程图转换成控制流图。

《软件工程教程》(第2版) 主编:吴迪 马宏茹 丁万宁 第六章课后习题参考答案相关推荐

  1. 《软件工程教程》(第2版) 主编:吴迪 马宏茹 丁万宁 第三章课后习题参考答案

    第3章   需求分析  课后习题参考答案 一.选择题 (1)进行需求分析可使用多种工具,但(B)是不适用的. A.数据流图 B.PAD C.状态转换图 D.数据字典 (2)E-R图中,包含(D)等基本 ...

  2. 《软件工程教程》(第2版) 主编:吴迪 马宏茹 丁万宁 第四章课后习题参考答案

    第4章   总体设计  课后习题参考答案 一.选择题(单选或多选) (1)面向数据流的软件设计方法中,一般将信息流分为(A). A.变换流和事务流 B.变换流和控制流 C.事务流和控制流 D.数据流和 ...

  3. 《软件工程教程》(第2版) 主编:吴迪 马宏茹 丁万宁 第五章课后习题参考答案

    第5章   总详细设计  课后习题参考答案 一.填空题 (1)结构化程序设计方法的要点是使用 顺序.选择和循环 结构,自顶向下.逐步求精地构造算法或程序 (2)为了产生结构化的流程图,应由三种基本控制 ...

  4. 《软件工程教程》(第2版) 主编:吴迪 马宏茹 丁万宁 第七章课后习题参考答案

    第7章   软件维护  课后习题参考答案 简答题 (1)面向缺陷维护的内容是什么? 答:面向缺陷维护(程序级维护):软件产品能够正常运转,可以满足用户的功能.性能.接口需求,只是个别地方存在缺陷,使用 ...

  5. 《软件工程教程》(第2版) 主编:吴迪 马宏茹 丁万宁 第八章课后习题参考答案

    第八章  面向对象技术与UML   课后习题参考答案 一.单项选择题 D (2)C (3)B (4)D (5)C (6)B (7)A (8)C(9)A (10)D (11)A (12)C (13)C ...

  6. 《软件工程教程》(第2版) 主编:吴迪 马宏茹 丁万宁 第二章课后习题参考答案

    第2章  软件问题定义及可行性分析 课后习题参考答案 一.填空题 (1)可行性研究的目的是 用最小的代价在尽可能短的时间内确定问题是否能够解决. (2)经济可行性研究范围包括 投资效益分析 .公司经营 ...

  7. 《软件工程教程》(第2版) 主编:吴迪 马宏茹 丁万宁 第九章课后习题参考答案

    第9章   面向对象分析  课后习题参考答案 一.选择题 (1)(C)不是对象具有的特性. A.标 B.继承 C.顺序 D.多态性 (2)封装是把对象的(A)结合在一起,组成一个独立的对象. A.属性 ...

  8. 软件工程 张秋余等著 第六章课后习题部分答案

    第六章 软件维护 1.为什么说软件的维护是不可避免的? 正确答案: 粗略答案:因为软件是人编写的,每个人的能力有明显的区别,自然而然的存在一些缺陷或漏洞,因此对软件的维护是不可或缺的. 标准答案:为了 ...

  9. Matlab程序设计与应用(第3版,刘卫国主编)课后习题参考答案

    Matlab程序设计与应用(第3版,刘卫国主编)课后习题参考答案 MATLAB程序设计与应用(第3版,刘卫国著)  习题答案资源 下载地址: Github下载: https://github.com/ ...

最新文章

  1. node.js express 启用 https
  2. Emmet:HTML/CSS代码快速编写器
  3. Dojo学习笔记(7. dojo.dom)
  4. SAP License:SAP与中国电子技术标准化研究院开展交流活动
  5. 天池NLP文本分类比赛如何轻松轻松获得Top K的秘诀!
  6. Linux下Bash编程之算术运算符详解(三)
  7. 美国Compuware败退中国市场!又一家外企逃离
  8. 麒麟OS新版本,老国产平台机器都装不了,情何以堪?
  9. python实时监控文件夹内文件数量变化_python 监控文件夹变化
  10. linux系统发送短信,Linux系统的短信收发怎么实现?
  11. 京东股权众筹投后总结和反思2(冲动不要紧,有后悔药)
  12. 红米9A成功root.9秒解锁BL MIUI12 root权限刷 Magisk面具 TWRP
  13. SCAU 2018 初出茅庐 题解
  14. Linux的上传和下载文件到Window_scp指令
  15. 深入理解计算机系统:1.3 了解编译系统是如何工作是很有必要的(It Pays to Understand HowCompilation Systems Work)
  16. 【区块链学院】第四期线下沙龙 技术篇: 拒绝纸上谈兵 区块链技术落地商用之道...
  17. Linux X86_64位虚拟地址空间布局与试验
  18. Git 与 SVN 区别
  19. 如何获取股票期货的实时行情数据和历史行情数据?
  20. Deployment 的回滚

热门文章

  1. 看老外的Meego手机设计
  2. 五子棋新版已轻松战胜旧版
  3. php判断对象是否存在属性_PHP检查对象或类中是否存在属性
  4. 面向对象分析烤地瓜项目
  5. 最新交易猫链接源码 带完整版教程
  6. 2017.5.27测试 2. 刷题(P1167)
  7. 2022-2027年中国食用甜味剂行业市场全景评估及发展战略规划报告
  8. 用不到 50 行的 Python 代码构建最小的区块链
  9. 基于惯性权重与柯西混沌变异的改进正余弦算法
  10. 番茄工作法——专治拖延症、精神涣散、再要五分钟综合症