当前位置:文档之家› 回归测试

回归测试


0C202 Software Testing
7-11 Chapter 7
A A’ A’
B B’
C C’
D
E
原先版本:所有测试用例全部通过
D
E
新版本:有几个测试用例失败
B B’
C
D
E
运行失败的测试用例,只有组件A是新版本
A
C C’
D
E
运行失败的测试用例,只有组件B是新版本 运行失败的测试用例,只有组件C是新版本
与一般测试有什么不同?(2/3)

时间分配:回归测试所需的时间、资源需 要根据开发具体情况进行(尤其是修正性 的回归测试)。
开发信息:回归测试可能会在不同的地点 和时间上进行,及时记录开发信息以保证 回归测试的正确进行。
0C202 Software Testing

7-5 Chapter 7
与一般测试有什么不同?(3/3)
n1kn1
nkn
nkn
(a)
(b)
7-28 Chapter 7

直接波及是波及效应分析过程中要进行进一步更改的 第一候选集。如果直接波及后不需要进一步的更改, 那么诱发波及就不需要分析,以节省波及效应分析时 间。
7-29 Chapter 7
0C202 Software Testing
控制的依赖性

0C202 Software Testing
7-23 Chapter 7
自动化进行
开始
用户参与
1
实施初始的改变
0C202 Software Testing
2
识别哪些区域受到潜在的影响
决定如何进行修改
4
3
决定这些区域的哪些部分需要 进一步修改以保持一致性
对于每一个更改
没有需要修改的地方 结束
7-24 Chapter 7

完成时间:通常比一般测试所需时间少,因为 回归测试只需测试程序的一部分,且采用测试 脚本自动化执行。
0C202 Software Testing

执行频率:在一个系统的生命周期内往往要多 次进行,一旦系统经过修改就需要进行回归测 试。
7-6 Chapter 7
回归测试过程

七个步骤:



0C202 Software Testing
7-8 Chapter 7
识别错误

在识别错误时,为了确认软件中失败的组件,在列表 中所有列出来的模块都有可能是要查找的目标。
0C202 Software Testing

系统性的识别错误方法-组测试(Group Testing)。
7-9 Chapter 7
波及效应分析
(1)软件被修改; (2)与软件相关的所有东西(需求款项,设计款项,代 码,测试用例,文档)都可能被修改; (3)任何时候,修改都可能发生,比如在软件开发阶段 和软件维护阶段。

0C202 Software Testing
7-19 Chapter 7

修改中遇到的问题


if-then-else,while,for, 顺序型语句和面向对象 程序中的消息传递。
0C202 Software Testing

如果一个if-then-else语句的条件改变了,then部 分和else部分都要因为条件改变而被影响。
7-30 Chapter 7
数据的依赖性
数据的操作主要有三个:数据的使用、数据
7-21 Chapter 7
0C202 Software Testing
因为软件中所有类型的工件都可能变化,需
要对所有工件进行波及效应分析。波及效应 分析共有四种类型:

0C202 Software Testing
(1)需求的波及效应分析, (2)设计的波及效应分析, (3)代码的波及效应分析, (4)测试用例的波及效应分析。

0C202 Software Testing
7-15 Chapter 7

有选择的重新测试方法:
优点是当测试用例的数目很多,而且系统的更改只是一 小部分,那么这个方法是很有用的。 缺点是需要费精力对测试用例进行选择。当全部测试用 例的数目不是很大,或者对系统的更改也很多,那么这 个方法就不适合了。
程序切片

