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

这篇具有很好参考价值的文章主要介绍了《软件工程教程》(第2版) 主编:吴迪 马宏茹 丁万宁 第六章课后习题参考答案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

                   第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。请运用等价类划分法设计测试用例。

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

 文章来源地址https://www.toymoban.com/news/detail-435196.html

图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约束。

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

 

图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版) 主编:吴迪 马宏茹 丁万宁 第六章课后习题参考答案

 

到了这里,关于《软件工程教程》(第2版) 主编:吴迪 马宏茹 丁万宁 第六章课后习题参考答案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【软件工程】《软件工程》期末复习提纲

    《软件工程》期末复习提纲 第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 第九章 第十章 第十一章 第十二章 第十三章 第十四章 小题参考 大题参考 1.在下列选项中,( )不是软件的特征。 A.系统性与复制性         B.可靠性与一致性 C.抽象性与智能性  

    2024年01月17日
    浏览(45)
  • 【软件工程】软件工程习题及答案

    软件工程是一种系统化、规范化的方法论,用于开发、维护和管理软件项目。它涵盖了软件开发的各个方面,包括需求分析、设计、编码、测试、部署、维护和项目管理等。 软件工程通过应用科学原理、工程技术和管理方法,以及适应性的实践,旨在提高软件开发的效率、质

    2024年02月09日
    浏览(67)
  • 【软件工程】软件工程期末考试试卷

    瀑布模型把软件生命周期划分为八个阶段 :问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段: 计划阶段、开发阶段和( C) 。   A、详细计划 B、可行性分析  C 、 运行阶段  D、 测试与排错

    2024年02月09日
    浏览(49)
  • 【软件工程】软件工程期末考试复习题

    软件工程期末考试试题及参考答案 一、单向选择题 1、软件的发展经历了(D)个发展阶段。 一 二 三 四 2、需求分析的任务不包括(B)。 问题分析 系统设计 需求描述 需求评审。 3、一个软件的宽度是指其控制的(C)。 模块数 层数 跨度 厚度 4、当模块中包含复杂的条件组

    2024年02月10日
    浏览(48)
  • 【软件工程】山东大学软件工程复习提纲

    涵盖所有考点,复习绝对高效,点赞+留邮箱获取pdf版本 本提纲可以完全摘抄,考试命中率100%,先上考试带的A4纸: 1. 软件工程三要素 方法:为软件开发提供了“如何做 ”的技术,如项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计等; 工具:为软件工

    2024年02月13日
    浏览(39)
  • 【软件工程】为什么要选择软件工程专业?

    个人主页:【😊个人主页】 软件工程是一门研究用工程化方法构建和维护有效、实用和高质量的软件的学科。就当下主流趋势来看,其有着无限的未来。接下来我将以六个方面来谈谈我对软件工程专业的看法: 软件工程是一门研究用工程化方法构建和维护有效、实用和高质

    2023年04月19日
    浏览(46)
  • 【软件工程】自动化测试保证卓越软件工程能力(3)

    对照目标系统,如下:  给出自动化测试平台目标如下: Case level Case brief Report send to OVERALL User 1 - Process - Customer 1 Boss Level 1 User 1 - Process - Customer 1 User 1 - Process - Customer  2 User  2  - Process - Customer 1 ... Manager, Some users, Developers, Testers Level 2 User 1 - Igeress - Process - Router - Sender 1

    2024年02月04日
    浏览(56)
  • 经典软件工程复兴?大模型驱动的软件工程实践标准化

    简单来说,本文探讨了大模型驱动的软件工程实践标准化,以及如何将需求和设计规范化为 DSL 格式。通过这种方式,可以让 AI 更自动化、高效地编写代码。 随着大语言模型在软件开发中的应用越来越广泛,传统的软件工程实践开始被重新关注和提及。在诸如于编写清晰的文

    2024年02月12日
    浏览(38)
  • 【软件工程】软件测试

    软件=程序+文档 测试对象:各个阶段产生的源程序和文档。 基于不同的立场,对软件测试的目的存在着两种完全对立的观点。 (1)一种观点是通过测试暴露出软件中所包含的故障和缺陷(从用户的角度); (2)另一种是希望测试成为表明软件产品中不存在错误的过程,验证该

    2024年02月13日
    浏览(57)
  • 软件与软件工程

    软件的概念以及特点: 软件是计算机系统中不可或缺的一部分,与硬件共同构成特定的系统功能。 人们通常把各种不同功能的程序,包括系统程序、应用程序、用户自己编写的程序等称为软件 软件的概念: 软件不仅包括程序,还包括程序的处理对象——数据,以及与程序开

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包