第一节 软件测试概述(2)

1. 软件测试的定义

  软件测试在IEEE Std 610.12中定义如下。

  1) 在指定的条件下运行系统或构件,观察或记录结果,并对系统或构件的某些方面进行评估的过程。

  2) 分析某个软件项(Software Item) 以发现现有条件与应有条件之间的差异(即缺陷),并评估软件项的特征的过程。软件项是指源代码、目标代码、作业控制代码、控制数据,或以上这些项目的集合。

2. 软件测试的目标

  1) 提供关于测试对象的信息,包括测试对象的质量,以及测试对象中存在着哪些与测试程度相关的剩余风险。

  2) 在测试对象发布并投入使用之前发现缺陷。

  3) 降低相关方由于软件质量而导致的各种风险。

  关于测试对象的信息可以用于以下的目的。

  1) 通过消除测试对象的缺陷来对测试对象进行改善。

  2) 提供关于质量和风险的相关信息,作为决策的基础并以此来改善管理决策。

  3) 通过凸显那些可以导致缺陷出现的过程,和/或那些本可以发现缺陷但却使得缺陷遗留而未被发现的过程,对软件开发组织中的过程进行改善。

3. 软件测试的基本类型

  1) 依据测试所依据的信息划分

    黑盒测试:指不基于系统或构件的内部实现机制的测试形式。

    白盒测试:指基于系统或构件的内部实现机制的测试形式。

    灰盒测试:兼具备黑盒测试和白盒测试的特性,这种测试形式既关注程序运行时的外部表现,也关注程序内部的高层逻辑结构。

  2) 依据是否需要运行测试对角划分

    动态测试:需要运行测试对象的测试形式。动态测试大致包含了软件测试定义中  1) 部分的内容。

    静态测试:是不需要运行测试对象,依据质量或其他标准对测试对象进行检查的测试形式。静态测试大致包含了软件测试定义中 2) 部分的内容。

  将上述两种分类标准进行组合,可以得到测试实践中常用的4种测试类型:静态黑盒测试、静态白盒测试、动态黑盒测试及动态白盒测试。这4种测试作用于软件的不同部分。

  其中,动态黑盒测试和动态白盒测试是软件测试工作的主体。二者之间的主要区别在于测试的依据不同。

4. 软件测试的基本原则

  1) 不可能对程序进行完全测试  ---> 原因:a. 完全测试所需测试的数量巨大。b. 无法保证测试环境100%满足测试要求。c. 没有足够的资源彻底完成软件测试

  2) 测试无法说明软件没有缺陷  ---> 原因:a. 由于不可能对程序进行完全的测试,因此无法保证找到软件中所有的缺陷。b. 无法确信测试人员完全理解了软件,即测试也可能发生错误。c. 无法确信测试系统(或环境)的正确性。d. 无法确信测规格说明书与用户的实际需求100%吻合。

  ------>软件测试工作可以报告软件缺陷已存在,却不能报告软件缺陷不存在。软件测试工作只能证明在其搜索范围内没有缺陷存在。

  3) 发现问题越多的地方,潜在的问题也更多  ---> 原因:a. 缺陷存在聚集效应。b. 缺陷率水平与软件的设计、复杂性等存在关联

  4) 杀虫剂现象  ---> 特定的测试用例只能覆盖测试空间的特定部分,因此如果同样的测试用例被一再重复执行,会减小其有效性,先前没有发现的缺陷也不会被发现。为了克服杀虫剂现象,软件测试员必须不断编写新测试用例对程序的不同部分进行测试。

  5) 并非所有软件缺陷都要修复

  6) 应尽量由独立部分实施测试

5. 软件测试的基本过程

  要保证软件测试过程的顺利和有效,必须遵循一定的过程模型。软件测试的过程模型是软件测试工作的框架,它规定了软件测试过程所包含的主要步骤,以及这些步骤之间的相互关系。

   

  从图中可以看到,整个测试过程由一系列不同级别的测试组成,这些测试对应开发过程中的不同阶段。V模型图的左侧是开发过程的各个阶段,右侧是测试过程的各个阶段,左边每个开发活动都有右边的测试活动相对应:需求、功能、设计和编码的开发活动随时间而进行,而相应的测试活动,即针对需求、功能、设计和编码的测试,其开展的次序则正好相反。

  1) 单元测试的主要目的是验证软件模块是否按详细设计的规格说明正确运行。

  2) 集成测试的主要目的是验证多个模块间是否按概要设计说明的方式协同工作。

  3) 系统测试的主要目的是验证整个系统是否符合产品规格说明书中规定的各项功能、性能及其他方面的指标。

  4) 验收测试从用户的角度验证系统是否满足合同中定义的需求,以及确认产品是否能满足业务上的需要。

原文地址:https://www.cnblogs.com/fwpsl/p/software_testing_01_02.html