1
2
- 选择题20题,20分;填空题15空,15分;判断10题,10分;简答6题,30分;
- 设计2题25分,分别为白盒测试中的逻辑覆盖测试和黑盒测试中的等价类划分测试。

1、软件生命周期中哪几个阶段修复软件缺陷的费用最低?

  • page 3

  • 详细

  • 软件开发过程是使用软件工程的方法,在整个过程中,都有可能出现各种各样的软件缺陷。随着开发时间的推移,软件缺陷修复成本呈倍数的增长。假如早在进行分析时发现相关功能缺失,立即补上就可了,可以说付出的代价小得几乎忽略不计。如果在发布时发现缺失某个功能,那么此时加上一个功能,相当于重新开发一样,这时的修补费用可以说高许多。因此要尽早进行测试。

  • 加入早在进行分析时发现相关功能缺失,立即补上就可以了,付出但代价小的几乎可以忽略不计。

  • 定义阶段

    • 可行性研究初步项目计划
    • 需求分析

2、单元测试中需要用到哪两种类型的模块(驱动、存根)?

  • page 93

  • 详细

  • 驱动模块

  • 桩模块

  • 驱动模块(driver)是一种用于模拟被测试模块的上一级模块,相当于被测模块的主程序。主要用来接收测试数据,将相关数据传送给被测试模块,并调用被测试模块,打印执行结果。设计驱动模块的目的就是为了访问类库的属性和方法,检测类库的功能是否正确。

    **桩模块(存根模块)**(Stub)是模拟被测试模块所调用的模块,它不是软件产品的组成部分。在集成测试前要为被测模块编制一些模拟其下级模块功能的“替身”模块,以代替被测模块的接口,接受或传递被测模块的数据,这些专供测试用的“假”模块称为被测试模块的桩模块。

3、单元测试具体包括哪些测试内容?

单元测试的任务

 单元测试是检查每个模块是否能正确实现详细设计说明书中的功能、性能、接口和其他设计约束要求,确保每个单元都能被正确地编码。通过单元测试后,要达到一定的目标:

(1)该单元能否完成其特定的**功能和性能**。

(2)该单元的运行能否满足**特定的逻辑覆盖**。

(3)在运行该单元时,其**内部的数据**能否保持**完整性**。包括全局变量的处理、内部数据的形式、内容及相互关系等不出现错误。

(4)对符合要求和不符合要求的数据能否能处理,在**数据边界条件**上,能否正常运行。

(5)对该单元中发生的错误,是否采处**有效的处理措施**。

### 主要任务如下

1、模块的接口

2、局部数据结构

3、重要的执行路径

4、错误处理

5、边界问题

4、什么是黑盒、白盒测试,有何区别?

  • page 68
  • 详细
  • 黑盒测试又称功能测试或数据驱动测试;是将被测试软件看做一个黑盒子,完全不考虑程序的内部结构和处理过程,只考虑系统的输入和输出,在程序的接口进行测试,检查系统功能是否符合需求规格说明书的要求。
  • page25
  • 白盒测试又称结构测试或逻辑驱动测试,是根据被测试程序源代码的内部结构来设计测试用例的方法。
  • page 89
  • 黑盒测试与白盒测试的比较
    • 1、测试依据不同
    • 2、适应范围不同
    • 3、测试方法不同
    • 4、测试人员不同
    • 5、测试内容及发现的错误不同

5、测试文档中包含哪些内容?

  • page 250

  • 详细

  • 1、管理计划的文档
    内容包括:测试如何完成(包括SUT的配置)?谁来做测试?将要测试什么?测试将持续多久(虽然根据可以使用的资源的限制而有变化)?测试覆盖度的需求,例如所要求的质量等级。

    2、测试设计规格
    详细描述测试环境和期望的结果以及测试通过的标准。

    3、测试用例规格
    定义用于运行于测试设计规格中所述条件的测试数据。

    4、测试过程规格
    详细描述如何进行每项测试,包括每项预置条件和接下去的步骤。

    5、测试项传递报告
    报告何时被测的软件组件从一个测试阶段到下一个测试阶段。

    6、测试记录
    记录运行了哪个测试用例,谁运行的,以什么顺序,以及每个测试项是通过了还是失败了。

    7、测试附加报告
    详细描述任何失败的测试项,以及实际的与之相对应的期望结果和其他旨在揭示测试为何失败的信息。这份文档之所以被命名为附加报告而不是错误报告,其原因是期望值和实际结果之间由于一些原因可能存在差异,而这并不能认为是系统存在错误。这包括期望值有误、测试被错误地执行,或者对需求的理解存在差异。这个报告由以下所有附加的细节组成,例如实际结果和期望值、何时失败,以及其他有助于解决问题的证据。这个报告还可能包括此附加项对测试所造成的影响的评估。

    8、测试摘要报告
    一份提供所有直到测试完成都没有被提及的重要信息的管理报告,包括测试效果的评估、被测试软件系统的质量、来自测试附加报告的统计信息。这个报告还包括执行了哪些测试项、花费多少时间,用于改进以后的测试计划。这份最终的报告用于指出被测的软件系统是否与项目管理者所提出的可接受标准所符合。

6、单元测试中常用的测试方法有哪些?

  • page 95

  • 详细

  • 静态测试与动态测试相结合

  • 白盒测试与黑盒测试相结合

  • 人工测试与自动化测试相结合

静态测试与动态测试相结合

 单元测试是一种静态与动态相结合的测试。在执行动态测试之前,经过编译后的单元测试内容,先进行静态代码复审,找出其中的错误,可以由程序设计人员、程序编写人员和程序测试人员参与,由软件设计能力较强的高级程序员任组长,在研究软件设计文档基础上召开审查会议,分析程序逻辑与错误清单,测试预演,人工测试,代码复审后再进行计算机代码执行活动的动态测试。所以说是静态与动态相结合的测试。

### 白盒测试与黑盒测试相结合

 单元测试**主要**采用**白盒测试**方法,**辅以黑盒测试**方法。其中白盒测试应用于代码评审、单元程序执行。在白盒测试方法中,以路径覆盖为最佳准则,且系统内多个模块可以并行进行测试。而黑盒测试方法则应用于模块、组件等大单元的功能测试。

### 人工测试与自动化测试相结合

 人工测试是由测试人员手工逐步执行所有的活动,并观察每一步是否成功完成。人工测试是任何测试活动的一部分,在开发初始阶段软件及其用户接口还未足够稳定时尤其有效。 在不能使用自动化测试工具时,必须采用人工测试的方法对单元相关内容进行测试。

 自动化测试 是把以人为驱动的测试行为转化为机器执行的一种过程。在设计了测试用例并通过评审之后,由测试人员采用自动化测试工具,根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,节省人力、时间或硬件资源,提高测试效率。

7、白盒测试中确定测试数据和测试用例的依据是什么?

  • 详细
  • 确定测试数据的根据是程序的内部逻辑
  • 使用白盒测试方法时,测试者必须全面了解程序内部逻辑结构,检查程序的内部结构,从检查程序的逻辑着手,对相关的逻辑路径进行测试,最后得出测试结果。

8、测试计划中包括哪些内容?

  • 详细

    1、测试计划阶段

    根据被测软件的详细设计说明书、代码及测试任务书,对被测单元进行分析,并确定如下内容:

    (1)确定被测试单元的目标、范围和约束条件。

    (2)确定被测软件采用的覆盖程度及覆盖的方法和技术。

    (3)确定被测单元的环境,包括软件、硬件、网络、人员配备等。

    (4)确定被测单元的测试结束的要求。

    (5)确定单元测试活动的进度。

    2、测试设计阶段

    根据测试计划与要求,对被测试单元设计测试用例,一般由测试人员和测试程序员共同完成。主要工作内容:

    (1)设计测试用例。

    (2)获取测试用例的数据。

    (3)确定测试的顺序。

    (4)获取测试资源,建立测试环境。

    (5)编写测试程序及测试说明文档。

9、软件测试的目的是什么?

  • page 4
  • 详细
  • 通过与系统的需求定义比较,检查软件是否存在与系统定义不符合或与之矛盾的地方,以验证软件系统的功能和性能等满足其规约所指定的要求。
  • 软件测试是为了发现错误而针对某个程序或系统的执行过程
  • 测试是为了证明程序有错,而不是证明程序无错误
  • 一个好的测试用例在于它能发信至今未发现的错误
  • 一个成功的测试是发现了至今未发现的错误的测试

10、软件测试的对象包括哪些?

  • page 5
  • 详细
  • 文档
  • 代码
  • 图表

11、集成测试的主要测试方法有哪些?

  • page 97
  • 详细
  • 大爆炸集成测试
  • 自顶向下集成测试
  • 自底向上集成测试
  • 三明治集成测试

