21世纪高等学校规划教材·软件工程:软件质量保证与测试(第2版) 7302467633,9787302467632

配送至
$ $ USD 美元

编辑推荐

本书从实践角度对软件研发各阶段的质量保证和管理的思想、方法和活动等进行详细介绍的同时,系统地讲述了软件测试的各种方法和技术,以从多层面探讨软件测试的本质和内涵,并应用于各个软件测试阶段,来满足不同的应用系统测试需求。同时,本书也详细介绍了从怎样组建测试队伍、部署测试环境,到如何进行测试用例设计、缺陷报告、测试项目管理等各个方面

目录

第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.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.5小结
思考题
第2章软件质量工程体系
2.1软件质量控制的基本概念和方法
2.1.1软件质量控制的基本概念
2.1.2软件质量控制的基本方法
2.2软件质量控制模型和技术
2.2.1软件质量控制模型
2.2.2软件质量控制模型参数
2.2.3软件质量控制的实施过程
2.2.4软件质量控制技术
2.3软件质量保证体系
2.3.1软件质量保证的内容
2.3.2SQA活动和实施
2.4小结
思考题
第3章软件质量度量和配置管理
3.1度量和软件度量
3.1.1度量
3.1.2软件度量
3.1.3作用
3.2软件质量度量
3.2.1软件质量和软件质量要素
3.2.2影响软件质量的因素
3.2.3质量保证模型
3.2.4缺陷排除效率
3.3软件过程度量
3.3.1概念
3.3.2常见问题
3.3.3基于目标的方法
3.4软件配置管理
3.4.1目标
3.4.2角色职责
3.4.3过程描述
3.4.4关键活动
3.4.5VSS的使用
3.5小结
思考题
第4章软件可靠性度量和测试
4.1软件可靠性
4.1.1软件可靠性的发展史
4.1.2软件可靠性的定义
4.1.3基本数学关系
4.1.4影响因素
4.1.5软件的差错、故障和失效
4.2可靠性模型及其评价标准
4.2.1软件可靠性模型
4.2.2模型及其应用
4.2.3软件可靠性模型评价准则
4.3软件可靠性测试和评估
4.3.1软件可靠性评测
4.3.2具体实施过程
4.4提高软件可靠性的方法和技术
4.4.1建立以可靠性为核心的质量标准
4.4.2选择开发方法
4.4.3软件重用
4.4.4使用开发管理工具
4.4.5加强测试
4.4.6容错设计
4.5软件可靠性研究的主要问题
4.6小结
思考题
第5章软件质量标准
5.1软件质量标准概述
5.1.1国际标准
5.1.2国家标准
5.1.3行业标准
5.1.4企业规范
5.1.5项目规范
5.2ISO 9001和90003在软件中的应用
5.3能力成熟度模型
5.3.1CMM质量思想
5.3.2CMM关键域
5.3.3PSP和TSP
5.3.4CMMI
5.3.5CMM中的质量框架
5.4IEEE软件工程标准
5.4.1IEEE 730:2001结构与内容
5.4.2IEEE/EIA Std 12207软件生命周期过程
5.4.3IEEE Std 1012验证与确认
5.4.4IEEE Std 1028评审
5.5其他质量标准
5.5.1ISO/IEC 155042:2003软件过程评估标准
5.5.2Tick IT
5.6小结
思考题
第6章软件评审
6.1为什么需要软件评审
6.2软件评审的角色和职能
6.3评审的内容
6.3.1管理评审
6.3.2技术评审
6.3.3文档评审
6.3.4过程评审
6.4评审的方法和技术
6.4.1评审的方法
6.4.2评审的技术
6.5评审会议流程
6.5.1准备评审会议
6.5.2召开评审会议
6.5.3跟踪和分析评审结果
6.6小结
思考题
第7章软件全面质量管理
7.1全面质量管理概述
7.1.1发展阶段
7.1.2相关问题
7.1.3全面质量管理与ISO 9000
7.1.4全面质量管理与统计技术
7.26σ项目管理
7.2.16σ管理法简介
7.2.26σ管理法与零缺陷
7.2.36σ管理的特征
7.2.46σ管理的优点
7.2.5DPMO与6σ的关系
7.2.6人员组织结构
7.2.76σ与其他管理工具的比较
7.3质量功能展开设计
7.3.1质量功能展开的概念
7.3.2质量功能展开的分解模型
7.3.3质量屋的构成
7.3.4质量功能展开的特点
7.4DFSS流程及主要设计工具
7.4.1DMAIC与DFSS简介
7.4.2DFSS的重要性及其内涵
7.4.3DFSS与DMAIC的区别
7.4.4DFSS流程及主要设计工具
7.4.5DFSS的集成框架
7.4.6注意问题
7.4.7发展方向
7.5小结
思考题
第8章高质量编程
8.1代码风格
8.1.1程序的书写格式
8.1.2Windows程序命名规则
8.1.3共性规则
8.1.4表达式和基本语句
8.2函数设计规则
8.2.1函数外部特性的注释规则
8.2.2参数规则
8.2.3返回值的规则
8.2.4函数内部的实现规则
8.3提高程序质量的技术
8.3.1内存管理规则
8.3.2面向对象的设计规则
8.4代码审查
8.4.1代码审查的主要工作
8.4.2代码审查的流程
8.4.3Java代码审查的常见错误
8.5小结
思考题
第9章软件测试
9.1目的和原则
9.1.1软件测试的目的
9.1.2软件测试的原则
9.2软件测试的种类
9.2.1软件测试过程概述
9.2.2单元测试
9.2.3集成测试
9.2.4系统测试
9.2.5验收测试
9.2.6回归测试
9.2.7敏捷测试
9.3软件测试与软件开发
9.3.1整个软件开发生命周期
9.3.2生命周期测试与V模型
9.3.3软件测试IDE产品
9.4软件测试的现状
9.4.1软件测试的过去、现在和未来
9.4.2产业现状
9.5测试工具的选择
9.5.1白盒测试工具
9.5.2黑盒测试工具
9.5.3测试设计和开发工具
9.5.4测试执行和评估工具
9.5.5测试管理工具
9.5.6功能和成本
9.6小结
思考题
第10章黑盒测试
10.1等价类划分法
10.1.1划分等价类
10.1.2方法
10.1.3设计测试用例
10.2边界值分析法
10.2.1边界条件
10.2.2次边界条件
10.2.3其他边界条件
10.2.4边界值的选择方法
10.3因果图法
10.3.1因果图设计方法
10.3.2因果图测试用例
10.4功能图法
10.4.1功能图设计方法
10.4.2功能图法生成测试用例
10.5比较与选择
10.6黑盒测试工具
10.6.1WinRunner的使用
10.6.2LoadRunner的使用
10.6.3QTP的使用
10.7小结
思考题
第11章白盒测试
11.1白盒测试的目的
11.2控制流测试
11.2.1语句覆盖
11.2.2判定覆盖
11.2.3条件覆盖
11.2.4判定条件覆盖
11.2.5路径覆盖
11.2.6几种常用逻辑覆盖的比较
11.2.7循环测试
11.3基本路径测试
11.3.1程序的控制流图
11.3.2程序结构的要求
11.3.3举例
11.4程序插装
11.5程序变异测试
11.6C Test和白盒测试工具
11.6.1C Test的使用
11.6.2白盒测试工具
11.7软件缺陷分析
11.7.1简介
11.7.2软件缺陷的类别
11.7.3软件缺陷的级别
11.7.4软件缺陷产生的原因
11.7.5软件缺陷的构成
11.8小结
思考题
第12章基于缺陷模式的软件测试
12.1相关定义
12.1.1软件缺陷的产生原因
12.1.2减少缺陷的关键因素
12.1.3软件缺陷的特征
12.2软件缺陷的属性
12.3软件缺陷的严重性和优先级
12.3.1缺陷的严重性和优先级的关系
12.3.2常见错误
12.3.3表示和确定
12.4软件缺陷管理和CMM的关系
12.4.1初始级的缺陷管理
12.4.2可重复级的缺陷管理
12.4.3已定义级的缺陷管理
12.4.4定量管理级的缺陷管理
12.4.5持续优化级的缺陷管理
12.5报告软件缺陷
12.5.1报告软件缺陷的基本原则
12.5.2IEEE软件缺陷报告模板
12.6软件缺陷管理
12.6.1缺陷管理目标
12.6.2人员职责
12.6.3缺陷生命周期
12.6.4缺陷管理系统
12.6.5缺陷分析方法
12.6.6缺陷分析指标
12.7小结
思考题
第13章集成测试
13.1集成测试的定义
13.1.1区别
13.1.2集成测试的主要任务
13.1.3集成测试的层次与原则
13.2集成测试策略
13.2.1非渐增式集成
13.2.2渐增式集成
13.2.3其他集成测试策略
13.2.4几种实施方案的比较
13.3集成测试用例设计
13.4集成测试的过程
13.4.1计划阶段
13.4.2设计实现阶段
13.4.3执行评估阶段
13.5面向对象的集成测试
13.5.1对象交互
13.5.2面向对象的集成测试的步骤
13.5.3常用的测试技术
13.6小结
思考题
……
第14章系统测试
第15章测试管理
参考文献

