环形复杂度等于流图中的区域数。
流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数的,N是结点数。
流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。 3.环形复杂度的用途
它是对测试难度的一种定量度量,也能对软件最终的可靠性给出某种预测。
实践表明,模块规模以V(G)<=10为宜。 6.5.2 Halstead
根据程序中运算符和操作数的总数来度量程序的复杂程度。 N=N1+N2 程序总长度:N
运算符出现的总次数:N1
操作数出现的总次数:N2
Halstead给出的预测程序长度的公式: H=n1log2n1+n2log2n2
预测程序中包含错误的个数的公式: E=Nlog2(n1+n2)/3000
第七章 实现
概念:编码和测试统称为实现。
31
编码:把软件设计结果翻译成程序。 测试:检测程序并改正错误的过程。
编码
选择程序设计语言
1.计算机程序设计语言基本上可以分为两大类: 1):汇编语言 2):高级语言
2.选择语言时应考虑的实用标准: 系统用户要求 可以使用的编译程序 可以得到的软件工具 工程规模 程序员的知识 软件可移植性要求 软件的应用领域 编码风格 程序内部的文档 数据说明 语句构造 输入输出 效率
软件测试基础
32
7.2.1 软件测试的目标 1.有关测试的一些规则:
测试是为了发现程序中的错误而执行程序的过程
好的测试方案是极可能发现迄今为止尚未发现的错误的测试 成功的测试是发现多了至今为止尚未发现的错误的测试 软件测试准则
所有测试都应该追溯到用户要求
应该远在测试开始之前就制定出侧是计划 把Pareto原理应用到软件测试中
应该从“小规模”测试开始,并逐步进行“大规模”测试 穷举测试是不可能的
为了达到最佳的测试效果,应该由独立的第三方从事测试工作 测试方法 黑盒测试 白盒测试 测试步骤 模块测试 子系统测试 系统测试 验收测试 平行运行
测试阶段的信息流
33
单元测试
测试重点: 模块接口 局部数据结构 重要的执行通路 出错处理通路 边界条件 代码审查 计算机测试
集成测试
自顶向下集成
自顶向下集成是一种递增的装配软件结构的方法,这种应用方法非常广泛。它需要存根程序,不需要驱动程序。 自底向上集成
自底向上集成是从软件结构最底层模块开始进行组装和测试,它与自顶向下结合方法相反,需要驱动程序,但是不需要存根程序。 不同集成测试策略的比较 回归测试
包括3类不同的测试用例
检测软件全部功能的代表性测试用例
专门针对可能受修改影响的软件功能的附加测试 针对被修改过的软件成分的测试
34
确认测试
7.5.1 确认测试的范围
确认测试的两种可能的结果:
功能和性能与用户要求一致,软件是可以接受的 功能和性能与用户要求有差距 软件配置复查 Alpha和Beta测试
Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。
Beta测试由软件的最终用户在一个或多个客户场所进行
白盒测试
逻辑覆盖 语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 条件组合覆盖 点覆盖 边覆盖 路径覆盖 控制结构测试 基本路径测试:
35
相关推荐: