产品特色
编辑推荐
本书为“软件开发与测试丛书”中的一册,由从事软件评测与工程化管理的专业人员组织编写。本书结合实例,系统地介绍了动态测试和静态测试中的典型技术方法,比较了各种方法的不同之处并分析了它们的优缺点,紧扣软件测试实际和标准规范要求,从测试原则、测试环境、测试策略、测试内容、测试方法、测试过程等不同方面分别介绍了单元测试、集成测试、配置项测试和系统测试等不同测试级别中实用的测试方法与技术,具有很好地参考与应用价值。本书定位于一本软件测试方法和技术的实用指南,适用于软件从业人员了解软件测试的基础知识、一般流程、实用技术方法和常用测试工具,提高技术能力和过程能力水平,也适用于软件测试机构建立测试能力体系,规范软件测试管理。
内容简介
本书全面系统地介绍了软件测试的方法与技术。书中结合实例,详细介绍了动态测试和静态测试中的典型技术方法,比较了各种方法的不同之处并分析了它们的优缺点;紧扣软件测试实际和标准规范要求,从测试原则、测试环境、测试策略、测试内容、测试方法、测试过程等不同方面分别介绍了单元测试、集成测试、配置项测试和系统测试等不同测试级别中实用的测试方法与技术;此外还介绍了常用的软件测试工具,软件测试文档的编写,以及回归测试、面向对象软件测试、FPGA测试等专门测试。
本书定位于一本软件测试方法和技术的实用指南,适用于软件从业人员了解软件测试的基础知识、一般流程、实用技术方法和常用测试工具,帮助软件从业人员提高技术能力和过程能力水平,也适用于软件测试机构建立测试能力体系,规范软件测试管理。
目录
第1章软件测试概述1
1.1软件测试简史1
1.2软件测试定义3
1.3软件测试原则4
1.4软件的可测试性6
1.4.1可测试性定义与内涵6
1.4.2可测试性设计与实现7
1.4.3可测试性度量与评估9
1.5软件测试模型9
1.5.1V模型9
1.5.2W模型10
1.5.3H模型11
1.6软件测试级别与测试类型12
1.6.1软件测试级别12
1.6.2软件测试类型13
1.6.3软件关键等级16
1.7软件测试标准规范18
1.7.1相关标准概述18
1.7.2GB/T 9386—2008《计算机软件测试文档编制规范》21
1.7.3GB/T 15532—2008《计算机软件测试规范》21
1.7.4GB/T 25000.51—2010《软件工程软件产品质量要求和评价
(SQuaRE)商业现货(COTS)软件产品的质量要求和测试细则》21
1.7.5ISO/IEC 29119 Software Testing22
1.8软件测试人员能力素质要求26
1.9术语与缩略语27
第2章静态测试技术29
2.1文档审查29
2.1.1实施要点30
2.1.2组织与流程30
2.1.3成果形式31
2.2代码审查34
2.2.1实施要点34
2.2.2组织与流程35
2.2.3成果形式35
2.3静态分析38
2.3.1实施要点38
2.3.2组织与流程39
2.3.3成果形式40
2.4代码走查40
2.4.1实施要点40
2.4.2组织与流程40
2.4.3成果形式41
2.5静态测试技术分析41
〖1〗软件测试实用方法与技术〖1〗目录
第3章动态测试技术43
3.1白盒测试43
3.1.1概述43
3.1.2白盒测试基础46
3.1.3基本路径测试51
3.1.4控制结构测试53
3.1.5其他白盒测试技术61
3.2黑盒测试64
3.2.1概述64
3.2.2等价类划分65
3.2.3边界值分析68
3.2.4因果图与决策表法70
3.2.5组合测试75
3.2.6基于场景测试77
3.2.7错误推测法81
3.2.8黑盒测试技术分析84
3.3灰盒测试85
3.3.1概述85
3.3.2实施步骤86
3.3.3灰盒测试技术分析86
3.4动态测试技术分析87
第4章单元测试89
4.1概述89
4.1.1单元测试的定义89
4.1.2单元测试的目的89
4.1.3单元测试的重要性90
4.2单元测试原则92
4.3单元测试环境92
4.4单元测试策略94
4.4.1自顶向下94
4.4.2自底向上94
4.4.3独立单元95
4.5单元测试内容95
4.5.1功能测试96
4.5.2性能测试96
4.5.3接口测试96
4.5.4局部数据结构测试96
4.5.5边界条件测试97
4.5.6独立执行路径测试97
4.5.7错误处理测试97
4.6单元测试方法98
4.6.1静态测试98
4.6.2动态测试99
4.7单元测试用例设计100
4.8单元测试过程101
4.8.1测试策划102
4.8.2静态测试103
4.8.3动态测试111
4.8.4测试总结113
第5章集成测试114
5.1概述114
5.1.1集成测试的定义114
5.1.2集成测试的目的115
5.1.3集成测试的重要性116
5.2集成测试原则117
5.3集成测试环境117
5.4集成测试策略118
5.4.1大爆炸式集成119
5.4.2自顶向下集成120
5.4.3自底向上集成122
5.4.4三明治式集成123
5.4.5核心系统先行集成124
5.4.6分层集成125
5.4.7基于功能的集成126
5.4.8高频集成127
5.4.9基于进度的集成128
5.4.10基于使用的集成128
5.4.11基于风险的集成129
5.4.12客户/服务器系统的集成129
5.5集成测试内容130
5.6测试方法131
5.6.1体系结构分析131
5.6.2模块分析131
5.6.3接口分析132
5.6.4可测试性分析133
5.6.5集成测试策略分析133
5.7集成测试用例设计133
5.8集成测试过程134
5.8.1测试策划135
5.8.2测试设计与实现137
5.8.3测试执行138
5.8.4测试总结138
第6章配置项测试140
6.1概述140
6.1.1配置项测试的定义140
6.1.2配置项测试的目的140
6.1.3配置项测试的重要性141
6.2配置项测试原则141
6.3配置项测试环境142
6.4配置项测试策略143
6.5配置项测试内容143
6.6配置项测试方法144
6.6.1功能测试145
6.6.2性能测试146
6.6.3接口测试147
6.6.4人机交互界面测试148
6.6.5强度测试149
6.6.6余量测试149
6.6.7安全性测试150
6.6.8恢复性测试151
6.6.9边界测试152
6.6.10数据处理测试152
6.6.11安装性测试153
6.6.12容量测试154
6.7配置项测试用例设计154
6.7.1概述154
6.7.2SFME&FTA;综合分析155
6.7.3建立软件测试用例设计模式158
6.7.4应用实例159
6.8配置项测试过程161
6.8.1测试策划162
6.8.2测试设计与实现163
6.8.3测试执行164
6.8.4测试总结164
第7章系统测试166
7.1概述166
7.1.1系统测试的定义166
7.1.2系统测试的目的166
7.1.3系统测试的重要性167
7.2系统测试原则167
7.3系统测试环境168
7.4系统测试策略168
7.5系统测试内容169
7.6系统测试方法169
7.6.1可靠性测试169
7.6.2互操作性测试172
7.6.3兼容性测试173
7.7系统测试用例设计174
7.7.1概述174
7.7.2系统形式化模型175
7.7.3基于模型的系统测试178
7.7.4实例182
7.8系统测试过程184
第8章回归测试185
8.1概述185
8.1.1回归测试的定义185
8.1.2回归测试的目的186
8.1.3回归测试的重要性186
8.2回归测试策略187
8.3软件更动影响域分析方法187
8.3.1黑盒测试更动影响域分析187
8.3.2白盒测试更动影响域分析191
8.4回归测试用例设计195
8.4.1回归测试用例设计原则195
8.4.2已有测试用例的选取195
8.5回归测试过程198
第9章面向对象软件测试200
9.1面向对象软件简介200
9.2面向对象软件测试概述203
9.2.1面向对象软件的特点对测试的影响203
9.2.2面向对象软件测试和传统测试的不同204
9.2.3面向对象软件测试分类205
9.3面向对象软件测试模型205
9.3.1面向对象分析测试206
9.3.2面向对象设计测试208
9.3.3面向对象编程测试208
9.3.4面向对象单元测试209
9.3.5面向对象集成测试212
9.3.6面向对象系统测试215
第10章FPGA测试218
10.1FPGA测试概述218
10.1.1可编程逻辑器件的基本概念218
10.1.2硬件描述语言的发展历程219
10.1.3VHDL语言219
10.1.4Verilog HDL语言220
10.1.5面向可编程逻辑器件的开发过程220
10.1.6可编程逻辑器件软件与传统软件的不同222
10.1.7全过程域的可编程逻辑器件测试框架223
10.2静态测试223
10.2.1文档审查224
10.2.2代码审查227
10.2.3编码规则检查229
10.2.4跨时钟域分析230
10.2.5等效性验证235
10.2.6静态时序分析239
10.3仿真测试243
10.3.1仿真测试的特点244
10.3.2仿真测试平台的组成245
10.3.3仿真测试的流程245
10.3.4功能仿真测试247
10.3.5门级仿真测试248
10.3.6时序仿真测试248
10.3.7仿真测试支持工具249
10.4软硬协同验证250
10.4.1验证环境构成250
10.4.2支持工具251
10.5板级验证251
10.5.1作用251
10.5.2板级验证的典型环境252
10.5.3板级验证的流程252
第11章测试工具254
11.1概述254
11.2静态测试工具255
11.2.1Logiscope255
11.2.2PRQA257
11.2.3SpyGlass259
11.2.4PrimeTime261
11.2.5Formalpro261
11.2.6其他静态测试工具262
11.3动态测试工具262
11.3.1QACenter262
11.3.2WinRunner265
11.3.3JUnit266
11.3.4Testbed268
11.3.5CodeTest270
11.3.6QuestaSim271
11.3.7其他动态测试工具272
11.4测试管理工具272
11.4.1TestCenter272
11.4.2TP�睲anager274
11.4.3其他测试工具278
第12章软件测试文档279
12.1概述279
12.2制定测试计划280
12.2.1测试计划内容280
12.2.2测试计划模板281
12.2.3测试计划常见问题284
12.3测试设计与实现285
12.3.1测试设计与实现的内容286
12.3.2测试说明模板287
12.3.3测试设计与实现常见问题288
12.4测试执行290
12.4.1测试执行的内容290
12.4.2测试执行模板290
12.4.3测试实施常见问题292
12.5测试总结293
12.5.1测试总结的内容293
12.5.2测试总结模板294
12.5.3测试总结常见问题296
参考文献298
精彩书摘
CHAPTER 3第3章
动态测试技术
与静态测试不同,动态测试需要首先设计测试用例,然后一次或多次运行被测软件,并通过分析软件运行结果与期望结果的差异,来分析被测软件是否满足要求。
前面已经介绍,软件测试有多种分类方法。从是否关注被测程序的内部结构和实现细节的角度,软件测试可分为白盒测试、黑盒测试,以及灰盒测试。
白盒测试利用程序设计的内部逻辑和控制结构生成测试用例,进行软件测试;黑盒测试方法主要通过分析规格说明中被测软件输入和输出的有关描述来设计测试用例,不需要了解被测软件的实现细节;灰盒测试是介于白盒测试和黑盒测试之间的一种测试方法,基于程序运行时的外部表现并结合程序内部逻辑结构来设计测试用例,采集程序外部输出和外部接口数据以及路径执行信息来衡量测试结果,对软件程序的外部需求及内部路径都进行检验。
3.1白盒测试〖1〗3.1.1概述图3��1白盒测试的基本原理图白盒测试(white�瞓ox testing)也称结构测试、逻辑驱动测试或基于程序的测试。根据GB/T 11457—2006,结构测试(structural testing)是“侧重于系统或部件内部机制的测试。类型包括分支测试、路径测试、语句测试”。白盒测试将测试形象地比喻成把程序放在一个透明的盒子里,如图3��1所示,测试人员了解被测程序的内部结构,利用程序的内部逻辑结构和相关信息,对程序的结构和路径进行测试。白盒测试是从程序设计者的角度进行的测试。
白盒测试的方法总体上可分为静态方法和动态方法两大类。静态方法是不实际执行程序而进行的测试,主要是检查程序代码或文档的表示和描述是否一致、符合要求以及有无冲突或歧义。文档审查、代码审查、静态分析、代码走查等都属于静态测试方法,已在第2章中进行了介绍。
动态测试的主要特点是当软件在真实的或模拟的环境中执行之前、之后及执行当中,对软件行为进行分析。动态测试时,软件在受控的环境下使用特定的期望结果进行正式运行,显示其在检查状态下是正确还是不正确。在本节后续小节中,将主要介绍动态白盒测试技术,包括基本路径测试、控制结构测试和其他的技术。
基本路径测试对程序设计复杂度进行合理度量,并以此为指导来定义一个基本路径集合。基本路径测试对所有独立路径进行测试,这些独立路径能组成程序的任意一条路径,因此能够满足分支测试的要求。基本路径测试通过对基本路径集生成测试用例,保证程序中的每条语句在测试中至少被执行一次。
控制结构测试是由基本路径测试演化而来的,对程序中语句或指令的执行顺序进行控制,其主要目标是选择测试用例以满足代码的各种覆盖准则。控制结构测试通常包括对判定的测试、对循环的测试、对数据流的测试等。
〖1〗软件测试实用方法与技术〖1〗第3章动态测试技术下面给出一段代码示例,本节后续小节将结合该代码开展相关介绍。
问题描述: NextDate是一个函数,作用是根据输入的日期(年、月、日)计算后一天的日期。假设NextDate函数接收的输入值均为合法值,对输入值是否合法的判断在其他函数中完成,在此不再列出。
……
前言/序言
“软件开发与测试”丛书序
为应对“软件危机”的挑战,人们在20世纪60年代末提出借鉴传统行业在质量管理方面的经验,用工程化的思想来管理软件,以提高复杂软件系统的质量和开发效率,即软件工程化。40多年以来,软件已广泛应用到各个工程领域乃至生活的各个方面,极大地提高了社会信息化水平,软件工程也早已深入人心。
质量是产品的生命,对软件尤其如此。软件的直观性远不及硬件,软件的质量管理相对困难得多;但与传统行业类似,大型复杂软件的质量在很大程度上取决于软件过程质量。质量评估是质量管理的关键,没有科学的评估标准和方法,就无从有效地管理质量,软件评测是质量评估的最有效和最重要的手段之一。
北京跟踪与通信技术研究所软件评测中心是从事软件评测与工程化管理的专业机构,是在我国大力发展航天事业的背景下,为保障载人航天工程软件质量,经原国防科工委批准,国内最早成立的第三方软件评测与工程化管理的技术实体组织之一。自成立以来,软件评测中心出色地完成了以载人航天工程、探月工程为代表的数百项重大工程关键软件评测项目,自主研发了测试仿真软件系统、测试辅助设计工具、评测项目与过程管理软件等一系列软件测试工具,为主制订了GB/T 15532—2008《计算机软件测试规范》、GB/T 9386—2008《计算机软件测试文档编制规范》、GJB 141《军用软件测试指南》等软件测试标准,深入研究了软件测试自动化、缺陷分析与预测、可信性分析与评估、测试用例复用等软件测试技术,在嵌入式软件、非嵌入式软件和可编程逻辑器件软件等不同类型软件测试领域,积累了丰富的测试经验和强大的技术实力。
为进一步促进技术积累和对外交流,北京跟踪与通信技术研究所组织编写了本套丛书。本丛书是软件评测中心多年来技术经验的结晶,致力于以资深软件从业者和工程一线技术人员的视角,融会贯通软件工程特别是软件测试、质量评估与过程管理等领域相关的知识、技术和方法。本丛书的特色是重点突出、实用性强,每本书针对不同方向,着重介绍实践中常用的、好用的技术内容,并配以相应的范例、模板、算法或工具,具有很高的参考价值。
本丛书将为具有一定知识基础和工作经验、想要实现快速进阶的从业者提供一套内容丰富的实践指南。对于要对工作经验较少的初入职人员进行技术培训、快速提高其动手能力的单位或机构,本丛书也是一套难得的参考资料。
丛书编审委员会
2015年5月6日软件测试是保障软件质量的重要手段,是构建高可信软件的关键环节。随着软件应用的日益广泛,人们对软件测试重要性的认识越来越深刻。20世纪80年代以来,特别是在最近一二十年间,软件测试无论是作为一项技术、一门学科还是作为一个行业,都得到了快速蓬勃的发展。
本书定位于一本软件测试方法和技术的实用指南,紧扣软件测试实际和标准规范要求,结合行业内软件测试现状,系统地介绍软件测试相关的知识、方法、技术和软件工具,给出较为详细的软件测试过程技术文档模板。
本书旨在帮助软件从业人员了解软件测试的基础知识
软件测试实用方法与技术/软件开发与测试丛书 电子书 下载 mobi epub pdf txt