《软件子系统测试》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)Brian Marick著;韩柯等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2003
  • ISBN:7111127943
  • 页数:472 页
图书介绍:本书重点介绍了子系统的测试技巧。

子系统测试概述 1

第一部分 基本手段 16

第1章 规格说明 16

1.1 规格说明的要素 16

1.1.1 前提 16

1.1.2 后果 17

1.1.3 定义 18

1.2 检查规格说明 19

1.2.1 不完备 19

1.2.2 模糊 19

第2章 SREADHEX例子介绍 20

2.1 引入 20

2.2 规格说明 21

2.3 代码 23

第3章 构建测试需求检查单 26

3.1.1 前提与后果 27

3.1 查找规格说明中的线索 27

3.1.2 变量 28

3.1.3 操作 28

3.1.4 定义 28

3.2 查找代码中的线索 29

3.2.1 变量 29

3.2.2 模式操作 30

3.2.3 函数调用 31

3.3 找出SREADHEX的线索 32

3.3.1 代码 34

3.3.2 我们现在所处的位置 36

3.4 通过前提、后果和定义获取测试需求 36

3.4.1 简单验证前提 36

3.4.2 使用OR的验证前提 37

3.4.3 使用AND的验证前提 40

3.4.4 AND和OR组合验证前提 41

3.4.5 假设前提 42

3.4.6 后果 43

3.4.7 定义 45

3.5 找出SREADHEX的测试需求 46

3.6 通过大纲确定测试需求 51

3.7 通过SREADHEX说明大纲的使用 52

3.8 我们现在所处的位置 77

3.9 使用测试需求大纲规则小结 78

3.10 集成测试需求 79

3.10.1 集成测试需求的一个例子 81

3.10.2 另一个例子 81

3.10.3 最后一个例子 83

3.11 SREADHEX的集成测试需求 83

3.12 错误猜测 83

3.13 根据规格说明扫描代码 84

第4章 测试规格说明 85

4.1 标记将要使用的规格说明 86

4.2 一般测试规格说明 86

4.3 错误测试规格说明 93

4.4 构建测试规格说明要注意的问题 94

4.5 有关测试形式的规则 95

4.6 有关测试内容的规则 96

4.7 分别测试规格说明和代码 99

4.7.1 通过规格说明处理需求 99

4.7.2 根据代码进行需求的while处理 100

4.8 SREADHEX测试规格说明 100

4.8.1 设计注释 102

4.8.2 测试1 103

4.8.3 测试2 104

4.8.4 测试3 109

4.8.5 测试3(续) 111

4.8.6 测试4 114

4.8.7 测试5、6和7 118

4.8.8 测试8 119

4.9 我们现在所处的位置 122

5.1.2 比较实际结果和预期结果 123

5.1.1 向子系统提供输入 123

5.1 测试驱动器 123

第5章 测试驱动器与套件驱动器 123

5.2 套件驱动器 125

5.3 测试自己的驱动器 126

5.4 SREADHEX驱动器 126

5.4.1 大纲与文件结构 126

5.4.2 驱动器与桩 127

5.4.3 运行测试 128

5.5 我们现在所处的位置 129

第6章 采用问题大纲审查代码 130

6.1 责任 131

6.2 审查SREADHEX 132

第7章 利用覆盖率检验测试套件 134

7.1 覆盖率的类型 134

7.2 不可行的覆盖率 136

7.3 运用覆盖率信息 137

7.3.2 需要小心运用覆盖率的一个例子 139

7.3.1 覆盖率成本的一个例子 139

7.4 一个较大例子 140

7.4.1 程序 140

7.4.2 使用通用覆盖率工具(GCT) 141

7.4.3 覆盖率 142

7.4.4 新测试 145

7.5 SREADHEX的覆盖率 145

7.6 我们现在所处的位置 149

第8章 清理 150

第9章 其他提示 151

9.1 使用优先级较低的需求 151

9.2 不确定的限制 151

第二部分 实施子系统测试 154

第10章 实施 154

10.1 运用覆盖率 154

10.2 改进测试规格说明 154

10.3 改进测试需求 155

10.4 并行改进规格说明分析 156

第11章 完善 157

第三部分 实践中的子系统测试 162

第12章 使用更典型的规格说明 162

12.1 例子:GREPORT 163

12.2 过程 165

12.3 练习 172

12.4 通过代码导出规格说明 175

13.1.1 制订测试进度表 180

13.1 复杂性的应对方案 180

第13章 处理大型子系统 180

13.1.2 例程需求 181

13.1.3 较大子系统中的ERROR需求 183

13.2 大型子系统的危险 185

13.2.1 内部测试驱动器 186

13.2.2 外部调试器 189

13.2.3 没有调试器时的方法 189

13.3 选择子系统 189

第14章 测试错误修改与其他维护变更 191

14.1 一个例子 193

14.2 测试变更的基本过程 193

14.3 传播缺陷 197

14.4 相似性缺陷 200

14.5 测试较大变更 201

14.6 测试套件退化 202

第15章 时间进度压力下的测试 203

15.1 没有足够时间的测试 203

15.2 几乎没有足够时间的测试 204

第四部分 举例与扩展 206

第16章 句法测试 206

16.1 符号 206

16.2 测试需求 208

16.2.1 邻近项 209

16.2.2 序列 209

16.2.3 替换项 209

16.2.4 简单重复 210

16.2.5 重复与替换项 211

16.3 交互 213

第17章 第二个完整例子:MAX 215

17.1 规格说明 215

