软件测试大学教程(高等学校计算机应用规划教材)
分類: 图书,教材教辅与参考书,大学,计算机专业,
品牌: 蔡建平
基本信息·出版社:清华大学出版社
·页码:380 页
·出版日期:2009年09月
·ISBN:7302206554/9787302206552
·条形码:9787302206552
·包装版本:第1版
·装帧:平装
·开本:16
·正文语种:中文
·丛书名:高等学校计算机应用规划教材
产品信息有问题吗?请帮我们更新产品信息。
内容简介《软件测试大学教程》是作者多年从事软件测试研究和教学经验的总结。全书共16章,分为3部分:第1部分(第1~6章)是软件测试基础,涉及软件测试的一些基本概念和基础知识,如软件与软件危机、软件缺陷与缺陷管理、软件测试基本概念、生命周期软件测试方法、软件测试过程和基于软件配置项的测试种类;第2部分(第7~12章)是《软件测试大学教程》的重点,讲述软件测试方法,包括软件静态测试、动态测试、软件测试自动化、软件可靠性测试、软件本地化测试以及面向对象软件测试;第3部分(第13~16章)是典型应用的软件测试,重点介绍C/S应用软件测试、B/S架构的Web应用软件测试(包括信息系统的测试)、游戏软件测试以及嵌入式软件测试。
另外,《软件测试大学教程》几乎在各个章节对支撑该章节软件测试方法和技术应用的测试工具进行了详细介绍,特别是对开源软件测试工具进行了较全面的介绍,这些工具对于很好地支持高校软件测试课程实践教学是非常有现实意义的。
《软件测试大学教程》取材新颖、内容翔实、通俗易懂、技术实用、覆盖面广、指导性强,既可作为软件测试相关课程的研究生与高年级本科生的教材,同时也可作为软件测试培训和软件测试人员的自学书籍。
作者简介蔡建平,教授,北京工业大学软件学院院长助理、软件与网络工程系主任。在原总装备部某研究所工作十余年,一直从事该所负责的全军军用共性软件系统项目的论证和研究,并在其中发挥重要作用,得到有关领导和专家的认可和好评。获军队科技进步一等奖、二等奖、三等奖多项;发表各类学术论文30多篇,与他人合作著书一部。
在北京奥吉通科技有限公司任技术总监期间,除负责国防有关单位的软件工程、软件质量保证、软件测试以及嵌入式开发的技术咨询、提供解决方案和技术支撑外,还主持开发了科锐时系列软件测试工具,并成功用于国防软件的测试。
2005年9月在北京工业大学软件学院任职教授以来,除了多年讲授软件测试课程和多次对外开展嵌入式软件测试技术培训外,在学院的学科建设、专业建设,如实验室建设、实践教学改革与创新、数字艺术方向和数字媒体技术专业建设、“21l工程”建设、教育部和北京市特色专业建设,以及科研基地——科技创新平台建设等方面做了大量的工作,取得了突破性成果。
编辑推荐《软件测试大学教程》以现代软件测试需求为背景,以现代软件测试技术和方法为基础,以当前软件测试通常应用为典型实例,全面地介绍了软件测试的基本概念,软件测试的技术、方法和工具应用,以及软件测试在当前主流应用中的具体开展和实施。
除了用大量篇幅讲述传统软件测试概念、技术、方法和过程外,书中还详细介绍了全生命周期软件测试的模型概念,软件质量分析、度量和评价(静态测试)方法,现代软件测试的各种技术,以及典型应用(如C/S应用软件、Web应用软件、信息系统、游戏软件以及嵌入式应用软件等)中的软件测试技术和方法。同时还就软件测试中支持各种测试类型的软件工具选型和使用做了相当全面的介绍,特别是对开源软件测试工具的点评,能够开阔读者的学习思路和测试途径。
读者对象:《软件测试大学教程》可作为高等院校软件测试相关课程的研究生或高年级本科生的教材,也可以作为软件测试人员的自学参考书。
《软件测试大学教程》特色:以现代软件测试思想为指导,除了全面讲述传统软件测试技术和方法外,还通过突出全生命周期软件测试概念、软件质量分析手段、现代软件测试技术、主流测试工具及典型测试方法应用等,帮助学生了解和掌握现代软件测试的各种原理、方法和技术,并能够选择合适的软件测试工具进行相关测试。为培养学生今后成为高素质、专业化的软件测试人才打下基础。针对软件开发方法和技术的发展变化,针对我国软件外包服务的蓬勃兴起,针对我国国防工业如航空、航天、机械、船舶、电子、通讯、石油、化工等大量重要软件或关键软件的实际应用情况和测试要求,特别是针对软件高可靠性的要求,选择教材的知识点。《软件测试大学教程》对支撑现代软件测试技术应用的测试工具进行了全面的介绍,特别是对开源软件测试工具的介绍,对于高校开设软件测试实验课程是非常有意义的。《软件测试大学教程》内容全面、条理清晰、结构严谨、可用性强,重点、难点阐述透彻,既符合现代软件测试技术发展的潮流,又具有相对的稳定性,还易于剪裁,以满足各类软件测试课程的教学需要和各类软件测试人员的学习需要。
目录
第Ⅰ部分 软件测试基础
第1章 软件与软件危机
1.1 软件概念
1.2 软件特性
1.3 软件种类
1.4 软件危机及其原因
1.5 软件工程
1.6 软件生命周期
1.6.1 什么是软件生命周期
1.6.2 软件生命周期的阶段划分
1.6.3 软件生命周期模型
习题和思考题
第2章 软件缺陷与缺陷管理
2.1 缺陷定义与分类
2.1.1 软件缺陷
2.1.2 软件缺陷的描述和分类
2.2 缺陷管理流程
2.3 缺陷度量和缺陷报告
2.3.1 缺陷度量
2.3.2 缺陷报告
2.4 缺陷管理工具
2.4.1 BugRat(开源)
2.4.2 TrackRecord(商用)
2.4.3 ClearQuest(商用)
2.4.4 Bugzilla(开源)
2.4.5 QAMonitor(国内商业软件)
2.4.6 BMS(国内商业软件)
2.4.7 其他
习题和思考题
第3章 软件测试基本概念
3.1 软件测试发展史
3.2 软件测试的定义
3.3 软件测试的目的
3.4.软件测试的原则
3.5 软件测试人员的素质要求
3.6 软件测试与软件开发各阶段的关系
3.7 软件测试的就业前景
3.8 有关软件测试的几个误区
习题和思考题
第4章 生命周期软件测试方法
4.1 生命周期测试任务
4.2 需求阶段测试
4.3 设计阶段测试
4.4 编码阶段测试
4.5 测试阶段
4.6 安装阶段测试
4.7 验收阶段测试
4.8 维护阶段
4.9 全生命周期质量管理
平台Panoramal
习题和思考题
第5章 软件测试过程
5.1 软件测试过程模型
5.1.1 V模型
5.1.2 W模型
5.1.3 H模型
5.1.4 其他测试模型
5.1.5 测试模型的使用
5.2 软件测试过程管理
5.2.1 测试计划阶段
5.2.2 软件测试设计和开发
5.2.3 测试执行阶段
5.2.4 测试执行结束和测试总结
5.2.5 测试文档与测试过程的关系
5.3 测试过程改进
5.3.1 软件测试过程改进的概念
5.3.2 软件测试过程改进的具体方法
5.4 测试过程辅助设计与管理工具
5.4.1 HP-MercuryT'estDirector
5.4.2 北航软件所QESuite
5.4.3 TestLink(开源免费)
习题和思考题
第6章 基于软件配置项的测试种类
6.1 计算机软件配置项
6.2 软件测试类别和测试种类
6.2.1 测试种类介绍
6.2.2 测试种类的选择
习题和思考题
第Ⅱ部分 软件测试方法
第7章 软件静态测试
7.1 编程规范
7.2 程序理解
7.2.1 程序理解的概念
7.2.2 程序理解的任务
7.2.3 程序理解的内容
7.2.4 程序理解的方法
7.2.5 程序理解的相关技术
7.2.6 影响程序理解的因素及对策
7.3 程序代码质量检查
7.3.1 代码分析
7.3.2 代码审查
7.3.3 桌面检查
7.3.4 代码走查
7.3.5 技术评审
7.4 软件复杂性分析
7.4.1 LineCount复杂度
7.4.2 Halstead复杂度
7.4.3 McCabe复杂度
7.4.4 软件复杂性度量与控制
7.5 软件质量模型
7.5.1 软件质量概念
7.5.2 软件质量分层模型
7.5.3 软件质量度量与评价
7.6 静态分析工具
7.6.1 静态分析工具Logiscope RuleCheck/Audit
7.6.2 源代码分析工具Klocwork
习题和思考题
第8章 动态测试
8.1 “白盒”测试
8.1.1 逻辑覆盖
8.1.2 路径测试
8.1.3 数据流测试
8.1.4 覆盖率分析及测试覆盖准则
8.2 “黑盒”测试
8.2.1 等价类划分
8.2.2 边界值分析
8.2.3 因果图
8.2.4 随机测试
8.2.5 猜错法
8.3 “灰盒”测试
8.4 测试用例设计
8.4.1 测试用例设计原则
8.4.2 测试用例要素
8.4.3 测试用例的设计步骤
8.5 单元测试
8.5.1 单元测试的意义
8.5.2 单元测试的内容
8.5.3 单元测试方法和步骤
8.5.4 国产单元测试工具VisualUnit
8.6 集成测试
8.6.1 一次性组装方式
8.6.2 渐增式测试
8.6.3 组装测试的组织和实施
8.7 确认测试
8.7.1 有效性测试
8.7.2 软件配置复查
8.7.3 a和B测试
8.8 系统测试
8.8.1 系统测试的目的与意义
8.8.2 系统测试中关注的重要问题
8.8.3 系统测试的要求和主要内容
8.8.4 系统测试设计
8.8.5 系统测试中的软件攻击
8.8.6 系统测试中的典型测试类型介绍
8.8.7 系统测试工具举例
习题和思考题
第9章 软件测试自动化
9.1 软件测试自动化概念
9.1.1 自动化测试的定义
9.1.2 适合于自动化测试的相关活动
9.1.3 自动化测试的优点
9.1.4 自动化测试的局限性
9.2 软件测试自动化框架
9.2.1 TestHamess
9.2.2 常用的自动化测试框架
9.2.3 基于API测试的分布式测试框架
9.3 测试自动化技术
9.3.1 脚本技术
9.3.2 录制/回放技术
9.3.3 基于测试预期的结果分析
9.3.4 第三方测试工具集成
9.4 自动化测试工具应用举例
9.4.1 测试中常用的自动化测试工具
9.4.2 基于STAF/STAX的自动化测试框架
习题和思考题
第10章 软件可靠性测试
10.1 操作剖面与统计测试
10.2 基于操作剖面的软件可靠性测试
10.2.1 基于操作剖面的统计测试
10.2.2 操作剖面的构造
10.2.3 操作剖面的使用
10.2.4 结论
10.3 基于操作剖面的软件可靠性疲劳测试
习题和思考题
第11章 软件本地化测试
11.1 软件本地化测试的目的和特点
11.1.1 软件本地化测试的目的
11.1.2 软件本地化测试的特点
11.2 软件本地化错误类型及其原因
11.2.1 翻译错误
11.2.2 功能错误
11.2.3 国际化错误
11.2.4 本地化错误
11.3 软件本地化测试的类型
11.4 软件本地化测试的原则
习题和思考题
第12章 面向对象软件测试
12.1 面向对象程序设计语言对软件测试的影响
12.1.1 信息隐蔽对测试的影响
12.1.2 封装和继承对测试的影响
12.1.3 集成测试
12.1.4 多态性和动态绑定对测试的影响
12.2 面向对象测试模型
12.2.1 面向对象分析测试(OOATest)
12.2.2 面向对象设计的测试(OODTest)
12.2.3 面向对象编程的测试(00PTest)
12.2.4 面向对象的单元测试(OOUnitTest)
12.2.5 面向对象的集成测试(OOIntegrateTest)
12.2.6 面向对象的系统测试(OOSystemTest)
12.3 面向对象软件的回归测试
12.4 UML图和面向对象软件测试
12.5 面向对象软件测试用例的设计
12.5.1 基于故障的测试
12.5.2 基于脚本的测试
12.5.3 面向对象类的随机测试
习题和思考题
第Ⅲ部分典型应用软件测试
第13章 C/S应用软件测试
13.1 C/S系统测试对传统测试的影响
13.2 C/S系统测试的目标
13.3 C/S系统测试的内容和步骤
13.3.1 C/S系统测试的内容
13.3.2 C/S系统测试的常见测试点
13.3.3 C/S系统的性能测试
13.3.4 C/S系统的测试步骤
13.4 C/S系统的测试工具
习题和思考题
第14章 基于B/S架构的Web应用软件测试
14.1 C/S和B/S的比较
14.2 Web应用测试
14.2.1 功能测试
14.2.2 性能测试
14.2.3 可用性测试
14.2.4 客户端兼容性测试
14.2.5 安全性测试
14.2.6 接口测试
14.3 Web应用性能测试方法
14.4 Web应用的测试模型
14.4.1 对象模型
14.4.2 行为模型
14.4.3 结构模型
14.4.4 基于统计信息的Web测试
14.4.5 性能测试模型
14.5 web信息系统测试
14.5.1 信息系统的概念
14.5.2 信息系统的分类
14.5.3 Web信息系统测试方法
习题和思考题
第15章 游戏软件测试
15.1 游戏软件测试的特性
15.2 常见的游戏软件错误
15.3 游戏软件测试与游戏开发过程
15.3.1 游戏开发过程
15.3.2 游戏测试与开发过程的关系
15.4 网络游戏测试
15.4.1 网络游戏的平衡性测试
15.4.2 网络游戏的性能测试
15.5 手机游戏的测试内容
习题和思考题
第16章 嵌入式软件测试
16.1 嵌入式软件测试概念
16.2 嵌入式软件测试的传统方法
16.2.1 嵌入式软件测试各个阶段的通用策略
16.2.2 嵌入式软件测试的流程
16.3 嵌入式软件测试的典型工具
16.3.1 嵌入式“白盒测试工具
16.3.2 嵌入式“黑盒测试工具
16.3.3 嵌入式“灰盒测试工具
16.3.4 嵌入式软件仿真工具
16.4 嵌入式软件测试工具举例
16.4.1 美国Vector公司的VectorCAST——单元测试工具
16.4.2 IBMRational Test RealTime(RTRT)
16.4.3 美国FreeScale公司的CodeTest.“白盒”测试工具
16.4.4 比利时SPACEBEI.公司产品——全数字仿真测试工具
16.4.5 荷兰CHESS公司产品SHAM——半实物仿真测试工具
16.4.6 北航的“黑盒”测试工具GESTE
16.4.7 欧洲航天局实时仿真产品Eurosim
16.4.8 网络资源透明访问工具SPINEware
16.5 传统测试工具的局限性
16.6 全数字仿真测试方案
16.6.1 全数字仿真的概念
16.6.2 北京奥吉通的CRESTS/ATAT和
CRESTS厂rESS介绍
习题和思考题
参考文献
……[看更多目录]
序言作为软件工程的重要分支,软件测试在自提出至今的几十年中,已经发生了很大的变化。它从传统软件工程瀑布模型中的一个测试阶段发展为覆盖包括系统分析与设计、软件需求分析、设计、编码、测试、系统确认验收以及维护的全生命周期测试;从过去朴素的测试概念发展到包括静态分析、质量度量与评价在内的评测结合的软件评测思想;从传统的测试内容分类到基于质量特性、子特性的测试内容分类;从传统的结构化程序测试到面向对象等新型软件测试方法;从早期的单机或桌面测试到网络软件测试及嵌入式软件测试;从以简单的用例测试发展到具有各种测试工具支持的软件测试及管理。事实上,随着软件越来越复杂,软件测试也就成为一件费力、耗时的复杂工作,这对测试人员提出了高素质、专业化的要求。软件测试人员不但要精通各种软件测试技术和方法,有软件测试工程实践经验;还要求他们熟悉软件开发技术和流程,具有快速学习专业知识或领域知识,掌握新技术和应用新工具的能力;此外,软件测试人员还应有团队合作精神,善于和人沟通与交流,并能承受被人误解和指责的心理素质。
随着计算机技术的快速发展,软件越来越普遍地应用到各个领域和方面,应用规模越来越大,应用模式越来越复杂,对软件质量的要求越来越高,从而使得与软件质量密切相关的软件测试越来越重要。当前高素质的软件测试专业人才奇缺,软件测试人才的培养十分紧迫。国家示范性软件学院的一个重要职责就是要在教学研究、教学实践以及教学改革方面进行大胆的探索和实践。因此,在完善已有课程体系及授课内容的同时,应该充分利用优秀的教学资源,总结教学经验和科研成果,编写专业教材,力争探出一条为国家快速培养高素质软件工程人才之路。
北京工业大学软件学院蔡建平教授长期从事软件工程、软件测试以及软件质量保证的研究、实践和教学,并已为编写此书做了长时间的辛勤工作。
文摘插图:
·软件工程关注于大型程序的构造。
·软件工程的中心课题是控制复杂性。
·软件经常变化——控制和管理。
·开发软件的效率非常重要一工具与环境。
·和谐地合作是开发软件的关键——团队精神。
·软件必须有效地支持它的用户。
·在软件工程领域中是由具有一种文化背景的人为具有另一种文化背景的人创造产品。
软件工程包括软件开发技术和软件项目管理两方面内容。软件开发技术是为了完成软件生命周期各阶段的任务,所必须具备的技术手段,包括软件开发方法学、软件工具和软件工程环境等。软件开发方法是为软件开发提供了“如何做”的技术,它包括多方面的任务:项目计划与估算、软件系统需求分析、数据结构、系统总体结构的设计、算法的设计、编码、测试以及维护等。它是一种使用早已定义好的技术集及符号表示习惯来组织软件生产过程的方法,其方法一般表述成一系列的步骤,每一步都与相应的技术和符号相关,目的是在规定的投资和时间内,开发出符合用户需求的高质量的软件。
在软件开发过程中人们越来越重视工具的使用,用以辅助进行软件项目管理与技术生产,人们还将软件生命周期各阶段使用的软件工具有机地集合成为一个整体,形成能够持续支持软件开发与维护全过程的集成化软件支援环境,以期从管理和技术两方面解决软件危机问题。
在软件开发过程中常用的软件开发方法有:
1)面向数据流的结构化程序开发方法(最终关注程序结构)
·指导思想:自顶向下,逐步求精。
·基本原则:功能的分解与抽象。
·适合于数据处理领域的问题。
2)面向数据结构的开发方法——Jackson方法
·JSP(JacksonStructuredProgramming):首先描述问题的输入,输出数据结构,分析其对应性,然后推出相应的程序结构,从而给出问题的软件过程描述。以数据结构为驱动。
·JSD:首先建立现实世界的模型,再确定系统的功能需求。以事件为驱动,基于进程的开发方法。
3)支持程序开发的形式化方法(基于模型的方法、卜一维也纳方法
·将软件系统当作模型来给予描述,把软件的输入、输出看作模型对象,把这些对象在计算机内的状态看作该模型在对象上的操作。
4)面向对象开发方法。
·基本出发点是尽可能按照人类认识世界的方法和思维方式来分析和解决问题。
·面向对象方法包括面向对象分析、面向对象设计、面向对象实现。