ISTQB AL-TA/TTA连载系列08:如何有效减少测试用例数目
来源:互联网 发布:php博客系统 编辑:程序博客网 时间:2024/05/10 19:06
[概述]
在测试过程中,测试人员经常需要将测试对象的各种输入参数进行组合之后进行测试。有时候,将各种输入参数进行组合,得到的测试用例数目将是非常庞大的。由于测试时间和成本的限制,无法对测试对象输入值的所有组合进行测试。我们应该怎么办?
[正文]
在测试过程中,测试人员经常需要将测试对象的各种输入参数进行组合之后进行测试。有时候,将各种输入参数进行组合,得到的测试用例数目将是非常庞大的。由于测试时间和成本的限制,无法对测试对象输入值的所有组合进行测试。下面是某个网站测试的要求:
------------案例描述:开始-------------
某网站需要支持
ü 不同的浏览器:IE5.0、IE5.5、IE6.0、Netscape6.0、Netscape6.1、Netscape7.0、Mozilla1.1和Opera7;
ü 不同的插件:RealPlayer、MediaPlayer或者没有任何插件None;
ü 不同的客户端操作系统:Windows95、Windows98、WindowsME、、WindowsNT、Windows2000和WindowsXP;
ü 不同的Web服务器软件:IIS、Apache和WebLogic;
ü 不同的服务器端操作系统:WindowsNT、Windows2000和Linux。
这种情况下,需要针对不同的组合进行测试:
ü 8种浏览器
ü 3种插件
ü 6种客户端操作系统
ü 3种Web服务器软件
ü 3种服务器端操作系统
如果考虑所有参数不同取值的组合,那么需要设计和执行的测试用例的数目是1296(8 x 3 x 6 x 3 x 3 = 1296)。
------------案例描述:结束-------------
在软件测试过程中,这种类型的组合是非常普遍的。每种情形都可能有庞大的组合需要进行测试,假如不对它们进行测试,可能会存在较大的风险;而如果对所有组合进行测试,测试时间和资源又不允许。测试人员在面对这种情况的时候,可以采用以下几种常用的策略:
ü 尝试测试所有输入的组合,延期项目,导致的后果可能是失去产品的市场。
ü 选择一些容易设计和执行的测试用例,而忽略其是否能够提供产品质量的信息。
ü 罗列所有的组合,并随机选择其中的子集进行测试。
ü 采取特殊的测试技术,选择能发现大部分缺陷的子集进行测试。
如果采用最后一个策略,那么使用结对测试技术是一个很好的选择。采用结对测试的技术,测试并不针对输入值的所有组合进行测试,而只是针对所有输入值的两两组合。结对测试技术可以显著地减少测试用例的数目,同时保证较高的测试质量。下面是应用结对测试技术减少测试用例数目的例子:
ü 假如软件系统有四个不同的输入参数,每个参数有3个不同的输入值,得到的完全组合数目是34即81。假如采用结对测试的技术,只需要9个测试用例即可覆盖所有参数的两两组合。
ü 假如软件系统有13个不同的输入参数,每个参数有3个不同的输入值,得到的完全组合数目是313即1594323。假如采用结对测试的技术,只需要15个测试用例即可覆盖所有参数的两两组合。
ü 假如软件系统有20个不同的输入参数,每个参数有10个不同的输入值,得到的完全组合数目是1020。假如采用结对测试的技术,只需要180个测试用例即可覆盖所有参数的两两组合。
结对测试技术能够发现所有的单模式失效(Single-mode Fault)和双模式失效(Double-mode Fault)。但是,结对测试并不一定适合于发现测试对象中的多模式失效(MultimodeFault)。
ü 单模式失效:失效是由单个参数引起的,只要针对所有独立参数进行测试,就能够发现该失效。
ü 双模式缺陷:失效是由两个参数共同引起的,必须针对所有参数的两两组合进行测试,才能够确保发现此类缺陷。
ü 多模式缺陷:失效是由三个或三个以上参数共同引起的,采用结对测试技术也可能发现多模式缺陷,但是不能保证测试的充分性。
下面的几个数据可以说明结对测试技术的有效性:
ü 根据AT&T在对其基于局域网的邮件系统进行的测试中,应用结对测试技术得到的1000条测试用例比其原有的1500条测试用例多发现了20%的缺陷,而测试工作量却减少了50%。
ü National Institute of Standards and Technology在一项对医疗设备测试所进行的15年追踪中发现,有98%的软件缺陷可以通过结对测试技术发现。
ü 根据对Mozilla网页浏览器的缺陷分析显示,76%的缺陷可以通过结对测试技术发现。
具体的结对测试,可以通过不同的测试技术来得到,包括正交矩阵(Orthogonal Arrays)的方法、James Bach提供的Allpairs方法,也可以通过分类树方法。表1得到的测试用例是通过Allpairs方法实现的,详细的内容以及其他测试技术的实现方法,可以参考《软件测试设计》原著。
表1 使用Allpairs得到的测试数据
编号ID
浏览器
插件
客户端操作系统
服务器
服务器端操作系统
1
IE 5.0
None
Windows 95
IIS
Windows NT
2
IE 5.0
RealPlayer
Windows 98
Apache
Windows 2000
3
IE 5.0
MediaPlayer
Windows ME
WebLogic
Linux
4
IE 5.5
RealPlayer
Windows 95
WebLogic
Windows NT
5
IE 5.5
None
Windows 98
IIS
Linux
6
IE 5.5
None
Windows ME
Apache
Windows 2000
7
IE 6.0
MediaPlayer
Windows 95
Apache
Linux
8
IE 6.0
RealPlayer
Windows 98
IIS
Windows NT
9
IE 6.0
None
Windows ME
WebLogic
Windows 2000
10
Netscape 6.0
RealPlayer
Windows ME
IIS
Linux
11
Netscape 6.0
MediaPlayer
Windows NT
IIS
Windows 2000
12
Netscape 6.0
None
Windows 2000
Apache
Windows NT
13
Netscape 6.1
None
Windows NT
WebLogic
Linux
14
Netscape 6.1
MediaPlayer
Windows 2000
IIS
Windows 2000
15
Netscape 6.1
RealPlayer
Windows XP
Apache
Windows NT
16
Netscape 7.0
RealPlayer
Windows NT
Apache
Windows NT
17
Netscape 7.0
MediaPlayer
Windows 2000
WebLogic
Linux
18
Netscape 7.0
MediaPlayer
Windows XP
IIS
Windows 2000
19
Mozilla 1.1
MediaPlayer
Windows XP
WebLogic
Windows NT
20
Mozilla 1.1
MediaPlayer
Windows 98
Apache
Linux
21
Mozilla 1.1
RealPlayer
Windows 95
IIS
Windows 2000
22
Opera 7
None
Windows XP
WebLogic
Linux
23
Opera 7
RealPlayer
Windows 98
WebLogic
Windows 2000
24
Opera 7
MediaPlayer
Windows ME
Apache
Windows NT
25
IE 5.5
RealPlayer
Windows 2000
~WebLogic
~Linux
26
IE 5.5
MediaPlayer
Windows NT
~IIS
~Windows NT
27
Netscape 6.0
~None
Windows 95
WebLogic
~Windows 2000
28
Netscape 7.0
None
Windows 95
~Apache
~Linux
29
Mozilla 1.1
None
Windows ME
~IIS
~Windows NT
30
Opera 7
~RealPlayer
Windows NT
IIS
~Linux
31
IE 5.0
~None
Windows NT
~Apache
~Windows 2000
32
IE 5.0
~RealPlayer
Windows 2000
~IIS
~Windows NT
33
IE 5.0
~None
Windows XP
~WebLogic
~Linux
34
IE 5.5
~RealPlayer
Windows XP
~Apache
~Windows 2000
35
IE 6.0
~None
Windows 2000
~Apache
~Windows 2000
36
IE 6.0
~RealPlayer
Windows NT
~WebLogic
~Windows NT
37
IE 6.0
~MediaPlayer
Windows XP
~IIS
~Linux
38
Netscape 6.0
~MediaPlayer
Windows 98
~WebLogic
~Windows NT
39
Netscape 6.0
~RealPlayer
Windows XP
~Apache
~Linux
40
Netscape 6.1
~MediaPlayer
Windows 95
~Apache
~Windows 2000
41
Netscape 6.1
~None
Windows 98
~IIS
~Windows NT
42
Netscape 6.1
~RealPlayer
Windows ME
~WebLogic
~Linux
43
Netscape 7.0
~None
Windows 98
~WebLogic
~Windows 2000
44
Netscape 7.0
~RealPlayer
Windows ME
~IIS
~Windows NT
45
Mozilla 1.1
~None
Windows NT
~Apache
~Linux
46
Mozilla 1.1
~RealPlayer
Windows 2000
~WebLogic
~Windows 2000
47
Opera 7
~MediaPlayer
Windows 95
~IIS
~Windows NT
48
Opera 7
~None
Windows 2000
~Apache
~Windows 2000
假如测试数据列表中的某个参数的取值以~开头,那么说明该参数取值已经有两两组合了。以~开头的参数取值,可以用该参数的任何其他取值来代替,而不会影响其两两组合的覆盖率。因此,可以将以~开头的参数取值,用更关键的或者经常使用的参数值来代替。同时,使用Allpairs得到的测试数据中,还罗列了所有的两两组合,并且统计了每个两两组合出现的次数,以及每个测试用例所包含的两两组合数。
从上面的结果可以看到:通过采用合适的测试技术,测试用例数目原来需要1296个,而目前只需要48个进行覆盖,测试用例数目减少了96%。前面已经提到了,结对测试可以发现所有的单失效模式和双失效模式的缺陷,而实践过程中,大部分的失效是单失效模式和双失效模式,多失效模式占的比例很少。因此,通过采用合适的结对测试,可以大大降低测试用例数目,减少测试工作量,同时可以实现较好的测试覆盖率,保证测试质量。
更多资料,欢迎访问:http://blog.csdn.net/wenqiang_zheng/article/details/6783608
- ISTQB AL-TA/TTA连载系列08:如何有效减少测试用例数目
- ISTQB AL-TA/TTA连载系列10:有效提高测试有效性与测试质量
- ISTQB AL-TA/TTA连载系列04:有效分析和选择测试用例输入的测试技术
- ISTQB-AL TA/TTA连载系列11:安全保密性测试
- ISTQB AL-TA/TTA连载系列18:有效确定测试重点
- ISTQB AL-TA/TTA连载系列19:有效选择测试优先级
- ISTQB AL-TA/TTA连载系列21:测试中如何应对需求不全问题
- ISTQB-AL TA/TTA连载系列12:性能测试vs负载测试vs压力测试
- ISTQB AL-TA/TTA认证中文参考书:《软件测试设计》连载系列
- ISTQB AL-TA/TTA连载系列01:软件测试设计面临的挑战
- ISTQB AL-TA/TTA连载系列02:问题驱动的软件测试设计
- ISTQB AL-TA/TTA连载系列03:问题驱动的软件测试设计全景图
- ISTQB AL-TA/TTA连载系列05:测试人员参与评审,学习不是唯一目的
- ISTQB AL-TA/TTA连载系列07:N-Switch在状态转换测试中的应用
- ISTQB AL-TA/TTA连载系列13:可移植性测试
- ISTQB AL-TA/TTA连载系列14:文档的可维护性测试
- ISTQB AL-TA/TTA连载系列15:基于风险的测试
- ISTQB AL-TA/TTA连载系列16:测试过程中的项目风险监控
- 世界权威调查机构发布“各大编程语言2011年9月最新使用率以及位次升降统计”
- 敏捷改进与敏捷转型
- 主题:有人尝试Admob直接电汇到国内的银行吗(测试成功到账,没有手续费)
- 在虚拟机上如何设置linux屏幕的分辨率
- 今天
- ISTQB AL-TA/TTA连载系列08:如何有效减少测试用例数目
- 8086cpu加电后的第一件事分析
- 1.腾讯微博Android客户端开发——OAuth认证介绍
- ADO.NET增删改查
- 使用JSON进行数据传输
- Get Apple Hardware Test Boot Mode Back on Some OS X Lion Macs
- 61. A new broom sweeps clean. 新官上任三把火
- Java_09_29课堂总结
- 第十八天