软件测试

臧艳辉

目录

  • 1 走近软件测试
    • 1.1 走近软件测试
    • 1.2 一个软件测试工程师必备的专业技能和素质
    • 1.3 章节测验
  • 2 软件测试技术
    • 2.1 正确认识软件测试
    • 2.2 软件测试遵循的基本原则
    • 2.3 软件测试的分类
    • 2.4 软件测试的过程模型
    • 2.5 章节测验
  • 3 测试中缺陷的识别与描述
    • 3.1 初识软件缺陷
    • 3.2 全面解析软件缺陷
    • 3.3 有效的记录缺陷
    • 3.4 缺陷报告实例
    • 3.5 缺陷报告模板
  • 4 项目测试计划的制定
    • 4.1 一个项目完整的测试流程
    • 4.2 初识测试计划
    • 4.3 测试计划的基本机构和内容
    • 4.4 测试计划模板和案例
  • 5 初识软件测试用例
    • 5.1 什么是测试用例
    • 5.2 项目测试中设计测试用例的作用
    • 5.3 如何设计一个项目的测试用例
    • 5.4 在测试过程中测试用例怎样进行更新和维护
  • 6 使用等价类划分方法设计测试用例
    • 6.1 等价类划分法的基本思想
    • 6.2 进行等价类划分法的原则
    • 6.3 使用等价类划分法设计测试用例实例
  • 7 使用边界值分析法设计测试用例
    • 7.1 边界值分析法的基本思想
    • 7.2 如何确定边界
    • 7.3 测试知识储备
    • 7.4 使用边界值分析法设计测试用例实例
    • 7.5 项目中如何进行健壮性边界值测试
    • 7.6 等价类+边界值
    • 7.7 章节测试
  • 8 使用大纲法设计测试用例
    • 8.1 什么是大纲法
    • 8.2 项目中如何使用大纲法设计测试用例
  • 9 使用场景法设计测试用例
    • 9.1 什么是场景法
    • 9.2 项目中如何使用场景法设计测试用例
  • 10 因果图和决策表结合设计测试用例
    • 10.1 因果图法的介绍
    • 10.2 决策表的介绍
    • 10.3 项目中选用因果图法和决策表设计测试用例需考虑的问题
    • 10.4 使用因果图法和决策表设计测试用例
  • 11 功能测试
    • 11.1 什么是功能测试
    • 11.2 功能测试的主要内容及测试策略
    • 11.3 功能测试的方法汇总
    • 11.4 功能测试的经验及注意事项
  • 12 界面测试
    • 12.1 界面检查的通用原则
    • 12.2 具体的界面检查的举例
    • 12.3 设计界面测试用例
    • 12.4 界面测试标准总结
  • 13 软件的安装卸载测试
    • 13.1 软件的安装卸载测试
    • 13.2 软件的安装测试
    • 13.3 软件的运行测试
    • 13.4 软件的卸载的测试
  • 14 项目中如何使用进行有效的缺陷管理
    • 14.1 进行缺陷管理的目标是什么
    • 14.2 项目中缺陷管理的流程是怎样的
    • 14.3 缺陷的跟踪方法有哪些
  • 15 测试报告该如何撰写
    • 15.1 软件质量评估
    • 15.2 如何撰写测试报告
    • 15.3 如何写项目总结
    • 15.4 如何写个人测试总结
  • 16 集成测试
    • 16.1 初识集成测试
    • 16.2 集成测试方法
  • 17 白盒测试
    • 17.1 初识白盒测试
    • 17.2 白盒测试技术——逻辑驱动测试
    • 17.3 白盒测试技术——循环覆盖测试
    • 17.4 白盒测试技术——基本路径测
  • 18 软件测试技术及岗位需求介绍
    • 18.1 软件测试岗位需求
    • 18.2 软件测试技术介绍
    • 18.3 软件测试比赛内容
    • 18.4 软件测试岗位应聘简历撰写
初识集成测试
  • 1 电子教材
  • 2 PPT

第一章 集成测试

简介

本章介绍集成测试的相关概念及测试方法,其中包括集成测试的主要任务和相关原则、集成测试与单元测试、系统测试的区别等。通过本章的学习将体会具体集成测试的过程,学会集成测试用例的设计。

16.1  初识集成测试

16.1.1  什么是集成测试

集成(Integration)是指把多个单元组合起来形成更大的单元;集成测试(Integration testing)是在假定各个软件单元已经通过了单元测试的前提下,检查各个软件单元之间的相互接口是否正确。

在单元测试的基础上,将所有已通过单元测试的模块按照概要设计的要求组装子系统或系统,进行集成测试,目的是确保各单元模块组合在一起后能够按既定意图协作运行,并确保增量的行为正确。

16.1.2  集成测试的主要任务