12、自底向上集成和自顶向下集成测试分别需要设计哪些模块?

  • 详细
  • 自底向上
    • 未经集成测试的模块开发驱动模块
  • 自顶向下
    • 未经集成的模块开发桩模块

13、系统测试的目的是什么?

  • page 104
  • 详细
  • 通过与系统的需求定义比较,检查软件是否存在与系统定义不符合或与之矛盾的地方,以验证软件系统的功能和性能等满足其规约所指定的要求

14、常用的测试模型有哪些?

  • page 18
  • 详细
  • V-model
  • W-model
  • H-model
  • X-model
  • pretest-model

15、错误推测法黑盒测试的依据原理是什么?

  • page 85
  • 详细
  • 利用直觉和经验推测软件系统中可能出错的类型,列举出程序中所有可能的错误和容易发生错误的情况,用清单的形式表示,然后,再根据清单来编写测试用例。
  • 常从以下几个方面来推测软件件系统中存在的错误:
    • (1)软件产品以前版本中已存在的未解决的问题;
    • (2)因为编程语言、操作系统、浏览器等环境的限制而出现的问题;
    • (3)因模块间关联的测试出现的缺陷,修复后可能带来其他的问题等。

16、哪些阶段的测试用户必须要参与?

  • 验收测试

17、逻辑覆盖测试中的路径覆盖一定实现了哪一种逻辑覆盖(除路径覆盖)?

18、软件自动化测试的优点有哪些?

  • page 142
  • 详细
  • (1)测试自动化可以节约时间。
  • (2)测试自动化会更可靠,提高了精确度和准确度。
  • (3)测试自动化有助于立即测试。
  • (4)测试自动化可以减轻测试工程师的测试工作量,使他们能把注意力放在更有创造性的任务上。
  • (5)测试自动化可以更好地利用全球资源。
  • (6)有些测试必须进行自动化测试。

19、黑盒测试有哪些常用的测试方法?

  • page 69
  • 详细
  • 等价类划分法
  • 边界值分析法
  • 决策表法
  • 因果图法

20、逻辑覆盖测试包括哪些测试方法?

  • page 34
  • 详细
  • 语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、修正的判定/条件覆盖、条件组合覆盖、路径覆盖

21、渐增式测试包含哪几种类型?

  • 详细
  • 自顶向下集成测试
  • 自底向上集成测试
  • 混合,二种方式相结合的方法

22、系统测试何时进行?

  • 详细

  • 系统测试是将集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、支持软件、数据等其它系统元素结合在一起,在实际运行(使用)环境下所进行的一系列测试活动。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    系统测试的内容
    国标GB/T 16620针对系统测试的测试内容:适应性、准确性、互操作性、安全保密性、成熟性、容错性、易恢复性、易理解性、易学性、易操作性、吸引性、时间特性、资源利用性、易分析性、易改变性、稳定性、易测试性、适应性、易安装性、共存性、替换性和依从性等方面(有选择的)。
    功能性
    主要测试内容如下:
    (1)适应性方面
    (2)准确性方面
    (3)互操作性方面
    (4)安全保密性方面
    可靠性
    主要测试的内容如下:
    (1)成熟性方面
    (2)容错性方面
    (3)易恢复性方面
    易用性
    主要测试的内容如下:
    (1)易理解方面:
    (2)易学性方面
    (3)易操作性方面
    (4)从吸引性方面
    效率
    主要测试的内容如下:
    (1)时间特性方面:
    (2)资源利用性方面
    维护性
    主要测试的内容如下:
    (1)易分析性方面:可设计各种情况的测试用例运行系统,并监测系统运行状态数据,检查这些数据是否容易获得、内容是否充分。若软件具有诊断功能,则应测试该功能。
    (2)易改变性方面:可测试能否通过参数来改变系统。
    (3)易测试性方面:可测试软件内置的测试功能,确认它们是否完整和有效。
    可移植性
    主要测试的内容如下:
    (1)适应性方面
    (2)易安装性方面
    (3)共存性方面
    (4)易替换性方面
    (5)依从性方面

