博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蜕变测试概述及典型案例
阅读量:5088 次
发布时间:2019-06-13

本文共 1685 字,大约阅读时间需要 5 分钟。

1、蜕变测试概述

程序的执行结果不能预知的现象在测试理论中称为“Oracle问题”,即预期结果不知道。

例如测试sin(x)函数时,sin270的预期结果并不知道,这时就无法验证当x=270 时程序执行的正确性。

Oracle问题是“软件测试中最困难的任务”,它导致测试人员只能选择一些可以预知结果的特殊测试用例进行测试,而不能完整有效地进行测试。

蜕变测试是一种特殊的黑盒测试方法,蜕变测试依据被测软件的领域知识和软件的实现方法建立蜕变关系(Metamorphic Relation, MR),利用蜕变关系来生成新的测试用例,通过验证蜕变关系是否被保持来决定测试是否通过。蜕变关系(Metamorphic Relation, MR) 是指多次执行目标程序时,输入与输出之间期望遵循的关系。

蜕变测试依据蜕变关系生成更多的后续测试用例,测试时就会多次执行目标程序时,使得程序可以进一步被验证。

2、蜕变测试的典型案例

例1: 测试sin函数。

这些蜕变关系MR如下所示:

R1: sin(x)=sin(x+2π)
R2: sin(x)=-sin(x+π)
R3: -sin(-x)=sin(x)
R4: sin(x)=sin(π-x)
R5: sin(x)=-sin(2π-x)
R6: sin2(x)+sin2(π/2-x)=1

 

期望结果

R1

R2

R3

R4

R5

R6

0

0

t/f

t/f

t/f

t/f

t/f

t/f

π/6

1/2

t/f

t/f

t/f

t/f

t/f

t/f

π/4

√2/2

t/f

t/f

t/f

t/f

t/f

t/f

π/3

√3/2

t/f

t/f

t/f

t/f

t/f

t/f

π/2

1

t/f

t/f

t/f

t/f

t/f

t/f

230

 

t/f

t/f

t/f

t/f

t/f

t/f

630

 

t/f

t/f

t/f

t/f

t/f

t/f

780

 

t/f

t/f

t/f

t/f

t/f

t/f

1230

 

t/f

t/f

t/f

t/f

t/f

t/f

1890

 

t/f

t/f

t/f

t/f

t/f

t/f

2230

 

t/f

t/f

t/f

t/f

t/f

t/f

 

例2: 测试ex函数

对于无法确定期望结果的随机值x,根据ex函数的特性可以确定1个蜕变关系以产生蜕变测试用例。这个蜕变关系MR如下所示:

R: ex*e-x=1
例如:x1=0.3,后续测试用例为x2=-0.3,验证蜕变关系e0.3*e-0.3=1是否保持。

例3: 无向图中的最短路径问题。

根据图论中无向图的特点可以确定蜕变关系。

图论中一个重要性质就是交换,即在图G中点u到点v的最短路径应该和点v到点u的最短路径是一样的。因此,可以确定以下的蜕变关系:
R:ShortestPath(G, u,v) = ShortestPath(G, v ,u)
例如:测试用例(A, B) ,后续测试用例为(B, A) ,验证蜕变关系R是否保持,即:
ShortestPath(H,A, B) = ShortestPath(H, B, A)

例4: 电脑图形图像软件产生图像且在屏幕上打印图像。

测试人员测试图形图像软件产生的图像时,不可能检查每一个像素是否显示正确。在这种情况下,可以使用蜕变测试方法验证图像输出的正确性。

对于测试人员而言,证明屏幕上的像素是否显示正确是不容易的,因为实际图像的生成涉及复杂的计算且有大量的像素。不过,可以识别一些蜕变关系,例如:如果光源的位置改变,则那些逐渐接近光源的所有点的亮度将增加;那些逐渐远离光源的所有点的亮度将变暗。这是一种简单的快速并自动检查所有显示像素的方法。

例5: 桥梁应力测试

当对桥梁的应力进行测试时,无法确知桥梁某个位置正确的应力参数应该是多少,这时,可以使用蜕变测试。

对于桥梁的对称点,二者的应力应该一致,此即为蜕变关系。测试时,若对称点的应力不一致则说明施工过程存在偏差。

 

转载于:https://www.cnblogs.com/lovesoo/p/9685458.html

你可能感兴趣的文章
高性能 CSS3 动画
查看>>
Socket 1vs1 聊天工具
查看>>
AtCoder Regular Contest 095E - Symmetric Grid
查看>>
134. Gas Station leetcode
查看>>
jQuery基础教程(第3版)
查看>>
一个JS正则的字符串替换函数
查看>>
1-5色彩模式的选择
查看>>
RABBITMQ安装注意点
查看>>
python学习笔记-17 返回函数
查看>>
运行npm run eject报错解决方法
查看>>
php接入支付宝的流程(转载)
查看>>
简单请求和非简单请求
查看>>
ubuntu必备软件安装
查看>>
心得1--js加强dom介绍与node使用
查看>>
js计算时间差
查看>>
ROS学习笔记十:URDF详解
查看>>
软件测试计划
查看>>
IOS Audio开发集合
查看>>
mysql并发控制之快照读和当前读
查看>>
DirectX11 With Windows SDK--27 计算着色器:双调排序
查看>>