软件工程理论与实践 (吕云翔) 第十三章 软件测试方法与过程课后习题及其答案解析

第十三章 软件测试方法与过程

1.判断题

(1)白盒测试无须考虑模块内部的执行过程和程序结构,只需了解模块的功能即可。(×)

解析:白盒测试需要考虑模块内部的执行过程和程序结构,以便设计测试用例和覆盖代码路径。

(2)白盒测试是结构测试,主要以程序的内部逻辑为基础设计测试用例。(√)

(3)单元测试通常应该先进行"人工走查",再以白盒法为主,辅以黑盒法进行动态测试(×)

解析:单元测试通常应该先进行"人工走查"来确保代码质量,然后以白盒测试为主,辅以黑盒测试进行动态测试。

(4)白盒测试法是一种静态测试方法,主要用于模块测试。(×)

解析:白盒测试法是一种动态测试方法,通过执行代码路径来检查程序的正确性。

(5)在等价分类法中,为了提高测试效率,一个测试用例可以覆盖多个无效等价类。(×)

解析:等价类划分法中,每个测试用例应该只覆盖一个等价类,以确保每个等价类都得到适当的测试。

(6)功能测试是系统测试的主要内容,检查系统的功能和性能是否与需求规格说明相同。(×)

解析:

功能测试是系统测试的一部分,但并不是系统测试的主要内容。系统测试还包括其他类型的测试,如性能测试、安全测试等,以验证系统的功能、性能和符合性等方面。

2.选择题

(1)白盒法又称为逻辑覆盖法,主要用于(D)

A.确认测试

B.系统测试

C.α测试
D.单元测试

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

A.基本路径测试
B.边界值分析测试

C.循环覆盖测试

D.条件测试

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

A.输出数据
B.内部逻辑

C.功能

D.输数据

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

A.该软件的设计人员

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

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

(5)黑盒测试是从(B)观点的测试,白盒测试是从(B)观点的测试。

A.开发人员、管理人员
B.用户、管理人员

D.开发人员、用户

C.用户、开发人员

(6)使用白盒测试方法时确定测试数据应根据(B)和指定的覆盖标准

B.程序的复杂程度
A.程序的内部逻辑

D.程序的功能

C.程序的难易程度

(7)黑盒测试方法根据(B)设计测试用例。

A.程序的调用规则
B.软件要完成的功能

C.模块间的逻辑关系

D.程序的数据结构

(8)在软件测试中,逻辑覆盖标准主要用于(A).

D.回归测试方法
A.白盒测试方法

法B.黑盒测试方法

C.灰盒测试方法

(9)集成测试的主要方法有两个,一个是(B)一个是(B)。
B.等价类划分方法、边缘值分析方法

A.白盒测试方法、黑盒测试方法

D.因果图方法、错误推测方法

C.渐增式测试方法、非渐增式测试方法

(10)单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是(A)。

B.局部数据结构
A.系统功能

C.重要的执行路径

D.错误处理

3.简答题

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

​ 在黑盒测试里,测试人员把被测试的软件系统看成是一个黑盒子,并不需要关心盒子的内部结构和内部特性,而只关注软件产品的输人数据和输出结果 ,从而检查软件产品是否符合它的功能说明

测试方法:

  • 等价类划分法
  • 边界值分析法
  • 错误推测法
  • 因果图法
  • 决策表法
  • 场景法

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

​ 白盒测试关注软件产品的内部细节和逻辑结构,即把被测的程序看成是一个透明的盒子.

测试方法:

  • 代码检查法
  • 静态结构分析法
  • 程序插桩技术
  • 逻辑覆盖法
  • 基本路径法

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

​ 白盒测试和黑盒测试是软件测试中的两种方法。通常在白盒测试中交叉着黑盒测试,黑盒测试中也交叉着白盒测试。

白盒测试:

  • 关注系统的内部逻辑和代码。
  • 基于对系统内部的了解来设计测试用例,覆盖代码的各个路径和逻辑分支。
  • 需要测试人员具备编程和软件开发知识。

黑盒测试:

  • 关注系统的外部行为和功能。
  • 基于对系统功能和接口的了解来设计测试用例,验证系统的输出和行为是否符合预期。
  • 不需要测试人员了解系统的内部实现。

​ 白盒测试侧重于验证系统的正确性和缺陷检测,黑盒测试侧重于验证系统的功能和需求是否满足。在实际测试中,通常会结合使用这两种方法。

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

静态测试和动态测试是软件测试中的两种方法。

静态测试:

  • 在代码执行之前进行分析和评审。
  • 针对文档、源代码等进行测试。
  • 目的是发现潜在问题和提高软件质量。
  • 示例技术包括代码审查、文档审查、静态分析工具等。

动态测试:

  • 在代码执行期间进行验证。
  • 针对软件的功能、性能、安全等进行测试。
  • 目的是检测错误、评估系统性能。
  • 示例技术包括单元测试、集成测试、性能测试、安全测试等。

静态测试侧重于分析和评审,动态测试侧重于实际运行和验证。通常会结合使用这两种方法进行全面的软件测试。

(5)单元测试、集成测试和系统测试各自的主要目标是什么?它们之间有什么不同?相互之间有什么关系?

单元测试目标:验证最小可测试单元的功能。

集成测试目标:验证多个单元之间的交互和协作。

系统测试目标:验证整个软件系统的完整功能、性能和一致性。

