软件测试PPT 第02章 软件测试基本概念

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CPU占用率、内存占用率 响应时间、负载容量等

可靠性:软件坚固性和可靠性、代码完整性以及技术 兼容性

进一步展开这三维质量特征,可以参考McCall质 量模型
2
2013-2-8
McCall质量模型
正确性
阐述性 正确性 连贯性 容错性 执行效率/储存效率 存取控制/存取检查 可操作性 可训练 沟通良好 简单性 易操作的 工具 自我操作性 扩展性 一般性 模块性

开发人员开发经验不足 对采用的新技术不熟悉 程序模块复杂度高 接口参数多 其他
2013-2-8
13
缺陷的产生(2)

软件本身

不合理的软件开发流程 文档错误 没有考虑软件实际使用场景,导致出现负载问题 对程序的逻辑路径或数据范围的边界考虑不周全 与硬件、第三方提供软件间的接口依赖性 其他
General Technique—Tarantula
t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 mid() { int x,y,z,m; 1:read(“Enter 3 integers:”,x,y,z); 2:m = z; 3:if (y<z) 4: if (x<y) 5: m = y; 6: else if (x<z) 7: m = y; 8:else 9: if (x>y) 10: m = z; 11: else if (x>z) 12: m = x; 13:print(“Middle number is:”, m); } Pass/fail Status P P P P P P F F 3,3,5 1,2,3 3,2,2 5,5,5 1,1,4 5,3,4 3,2,1 2,1,3 5,4,2 5,2,6 suspiciousness
0.50 0.50 0.50 0.43 0.00 0.50 0.60 0.60 0.60 0.75 0.00 0.00 0.50 F F
General Technique—Tarantula
t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 mid() { int x,y,z,m; 1:read(“Enter 3 integers:”,x,y,z); 2:m = z; 3:if (y<z) 4: if (x<y) 5: m = y; 6: else if (x<z) 7: m = y; 8:else 9: if (x>y) 10: m = z; 11: else if (x>z) 12: m = x; 13:print(“Middle number is:”, m); } Pass/fail Status P P P P P P F F 3,3,5 1,2,3 3,2,2 5,5,5 1,1,4 5,3,4 3,2,1 2,1,3 5,4,2 5,2,6 suspiciousness rank 9 9 9 10 13 9 4 4 4 1 13 13 9
2013-2-8 22
General Technique—Tarantula
t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 mid() { int x,y,z,m; 1:read(“Enter 3 integers:”,x,y,z); 2:m = z; 3:if (y<z) 4: if (x<y) 5: m = y; 6: else if (x<z) 7: m = y; 8:else 9: if (x>y) 10: m = z; 11: else if (x>z) 12: m = x; 13:print(“Middle number is:”, m); } Pass/fail Status P P P P P P F F 3,3,5 1,2,3 3,2,2 5,5,5 1,1,4 5,3,4 3,2,1 2,1,3 5,4,2 5,2,6 F F
设计, 25%
2013-2-8
16
修复软件的代价

Boehm在其著作《软件工程经济学》中提到

如果需求阶段纠正一个错误的代价是1 设计阶段是它的3~6倍 编程阶段是它的10倍 内部测试阶段是它的20~40倍 外部测试阶段是它的30~70倍 产品发布时,这个数字是40~1000倍
2013-2-8
4
ISO 9126模型

功能性 可用性 可靠性 性能 容量 可测量性 可维护性 兼容性 可扩展性
5
2013-2-8
2.2 验证与确认

验证(Verification)



在软件开发的某个阶段,判断该阶段开发出的产品是 否满足上一个阶段的测试需求 依赖于上一个阶段的软件制品、测试需求和产品规格 说明书 我们在正确的构造产品吗? 软件开发过程结束后,确保最终的软件产品与用户的 预期需求保持一致 依赖于与产品相关的领域知识 我们在构造正确的产品吗?
南通大学 Nantong University
软件测试技术
陈翔 博士 xchencs@ntu.edu.cn 南通大学 计算机科学与技术学院
2013-2-8
1
2.1 软件质量

IBM RUP(统一过程)将软件产品质量定义为 三个维度

功能:按照既定意图和要求,执行指定用例的能力 性能:系统的资源利用率和操作特征

错误(Errors)

因缺陷导致的不正确的程序内部状态
相对于测试需求或预期行为描述来说外在不正确的行 为

失效(Failures)

2013-2-8
8
与医生看病过程类比

病人生病

打喷嚏、发高烧、流鼻涕(相当于发现失效) 安排病人去测血压、量心跳等,看是否存在数据异常 (相当于观察错误) 确定病人感冒(相当于定位缺陷)

