软件测试与维护
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
- 实施不需要特别条件,容易开展
- 一旦发现错误就知道错误的性质和位置, 不需要查错,因而修改成本低
非常重要并且行之 有效的测试方法!
大公司的经验值: 静态测试检测出的 错误 数可占总错 误数的80%以上
11
7.2.2. 静态测试的方法
静态测试的方法
审查:个人审查 /会议审查(适用于文档和代码) 走查:会议走查(只适用于代码)
35
3. 维护的种类
纠错性维护 软件中潜在错误,用户在使用软件时仍将会遇到错误,诊断 和改正这些错误的过程称为纠错性维护。
适应性维护 适应新硬件、操作系统以及支撑软件的升级,对软件进行的 修改和扩充活动称为适应性维护。
完善性维护 为了满足用户新的需求而增加软件功能的活动称为完善性维 护。
21
7.4.1. 单元测试概述
单元测试内容
对程序的基本组成单元进行的测试,验证每个单元是否完成了设计的预 期功能
单元的含义
一个函数,一个过程,或者一个类(可以根据具体情况划分)
单元测试的步骤
设计和编写测试用例
构造测试环境和设置测试数据
提交测试报告
修改与回归测试
实施测试
22
目录
7.1 概述 7.2 静态测试 7.3 动态测试 7.4 单元测试 7.5 集成测试 7.6 系统测试 7.7 验收测试
下面以纠正性维护为例,讨论软件维护的 工作。
38
纠错型维护的工作内容
收到故障报告后应该收集获得以下信息,以确认故障的问 题点:
- 发生时间; - 软件模块名、软件版本; - 操作系统版本; - 现象和内容:发生时的现象、事前的操作内容、发生后
的操作,再现性的有无性等; - 故障发生时其他运行的软件情况; - 硬件、网络的状况; - 软件的日志文件。
例:等价类划分中的例子
有效/ 无效
有 效 等 价 类
等价类 0分-59分
测试用例
“0” “1” “50” “58” “59”
说明
最小边界值 比最小边界值稍微大一点 中间任意值 比最大边界值稍微小一点 最大边界值
60分-100 。。。 。。。
“60” 。。。
最小边界值 。。。
20
目录
7.1 概述 7.2 静态测试 7.3 动态测试 7.4 单元测试 7.5 集成测试 7.6 系统测试 7.7 验收测试
预防性维护 为了改进未来的可维护性或可靠性,对软件重新设计,重新 编码和测试的工作称为预防性维护。
36
软件 维护
开发 纠错性维护 适应性维护 完善性维护
37
7.3 软件维护的工作
软件维护工作一般都应该包括确认维护要 求、修改软件需求说明、修改软件设计、设计 评审、对源程序做必要的修改、单元测试、集 成测试( 回归测试)、确认测试、软件配置评 审等。
大部分是白盒法
- 单元测试关注的是每个单元,每个模 块内部处理。
集成测试的步骤
基本与单元测试相同
24
7.5.2. 集成测试的策略
集成测试的策略
一次性集成方式 渐增式集成方式
集成测试特别提醒: 一般集成测试都是多个人联合进行,所以要求各个测试人员 要及时交流,密切配合,不能有思想上的依赖 。
2
3
4
0分
6ຫໍສະໝຸດ Baidu分
100分
有效/无效
等价类
测试用例
有效等价类
0分-59分
“50”
60分-100
“78”
无效等价类
0分以下
“-23”
100分以上
“156”
非整数
“63.5”
非数字的输入 “ab”
输入为空
“”
19
7.3.3.黑盒法
边界值分析法
经验表明处理边界情况时程序最容易发生错误,要特别注意重点测试。
例1的判定/条件覆盖测试用例: (1)A=2,B=0, C=4 (路径: ace) (2)A=1,B=1, C=1 (路径: abd)
5.条件组合覆盖:指列出判定中所有条件的各种组合值,每一个可能的条 件组合至少被执行一次的测试。
例1的条件组合覆盖测试用例: (1)A=2, B=0, C=4 (使得1和5的情况出现,路径:ace) (2)A=2, B=1, C=1 (使得2和6的情况出现,路径:abe) (3)A=1, B=0, C=2 (使得3和7的情况出现,路径:abe) (4)A=1, B=1, C=1 (使得4和8的情况出现,路径:abd)
软件测试与维护
1
本讲内容
● 软件测试 ● 软件维护
2
一 软件测试
3
1 概述 2 静态测试 3 动态测试 4 单元测试 5 集成测试 6 系统测试 7 验收测试
4
7.1.1. 测试的概念
测试的定义
IEEE给出的软件测试定义: 软件测试使用人工的或自动的手段来运行或检测某个系统的
过程, 其目的在于检验它是否满足约定的需求或是比较预期结果 与实际结果之间的差别。
3. 条件覆盖:指每一个判定条件中的每一个条件至少获得过一次可能的 值的测试 。
例1中在a点条件覆盖测试用例:
(1)A=3,B=0
• 判定覆盖关心整个判定表达式的
(2)A=1,B=1
值
• 条件覆盖关心判定表达式中的每
个
条件的值
16
7.3.2.白盒法
4.判定/条件覆盖 :同时满足判定覆盖和条件覆盖的测试。
23
7.5.1. 集成测试概述
集成测试的内容
集成测试是在单元测试的基础上,将所有的模块按照系统设计的要求 联 合起来进行的测试。
集成测试的对象
经过单元测试之后的程序
集成测试的方法
集成测试和单元测试的不能互相替代的:
- 集成测试关注的是各个模块的接口, 以及各个模块组合之后是否运行正常,
通俗说法: 找出一段程序或者一份软件文档中问题的工作 ,就叫做软件测试。
测试的对象
- 文档 - 程序
5
7.1.1. 测试的概念
测试的目的
能够证明软件正常工作 发现错误
常见误区:
发现错误是 软件测试的唯一目的
以提高软件质量,进行质量控制
6
7.1.2. 测试的过程
测试工作的主要内容
理解软件产品的功能要求和设计内容,并对其 进行测试,检查软件是否与用户需求一致、是否与 设计一致,写出相应测试结果报告。
7.3.2.白盒法
白盒法小结
类型
说明
测
语句覆盖
每个可执行语句至少要执行一次
试 弱 判定覆盖
每个判定分支至少执行过一次
的 强
↓
条件覆盖
每一个判定条件中的每一个条件至少获 得过一次可能的值
度 强 判定/条件覆盖 同时满足判定覆盖和条件覆盖的要求
条件组合覆盖 列出判定中所有条件的各种组合值,每 一个可能的条件组合至少被执行一次
40
修改程序
在分析理解原有程序并确认程序的错误点之后,就可以对 程序进行修改了。修改时应注意以下几点:
39
排查方法
排查故障的工作内容一般包含如下内容: - 过去履历的确认,检索同样的现象、确认是否已经回
答过了; - 再现测试,是否发生同样现象; - 从用户处采集到的数据以及软件日志文件的解析; - 用户的失误、其它程序的问题的排除; - 代码解析(找不到原因、无法再现时的手段); - 回避措施的研究。
6. 路径覆盖:指程序中所有可能的路径都被至少执行过一次的测试 。
例1的路径覆盖测试用例: (1)A=2, B=0, C=4 (路径:ace) (2)A=3, B=0, C=1 (路径:acd) (3)A=1, B=0, C=2 (路径:abe) (4)A=1, B=1, C=1 (路径:abd)
17
32
影响软件维护工作量的因素
系统大小:系统越大,功能越复杂,理解起来 越困难,因而需要更多的维护工作量。
程序设计语言:程序语言的功能越强,生成程 序所需的语句就越少;语言的功能越弱,实现 同样功能所需语句就越多,程序就越大。
33
影响软件维护工作量的因素
系统年龄:许多老系统在开发时并未按照软件工程的要求进 行开发,因而没有文档,或文档太少,或在长期的维护过程 中文档在许多地方与程序实现变得不一致,这样在维护时就 会遇到很大困难。
• 最好的测试应该是条件组合覆盖与路径覆盖的结合测试 • 至少应该达到判定/条件覆盖
18
7.3.3.黑盒法
等价类划分法
等价类是指某个输入域的子集和。
• 有效等价类是指对于程序的规格说明来说是合理的,有意义的输入数据集合 • 无效等价类是指对于程序规格说明来说是不合理的,没有意义的数据集合
例:
1
黑盒法: 不考虑程序的内部结构和处理过程,仅仅根据程序的功能来设计测试 用例的一种方法。
A 只有黑盒测试 可检出的bug
B 白/黑盒测试 都可检出的
bug
C 只有白盒测试 可检出的bug
D 白/黑盒测试都 不可检出的bug
14
7.3.2.白盒法
白盒法的技术指标:覆盖率
白盒法的例子程序和对应流程图
软件开发技术:在软件开发时,若使用能使软件结构比较稳 定的分析与设计技术,及程序设计技术,如面向对象技术、 复用技术等,可减少大量的工作量。
其它:例如,软件所对应的应用类型、任务的难度、开发人 员的编程风格等,对维护工作量都有影响。
34
2. 维护的目的
确保软件交付后的品质 提高下一期软件开发的品质 提高客户满意度
9
目录
7.1 概述 7.2 静态测试 7.3 动态测试 7.4 单元测试 7.5 集成测试 7.6 系统测试 7.7 验收测试
10
7.2.1. 静态测试的概念
静态测试的概念
- 静态测试是指不执行程序,对文档以及代码进行的测试。 - 静态测试的对象是文档和程序。
静态测试的特点
- 主要由人手工方式进行,可以充分发挥人主动性
功能、安全可靠性、易用性、可扩充性、兼容性、性能、 资源占用率、用户文档等方面。
α测试和β测试是什么?
29
二 软件维护
30
7.2 软件维护
1 概述 2 软件维护的工作
31
7.2.1 概述
1. 维护的定义 软件维护是指软件交付使用之后,因软件
中存在的缺陷,以及因需求和环境的变化, 对软件进行修正的过程。
例如:
Winrunner,LoadRunner等
27
目录
7.1 概述 7.2 静态测试 7.3 动态测试 7.4 单元测试 7.5 集成测试 7.6 系统测试 7.7 验收测试
28
7.7. 验收测试
验收测试实施者: 一般由用户,特定的第三方测试机构或者软件公司的QA部门
验收测试实施方法:一般采用黑盒法 验收测试的内容:
建议:对于一个团队中新人比较多的时候推荐 使用会议审查的方法。
12
目录
7.1 概述 7.2 静态测试 7.3 动态测试 7.4 单元测试 7.5 集成测试 7.6 系统测试 7.7 验收测试
13
7.3.1.白盒法与黑盒法的区别与联系
白盒法: 完全了解程序的结构和处理过程的情况下设计测试用例的一种方法。
7
7.1.2. 测试的过程
测试工作的流程
软件开发
需求分析 概要设计 详细设计
编码
需求分析审查 概要设计审查
系统测试设计 集成测试设计
系统测试实施 集成测试实施
详细设计审查
单元测试设计
单元测试实施
代码审查 静态测试
动态测试
软件测试 = 静态测试 + 动态测试
设计阶段
测试阶段
验收 验收测试
设计 验收测试
c
C=C/A
Yes
e
C=C+1
15
7.3.2.白盒法
1.语句覆盖:指程序中的每个可执行语句至少被执行一次的测试。
例1的语句覆盖测试用例:(1)A=2,B=0, C=3
2.判定覆盖:指程序中的每个分支至少执行过一次的测试。
例1的判定覆盖测试用例: (1)A=3,B=0, C=3 (路径: acd) (2)A=2,B=1, C=1 (路径: abe)
实施
8
7.1.3. 测试的原则
常用原则
测试应该“尽早地和不断地进行”。 要清楚地知道完全测试程序是不可能的。 所有的测试都应追溯到用户需求。 将Pareto原则(80%的错误都起源于程序模块中的20%)应用于
软件测试。 为了达到最佳效果,应该由独立的第三方来设计并实施测试。 保证测试用例的完整性和有效性。
25
目录
7.1 概述 7.2 静态测试 7.3 动态测试 7.4 单元测试 7.5 集成测试 7.6 系统测试 7.7 验收测试
26
7.6. 系统测试
测试实施方法:一般采用黑盒法
系统测试的内容: - 功能测试、 - 性能测试 - 兼容性测试 - 压力测试 - 。。。
系统测试有的场合下会 借助测试工具来进行测 试。
例1:源程序
void sample(int A, int B, float C) {
if ( (A >1) && (B = =0) ) {
C = C / A; } if ( (A = =2) || (C >1) ) {
C = C +1; } }
a
A>1 & B=0
b No
A=2 or C>1
No
d
Yes