序言

前言
创新的动力源自人类不断升级的愿望和需求。
自1968年在德国的南部小城加尔米施召开的NATO会议上提出软件工程的概念以来,经过近50年的发展,软件产业已经成为当今世界投资回报比最高的产业之一。软件产业定义了商业创新,并正在潜移默化地改变人们赖以生存的星球的面貌。
新世纪的软件产业呈现出引人入胜的网络化、服务化、全球化的转变趋势。但与此同时,当今社会却每天都有关于火星探测器失踪、黑客获得数百万张信用卡号这样的软件问题或者安全缺陷的新闻报道,应用软件漏洞成为连接信任的“互联网+”时代的主要安全威胁。正如2005年普利策新闻奖的三届获奖者Thomas L. Friedman(托马斯·弗里德曼)在《世界是平的》一书中指出: 世界,开始从垂直的价值创造模式(命令和控制)向日益水平化的价值创造模式(联系和合作)转变。在新常态下,对于软件质量保证和测试的探讨比以往任何时期更加急迫、更加重要。
预见未来很好的方式就是亲手创造未来。面对创新驱动,软件质量保证与测试概括地说是运用工程的思想、原理、理论、技术、工具来研究提高大规模软件系统质量,并改进测试方法的学科; 具体地说,软件质量是软件与明确、隐含的定义需求相一致的程度,也是软件符合明确叙述的功能、性能需求,文档中明确描述的开发标准以及专业软件具有的隐含特征程度。
在新时期,为了增加软件产品的国际竞争力,软件质量已经成为经济发展的战略问题。在这一点上,美国著名质量大师约瑟夫·朱兰(Joseph M. Juran)就指出,20世纪是生产率的世纪,21世纪是质量的世纪,质量是和平占领市场最有效的武器。那么,随着质量管理的不断受关注、质量意识的不断创新,人们已经从单纯的质量检验发展到全面质量管理、能力成熟度模型、六西格玛质量管理、零缺陷管理,等等。新的理论、方法、体系使得质量改进过程得到了很大促进。
软件开发从分析、设计、制造、测试到发布、部署都会涉及质量保证。诚然,软件质量是软件企业的生命,完善的质量保证体系和严格的质量认证是提高软件企业生产能力和竞争能力的重要因素。一些有益的探索和实践包括敏捷建模、极限编程、软件驱动开发、团队软件过程,等等。整个软件组织始终围绕着软件质量管理的主题,高度的质量意识扎根于软件工程师和项目经理的灵魂深处,直至形成整个组织的质量文化。由此,作为软件组织员工的共同价值观的体现,质量文化正通过有效的软件质量管理模式、系统的软件质量工程体系发挥出越来越重要的作用,并贯穿到软件开发、维护的整个生命周期。一直以来,计算机科学和软件工程都在寻求对软件本质更清晰的认识,试图以更加合理的方法、流程来开发软件,在保证高质量的前提下大量、快速地开发软件。
至繁归于至简。在全球化时代的大背景下,伴随软件质量保证而来的软件测试最终是利用测试工具按照测试方案、流程对产品进行功能、性能测试,甚至根据需要编写不同的测试工具设计、维护测试系统,对测试方案进行分析、评估,实现软件测试自动化。测试用例执行后需要跟踪故障,以确保开发的产品满足需求。当然,软件测试是软件质量保证的关键步骤,软件缺陷发现得越早,软件开发费用就越低。相应地,软件质量越高,软件发布后的维护费用就越低。软件工程实践表明,对软件思想有深刻理解的工程师通过软件测试可以大幅度提高软件质量。
本书从实践的角度对软件研发各阶段的质量保证和管理的思想、方法、活动、案例进行了详细描述,并系统介绍了软件测试的各种方法,从不同的角度探讨软件测试的本质及其内涵,通过应用在各个测试阶段来满足不同的应用系统测试需求。同时,本书用了较大篇幅详细介绍了怎样组建测试队伍、部署测试环境,以及测试用例设计、缺陷报告、测试项目管理等方面。
全书由秦航、杨强任主编。第1、7、15章由秦航编写,第8、10、11章由夏浩波编写,第2、4章由邱林编写,第5、14章由徐杏芳编写,第6、9章由包小军编写,第3、12章由吴中博编写,第13、14章由杨强编写。全书由秦航负责统稿。
本书可作为高等院校“软件质量保证与测试”相关课程的教材或教学参考书,也可供有一定实际经验的软件工程人员和需要开发应用软件的广大计算机用户阅读参考。由于作者水平有限,书中不当与错误之处在所难免,敬请读者和专家提出宝贵意见,以帮助作者不断地改进和完善。
作者2017年5月

