软件测试技术-第四章 软件测试过程
前言
软件测试过程分为单元测试、集成测试、系统测试、验收测试。
本章就不同的软件测试阶段,其主要的测试任务、采用的测试技术和方法进行详细介绍。
4.1 软件测试过程概述
4.2 单元测试
4.3 集成测试
4.3.1 集成测试的定义
也叫组装测试、联合测试,它是在单元测试的基础上,将软件单元按照概要设计说明书的要求组装成模块、子系统,验证各部分功能是否达到要求。
一般由测试人员和从开发团队中选出的开发人员完成。多采用黑盒测试技术,适当辅以白盒测试技术。
4.3.2 集成测试的主要任务
主要任务:
- 数据经过接口是否丢失
- 各个子功能组合起来,是否达到预期的要求
- 一个模块是否会对另个模块的功能产生不利的影响
- 全局数据结构是否有问题,会不会被异常修改
- 单个模块的误差积累起来,是否会被放大
4.3.3 集成测试遵循的原则
集成测试是灰色地带,要做好集成测试不是一件容易的事情,因为集成测试不好把握。集成测试应针对总体设计尽早开始筹划,为了做好集成测试,需要遵循以下原则:
- 所有公共接口都要被测试到
- 关机模块必须进行充分的测试
- 集成测试应当按一定的层次进行
- 集成测试的策略选择应当综合考虑质量、成本和进度之间的关系
- 集成测试应当尽早开始,并已总体设计为基础
- 在模块与接口的划分上,测试人员应当和开发人员进行充分的沟通
- 当接口发送修改是,涉及的相关接口必须进行再测试
- 测试执行结果应当如实的记录
4.3.4 集成测试实施方案
集成测试的实施方案
-
非增量式集成测试
- 一步到位集成
-
增量式集成测试
- 自底向上集成:从最底层的模块开始,按结构层次自下而上逐步集成。
- 自顶向下集成:首先集成主控模块,然后按照软件控制层次结构向下集成。
-
三明治集成测试
- 采用自顶向下和自底向上并行集成。
-
核心系统集成测试
- 先集成核心部件,再按照外围软件部件的重要程度逐个集成到核心系统中。
-
高频集成测试
- 同步于软件开发过程,每隔一段时间对现有的代码进行一次集成测试。
集成测试的实施方案的比较
非增量式 | 一下发现很多错误,错误的纠正和定位很困难 |
---|---|
增量式 |
错误易于定位和纠正,接口测试比较彻底 |
自顶向下 |
较早看到系统框架,需要提供被调用的子模块,测试数据的生成有一定难度 |
自底向上 |
生成测试数据比较容易直到加入最后一个模块,才能看清整个框架 |
4.3.5 集成测试的测试及时与集成数据
集成测试具体内容
- 功能性测试
- 可靠性测试
- 易用性测试
- 性能测试
- 维护性测试
4.3.6 集成测试人员
由于集成测试不是在真实环境下进行,而是在开发环境或者一个独立的测试环境下进行的。所以集成测试一般由测试人员和开发组中选出的开发人员完成。一般情况下。集成测试的前期测试由开发人员或白盒测试人员来做,通过前期测试后,就由测试部门来完成。
4.4 系统测试
4.4.1 系统测试的定义
将通过集成测试的软件系统,与计算机硬件、外设、某些支撑软件的系统等组合在一起进行测试。
一般由独立的测试小组完成。
**目的:**充分运行系统,验证系统各部件是否都能正常工作并完成赋予的任务。
测试技术:黑盒测试
4.4.2 系统测试前的准备工作
系统测试前的准备工作:
- 收集软件规格说明书,作为系统测试的依据
- 收集各种软件说明书,作为系统测试的参考
- 仔细阅读软件测试计划,作为系统测试的根据
- 编写测试用例
4.4.3 系统测试的测试技术和测试数据
系统测试的主要测试技术
- 验证测试:验证系统是否正确无误的实现了需求中的全部内容
- 功能测试:系统的输入、处理、输出等各个方面是否满足需求
- 性能测试:测试系统的数据精确度、时间特性、适应性等是否满足设计要求
- 可靠性、稳定性测试
- 安全性测试
- 兼容性测试:测试系统与操作系统、硬件设备、相关支撑软件的兼容性等。
- 恢复测试:采用人工方法使系统出错,验证系统从故障中恢复的能力。
- 面向用户支持方面的测试:测试界面规范性、友好性、可操作性等
- 强度测试:强度测试检验系统的能力最高能达到什么实际限度
- 其他限制条件的测试
测试数据
因为系统测试的一个主要目标是树立软件系统将通过验收测试的信心,因此系统测试所用的数据必须尽可能地像真实数据一样精确和代表性。
4.4.4 系统测试人员
测试人员
- 测试人员
- 部分开发人员
- 其他项目的开发人员
- 质量保证人员
4.4.5 工具介绍
功能测试工具:
-
**Selenium:**专门为Web应用而开发的自动化测试工具集,适合进行功能测试、验收测试。
Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
主要作用:测试与浏览器的兼容性;测试系统功能是否符合用户需求。
性能测试工具:
-
**HP LoadRunner:**是业界领先的性能测试工具,适用于大规模的企业和项目。
通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。
LoadRunner可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。
4.5 验收测试
4.5.1 验收测试的定义
验收测试是软件开发结束后,在部署软件之前的最后一个测试。从用户的角度,确认软件符合需求规格的验证活动。是一项严格的正式的测试活动。
通常以用户或用户代表为主体进行测试。
4.5.2 验收测试的主要内容
1. 配置复审
验收测试的一个重要环节是配置复审。复审的目的在于保证软件配置齐全、分类有序、并且包括软件维护所必需的细节
2. 合法性检查
检查开发者在开发软件是,使用的开发工具是否合法。对在编程中使用的一些非本单位自己开发的,也不是由开发工具提供的控件、组件、函数库等,检查其是否有合法的发布许可。
3.软件文档检查
(1)必须提供检查的文档包括以下内容
- 项目实施计划
- 详细技术方案
- 软件需求规格说明书
- 概要设计说明书
- 详细设计说明书
- 软件测试计划
- 软件测试报告
- 用户手册
- 源程序
- 项目实施计划
- 项目开发总结
(2)其他可能需要坚持的文档包括以下内容
- 软件配置计划
- 项目进展报表
- 阶段评审表等
(3)文档质量的度量准则
- 完备性
- 正确性
- 简明性
- 自说明性
- 规范性
4.软件代码测试
(1)源代码一般性检查
- 命名规定检查
- 注释检查
- 接口检查
- 数据类型
- 限制性检查
- 编译检查
- 装/卸载检查
- 运行模块检查
5.软件功能和性能测试
- 界面测试
- 可用性测试
- 功能测试
- 稳定性测试
- 性能测试
- 强壮性测试
- 逻辑性测试
- 破坏性测试
- 安全性测试
4.5.3 验收测试的测试技术和测试数据
(略)
4.5.4 α、β测试
4.5.5 验收测试人员
(略)
4.6 回归测试
**回归测试(Regression Test)**是指修改了旧代码后,重新进行的测试,以确认修改没有引入新的错误或导致其他代码产生错误。
单元测试是回归测试的基础。回归测试最好要自动化。回归测试一般多在系统测试和验收测试环境下进行。
4.6.1 回归测试的测试技术和测试数据
-
回归测试采用的技术
一般用黑盒测试技术来测试软件的高级需求;可以采用非功能测试来检查系统的扩展是否影响了性能;测试与其他系统间互操作性和兼容性问题。
错误推测法在回归测试中非常重要。
-
回归测试的数据
- 首先使用以前软件测试中归档的测试数据集来进行回归测试
- 测试结果满意的话,再使用真实的数据进行测试
4.6.2 回归测试的范围
回归测试仅执行先前测试用例的一个子集,子集选的是否合理,直接影响测试的效果和效率。
- 局限在修改范围内的测试
- 在受影响功能范围内回归
- 根据一定的覆盖率指标选择回归测试
4.6.3 回归测试人员
由于回归测试一般与系统测试和验收测试相关,所以要由测试组织负责,确保选择使用合适的技术并在合理的质量控制中执行充分的回归测试。
4.7 系统排错
系统排错的任务是根据测试时发现的错误,找出原因和具体的位置,并进行改正。
主要由程序开发人员来进行。
排错方法
-
原始类排错法:最常用也是最低效的方法
在程序中安排若干输出语句,凭借大量的现场信息找到线索。 - **回溯法:**从错误征兆处开始,人工沿控制流往回追踪,直到发现错误的根源。
- **归纳演绎法:**分析假想一个原因,用数据证明或反驳它;或列出所有可能原因,一一排除。
排错采用的技术
- 断点设置
- 可疑变量查看
- SQL语句执行检查
- 注意群集现象细调地题