集成测试是组装软件的系统测试技术之一,按设计要求把通过单元测试的各个模块组装在一起之后,进行集成测试的主要任务是要求软件系统符合实际软件结构,发现与接口有关的各种错误。集成测试的主要任务是解决以下5个方面的测试问题:

1) 将各模块连接起来,检查模块相互调用时,数据经过接口是否丢失。

2) 将各个子功能组合起来,检查能否达到预期要求的各项功能。

3) 一个模块的功能是否会对另一个模块的功能产生不利的影响。

4) 全局数据结构是否有问题,会不会被异常修改。

5) 单个模块的误差积象起来,是否被放大,从而达到不可接受的程度。

16.1.3  集成测试的层次与原则

1. 集成测试的层次

对于传统软件来说,按集成粒度不同,可以把集成测试分为3个层次,即:

1)模块间集成测试

2)子系统内集成测试

3)子系统间集成测试

对于面向对象的应用系统来说,按集成粒度不同,可以把集成测试分为2个层次:

1)类内集成测试

2)类间集成测试

2. 集成测试的原则

集成测试很不好把握,应针对总体设计尽早开始筹划。为了做好集成测试,需要遵循以下原则:

1)所有公共接口都要被测试到;

2)关键模块必须进行充分的测试;

3)集成测试应当按一定的层次进行;

4)集成测试的策略选择应当综合考虑质量、成本和进度之间的关系;

5)集成测试应当尽早开始,并以总体设计为基础;

6)在模块与接口的划分上,测试人员应当和开发人员进行充分的沟通;

7)当测试计划中的结束标准满足时,集成测试才能结束;

8)当接口发生修改时,涉及的相关接口必须进行再测试;

9)集成测试应根据集成测试计划和方案进行,不能随意测试;

10)项目管理者应保证测试用例经过审核;

11)测试执行结果应当如实记录。

16.1.4  集成测试关注的主要问题

集成测试主要关注以下问题:

1)模块间的数据传递是否正确?

2)一个模块的功能是否会对另一个模块的功能产生错误的影响?

3)全局数据结构是否有问题?会不会被异常修改?

4)模块组合起来的功能能否满足要求?

5)集成后,各个模块的累积误差是否会扩大?是否达到不可接受的程度?

16.1.5  集成测试与单元测试、系统测试的区别

集成测试与单元测试关注的范用有很大不同,单元测试主要关注模块的内部,虽然它也关注模块接口,但它是从内部来查看接口,从个数、属性、量纲和顺序等方面查看输入的实参与形参的匹配情况,而集成测试查看接口时主要关注穿越接口的数据、信息是否正确,是否会丢失。

集成测试与系统测试的区别则更明显一些,集成测试仅针对软件系统展开测试,系统测试中所涉及的系统则不仅包括被测试的软件本身,还包括硬件及相关外围设备,即整个软件系统以及与软件系统交互的所有硬件与软件平台.系统测试更大程度上是站在用户的角度来评价系统,包括验证系统的主要功能、核实系统的性能水平、判断是否达到安全性要求等。

单元测试的主要依据是详细设计说明书,集成测试的主要依据是概要设计说明书,系统测试的主要依据则是需求规格说明书及行业标准。

16.1.6  集成测试的环境

在搭建集成测试环境时,可以从以下几个方面进行考虑:

1)硬件环境;

2)操作系统环境;

3)数据库环境;

4)网络环境;

5)测试工具运行环境;

6)其他环境。

16-1 给出了一个典型的集成测试环境示意图。

 

16-1 集成测试环境示意图

16.1.7  集成测试的完整测试过程

一个测试从开发到执行遵循一个过程,不同的组织对这个过程的定义会有所不同。根据集成测试不同阶段的任务,可以把集成测试划分为5个阶段:计划阶段、设计阶段、实施阶段、执行阶段、评估阶段,如图16-2所示。

 

16-2 集成测试过程

1. 计划阶段

集成测试的计划阶段包括如下内容:

Ø 确定被测试对象和测试范围。

Ø 评估集成测试被测试对象的数量及难度,即工作量。

Ø 确定角色分工和划分工作任务。

Ø 标识出测试各个阶段的时间、任务、约束条件。

Ø 考虑一定的风险分析及应急计划。

Ø 考虑和准备集成测试需要的测试工具、测试仪器、环境等资源。

Ø 考虑外部技术支援的力度和深度,以及相关培训安排,定义测试完成标准。

2. 设计阶段

集成测试的设计阶段包括如下内容:

Ø 被测对象结构分析。

Ø 集成测试模块分析。

Ø 集成测试接口分析。

Ø 集成测试策略分析。

Ø 集成测试工具分析。

Ø 集成测试环境分析。

Ø 集成测试工作量估计和安排。

3. 实施阶段