后记

本书全面系统地讲述了软件质量保证与测试的概念、原理和典型的方法,并介绍了相关软件项目的管理技术

文摘

第5章软件质量标准

20世纪是生产率的世纪,21世纪是质量的世纪,质量是和平占领市场最有效的武器。
——朱兰(Joseph M. Juran)

经过数十年的发展,软件行业的分工很细、体系繁多,因此需要从标准的层次说明软件质量标准的情况。
根据软件工程标准制定机构和标准适用的范围,软件质量标准分为5个级别,即国际标准、国家标准、行业标准、企业标准、项目规范。很多标准的原始状态可能是项目标准或企业标准,但是随着行业发展、推进,标准的权威性可能促使标准发展成为行业、国家或国际标准。因此,层次具有一定的相对性。
能力成熟度模型(Capability Maturity Model,CMM)的本质是软件管理工程的一个部分。CMM是对于软件组织在定义、实现、度量、控制、改善其软件过程的进程中各个发展阶段的描述,通过5个不断进化的层次来评定软件生产的历史与现状。
本章正文共分5节,5.1节是软件质量标准概述,5.2节介绍ISO 9001和90003在软件中的应用,5.3节介绍能力成熟度模型,5.4节介绍IEEE软件工程标准,5.5节介绍其他质量标准。

