蜕变测试(MT)_追逐梦想的顾咏丰_新浪博客

Metamorphic Testing 蜕变测试
---

在软件测试中,2大问题一直深深地困扰着测试人员,他们就是: 测试可靠性问题测试预言问题 [2]

第一个:测试可靠性问题,指的是我们找不到这样一个非常充分的测试集,来保证能够测试出程序的所有功能,从而证明源程序是无错的(We cannot find such adequate test suite to ensure the correctness of the program)。

第二个:测试预言问题 [4],指的是我们无法判断程序的预期结果与实际结果是否一致,或者说很难构造出预期的输出结果(Test oracles are not always exist or sometimes too hard to generate)。

为了解决第二个问题,我们的先行者们Chen及其同事们在1998年提出了蜕变测试的概念(后文以MT代替) [1]。严格意义上来讲,MT是一个特殊的黑盒测试,它通过构建蜕变关系(MR)从原有的测试用例来衍生出新的测试用例。(原文:we propose a novel test case selection technique that derives new test case from the successful ones),旨在与发现那些“成功的”测试用例中未发现的缺陷。

下面以生动活泼的例子来解释一下MT测试的全过程,比如说,我们现在有一个程序P,它的功能是f函数,实现计算sin值。即可以写成 P = f(x),这个时候我们需要对 sin(x)这个函数进行测试,我们准备了很多的测试用例输入,比如说 0,30,45,90等一大堆,这些输入我们是知道他的预期结果的,但是此时出现了一个 -30,我们立马懵逼了 >

R1: sin(x)= - sin(-x)
R2: sin(x)= sin(x + 2*PI)
R3: sin(x)= sin(PI - x)
...

这样的关系我们可以找到有很多,这些就叫做 MR,于是乎,我们知道 sin(30)=1/2 ,sin(30)= - sin(- 30) = - 1/2,最后我们只需要 比较 sin(-30)是否等于 - 1/2,即是否满足 MR 关系即可,可知是满足的。这样就直接从原来的测试用例(30, 1/2) 衍生出了一个新的测试用例(-30,-1/2)来了,如果不满足,证明我们发现了先前“成功的”测试用例中隐含的错误了 。 ^^

蜕变测试(MT)

更详细的如上图所示 [2],蜕变测试的步骤为:

(1)程序运行原有的测试用例 x0,得到输出 p( x0 )符合预期结果,
(2)然后选取一条蜕变关系MR,产生新的测试用例 r1(x0),运行程序得到输出 p( r1( x0 ) ),
(3)检查原始输出和新的输出是否满足蜕变关系MR,若不满足则表明发现缺陷,若仍然满足,则继续(2),继续产生新的测试用例,直到发现不满足MR为止。

【参考文献】
----------------


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值