本书比较全面地介绍了软件测试方法,首先介绍了测试技术的发展历史和现状;然后,作为测试的基础,介绍了白盒测试、黑盒测试及测试覆盖率等几个重要概念,并充分分析了业界在这几个概念方面的研究成果;之后从全流程测试的角度详细介绍了面向对象的测试技术。
信息技术业已成为国家经济发展的支柱产业之一,作为其重要组成部分的软件产业取得了长足的发展,并且越来越广泛地应用于国民经济和国防建设的各个领域。然而,在实际应用中,由于计算机软件缺陷而造成计算机系统故障并导致严重后果的事例屡见不鲜。因此,如何保证软件产品的质量就成了必须解决的一个问题,而对软件进行有效的测试就是解决软件质量问题的方法之一。
软件测试是软件质量保证的关键步骤。软件测试研究的结果表明:软件中存在的问题发现越早,其软件开发费用就越低;在编码后修改软件缺陷的成本是编码前的10倍,在产品交付后修改软件缺陷的成本是交付前的10倍;软件质量越高,软件发布后的维护费用越低。另据对国际著名IT企业的统计,它们的软件测试费用占整个软件工程所有研发费用的50%.以上。
中国软件企业在软件测试方面与国际水准相比仍存在较大差距。首先,在认识上重开发、轻测试,忽略了如何通过流程改进和软件测试来保证产品或系统的质量,也没有认识到软件项目的如期完成不仅取决于系统设计水平和代码实现能力,而且还取决于设计、代码、文档等各方面的质量。其次,在管理上随意、简单,没有建立规范、有效的软件测试管理体系。另外,缺少自动化工具的支持,大多数企业在软件测试时并没有采用软件测试管理系统。所以对软件企业来说,不仅要提高对软件测试的认识,同时要建立独立的软件测试组织,采用先进的测试技术,充分运用测试工具,不断改善软件开发流程,建立完善的软件质量保障的管理体系。只有这样,才有可能达到软件开发的预期目标,降低软件开发的成本和风险,提高软件开发的效率和生产力,确保及时地发布高质量的软件产品。
我们将多年来所积累的软件测试经验与技术实践整理成书,与大家分享,希望成为软件测试的实际应用参考书。同时,也将作者在大学软件学院的软件测试专业课、在全国性软件测试和质量保证高级培训班及其他培训班等的授课经验与体会,融入本书之中。
本书参考教学时数为40~50学时,全书共分为7章:第1章讨论了软件测试的一些基本概念;第2章介绍了软件开发过程及特征;第3章介绍了软件测试的基础知识;第4章详细描述了面向对象测试技术;第5章讨论了目前较为流行的Web系统测试技术;第6章介绍软件测试的组织与管理;第7章通过一个实例,给出了完整的与软件测试相关的文档。本书最后附有软件测试术语。第1章和第3章由抚顺职业技术学院的王爱平老师编写,第2章和附录A由抚顺职业技术学院的刘凤玲老师编写,第4章和第5章由青岛职业技术学院的徐占鹏老师编写,第6章和第7章由沈阳师范大学职业技术学院的李天辉老师编写。抚顺职业技术学院的张海伟老师参与了本书的编写及校对工作。
本书在编写过程中,参阅了很多国内外同行的著作和文章,汲取了该领域最新的研究成果。在此,对这些成果的作者表示深深的感谢!
由于水平和时间的限制,书中不可避免地会出现一些错误,请广大读者不吝赐教。
第1章 软件测试概述
1.1 软件错误与缺陷
1.1.1 著名的软件错误案例
1.1.2 软件缺陷是什么
1.2 什么是软件测试
1.2.1 软件测试定义
1.2.2 软件测试的特性
1.2.3 测试的目标
1.2.4 软件测试的原则
1.3 软件质量保证
1.3.1 软件质量的定义
1.3.2 软件质量特性
1.3.3 软件质量管理
1.3.4 软件测试管理
1.4 软件测试过程
1.4.1 测试计划
1.4.2 单元测试
1.4.3 集成测试
1.4.4 系统测试
1.4.5 验收测试
1.4.6 测试总结与报告
习题
第2章 软件开发过程
2.1 软件及其特征
2.1.1 软件定义
2.1.2 软件的特征
2.2 软件生命周期
2.3 软件开发模型
2.3.1 瀑布模型
2.3.2 快速原型模型
2.3.3 螺旋模型
2.3.4 V模型
2.3.5 喷泉模型
2.3.6 各种模型的比较
习题
第3章 测试技术基础
3.1 代码检查
3.1.1 代码会审
3.1.2 走查
3.2 黑盒测试
3.2.1 等价类划分
3.2.2 边界值分析
3.2.3 错误推测法
3.2.4 因果图法
3.2.5 判定表分析法
3.3 白盒测试
3.3.1 逻辑覆盖测试
3.3.2 基本路径测试
3.4 测试用例设计
3.4.1 测试用例的概念
3.4.2 设计测试用例
3.4.3 测试用例的评审
习题
第4章 面向对象测试技术
4.1 面向对象测试概述
4.1.1 传统开发方法存在的问题
4.1.2 面向对象技术
4.1.3 什么是面向对象测试
4.1.4 面向对象测试模型
4.2 面向对象分析的测试
4.2.1 对类和对象范围的测试
4.2.2 对结构范围的测试
4.2.3 对主题范围的测试
4.2.4 对定义的属性和实例关联的测试
4.2.5 对定义的服务和消息关联的测试
4.3 面向对象设计的测试
4.3.1 确定测试的问题域
4.3.2 人机交互部件设计的测试
4.3.3 对任务管理部件设计的测试
4.3.4 对数据管理部件设计的测试
4.4 面向对象编程的测试
4.4.1 数据成员是否满足数据封装的要求
4.4.2 类是否实现了要求的功能
4.5 面向对象的单元测试
4.5.1 单元测试的内容
4.5.2 单元测试开始时间
4.5.3 单元测试的人员
4.5.4 单元测试的方法
4.5.5 方法的测试
4.5.6 构建类测试用例
4.5.7 测试程度
4.6 面向对象的集成测试
4.7 面向对象的系统测试
4.8 面向对象的其他测试
4.8.1 基于故障的测试
4.8.2 基于脚本的测试
4.8.3 面向对象类的随机测试
4.8.4 类层次的分割测试
习题
第5章 Web系统测试技术
5.1 Web测试概述
5.1.1 Web的特点
5.1.2 基于Web的测试
5.2 Web可用性测试
5.2.1 链接测试
5.2.2 站点地图/导航测试
5.2.3 图形测试
5.2.4 表单测试
5.2.5 内容测试
5.2.6 整体界面测试
5.2.7 Cookies测试
5.2.8 应用程序特定的功能测试
5.3 性能测试
5.3.1 性能测试常用术语
5.3.2 Web性能测试的目标和种类
5.3.3 性能测试步骤
5.4 负载测试
5.4.1 负载测试概述
5.4.2 负载测试的步骤
5.5 压力测试
5.5.1 压力测试概述
5.5.2 压力测试的步骤
5.6 兼容性测试
5.6.1 兼容性测试概述
5.6.2 常用术语
5.6.3 标准和规范
5.6.4 数据共享兼容性
5.6.5 兼容性测试的过程
5.7 安全测试
5.7.1 Web应用系统的安全性测试区域
5.7.2 常见的web应用安全漏洞
5.7.3 安全测试过程
5.7.4 安全测试应注意的问题
5.8 手机软件测试简介
5.8.1 手机软件的特点
5.8.2 手机软件测试的流程及内容
5.8.3 手机软件测试用例的设计
习题
第6章 软件测试的组织与管理
6.1 软件测试计划
6.1.1 确定测试需求
6.1.2 评估风险和确定测试优先级
6.1.3 测试策略
6.1.4 确定测试资源
6.1.5 制订时间表
6.1.6 制订测试计划
6.1.7 审核测试计划
6.2 软件测试的组织和管理
6.2.1 测试的过程及组织
6.2.2 测试人员的组织
6.2.3 软件测试文件的组织
6.3 软件测试的设计
6.3.1 测试设计的原则
6.3.2 工作量分析
6.3.3 确定并制订测试用例
6.3.4 确立并结构化测试过程
6.3.5 复审并评估测试覆盖
6.4 软件测试的执行
6.4.1 执行测试过程
6.4.2 测试执行策略
6.5 软件测试的总结与报告
习题
第7章 软件测试实例
7.1 项目背景
7.2 测试计划的制订
7.2.1 项目简介
7.2.2 测试参考文档和测试提交文档
7.2.3 系统风险、优先级
7.2.4 测试内容与策略
7.2.5 测试资源
7.2.6 测试时间表
7.2.7 测试问题卡制定
7.2.8 附录:项目任务
7.3 测试执行
7.3.1 设置测试环境
7.3.2 按照测试用例执行测试任务
7.3.3 评估测试的执行
7.3.4 核实测试结果
7.3.5 测试执行的策略
7.4 测试总结与报告
7.4.1 测试总结报告
7.4.2 附录
附录A 软件测试术语
参考文献