5.1软件质量标准概述

5.1.1国际标准

由国际机构指定和公布的供各国参考的标准称为国际标准。

图51国际标准化组织ISO

国际标准化组织(International Standards Organization,ISO)具有广泛的代表性、权威性,公布的标准也具有国际影响力,如图51所示。在20世纪60年代初,国际标准化组织建立了“计算机与信息处理技术委员会”,专门负责与计算机有关的标准工作。公布的标准带有ISO字样,如ISO 10012:1995质量手册编写指南。
5.1.2国家标准
由政府或机构制定或者批准,适用于本国范围的标准称为国家标准。例如以下机构和标准。
 GB(GuoBiao): 中华人民共和国国家技术监督局,它是中国的最高标准化机构,所公布实施的标准简称为“国标”。
 ANSI(American National Standards Institute): 美国国家标准协会,它是美国一些民间标准化组织的领导机构,具有一定的权威性。
 FIPS(Federal Information Processing Standards): 美国商务部国家标准局联邦信息处理标准,所公布的标准均冠有FIPS字样,如1987年发表的FIPS PUB 13287 Guideline for validation and verification plan of computer software(软件确认与验证计划指南)。
 BS(British Standard): 英国国家标准。
 DIN(Deutsches Institut für Normung): 德国标准协会。
 JIS(Japanese Industrial Standard): 日本工业标准。
5.1.3行业标准
行业标准是由一些行业机构、学术团体或国防机构制定,适用于某个业务领域的标准。
中华人民共和国国家标准(GJB)是由我国国防科学技术工业委员会批准,适合国防部门和军队使用的标准,例如1988年发布实施的GJB 47388软件开发规范。
美国电气和电子工程师学会(Institute of Electrical and Electronics Engineers,IEEE)成立了软件标准技术委员会(SESS),开展软件标准化活动。美国国防部标准(Department of DefenseStandards,DODSTD)为国防部各任务领域体系结构的开发、描述、集成定义了一种通用的方法,有利于快速确定作战需求。美国标准(MilitaryStandards,MILS)的任务是瞄准需求,及时向作战人员、采办人员、后勤人员提供标准化的过程、产品、服务,使武器装备、设施和其他供应品在设计、采办、管理、使用过程中必需的材料、零件、元件、组件、设备、分系统、系统、过程、惯例、程序实现标准化。另外,我国的信息产业部也开展了软件标准化工作,制定、公布了一些适合本部门工作需要的规范。这些规范的制定参考了国际标准、国家标准,对各自行业的软件工程起到了强有力的推动作用。
5.1.4企业规范
大型企业或公司,由于软件工程工作的需要,制定适用于本部门的规范。例如,1984年美国被称为蓝色巨人的IBM公司通用产品部(General Products Division)制定“程序设计开发指南”。
5.1.5项目规范
项目规范为一些科研生产项目需要而由组织制定一些具体项目的操作规范,此种规范制定的目标很明确,即为该项任务专用。虽然项目规范最初的使用范围小,但如果成功指导一个项目的成功运行并重复使用,也有可能发展为行业规范。
ISBN7302467633,9787302467632
出版社清华大学出版社
作者秦航
尺寸16