基于启发式公式为计算出程序语句的怀疑率
2013-2-8
21
一种经典公式:Tarantula 方法(ASE’05)

程序实体s的怀疑率计算公式
Intuition: Statements primarily executed by failing test cases are more suspicious than statements primarily executed by passing test cases
2013-2-8
10
RIP模型


假设被测程序内部存在缺陷,是不是所有测试用 例都能触发这个缺陷? RIP模型给出了确保内部缺陷触发外在失效的三 个必要条件



可达性(Reachability):测试用例必须执行包含缺 陷的语句 传染性(Infection):缺陷语句执行后必须导致程序 内部状态出现错误 传播性(Propagation):不正确的程序内部状态通 过传播语句导致程序的实际输出与预期输出不一致
软件系统独立性
产品 操作
可靠性 效率 完整性
可用性
可维护性
产品 修改 产品 维护
2013-2-8
可测试性 灵活性
可移植性
重复性
互用性
机器独立性 通讯公开性 数据公开性
3
ISO 9126模型

将质量模型分为三层

高层:软件质量需求评价准则 中层:软件质量设计评价准则 底层:软件质量度量评价准则

代价不是呈线性增长,而是呈指数级增长
2013-2-8
17
缺陷成本
2013-2-8
18
2.4 软件测试和调试

软件测试(Software Testing)

设计高质量测试用例,旨在触发软件失效 当检测到被测软件失效时,找到包含缺陷的语句

软件调试(Software Debugging)

2013-2-8

医生诊断


医生确定症状根源

2013-2-8
9
实例解释
测试用例1: 输入: x={1,0,2} 预期输出:1 实际输出:1 该测试用例不能触发失效,所 以不能检测出缺陷 测试用例2: 输入: x={0,1,2} 预期输出:1 实际输出:0 该测试用例触发失效 源于变量count的取值错误
wenku.baidu.com
缺陷语句,应该是i=0
General Technique—Tarantula
t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 3,3,5 1,2,3 3,2,2 5,5,5 1,1,4 5,3,4 3,2,1 2,1,3 5,4,2 5,2,6 mid() { int x,y,z,m; 1:read(“Enter 3 integers:”,x,y,z); 0.50 2:m = z; 3:if (y<z) 4 4: if (x<y) 5: m = y; susp(1) 4 0.50 6 4 6: else if (x<z) 4 7: m = y; 6 8:else 9: if (x>y) 10: m = z; 11: else if (x>z) 12: m = x; 13:print(“Middle number is:”, m); } Pass/fail Status P P P P P P F F F F suspiciousness
2013-2-8
14
缺陷的产生(3)

团队协作问题

对软件质量问题不重视 对客户需求未调研清楚或存在误解 不同阶段开发人员理解不一致 其他
2013-2-8
15
缺陷的构成

规格说明书是缺陷最容易出现的地方

开发人员与用户的沟通问题 需求的频繁变动
其他, 6%
代码, 15%
规格说明书, 54%
11
2013-2-8
实例解释
测试用例1: 输入: x={1,0,2} 预期输出:1 实际输出:1 测试用例1仅满足R条件 测试用例2: 输入: x={0,1,2} 预期输出:1 实际输出:0 测试用例2满足R条件、I条件 和P条件
缺陷语句,应该是i=0
2013-2-8
12
缺陷的产生(1)

技术问题
19
缺陷定位研究背景


统计数据表明:软件测试占软件开发和维护成本 的50%到75%,而其中代价最为高昂的任务就是 软件调试。 传统方式

设置断点、执行失效测试用例、跟踪变量取值、最终 确定失效语句
2013-2-8
20
Fault Localization

缺陷定位问题描述

给定通过/未通过测试用例的覆盖信息,识别出包含 缺陷的程序语句
General Technique—Tarantula
t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 3,3,5 1,2,3 3,2,2 5,5,5 1,1,4 5,3,4 3,2,1 2,1,3 5,4,2 5,2,6 mid() { int x,y,z,m; 1:read(“Enter 3 integers:”,x,y,z); 0.50 2 2:m = z; ) .60 3:if (y<z) susp(7 4 0 2 2 4: if (x<y) 5: m = y; 6 4 6: else if (x<z) 0.60 7: m = y; 8:else 9: if (x>y) 10: m = z; 11: else if (x>z) 12: m = x; 13:print(“Middle number is:”, m); } Pass/fail Status P P P P P P F F F F suspiciousness
6

确认(Validation)


2013-2-8
独立的验证与确认(IV & V)

Independent Verification & Validation 独立的含义

验证与确认的评价由非开发人员提供
2013-2-8
7
错误、缺陷和失效

缺陷(Faults)

软件中存在的静态不足(Defect) 一般产生于程序员的编码过程
相关文档
最新文档