本书是计算机软件测试课程教材,全书分11章,主要内容包括:软件测试概述、软件测试方法、单元测试、集成测试与确认测试、系统测试与验收测试、系统性能测试、面向对象测试、测试的设计与实现、Web应用测试、软件测试自动化、软件质量保证等内容。
本书具有宽广的适用范围,可作为高等学校计算机科学与技术专业的软件测试课程教材,也可作为计算机软件开发人员的参考书。
软件测试
陈 明 编著
本书主要内容
随着软件规模的扩大及复杂度的提高,软件测试的难度进一步加大,软件测试技术及方法越来越重要。软件测试是软件工程学科的重要分支,是软件开发过程中不可缺少的重要环节,是软件质量保证的关键技术之一。
软件测试的种类很多,本书主要介绍基本的测试技术和方法,包括单元测试、集成测试、系统测试与验收测试、系统性能测试、面向对象测试、Web应用测试,并阐述了测试的设计与实现、测试自动化及软件质量保证等内容。
本书作者充分考虑了软件测试实践性强的特点,既注重基本理论知识的学习,又注意必要技能运用方法的介绍,引导学生学会分析和思考,为开发高质量的软件产品打下基础。
作者简介
陈 明 中国石油大学(北京)计算机科学与技术系教授、博士生导师,任中国计算机学会理事、中国人工智能学会理事、中国计算机学会开放系统专业委员会副主任。主要从事计算智能及分布并行计算方面的研究,参加和完成国家自然科学基金、国家863高技术基金等多项科研项目。在国内外学术刊物与会议上发表论文140余篇,撰写并出版计算机教材、专著及译著96种,其中多本教材获评北京市精品教材、 “十一五”国家级规划教材。主持的“数据结构”课程被评为北京市精品课程。被评为北京市优秀教学团队带头人,2003年获北京市教学名师奖。
软件是一种逻辑产品,它广泛应用于各种系统中。计算机软件已成为一种新的驱动力,为决策、现代工程研究等提供解决问题的基础。
随着软件规模的扩大及复杂度的不断提高,必须进行的软件测试的难度也进一步加大,因此更加凸显了软件测试方法的重要性。软件测试是软件工程学科的重要分支,现已成为软件质量保证的关键技术之一。在软件开发过程中,软件测试是不可缺少的重要环节,软件测试工作直接决定了软件产品的质量。
为了保证软件质量,在软件开发过程中需要频繁进行测试,软件测试存在于软件开发过程的各个阶段。虽然软件测试的种类颇多,但一本软件测试教程中不可能介绍所有的测试方法,本书主要阐述基本的测试技术和方法。
本教程以一定的篇幅介绍了系统性能测试技术。性能测试不仅是系统性能测试的过程,也是系统性能优化的过程。完成性能测试需要测试人员的深入分析和思考,需要测试自动化技术的配合。软件测试自动化技术不仅可以帮助提高效率,更重要的是已成为系统性能测试不可缺少的技术,其研究方兴未艾,前景远大。
软件测试自动化技术的实现需要测试工具的支持,软件测试工具是支持测试任务实现而使用的计算机程序,软件测试环境是一组相关的软件测试工具的集合,它们集成在一起支持软件测试。软件测试工具与环境是软件测试的重要组成部分,对于提高软件生产率、改进软件质量有越来越大的作用。
软件测试是一项富有挑战性的工作,它需要灵感和智慧,需要有软件工程的理念,需要丰富的想象力和创造力。软件测试是一门实践性很强的课程,在学习中既要了解基本的理论知识,又要掌握必要的技能,也就是说,不仅要掌握其理论原则与方法,更重要的是学会熟练应用。因此,在学习软件测试技术的过程中,要注重技术的应用,通过大量的实践和思考,理解软件测试的思想和理念,并运用测试技术和技巧去解决问题。
本教程在内容选择上注重先进性与系统性,在结构上各章呈模块化,在描述中注重理论与实践的结合。学生通过软件测试的理论学习与实践,可以快速掌握软件测试必需的技术和方法,提高软件测试能力。
本书的编写获北京市教育委员会共建项目专项资助。
由于作者水平有限,书中不足之处在所难免,敬请读者批评指正。
于北京
计算机科学及应用
随着软件规模的扩大及复杂度的提高,软件测试的难度进一步加大,软件测试技术及方法越来越重要。软件测试是软件工程学科的重要分支,是软件开发过程中不可缺少的重要环节,是软件质量保证的关键技术之一。
软件测试的种类很多,本书主要介绍基本的测试技术和方法,包括单元测试、集成测试、系统测试与验收测试、系统性能测试、面向对象测试、Web应用测试,并阐述了测试的设计与实现、测试自动化及软件质量保证等内容。
本书作者充分考虑了软件测试实践性强的特点,在讲解中既注重基本理论知识的学习,又注意必要技能运用方法的介绍,引导学生学会分析和思考,为开发高质量的软件产品打下基础。
作者简介
陈明,中国石油大学(北京)计算机科学与技术系教授,博士生导师,任中国计算机学会理事 、中国人工智能学会理事、中国计算机学会开放系统专业委员会副主任。主要从事计算智能及分布并行计算方面的研究,参加和完成国家自然科学基金、国家863高技术基金等多项科研项目。在国内外学术刊物与会议上发表论文140余篇,撰写并出版计算机教材、专著及译著96种,其中多本教材获评北京市精品教材、 “十一五”国家级规划教材,“数据结构”课程被评为北京市精品课程。北京市优秀教学团队带头人,2003年获北京市教学名师奖。
近20年里,计算机学科有了很大的发展,人们普遍认为,“计算机科学”这个名字已经难以涵盖该学科的内容,因此,改称其为计算学科(Computing Discipline)。在我国本科教育中,1996年以前曾经有计算机软件专业和计算机及应用专业,之后被合并为计算机科学与技术专业。2004年以来,教育部计算机科学与技术专业教学指导分委员会根据我国计算机专业教育和计算学科的现状,为更好地满足社会对计算机专业人才的需求,发布了《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》(以下简称《规范》),提出在计算机科学与技术专业名称之下,构建计算机科学、计算机工程、软件工程和信息技术四大专业方向。《规范》中四大专业方向的分类,在于鼓励办学单位根据自己的情况设定不同的培养方案,以培养更具针对性和特色的计算机专业人才。
为配合《规范》的实施,落实中央“提高高等教育质量”的精神,我们规划了“面向计算机科学与技术专业规范系列教材”。本系列教材面向全新的计算学科,针对我国高等院校逐步向新的计算机科学与技术专业课程体系过渡的趋势编写,在知识选择、内容组织和教学方法等方面满足《规范》的要求,并与国际接轨。本套教材具有以下几个特点:
(1) 体现《规范》的基本思想,满足其课程要求。为使教材符合我国高等院校的教学实际,编委会根据《规范》的要求规划本套教材,广泛征集在国内知名高校中从事一线教学和科研工作、经验丰富的优秀教师承担编写任务。
(2) 围绕“提高教育质量”的宗旨开发教材。为了确保“精品”,本系列教材的出版不走盲目扩大的路子,每本教材的选题都将由编委会集体论证,并由一名编委担任责任编委,最大程度地保证这套教材的编写水准和出版质量。
(3) 教材内容的组织科学、合理,体系得当。本套教材的编写注重研究学科的新发展和新成果,能够根据不同类型人才培养需求,合理地进行内容取舍、组织和叙述,还精心设计了配套的实验体系和练习体系。
(4) 教材风格鲜明。本套教材按4个专业方向统一规划,分批组织,陆续出版。教材的编写体现了现代教育理念,探讨先进的教学方法。
(5) 开展教材立体化建设。根据需要配合主教材的建设适时开发实验教材、教师参考书、学生参考书、电子参考资料等教辅资源,为教学实现多方位服务。
我们衷心希望本系列教材能够为我国高等院校计算机科学与技术等专业的教学作出贡献,欢迎广大读者广为选用。
出版者的话
序言
前言
教学建议
第1章概述
11软件测试的发展
12软件失效机理
121四个概念及其关系
122软件错误类型及出现的原因
123软件缺陷的主要特征
13软件测试的定义
14软件测试的分类
141基于开发阶段的划分
142基于测试实施组织的划分
143基于测试技术的划分
15软件测试的对象
16软件测试的目的
17软件测试的原则
18软件测试的重要性
19软件测试的复杂性
110软件测试的经济性
111软件测试步骤
1111结构化软件测试步骤
1112面向对象软件测试步骤
小结
习题
第2章软件测试方法
21静态分析
22动态测试
23人工测试与机器测试
231软件审查
232人工测试与机器测试的比较
24黑盒测试
241黑盒测试的有关概念
242等价类划分
243边界值分析
244错误推测
245因果图
25白盒测试
251白盒测试的作用
252程序结构分析
253逻辑覆盖
254程序插装
255符号测试
256程序变异
26白盒测试和黑盒测试的比较
261白盒测试的特点
262黑盒测试的特点
263黑盒测试与白盒测试的对比
27敏捷测试
271敏捷技术概述
272敏捷测试的理念
273敏捷测试的原则
274敏捷测试的意义
小结
习题
第3章单元测试
31单元测试定义
32单元测试的目的
33单元测试的环境
34单元测试的内容
35单元测试用例
36单元测试的策略
37单元测试的过程
371单元测试的三个阶段
372单元测试的步骤
373单元动态测试方法
38单元测试问题
小结
习题
第4章集成测试与确认测试
41概述
411集成测试的重要性
412集成测试分析
413集成测试模式
42自顶向下集成测试
43自底向上集成测试
44混合式集成测试
45核心系统先行集成测试
46高频集成测试
47回归测试
48集成测试用例
49集成测试过程
410确认测试
4101确认测试的步骤
4102确认测试的标准
4103确认测试的内容
4104配置复审
小结
习题
第5章系统测试、终止测试与验收测试
51系统测试
511功能测试
512非功能测试
513系统测试与单元测试、集成测试的区别
52终止测试
521终止测试的标准
522各个测试阶段的终止标准
53验收测试
531验收测试的内容
532α测试
533β测试
小结
习题
第6章系统性能测试
61性能测试概述
611性能测试的目的与指标
612性能测试的分类
613性能测试的要素
62性能测试的步骤
621收集需求
622设计性能测试用例
623性能测试用例的特点
624执行性能测试用例
625分析性能测试结果
626性能调节
627基准测试
628能力策划
63性能测试计划
64性能测试的注意事项
小结
习题
第7章面向对象软件测试
71面向对象测试基础
711面向对象测试层次
712面向对象测试顺序
713面向对象测试用例
72面向对象测试模型
721面向对象分析的测试
722面向对象设计的测试
723面向对象编程的测试
73类测试
731类测试概述
732类测试技术
733UML在类测试中的应用
74面向对象集成测试
75面向对象系统测试
76面向对象测试与传统测试的比较
小结
习题
第8章测试的设计与实现
81测试计划
811设计测试计划的目的
812测试方案的制定
813测试策略的制定
814测试计划的制定
815测试的组织
82测试设计
821建立测试配置
822测试用例设计
83测试执行
831创建测试任务
832执行测试任务
833处理软件问题报告
84测试总结
841测试结果的统计
842测试结果的分析
843测试报告的编写
小结
习题
第9章Web应用测试
91Web测试概述
911Web系统的结构
912Web测试的目的与计划
913Web系统的测试策略
92Web应用设计的测试
921总体架构设计的测试
922客户端设计的测试
923服务器端设计的测试
93Web应用开发的测试
931代码测试
932组件测试
94Web应用运行的测试
941功能测试
942性能测试
943用户界面测试
944兼容性测试
945安全性测试
946接口测试
947易用性测试
95基于J2EE平台的测试
951J2EE概述
952基于J2EE的单元测试技术
953Servlet的单元测试
954JSP单元测试
955数据库访问层的单元测试
96基于NET的ACT
961ACT概述
962ACT创建测试
963ACT测试举例
小结
习题
第10章软件测试自动化
101测试自动化的概念
102测试自动化的优点
103测试自动化的过程
104测试自动化的问题
105测试自动化的局限性
106测试自动化设计
1061测试自动化的基本架构
1062测试自动化的方法
1063测试自动化的层次
107测试自动化用例
1071测试自动化用例特征
1072测试自动化用例设计
1073测试自动化用例生成的优缺点
108测试自动化的前处理和后处理
109软件测试工具
1091测试工具的作用
1092测试工具的分类
1093典型的软件测试工具
1094测试工具的选择
小结
习题
第11章软件质量与质量保证
111软件质量的定义
112影响软件质量的因素
113软件质量保证
1131软件质量保证的概念
1132软件质量保证的策略
1133SQA小组的任务
114软件质量保证活动
115软件评审
1151设计质量的评审内容
1152程序质量的评审内容
116软件质量保证的标准
117软件质量评价
1171软件质量评价体系
1172软件质量评价标准
118软件质量框架
1181高质量软件的特性
1182软件质量框架的组成
119软件开发质量的定量描述
1191基本的定量估算
1192对软件需求的估算
1193估算验收测试阶段预期发现的缺陷数
1194针对维护活动的度量
1195软件可用性的计算
1196利用植入故障法估计
小结
习题
参考文献