23、边界值分析测试如何确定测试数据?

  • 详细

  • 边界值分析法主要从数据的定义域的边界数据进行分析,对于合法与不合法的边界数据进行选取和测试。用来检查用户输入的信息、返回的结果以及中间计算结果是否正确。

    1
    2
    3
    4
    5
    6
    7
    8
    边界值的获取及测试用例的设计
    测试时输入变量取值:最小值(min)、略高于最小值(min+)、正常值(nom)、略低于最大值(max-)、最大值(max)。
    对于一个含有n个变量的程序,保留其中一个变量,让其余的变量取正常值,被保留的变量依次取最小值(min)、略高于最小值(min+)、正常值(nom)、略低于最大值(max-)、最大值(max),对每一个变量都重复进行。因此,对于一个有n个变量的程序,边界值分析测试程序就有4n+1个测试用例。
    测试所包含的边界值常见的类型有:数值、字符、位置、大小、尺寸、空间等。
    边界值的获取及生成测试用例的步骤
    (1)使用一元划分方法划分输入域。此时,有多少个输入变量就形成多少种划分。
    (2)为每种划分确定边界,也可利用输入变量之间的特定关系确定边界。
    (3)设计测试用例,确保每个边界至少出现在一个测试输入数据中。

健壮性的测试

健壮性测试是边界分析测试的一种扩展,除了取上面已述的五种边界值外,还要考虑超出范围的值,即比最小值要小(min-)、比最大值要大(max+)的取值。对于一个含有n个变量的程序而言,同样,保留一个变量,让其余变量取正常值,这个保留的变量依次取七个值(min-、min、min+、nom、max-、max、max+),每个变量重复进行,则健壮性测试的用例将产生6n+1个测试用例。

边界分析法的测试用例

  • img

    img

    img

  • img

    img