17.2 通过规格说明导出测试 216

17.2.1 线索 216

17.2.2 来自前提和后果的需求 217

17.2.3 扫描大纲 218

17.2.4 测试设计 227

17.3 通过代码导出测试 231

17.4 使用问题大纲 236

17.5 测试驱动器与测试运行 238

17.6 使用覆盖率 241

第18章 测试一致性关系 243

18.1 构建测试需求检查单 250

18.1.1 基本检查单 250

18.1.2 增加缺陷可视性的注释 253

18.1.3 测试这个例子 259

18.2.1 多于两个变量 261

18.2 多样性问题 261

18.2.2 检验子系统的其他部分 263

18.2.3 如果检查由库例程完成 266

18.2.4 未检查或不可能的ERROR需求 267

18.2.5 如果多个变量可以同时变更 267

第19章 状态机与状态图 271

19.1 状态机 271

19.1.1 实现 272

19.1.2 稀疏状态机 275

19.1.3 冗余迁移 275

19.2 状态图 276

19.2.1 状态行动 276

19.2.2 条件状态迁移 278

19.2.3 嵌套状态 279

19.2.4 历史信息 282

19.2.5 状态图实现框架 283

19.3.1 模型什么时候有用 285

19.3 什么时候和怎样构建模型 285

19.3.2 构建模型 286

19.4 审查状态机和状态图 288

19.4.1 检查模型 288

19.4.2 审查行动 291

19.4.3 检查实现映射 291

19.5 测试状态机和状态图 291

19.5.1 测试需求 292

19.5.2 来自状态图的需求 294

19.5.3 测试规格说明 296

19.5.4 测试实现 298

19.5.5 覆盖率 299

19.6 多个状态机 299

19.6.1 独立状态机 299

19.6.2 通信状态机 302

第20章 测试使用可重用软件的子系统 305

20.1 测试需求 305

20.2 覆盖率 307

第21章 测试基于对象的软件 308

21.1 背景 308

21.1.1 术语 309

21.1.2 其他方法 310

21.2 子系统规模与测试实现 310

21.2.1 两种特例 312

21.2.2 另一种方法 312

21.3 类测试需求大纲 313

21.3.1 组织 313

21.3.2 第一步:对象使用需求 314

21.3.3 第二步:状态机需求 315

21.3.4 第三步:成员函数集成需求 315

21.3.5 第四步:对象的聚合 316

21.4 使用类需求大纲 316

21.5 时间进度压力 316

第22章 面向对象的软件1:继承 318

22.1 测试规格说明与实现 320

22.2 导出类的类型 322

22.3 导出类需求大纲 325

22.3.1 复制基类需求大纲 325

22.3.2 处理新成员 327

22.3.3 处理顶替成员函数 327

22.3.4 处理继承成员函数 329

22.3.5 更新剩余的对象使用需求 330

22.3.6 更新状态机需求 330

22.3.7 多继承 331

22.4 成员函数的测试需求检查单 331

22.4.1 新的成员函数 331

22.4.2 顶替成员函数 331

22.4.3 继承成员函数 332

22.5 针对已变更外部例程的测试需求检查单 332

22.6 通用性(模板) 333

23.1 abstract_hash_table:一个抽象类 338

第23章 测试导出类的一个例子 338

23.2 hash_table:一个导出类 345

23.2.1 hash_table大纲 346

23.2.2 hash_table成员函数的测试需求检查单 347

23.2.3 hash_table测试规格说明与实现 349

23.3 checking_hash_table:另一个导出类 349

23.3.1 checking_hash_table大纲 350

23.3.2 checking_hash_table成员函数的测试需求检查单 352

23.3.3 实现checking_hash_table测试 353

23.4 abstract_hash_table<Item,sz>:模板类 353

第24章 面向对象的软件2:动态捆绑 357

24.1 虚拟调用需求大纲 357

24.1.1 捆绑虚拟调用大纲 358

24.1.2 怎样处理数据成员? 363

24.1.3 在变更中构建虚拟调用大纲 364

24.2.2 增加了导出类 365

24.2.3 维护 365

24.2 使用虚拟调用需求大纲 365

24.2.1 编写了新的外部代码 365

第五部分 测试需求的乘积 369

第25章 简单测试需求乘积 369

25.1 变量需求可达性 369

25.1.1 过程——通过规格说明和代码来处理 374

25.1.3 测试大型子系统的含意 376

25.1.4 举例:一致性检查 376

25.1.2 过程——只通过规格说明来处理 376

25.1.5 举例:根据sreadhex规格说明来处理 377

25.1.6 举例:构建sreadhex规格说明 378

25.2 复杂布尔表达式 379

25.2.1 导出需求的大纲 380

25.2.2 举例 382

25.3 创建布尔便利定义 382

25.3.1 过程 384

25.3.2 greport例子 386

25.3.3 greport的其他问题 387

25.4 数据流测试 389

25.5 一些理论 392

第26章 操作测试需求的乘积 394

26.1 过程 396

26.1.1 找出交互线索 396

26.1.2 乘积 398

26.1.3 覆盖率 399

26.1.4 举例 400

26.2 发散操作 401

第六部分 附录 404

附录A 测试需求大纲(学生版) 404

附录B 测试需求大纲(标准版) 414

附录C 与POSIX有关的测试需求大纲(部分样本) 432

附录D 代码审查问题大纲 435

附录E 复杂布尔表达式需求大纲 440

附录F 用于测试编写内容的检查单 447

参考文献 460

术语表 466