
软件测试是一种在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。本书针对高校计算机相关专业软件测试课程的需要而编写,结合实际案例介绍了软件测试的基础知识和实用技术。
本书在内容上较为全面、系统地涵盖了当前软件测试领域的理论和实践知识,反映了当前最新的软件测试理论、标准、技术和工具。全书共17章,包括软件测试概述、软件测试生命周期、测试过程相关模型、静态测试与动态测试、白盒测试、黑盒测试、单元测试、集成测试、系统测试、验收测试、面向对象的软件测试、软件测试自动化、单元测试工具JUnit、负载测试工具LoadRunner、聚合文件管理工具测试、网上书店系统测试和手机视频播放软件测试。每章内容均有实际案例做补充,以加深读者对软件测试技术和过程的理解,做到理论与实践相结合。
本书可作为高等院校相关专业软件测试的教材或教学参考书,也可供从事计算机应用开发的各类技术人员参考,或用做全国计算机软件测评师考试、全国计算机技术与软件专业技术资格(水平)考试的培训资料。
近年来,国家对软件行业给予了很多鼓励政策,软件及相关行业在中国得到较大的发展,一大批软件企业在世界上占据了一定的地位。但是,我们也发现很多软件公司在重视代码开发的同时,却没有注重代码的质量,忽略了测试在整个软件项目工程中的重要意义。
软件中的错误是不可避免的,人们只能根据需要尽可能地减少软件中的错误。软件测试是发现软件缺陷,提高软件可信度的重要手段。目前,软件测试已受到许多软件开发公司的重视,越来越多的软件开发人员投入到软件测试的行业中。如何保证软件测试的质量,如何适应软件测试行业的技术需求,软件开发人员如何快速加入到软件测试行业,这些都是我们关心的问题。
本书结合实际案例,讲述了软件测试的相关概念、方法和技能。全书分为5个部分: 基础篇、方法篇、过程篇、工具篇和实战篇。基础篇介绍了软件测试的基础知识内容,为后面的学习奠定理论基础; 方法篇结合实例对软件测试中所涉及的静态测试与动态测试、黑盒测试与白盒测试等方法进行介绍; 过程篇对软件测试过程中的主要测试阶段进行介绍,包括单元测试、集成测试、系统测试和验收测试的方法与实施,以及面向对象的软件测试过程; 工具篇讲述了自动化测试的概念、方法以及常用的自动化测试工具,并选取其中两款软件测试工具详述了它们的使用方法; 实战篇详细介绍了3个实际案例的测试过程,记录了测试结果,有助于读者结合实际项目掌握软件测试技能。每章的开始部分有本章要点,列出了该章节中的主要内容,方便读者自学和教学选择; 每章的结尾部分附有习题,供读者检验学习成果。
本书重视实践能力和操作能力的培养,在基础方法的介绍中结合具体实例进行,在实战篇的案例讲述过程中穿插相关的基础知识和基本理论介绍,做到理论与实践相结合,方法与应用相结合。
与软件测试的同类教材相比,本书具有以下特点:
(1) 循序渐进。本书将内容分为基础篇、方法篇、过程篇、工具篇和实战篇5个部分,层次分明,通过循序渐进地讲述知识,便于读者学习与理解。
(2) 实用性强。本书介绍理论的时候均结合相关案例进行讲解,对不同的测试方法和技术选用不同的案例,做到有所针对,这也使得基础知识更加具体形象,同时也更容易被理解和应用。
(3) 实时性强。本书所选案例均是近年来的真实案例,可以代表当代技术特征和需求环境,尤其是在移动互联网浪潮下重点介绍了“手机视频播放软件测试”。本书介绍的工具均是当前常见的软件测试工具; 测试方法也是时下流行的测试方法,其中,面向对象测试的内容更是符合软件测试技术的发展方向。
本书作者一直在北京航空航天大学软件学院担任教学工作,进行了大量教学探索和研究,在此感谢北航软件学院在成书过程中提供的各种宝贵资料和建议。
由于能力和水平有限,书中难免存在疏漏和错误之处,恳请各位同仁和广大读者朋友给予批评指正,也希望各位能将教学和学习过程中的经验和心得与我们交流分享。
编者
2014年2月
理论部分
教学内容学习要点及教学要求课时安排
第1章
软件测试概述 软件定义和软件的分类
软件质量要素内容
软件缺陷的概念及出现原因
软件测试的定义和目的
软件测试原则
软件测试分类2
第2章
软件测试生命周期 软件开发的基本过程及其内容
软件开发常用的过程模型
软件测试基本流程
软件测试与软件开发的关系2
第3章
测试过程相关模型 软件测试过程模型的概念
常用的软件测试过程模型
软件测试过程改进的模型种类2
第4章
静态测试与动态测试 静态测试的定义与内容
静态测试的分类及方法
代码检查方法及应用
静态结构分析方法及应用
动态测试的定义与内容
动态测试的分类及方法
主动测试与被动测试4
第5章
白盒测试 白盒测试的概念
白盒测试的方法
程序插桩技术
逻辑覆盖法
基本路径法4
第6章
黑盒测试 黑盒测试的基本概念
等价类划分法及其应用
边界值分析法及其应用
因果图法及其应用
决策表法及其应用
正式试验法及其应用
场景法及其应用
不同黑盒测试方法优、缺点和应用场合
白盒测试和黑盒测试的对比4
续表
教学内容学习要点及教学要求课时安排
第7章
单元测试 单元测试的概念和原则
单元测试关注的几个方面的内容
单元测试环境建立和使用的主要方法
单元测试的过程
单元测试的实施4
第8章
集成测试 集成测试的概念和原则
集成测试的内容和过程
集成测试的策略和方法
基于功能分解的集成测试
基于调用图的功能测试
基于路径的集成测试
集成测试计划的制定4
第9章
系统测试 系统测试前的准备
功能测试用例的设计方法
安装测试的检测项
性能测试、压力测试和容量测试之间的联系和区别
安全性测试中需要考虑的问题
健壮性测试、容错性测试、恢复测试之间的关系
可用性测试过程
图形用户界面测试用例设计方法
文档测试的检测项4
第10章
验收测试 验收测试的概念和目的
验收测试的内容
进行验收测试的过程
测试深度与广度的关系
验收测试中的阶段2
第11章
面向对象的软件测试 面向对象的基本概念
面向对象的测试模型
面向对象的单元测试
面向对象的集成和系统测试4
教学总学时建议36
实践部分
教学内容学习要点及教学要求课时安排
第12章
软件测试自动化 自动测试的概念
自动测试与手动测试的比较
自动测试的生命周期
如何开展自动测试
自动测试工具的分类
自动测试方案的选择2
续表
教学内容学习要点及教学要求课时安排
第13章
单元测试工具JUnit JUnit的组成
JUnit的基本功能
JUnit的应用2
第14章
负载测试工具LoadRunner LoadRunner的基本功能
LoadRunner的主要特性、组件和相关术语
能够利用LoadRunner进行负载测试2
第15章
聚合文件管理工具测试 通过案例熟悉软件测试计划
通过案例熟悉传统软件测试策略和阶段
通过案例熟悉测试用例编写
通过案例熟悉测试总结分析报告编写2
第16章
网上书店系统测试 网站测试的内容
网站测试的过程
网站测试计划的安排
网站测试用例的设计
网站测试结果的记录2
第17章
手机视频播放软件测试 手机软件测试与PC软件测试的异同
手机软件测试的基本过程
现行的几大手机平台及其特点
手机软件测试如何执行2
教学总学时建议12
说明:
(1) 本课程建议主要针对计算机类本科生教学,累计为48学时,其中36个理论学时,12个实践学时。不同专业根据不同的教学要求和计划教学时数可酌情对教材内容进行适当取舍。
(2) 非计算机类本科专业使用本教材可适当降低教学要求。
(3) 本教材理论授课学时数36学时,包含课堂讨论、案例讲授、练习等必要的教学环节。
(4) 本教材实践授课学时数12学时,包含上机讲解、练习等必要的教学环节。
第一部分基础篇
第1章软件测试概述
1.1软件测试背景
1.1.1著名软件错误案例
1.1.2软件的定义及分类方法
1.1.3软件工程
1.1.4软件质量
1.2软件测试基本概念
1.2.1软件缺陷的定义
1.2.2软件缺陷出现的原因
1.2.3软件测试的定义
1.3软件测试的目的和原则
1.3.1软件测试的目的
1.3.2软件测试的原则
1.4软件测试的分类
1.4.1按测试阶段划分
1.4.2按是否需要执行被测试软件划分
1.4.3按是否需要查看代码划分
1.4.4按测试执行时是否需要人工干预划分
1.4.5按测试实施组织划分
1.4.6其他测试类型
1.5测试用例
1.5.1测试用例编写
1.5.2测试用例设计
1.6软件测试行业的历史、现状和前景
1.6.1软件测试的历史回顾
1.6.2软件测试的现状
1.6.3软件测试的前景
1.7小结
本章习题
第2章软件测试生命周期
2.1软件开发的基本过程
2.1.1需求分析
2.1.2设计
2.1.3编码
2.1.4测试
2.1.5项目管理
2.2软件开发过程模型
2.2.1编码修正模型
2.2.2瀑布模型
2.2.3增量模型
2.2.4演化模型
2.2.5螺旋模型
2.2.6RUP模型
2.2.7MSF过程模型
2.2.8敏捷开发过程模型
2.3软件项目中的测试流程
2.3.1软件生命周期中的测试
2.3.2测试的基本流程
2.3.3软件测试的组织
2.4小结
本章习题
第3章测试过程相关模型
3.1测试过程模型
3.1.1V模型
3.1.2W模型
3.1.3H模型
3.1.4X模型
3.1.5前置测试模型
3.2测试过程改进模型
3.2.1TMM
3.2.2TPI
3.2.3其他模型
3.3小结
本章习题
第二部分方法篇
第4章静态测试与动态测试
4.1静态测试技术
4.1.1概述
4.1.2代码检查
4.1.3静态结构分析
4.2动态测试技术
4.2.1概述
4.2.2主动测试与被动测试
4.3小结
本章习题
第5章白盒测试
5.1白盒测试概述
5.2程序插桩技术
5.3逻辑覆盖法
5.3.1语句覆盖
5.3.2判定覆盖
5.3.3条件覆盖
5.3.4条件判定覆盖
5.3.5条件组合覆盖
5.3.6路径覆盖
5.4基本路径法
5.5白盒测试方法选择
5.6小结
本章习题
第6章黑盒测试
6.1黑盒测试方法
6.1.1等价类划分法
6.1.2边界值分析法
6.1.3因果图法
6.1.4决策表法
6.1.5正交试验法
6.1.6场景法
6.2黑盒测试方法选择
6.3黑盒测试和白盒测试比较
6.4小结
本章习题
第三部分过程篇
第7章单元测试
7.1单元测试概述
7.1.1单元测试原则
7.1.2单元测试内容
7.1.3单元测试方法
7.2单元测试过程
7.2.1进入单元测试的条件
7.2.2测试策划
7.2.3测试设计
7.2.4测试执行
7.2.5测试总结
7.3单元测试中的覆盖率
7.3.1函数覆盖
7.3.2Z路径覆盖
7.3.3ESTCA覆盖
7.3.4LCSAJ覆盖
7.3.5MC/DC覆盖
7.4单元测试案例
7.4.1测试策划
7.4.2测试设计
7.4.3测试执行
7.4.4测试总结
7.5小结
本章习题
第8章集成测试
8.1集成测试概述
8.1.1集成测试原则
8.1.2集成测试分析
8.1.3集成测试内容
8.1.4集成测试过程
8.2集成测试策略
8.2.1非增量式集成测试
8.2.2增量式集成测试
8.3常用的集成测试方法
8.3.1基于功能分解的集成测试
8.3.2基于调用图的功能测试
8.3.3基于路径的集成测试
8.4集成测试案例
8.4.1测试前的准备
8.4.2测试策划
8.4.3测试设计与执行
8.4.4集成测试验收标准
8.4.5测试总结
8.5小结
本章习题
第9章系统测试
9.1系统测试概述
9.2系统测试类型
9.2.1功能测试
9.2.2性能测试
9.2.3安装测试
9.2.4可用性测试
9.2.5压力测试
9.2.6容量测试
9.2.7安全性测试
9.2.8健壮性测试
9.2.9图形用户界面测试
9.2.10文档测试
9.3系统测试案例
9.3.1测试准备
9.3.2测试概要
9.3.3测试环境
9.3.4测试结果
9.3.5测试结论
9.3.6分析与量度
9.4小结
本章习题
第10章验收测试
10.1验收测试概述
10.1.1验收测试的目的
10.1.2进入验收测试的条件
10.2验收测试的内容及过程
10.2.1验收测试的内容
10.2.2验收测试的过程
10.3测试的深度与广度
10.4验收测试阶段
10.4.1α测试阶段
10.4.2β测试阶段
10.4.3预最终测试阶段
10.4.4最终完整性测试阶段
10.5验收测试案例
10.5.1项目概述
10.5.2系统简介
10.5.3测试内容
10.5.4测试结论
10.6小结
本章习题
第11章面向对象的软件测试
11.1面向对象概述
11.1.1面向对象的基本概念
11.1.2面向对象的开发方法
11.1.3面向对象的分析与设计
11.1.4面向对象模型
11.2面向对象软件的测试策略
11.2.1面向对象的单元测试
11.2.2面向对象的集成测试
11.2.3面向对象的系统测试
11.2.4面向对象系统的回归测试
11.2.5面向对象测试的相关模型
11.3面向对象软件的测试用例设计
11.3.1面向对象测试用例设计的基本概念
11.3.2面向对象编程对测试的影响
11.3.3基于故障的测试
11.3.4基于场景的测试
11.3.5表层结构和深层结构的测试
11.4面向对象的软件测试案例
11.4.1HelloWorld类的测试
11.4.2Date.increment方法的测试
11.5小结
本章习题
第四部分工具篇
第12章软件测试自动化
12.1软件自动测试概述
12.2手工测试与自动测试
12.2.1自动测试与手工测试的比较
12.2.2自动测试的优、缺点
12.3自动测试的原理和方法
12.3.1代码分析
12.3.2捕获回放
12.3.3录制回放
12.3.4脚本技术
12.3.5自动化比较
12.4软件自动测试的开展
12.4.1软件自动测试的引入原则
12.4.2软件自动测试的生命周期
12.4.3软件自动测试的成本
12.4.4软件自动测试的导入时机
12.4.5软件自动测试的人员要求
12.4.6软件自动测试在实施中存在的问题
12.5软件自动测试的方案选择
12.5.1确定自动测试的对象和范围
12.5.2选择自动测试的方案和脚本编写方法
12.6软件自动测试的工具
12.6.1自动测试工具的特征
12.6.2自动测试工具的作用和优势
12.6.3自动测试工具的选择
12.6.4自动测试工具的分类
12.6.5自动测试工具的局限性
12.7小结
本章习题
第13章单元测试工具JUnit
13.1JUnit概述
13.1.1JUnit简介
13.1.2JUnit框架组成
13.2JUnit测试过程
13.3JUnit测试用例
13.4JUnit安装与集成
13.4.1JUnit简单安装
13.4.2JUnit与IDE集成安装
13.5从JUnit 3到JUnit 4
13.5.1代码构成
13.5.2运行原理
13.5.3打包测试
13.5.4多线程测试
13.6JUnit实例
13.6.1实例介绍
13.6.2常规测试
13.6.3使用JUnit测试
13.7小结
本章习题
第14章负载测试工具LoadRunner
14.1LoadRunner综述
14.1.1LoadRunner简介
14.1.2LoadRunner主要特性
14.1.3LoadRunner组件和术语
14.1.4LoadRunner工作流程
14.2制定负载测试计划
14.2.1分析应用程序
14.2.2计划怎样执行
14.3创建测试脚本
14.3.1创建空白脚本
14.3.2VuGen界面介绍
14.3.3录制脚本
14.4设计运行场景
14.4.1新建场景
14.4.2负载生成器管理
14.4.3虚拟用户管理
14.4.4运行设置
14.5运行测试场景
14.6监视场景
14.7结果分析
14.8LoadRunner综合应用
14.9小结
本章习题
第五部分实战篇
第15章聚合文件管理工具测试
15.1案例概述
15.2测试计划
15.3测试用例
15.3.1单元测试用例
15.3.2功能测试用例
15.4测试分析报告
15.5小结
本章习题
第16章网上书店系统测试
16.1网站测试概述
16.1.1网站测试概念
16.1.2网站测试过程
16.1.3数据库测试
16.1.4用户界面测试
16.1.5构件级测试
16.1.6配置测试
16.1.7安全性测试
16.1.8系统性能测试
16.2案例概述
16.2.1用户简介
16.2.2项目的目的与目标
16.2.3目标系统功能需求
16.2.4目标系统性能需求
16.2.5目标系统界面需求
16.2.6目标系统的其他需求
16.2.7目标系统的假设与约束条件
16.3项目测试计划
16.3.1测试项目
16.3.2测试方案
16.3.3测试资源
16.4测试用例设计
16.4.1单元测试用例
16.4.2功能测试用例
16.4.3性能测试用例
16.5测试进度
16.5.1单元测试
16.5.2集成测试
16.5.3系统测试
16.5.4验收测试
16.6评价
16.6.1范围
16.6.2数据整理
16.6.3量度
16.7测试分析报告
16.7.1引言
16.7.2测试计划实施
16.7.3评价
16.8小结
本章习题
第17章手机视频播放软件测试
17.1手机软件测试概述
17.1.1移动终端介绍
17.1.2手机软件测试用例设计
17.1.3手机软件测试基本流程
17.2手机软件测试技术
17.2.1手机智能终端平台简介
17.2.2测试环境搭建实例
17.2.3业务应用软件测试
17.3案例概述
17.3.1项目概述
17.3.2功能需求
17.3.3性能需求
17.4测试计划
17.4.1测试目标
17.4.2测试方案
17.4.3测试资源
17.5测试用例
17.5.1功能测试用例
17.5.2性能测试用例
17.6测试过程
17.6.1单元测试
17.6.2集成测试
17.6.3系统测试
17.6.4验收测试
17.7测试分析报告
17.7.1引言
17.7.2测试概要
17.7.3测试结果及发现
17.7.4分析摘要
17.7.5测试资源消耗
17.8小结
本章习题
部分习题参考答案
附录A测试文档模板
参考文献
加入时,请写明:“学校+姓名”,并写明“加入教师群”,只限教师。