它们之间的关系:单元测试是构建块,为集成测试提供基础;集成测试为系统测试提供可靠的功能子集。

(6)什么是集成测试?非增量测试与增量测试有什么区别?增量测试如何组装模块?

​ 集成测试是多个单元的聚合,许多单元组合成模块,而这些模块又聚合成程序的更大部分。集成测试是单元测试的逻辑扩展,它的最简单形式是将两个已经测试通过的单元组合成一个构件,并且测试它们之间的接口。集成测试是在单元测试的基础上,测试将所有的软件单元按照概要设计规则的要求组装成模块、子系统或系统的过程中,各部分功能是否达到或实现相应技术指标及要求的活动。

​ 非增量集成是先分别测试每个模块,再将所有模块按照设计要求放在一起结合成所要的程序;增量集成是将下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完后再将下一个应测试的模块结合起来进行测试。

在增量测试中,可以采用自顶向下或自底向上的方法来组装模块。

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

调试(Debugging)是通过修复程序中的错误和问题,确保程序按预期运行。

测试(Testing)是通过执行一系列操作和输入,评估系统的行为、功能和性能。

区别:

  • 目标:调试解决错误和问题,使程序正确运行;测试评估系统行为和符合性。
  • 方法:调试追踪代码、检查变量状态;测试设计和执行测试用例、比较结果。
  • 阶段:调试发生在开发过程中;测试可以在不同阶段进行。
  • 关注点:调试关注程序内部错误;测试关注系统行为、功能和性能。

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

软件测试通常可以划分为以下几个阶段,每个阶段都有其特定的重点和目标:

  1. 单元测试(Unit Testing):
    • 目标:测试最小的可测试单元,例如函数、方法或模块。
    • 重点内容:验证单元的功能和逻辑正确性,检查边界条件、异常处理和各种路径覆盖。
  2. 集成测试(Integration Testing):
    • 目标:测试多个模块或组件之间的集成。
    • 重点内容:验证模块之间的接口和交互是否正确,检查数据传递、通信和协作。
  3. 系统测试(System Testing):
    • 目标:测试整个软件系统的功能、性能和可靠性。
    • 重点内容:验证系统的功能是否符合需求规格,检查系统的完整性、兼容性和可用性。
  4. 验收测试(Acceptance Testing):
    • 目标:由最终用户或客户进行的测试,确认系统是否满足预期需求。
    • 重点内容:验证系统是否符合用户的期望和需求,检查系统是否可交付和可接受。
4.应用题

(1)某程序功能说明书指出,该程序的输入数据为每个学生的学号。其中,学号由以下

三个部分构成:

①人学年份:4位数字(1900~2999)之间的数字。

②专业编码:0或1开头的4位数字。

③序号:2位数字。

试用等价类划分法设计测试用例。

使用等价类划分法,我们可以将输入数据划分为有效等价类和无效等价类,以设计测试用例。根据给定的要求,我们可以进行如下划分:

有效等价类:

  1. 人学年份:4位数字(1900~2999)之间的数字。
  2. 专业编码:以0或1开头的4位数字。
  3. 序号:2位数字。

无效等价类:

  1. 人学年份:小于1900的数字、大于2999的数字、非数字字符。
  2. 专业编码:不以0或1开头的4位数字、非数字字符。
  3. 序号:非2位数字、非数字字符。

根据上述划分,我们可以选择以下测试用例:

有效等价类测试用例:

  1. 输入:1998, 0123, 05
    预期结果:有效输入,符合要求。
  2. 输入:2025, 1123, 99
    预期结果:有效输入,符合要求。

无效等价类测试用例:

  1. 输入:1800, 0123, 05
    预期结果:无效输入,人学年份不在有效范围内。
  2. 输入:3050, 0123, 05
    预期结果:无效输入,人学年份不在有效范围内。
  3. 输入:2025, 6123, 05
    预期结果:无效输入,专业编码不符合要求。
  4. 输入:2025, 023, 05
    预期结果:无效输入,专业编码不符合要求。
  5. 输入:2025, 0123, 5
    预期结果:无效输入,序号不是2位数字。
  6. 输入:2025, 0123, 059
    预期结果:无效输入,序号不是2位数字。

通过设计这些测试用例,我们可以覆盖各个等价类,并验证程序对于不同等价类的处理是否正确。

相关推荐
不止会JS16 小时前
软考:系统架构设计师教材笔记(持续更新中)
系统架构·软件工程·软考
Theodore_10221 天前
4 软件工程——总体设计
java·开发语言·数据库·算法·java-ee·软件工程·设计
Theodore_10221 天前
1 软件工程——概述
java·开发语言·算法·设计模式·java-ee·软件工程·个人开发
shinelord明2 天前
【再谈设计模式】享元模式~对象共享的优化妙手
开发语言·数据结构·算法·设计模式·软件工程
人才程序员3 天前
QML z轴(z-order)前后层级
c语言·前端·c++·qt·软件工程·用户界面·界面
Theodore_10223 天前
3 需求分析
java·开发语言·算法·java-ee·软件工程·需求分析·需求
做人求其滴3 天前
GDPU软件工程习题(挖空版)
软件工程
MrFlySand_飞沙3 天前
软件工程
软件工程
jokr_3 天前
【软件工程复习】
软件工程
云空3 天前
《软件工程文档攻略:解锁软件开发的“秘籍”》
软件工程