思步网

查看: 27329|回复: 16
打印 上一主题 下一主题

[功能测试] 【正交在测试用例设计中的作用——江湖群の越中女儿】

[复制链接]
【正交在测试用例设计中的作用——江湖群の越中女儿】
前几个月,越中女儿在江湖群里面探讨了正交在测试用例中的实践,对我启发甚大;今日我趁闲暇将文字做了整理,惠及同仁,在此对越中女儿表示万分谢意。

此文论及了四个方面
1、测试用例设计中遇到的困惑
2、什么是正交表,它能解决我们什么样的困惑
3、如何应用标准正交表构造测试用例
4、最后,简单的介绍下标准正交表的构造法,以及相关的数学背景

对于同一组功能测试用例,当处于不同测试条件下的时侯,如何筛选条件的组合,以保证较小的测试用例集,达到较高的测试覆盖度。这个给测试人员带来了太多困惑,这不止咱做软件测试人会遇到,其实做化工的、生物医学的、农学的也都遇到。他们这些行业早就将“正交试验设计法”引入了,并且取得了较好的效果。我们现在要做的就是借鉴和学习啦。

什么是正交试验法呢,简言之:它是一种依据伽罗瓦理论,从大量的(实验)数据(测试例)中挑选适量的、有代表性的点(条件组合),从而合理地安排实验(测试)的一种科学实验设计方法。



先举个简化例子,从上图可以看出,本来需要测试27个用例的,现在9个用例就可以了。这9个点不是随机的9个点,它们是均衡地分布于整个立方体内,有很强的代表性,能够比较全面地反映测试区域内的基本情况。

从直觉角度上,我们觉得刚刚那9个点的取法是很理想的,我们现在要做的就是如何能够在实际的测试中把它构造出来呢

这里,我们要借助一个数理统计上的工具——正交表
先简单介绍下正交表的数学表示形式:


这里的行数、因素、水平分别是啥意思呢,我们看下定义:
行数(Runs):正交表中的行的个数,即测试的次数。
因素数(Factors):正交表中列的个数,即:我们的测试条件数,在刚才的例子当中,是3个(电源、耳机、冲突事件)
水平数(Levels):任何单个因素能够取得的值的最大个数。


正交表有很好的正交性,主要体现在:整齐可比性和均衡分散性。这个我不细说,说一下数学上的表现。那就是:
(1)任一列中,各水平都出现,且出现的次数相等
(2)任两列之间各种不同水平的所有可能组合都出现,且对出现的次数相等
所谓水平呢,就是某个因素可能的取值
如果某个因素只能取2个值,不管它是什么,我都可以假设为0和1
那为什么所有的因素的水平都可以简单的替换成0或1呢,因为这里的因素,在数理统计上,是相互独立的 ,也就是相关系数为0

这个是正交表的一种最简单的形式,当然,也可以处理不相互独立的,要考虑因素间的相关性,也就是正交表列向量的相关性,那个更复杂,这里就不说了



面我们要将这个正交表,怎么用到我们的实际测试当中去

先说下大体的步骤:
1、提取功能说明,构造因子-水平表
2、加权筛选,生成因素分析表
3、利用标准正交表构造测试正交表
4、利用测试正交表每行数据构造测试用例

先说第一个:因素-水平表



好,我们看第二步:加权筛选,生成因素分析表
自己定义一套算法,计算各因素和水平的权值,删去一部分权值较小,即重要性较小的因素或水平,使最后生成的测试用例集缩减到允许范围

啥叫自己定义呢?就是可以根据每个因素及其水平的“作用大小”、“出现概率大小”、“测试需要”、“出错概率”等等,来给出每个因素及其水平的权重值
为什么要做这个步骤呢?有两个原因

