您现在的位置:首页 > >

软件测试的基本概念和方法


第二章 软件测试的基本概念和 方法

主要内容
? 2.1软件质量就是客户的满意度 ? 2.2软件缺陷是什么 ? 2.3软件测试的基本方法 ? 2.4软件测试的分类和阶段 ? 2.5软件测试的工作范畴

2.1软件质量就是客户的满意度
? 质量:
? IEEE-系统、部件或过程满足明确需求 ? RUP-满足或超出认定的一组需求,并使用经
过认可的评测方法和标准来评估,还使用认定 的流程来生产。

软件质量
? 由三部分构成:
? 产品的质量,满足使用要求的程度 ? 开发过程的质量,能否满足开发所带来的成本、
时间和风险等要求。 ? 软件在商业环境中所表现的质量

产品质量
? 功能性 ? 可用性 ? 可靠性 ? 性能 ? 容量 ? 可测量性 ? 可维护性 ? 兼容性 ? 可扩展性

过程质量
? 主要流行的过程改进模型:
? CMM ? ISO9000 ? 软件过程改进和能力决断

商业环境中所体现的质量
? 涉及与其商业应用环境相关的因素:
? 产品的客户培训 ? 向市场发布的日程安排 ? 商业风险评估 ? 产品的客户、维护和服务成本

2.2软件缺陷是什么
? 软件错误产生的主要原因:
? 需求说明的错误 ? 需求中的功能无法实现 ? 系统设计的不合理 ? 代码错误

软件缺陷
? 软件产品中所存在的问题,最终表现为用 户所需要的功能没有完全实现,没有满足 用户的需求。

软件缺陷的主要类型
? 功能、特性没有实现或部分实现 ? 设计不合理,存在缺陷 ? 实际结果和预期结果不一致 ? 运行出错 ? 数据结果不正确,精度不够 ? 用户不能接受其他的问题:界面,存取时
间……

缺陷的严重性级别
? 致命的 ? 严重的 ? 一般的 ? 微小的

软件缺陷的主要原因
? 技术问题 ? 团队工作 ? 软件本身

软件缺陷集中地
? 规格说明书:54% ? 设计:25% ? 代码:15% ? 其他:6%

修复软件缺陷的代价
? 缺陷被发现要尽快修复?
? 解决得越迟,成本越高。

2.3软件测试的原则
? 十项原则

软件测试的基本方法
? 动态测试-静态测试 ? 黑盒测试-白盒测试

黑盒测试
? 不管程序内部结构,只从用户出发,根据 产品应该实现的实际功能和已经定义好的 产品规格,来验证产品所应该具有的功能 是否实现,每个功能是否能正常使用,是 否符合用户需求。

黑盒测试用途
? 是否有不正确或遗漏 ? 是否能正确接受输入,产生正确输入 ? 访问外部信息是否有错 ? 性能上是否满足要求 ? 界面是否错误,不美观 ? 初始化和终止错误

黑盒测试的方法
? 等价类划分 ? 边界值分析 ? 错误推测 ? 因果图

白盒测试
? 已知产品的内部工作过程,清楚最终生成 软件产品的计算机程序的结构和语句,按 照程序内部的结构测试程序,测试程序内 部变量状态、逻辑结构、运行路径等,检 验程序中的每条通路是否都能按预定要求 正确工作,运行是否符合设计规格。

白盒测试主要方法
? 逻辑覆盖
? 语句覆盖、判定覆盖、条件覆盖、判定/条件 覆盖、条件组合覆盖、路径覆盖
? 基本路径测试

静态测试
? 对模块源代码进行研读,查找错误或收集 一些度量数据,并不需要对代码进行编译 和仿真运行。
? 主要方法:
? 人工检测-编码风格、质量检查、对各阶段软 件产品进行检查
? 计算机辅助静态分析-利用静态分析工具

静态测试主要测试对象
? 软件产品设计规格说明书 ? 程序代码

动态测试
? 通过观察代码运行时的动作来提供执行跟 踪、时间分析,以及测试覆盖度方面的信 息,通过真正运行程序发现错误。

验证和确认
? 验证:
? 检验软件是否已经正确地实现了产品规格说明 书所定义的系统功能和特性。
? 有效性确认:
? 保证所生产的软件可以追溯到用户需求 ? 确认过程提供证据标明软件是否满足系统需求,
并解决了相应问题。

自动化测试和随机测试
? 自动化测试:
? 通过一些软件工具进行,尤其是有些无法通过 手工测试来完成的,如负载测试、性能测试等。
? 随机测试:
? 设计测试工具,模拟客户操作的随意性,进行 大量的、自动化的随机测试。

2.4软件测试的分类和阶段
1. 按范围分:
? 单元测试 ? 组建测试 ? 集成测试 ? 系统测试 ? 验收测试 ? 安装测试

2. 按测试目的分
? 正确性测试:白盒-黑盒 ? 性能测试 ? 可靠性测试:强壮性、异常处理、负载 ? 安全性测试

3. 按测试对象分:
? 单元测试 ? 组件测试 ? 模块测试 ? 程序测试 ? 系统测试 ? 文档测试

4. 按测试过程分类:
? 需求阶段测试 ? 设计阶段测试 ? 程序阶段测试 ? 测试结果的评估 ? 安装测试 ? 验收测试 ? 测试变化

5. 其他测试技术和方法
? 回归测试 ? 压力测试 ? 恢复测试 ? 安全测试 ? 兼容性测试

软件测试的误区
1. 如果发布出去的软件质量有问题,那是 测试人员的错。
2. 软件测试技术要求不高,比编程容易多 了。
3. 有时间就多测一些,来不及就少测一些。 4. 软件测试是测试人员的事,与开发人员
无关。 5. 根据软件开发瀑布模型,软件测试是开
发后期的一个阶段。

测试的阶段

不同测试阶段
1. 规格说明书审查 2. 系统和程序设计审查 3. 单元测试 4. 集成测试 5. 功能测试 6. 确认测试 7. 系统测试 8. 验收测试 9. 安装测试

2.5软件测试的工作范畴
? 基本上分为两个层次:
1. 软件测试工作的组织与管理:
? 制定测试策略、测试计划 ? 确认所采用的测试方法与规范 ? 控制测试进度,管理测试资源
2. 测试工作的实施:
? 编制符合标准的文档 ? 研制测试环境,与开放组织协作实现各阶段的
测试活动

测试计划制定
? 测试计划中明确要完成的测试活动,评估 完成获得所需要的时间和资源等,主要内 容包括:
? 制定测试策略 ? 制定测试范围 ? 测试用例的设计方法和要点 ? 所需资源和日程安排

设计测试用例
? 测试用例:
? 按一定顺序执行的与测试目标相关的测试活动 的描述
? 是有效发现软件缺陷的最小测试执行单元,也 被视为软件的测试规格说明书。
? 特点:可复用性、有效性、可管理性、继承性、 基础性。

测试结果分析和质量报告
? 分析的对象和内容:
? 测试覆盖率 ? 缺陷分析 ? 产品总体质量分析 ? 过程分析

测试的覆盖率
? 语句覆盖率 ? 分支覆盖率 ? 子程序调用覆盖率 ? 数据值覆盖率 ? 面向对象覆盖率 ? MC/DC代码覆盖率

BUG分析
? Bug分布 ? 测试的效率 ? 程序的质量 ? 开发解决bug的能力或状态



友情链接: 幼儿教育 小学教案 初中教案 高中教案 职业教育 成人教育