集成测试的实施阶段包括如下内容:

Ø 集成测试用例设计。

Ø 集成测试规程设计。

Ø 集成测试代码设计。

Ø 集成测试脚本开发。

Ø 集成测试工具开发或选择。

4. 执行阶段

测试人员在单元测试完成以后就可以执行集成测试。当然,需按照相应的测试规程,借助集成测试工具,并把需求规格说明书、概要设计、集成测试计划、集成测试设计、集成测试用例、集成测试规程、集成测试代码、集成测试脚本作为测试执行的依据来执行集成测试用例。测试执行的前提条件就是单元测试已经通过评审。当测试执行结束后,测试人员要记录下每个测试用例运行后的结果,填写集成测试报告,最后提交给相关人员评审。

5. 评估阶段

当集成测试执行结束后,要召集相关人员,如测试设计人员、编码人员、系统设计人员等对测试结果进行评估,确定是否通过集成测试。

16.1.8  集成测试用例设计

1. 为系统运行设计用例

为系统运行设计用例可使用的主要测试分析技术有等价类划分、边界值分析和基于决策表的测试。

2. 为正向测试设计用例

作为正向集成测试的一个重点就是验证这些集成后的模块,是否按照设计实现了预期的功能。基于这样的测试目标,可以直接根据概要设计文档导出相关的用例。可使用如下几种主要测试分析技术:输入域测试、输出域测试、等价类划分、状态转换测试、规范导出法。

3. 为逆向测试设计用例

在集成测试中的逆向测试包括分析被测接口是否实现了需求规格没有描述的功能,检查规格说明中可能出现的接口遗漏或者判断接口定义是否有错误,以及可能出现的接口异常错误,包括接口数据本身的错误、接口数据顺序错误等。

可使用的主要测试分析技术有错误猜测法、基于风险的测试、基于故障的测试、边界值分析、特殊值测试和状态转换测试。

4. 为满足特殊需求设计用例

在大部分软件产品的开发过程中,模块设计文档就已经明确地指出了接口要达到的安全性指标、性能指标等,在对模块进行单元测试和集成测试阶段就应该开展对满足特殊需求的测试,为整个系统是否能够满足这些特殊需求把关。

5. 为高覆盖设计用例

与单元测试所关注的覆盖重点不同,在集成测试阶段我们关注的主要覆盖是功能覆盖和接口覆盖,通过对集成后的模块进行分析,来判断哪些功能以及哪些接口没有被覆盖到来设计测试用例。可使用的主要测试分析技术有功能覆盖分析和接口覆盖分析。

6. 测试用例补充

在软件开发的过程中,难免会因为需求变更等原因,有功能增加、特性修改等情况发生,因此不可能在测试工作的一开始就100%完成所有的集成测试用例的设计,这就需要在集成测试阶段能够及时跟踪项目变化,按照需求增加和补充集成测试用例,保证进行充分的集成测试。

7. 注意事项

在集成测试的过程中,要注意考虑软件开发成本、进度和质量这三个方面的平衡,不能顾此失彼,也就是说要重点突出(在有限的时间内进行穷尽的测试是不可能的)。

16.1.9  集成测试技术和测试数据

集成测试主要测试软件的结构问题,因为测试建立在模块的接口上,所以多为黑盒测试,适当辅以白盒测试。软件集成测试具体内容包括功能性测试、可靠性测试、易用性测试、性能测试和维护性测试。

集成测试一般覆盖的区域包括:

1) 从其他关联模块调用一个模块。

2) 在关联模块间正确传输数据。

3) 关联模块之间的相互影响,即检查引入一个模块会不会对其他模块的功能和性能产生不利的影响。

4) 模块间接口的可靠性。

执行集成测试应使用下面的方法:

1) 确认组成一个完整系统的模块之间的关系。

2) 评审模块之间的交互和通信需求,确认模块间的接口。

3) 使用上述信息产生一套测试用例。

4) 采用增量式测试,依次将模块加人到(扩充)系统,并测试新合并后的系统。这个过程以一个逻辑/功能顺序重复进行,直至所有模块被集成进来形成完整的系统为止。

此外,在测试过程中尤其要注意关键模块。所谓关键模块一般都具有下述一个或多个特征:

1) 对应多条需求。

2) 具有高层控制功能。

3) 复杂,易出错。

4) 有特殊的性能要求。

因为集成测试的主要目的是验证组成软件系统的各模块的接口和交互作用,因此集成测试对数据的要求无论从难度和内容来说一般不是很高。集成测试一般也不使用真实数据,测试人员可以使用手工制作一部分代表性的测试数据。在创建测试数据时,应保证数据充分测试软件系统的边界条件。

在单元测试时,根据需要生成了一些测试数据,在集成测试时可适当地重用这些数据,这样可节省时间和人力。