一、刚刚已经提到的,因为因素及水平实在是太多了,面面俱到,势必要喧宾夺主,有句话怎么说的?小概率事件可以看作是不可能事件,很有道理的
二、正交表和正交试验法,其实是来源于均匀试验法的理论,在数学和科研中,我们是要求每个因素的水平间是等概率分布的。所以,如果我们把小概率事件和大概率事件都放进去,这套理论会把它们当成等概率事件处理,那样就不准确了,正交法的均衡性优点就削弱了。

我们整理后可得到下图:

并且,我们给因素进行了符号化,A:电源、B:耳机、C:冲突事件

但是大家发现没?这里的各因素的水平数是不均等的。

而标准正交表只能处理水平数均等的情况,怎么办?

这里有2个处理方法:
1、将水平数不足的那个因素,用其水平集合的元素进行延拓,使其满矩阵

这里的延拓补足,有个原则,要尽力选用水平中,那种比较重要的,比较倾向于多测试的,因为这种水平在设计测试时侯,命中率较高

如:B因素中,水平2“不插耳机”,是用户使用概率高的场景,建议多测试,所以,可以在水平3也填上“不插耳机”


下面,我们要选择标准正交表

正交表的选择原则是在能够安排下试验因素和交互作用的前提下,尽可能选用较小的正交表,以减少试验次数。


一般情况下,试验因素的水平数应等于正交表中的水平数;因素个数应不大于正交表的列数。


给出一个可以查寻正交表的网页:http://www.york.ac.uk/depts/maths/tables/orthogonal.htm

根据选择正交表原则:水平要相等,因素要不超过,且行数要尽力少,嘿嘿,满足,就是它了




对于第一列:正常电量→1,低电→2,充电中→3

第二第三列也是如此

每一行就是一个测试用例

这样,我们将3×3×3=27个测试用例,就简化成了9个测试用例了

刚刚给出的是第一种方法,这个方法吧,好处是速度快,简单,但是坏处是,在因素的水平出现概率或测试重要程度均匀的情况下,这样做,无疑是提高了某些水平的命中率,破坏了测试用例抽样的均衡性目标

期待越中女儿讲述第二种方法,偶继续做整理。




上一篇:测试的价值不仅仅是找Bug(转)
下一篇:测试报告编写指南
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
回复 论坛版权

使用道具 举报

非常好。
先占个地儿,慢慢学习
好东东,值得顶
这篇文章非常棒。
[发帖际遇]: 风清云闲 发帖时在路边捡到 4 (金) 金币,偷偷放进了口袋. 幸运榜 / 衰神榜
打酱油的人拉,顺便赚点金币
路过 帮顶 嘿嘿
这么强,支持楼主,佩服
路过 帮顶 嘿嘿
看起来好像不错的样子
很有见地的探讨,先收藏着~
其实,很多情况下都是这样的,习惯就好。
众里寻他千百度,蓦然回首在这里!
很有借鉴意义,先收藏了,谢谢楼主。
不错 支持一个了
您需要登录后才可以回帖 登录 | 注册

本版积分规则



思步组织思步科技|思步网|火花学堂|思步文库|思步问答|思步英才|天下心
© 2007 思步网 浙ICP备10212573号-4(首次备案号:浙ICP备07035264号)|邮箱:service#step365.com(将#换成@)|服务热线:0571-28827450
在线培训课程|求职招聘|思步文库|官方微信|手机APP|思步问答|微博平台|官方QQ群|交流论坛|软件工程透析|关于我们|申请友链|
点击这里给我发消息     点击这里给我发消息
思步 step365 过程改进 CMMI中文 质量保证 质量管理 流程体系 需求跟踪矩阵 敏捷开发 Scrum 软件度量 项目评审 全员改进 流程管理 人力资源 6sigma 信息安全 ISO27001认证 IT服务管理 ISO20000认证 ISO9000认证 软件测试 SQA 配置管理 IPD 软件工程 PMP认证 PMP试题 PMBOK中文 精益研发 agile 顾问式管理培训
返回顶部