程序切片定义切片标准(slicing criteria)来说明 所关心的切片语句开始点和一些变量。程序切片结果 产生一个语句集(路径集),这些语句影响到切片标 准里被定义的语句的变量值。
7-32 Chapter 7
0C202 Software Testing
切片有向前和向后两个方向
向后程序切片:给定一个语句i和一个变量集N,由 它们产生语句集L,产生L的规则是程序执行到i止, 与N中元素关联的所有语句。 向前程序切片:给定一个语句i和一个变量集N,由 它们产生语句集L,产生L的规则是程序由i向前执行, 与N中元素关联的所有语句。
7-10 Chapter 7
如何进行组测试呢?
假设一个程序有5个组件,分别是A,B,C,D,E, 在早期的测试中,各个组件都有一个可以信赖的版本, 即正常工作版本。 假设现在A,B,C被修改了,而D, E没有被修改, 仍然是之前能正常工作的组件。 假设这一新版本软件未能通过几个测试用例,我们需 要发现错误的组件所在。

0C202 Software Testing
7-16 Chapter 7

有选择的重新测试方法中需要对测试用例进行选择,
选择的最常用算法是选择所有与某个特定模块相关的所 有测试用例,及所有集成测试用例。 而对那些固定的特征,保持它们不变。

0C202 Software Testing
7-17 Chapter 7
在识别相关的测试用例时,依据可追溯性原理,从需 求到代码,然后再到测试用例,都要能可追溯。 所有黑盒测试和白盒测试的测试用例都要做到能可追 溯。

0C202 Software Testing

因为软件工件间的依赖性,所以需要使用波及效应分析 来确认那些被影响到的部分。
7-18 Chapter 7
直接波及
诱发波及 11
111
直接波及
诱发波及 11
组件 1 依赖于


组件 1 依赖于
1k1 直接波及 21 依赖于 211
… …

11k11
1k1

初始改变
直接波及

0C202 Software Testing
2 初始改变
n1k21
2
2k2
…...
n1
…...
n11
n11

n

n1



n
n1kn1

为了保证在软件维护时,那些未更改的代码功 能不会受影响。 升级不同功能区域、信息系统持续维护、协作 关系。作为开发乃至软件使用过程中的定期常 规活动; 使E2E测试(端到端测试)成为整个软件生命 周期的测试。 是软件测试框架的必要组成。需要考虑该阶段 资源投入。
7-3 Chapter 7
0C202 Software Testing
回归测试与一般测试有什么不同?(1/3)

测试计划的可获性:回归测试面临的可能 更改的规格说明书、修改过的程序和一个 需要更新的旧的测试计划。 测试范围:一般测试过程目标是要检测整 个程序的正确性,而回归测试目标是要检 测被修改的相关部分正确性。
0C202 Software Testing

7-4 Chapter 7
对于各阶段之间同样也需要进行波及效应分
析,也就是从需求文档到设计文档,再到代 码,最后到测试用例。
Chapter 7
7-22
波及效应分析步骤

波及效应分析是一个迭代过程,直至不再有任何波及。
1. 实施初始的改变; 2. 识别潜在的受影响的组件; 3. 决定这些受到潜在影响的组件中哪些需要改变; 4. 决定如何进行这些改变,对于每一个改变都要从第1 步开始重复。如果没有要进行改变的,就结束。

0C202 Software Testing
7-33 Chapter 7
源代码
1. a = 1; 2. b = 2; 3. c = a * a; 4. d = a * b; 5. e = c + d; 1 2 a b
数据流信息
3 c e d 4
0C202 Software Testing
5
向前切片
0C202 Software Testing
第七讲: 回归测试
7-1
OUTLINE

引言 回归测试特点 回归测试过程 回归测试策略 波及效应分析 程序切片 回归测试的花费 总结
7-2 Chapter 7
0C202 Software Testing
为什么要回归测试?

Slicing Criterion: <1, { a } > Slice: 1. a = 1; 3. c = a * a; 4. d = a * b; 5. e = c + d;
向后切片
Slicing Criterion: <5, { d } > Slice: 1. a = 1; 2. b = 2; 4. d = a * b; 5. e = c + d;
0C202 Software Testing
A
B
D
E
7-12 Chapter 7
用这个方法,我们可以决定是否是新版本的A、B、 C中的某一组件有错。也可以重复多次运行测试用例 以查明导致用例失败的具体组件。 问题是这个方法安全吗?
相关主题