24、等价类划分测试如何进行?

  • 详细

  • 等价类划分法是根据程序规格说明书对输入范围进行划分,将所有可能的输入数据按相关的规定划分成若干不相交的子集。所有子集的并集是整个输入域。其中,子集的互不相交保证子集中无冗余性,子集的并集是整个输入域,确定了所有子集的完备性。

  • 缺陷的定位
    一个软件的全部输入的集合可以至少分为两个子集:一个包含所有正常和合法的输入;另一个包含所有异常和非法的输入。对于这两个子集又可以进一步划分为若干子集,以便软件针对不同的子集,其运行的结果不同。等价类划分方法就是要从这两个集合或其子集中选择适当的输入作为测试用例,以便发现软件中存在的缺陷。
    
    等价类的划分
    等价类划分的原则是用同一等价类中的任意输入对软件进行测试,软件都输出的相同的结果。全部等价类的测试用例就构成了完整的测试用例集。对于同一输入域进行等价类划分,其结果可能不唯一的。因此,利用等价类划分的方法产生的测试用例集也可能不同。所以测试用例集的故障检测效率往往取决于测试人员的测试设计的经验、对软件需求的熟悉程序等。
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    ## 25、测试工作由哪些人员完成?

    - [详细](https://zlogs.net/note/learn-software-test/page/1013.html?h=%E6%B5%8B%E8%AF%95%E7%BB%8F%E7%90%86)

    - 测试经理

    - 测试设计师

    - 测试文档审核师

    - 测试工程师

    - ```
    测试人员的角色主要有四类: (1)测试经理:主要负责测试队伍的内部管理以及与外部人员、客户的交流工作,包括进度管理、风险管理、资金管理、人力资源管理、交流管理等。还有测试计划书的编写、测试总结报告的归纳等。必须具有项目经理的知识和技能。 (2)测试设计师:主要根据软件开发各阶段产生的设计文档来设计各阶段的测试用例。 (3)测试文档审核师:主要负责前置测试,包括对各个阶段的分析与设计文档进行审核,如:需求说明书、概要与详细设计说明书等。 (4)测试工程师:对测试设计师设计的测试用例分阶段完成测试工作。

26、需求变更是否需要受到控制?

  • 要受到控制

27、等价类划分的标准有哪些?

  • page 70

  • 详细

  • 变量的等价类划分

  • 关系与等价类划分

  • 一元划分与多元划分

  • ①变量的等价类划分 取值范围:如果输入条件规定了一个取值范围或值的个数,则可以定义一个有效等价类和两个无效等价类。字符串:至少分为一个包含所有合法字符串的有效等价类和一个包含所有非法字符串的无效等价类。枚举变量:每个取值对应一个有效等价。针对枚举类型,对于某些特定的取值范围,有可能无法确定非法测试输入值。对于布尔变量,只有两个合法取值(真值与假值)。数组:数组是一组具有相同类型的元素的集合,数组的长度及其类型都可作为等价类划分的依据。可划分为一个包含所有数组的有效等价类,一个空数组无效等价类,以及一个包含所有大于期望长度数组的无效等价类。复合数据类型:复合数据类型是指包含两个或两个以上的相互独立的属性的输入数据。当对软件的一个组件模块(函数或对象)进行测试时,将使用这种输入类型。对这种复合数据类型的输入进行等价类划分时,需要考虑输入数据的每个属性的合法与非法取值。
    
    ②关系与等价类划分 在集合论中,关系指的是一个n元组的集合。如果规定了输入值的集合,或者规定了“必须如何”的条件,则可以定义一个有效等价类和一个无效等价类。如果规定了输入数据的一组值,而且程序对不同输入值做不同处理,则可以定义若干有效等价类(每个值一个有效等价类)和一个无效等价类。如果规定了输入数据必须遵守的规则,则可以定义一个有效等价类(符合规则)和若干无效等价类(从不同角度违反规则)。
    
    ③一元化分与多元化分 一元化等价类划分:每次只考虑一个输入变量,这样,每个输入变量形成了对输入域的一个划分,称为一元等价类划分,简称一无化分。程序有多少个变量,就有多少种划分,每个划分包含两个或两个以上的等价类。多元划分:将所有输入变量的笛卡儿积作为程序的输入域,称为多元等价类划分,简称多元化分。此方法只产生一个划分,划分包含若干个等价类。测试用例的选择常使用一元化分,因为一元化分较为简单且可量测。而多元化分所产生的等价类数量较大,并且其中有许多是无用的。
    

28、集成测试有哪些方法?各有何特点?

  • 详细
  • 大爆炸集成测试
    • 把所有通过单元测试的模块一次性集成到一起进行测试,不考虑组件之间的互相依赖性及可能存在的风险
  • 自顶向下集成测试
    • 按照系统层次结构图,以主程序模块为中心,从顶层控制(主控模块)开始,自上而下按照深度优先或者广度优先策略,对各个模块一边组装一边进行测试
  • 自底向上集成测试
    • 从系统层次结构图的最底层模块开始按照层次结构图,逐层向上进行组装和集成测试的方式
  • 三明治集成测试
    • 三明治集成是一种混合增殖式测试策略,综合了自顶向下和自底向上两种集成方法,把系统划分成三层,中间一层为目标层,目标层上采用自顶向下集成,目标层下采用自底向上集成

29、什么是测试计划?

  • 详细
  • 测试计划(Testing plan)描述了要进行的测试活动的范围、方法、资源和进度的文档;是对整个信息系统应用软件组装测试和确认测试安排。 它确定测试项、被测特性、测试任务、谁执行任务、各种可能的风险。测试计划可以有效预防计划的风险,保障计划的顺利实施。

30、面向对象测试过程包括哪几个层次?

  • 详细

  • 将面向对象的测试分为三个层次:类的单元测试、类的集成测试和系统测试。 面向对象软件的测试分层如表6-1所示。

img

在设计测试用例选择输入数据时,可以基于以下两个假设:

(1)如果函数(程序)对某一类输入中的一个数据正确执行,对同类中的其他输入也能正确执行。

(2)如果函数(程序)对某一复杂度的输入正确执行,对更高复杂度的输入也能正确执行。例如需要选择字符串作为输入时,基于本假设,就无须计较字符串的长度,除非字符串的长度是要求固定的,如IP地址字符串。

31、基于服务的类测试中块分支图包括哪几部分?

img

  • 详细
  • f = (Du,Dd,P,Fe,G)
  • Du={di| di∈f 引用的全局数据或类数据};
  • Dd={di| di∈f修改了全局数据或类数据};
  • P={X1θ1,X2θ2,…,Xnθn,Xn+1θn+1∈f的参数表和函数返回值,θi为↓(表示输入)、↑(表示输出)、↓↑(表示输入/输出),若Xn+1缺省,则无返回值};
  • Fe={Fi| Fi∈被f 调用的其他服务};
  • G是一个有向图,叫块体,它是按照控制流图的思想修改f的程序流程图而来的,表示f的控制结构,f中的复合条件判断被分解,每个判断框只有单个的条件。

32、掌握逻辑覆盖测试中常用的覆盖标准测试用例设计的方法。

33、掌握等价类划分测试中等价类的划分方法。