首页 > 其他分享 >【多样化的思想】随机测试

【多样化的思想】随机测试

时间:2024-09-09 15:56:35浏览次数:7  
标签:随机数 用例 麻雀 随机 测试 输入 多样化

多样化通常是一件好事。为什么我们这么强调物种多样性,投入那么多人力物力财力去保护濒危的动植物?就是因为,只有保持物种的多样性,生态环境才能稳定和平衡。

1956年,我国把麻雀列为四害之一,号召全民灭雀,保护粮食。全国各族人民热情高涨,积极响应,尤其是小朋友们,当时有一首诗是这么写的:“漫山遍野,天罗地网。树桠屋角,不准躲藏。昼夜不休,张弓放枪。麻雀绝种,万石归仓。”

麻雀偷吃粮食,只要麻雀绝种,就能实现万石归仓。当时人们就是这个逻辑。灭雀运动取得了巨大成功,麻雀在中国几近灭绝。但很快,大自然的反噬就出现了:没有了麻雀的制衡,蝗虫数量剧增,虫灾泛滥,比麻雀造成的损失要大得多。没办法,我国政府只好又从苏联引进了几百万只麻雀。

在测试设计的世界里,“多样化”也是非常重要的一种思想。既然我们想做的是“充分的测试”,那测试设计就应该尽量覆盖到各种不同的情况,用例就应该是多种多样的。在有限的资源条件下,每个用例都应该有足够的代表性,尽量不要跟其它用例雷同。从测试选择的角度来说,就是要让用例尽可能广泛、均衡地散布在测试输入空间里,避免“扎堆”。这样,我们才能更全面地了解被测对象在整个测试输入空间中的表现,理想和现实的对照才能更完整。

怎么做到这一点呢?最容易想到的是“随机测试”,也就是按照特定的概率分布,从测试输入空间中随机选取用例。最常见的,是遵循均匀分布的随机测试。所谓“均匀分布”,意思是每一个测试输入点被选作测试用例的概率是相同的,这样就在一定程度上实现了用例的多样性。为什么说只是“一定程度”?因为随机测试并不会考虑用例之间的差异——我同时扔3个色子,有可能扔出来的都是6点。随机测试只是通过概率的方式,间接获得了多样化的效果,但是并不敢保证效果有多好。特别是当用例数量比较少的时候,容易出现用例扎堆的情况。

随机测试经常会作为其它测试设计方法的补充:比如集成电路测试,按某个充分准则测完之后,一般都会再做一轮随机测试;再比如我们讨论过的分割测试,如果不能保证分割出来的是同质子空间,一般也需要结合随机测试。主要原因是,随机测试实施起来成本比较低,有很多简单易行的方法,能够把测试选择做成自动化的,或程式化的。

最常用的方法就是利用“伪随机数发生器”,它的基本原理是线性同余法:

给定一个起点v~0~,并给定常量a、c和m,基于上面这个递推关系,可以得到一个序列。从v~0~到v~m-1~,序列的值是随机变化的。但是从v~m~开始,序列又周而复始,所以我们把这样生成的随机数叫“伪随机数”。

JAVA自带的util.Random类,就是用线性同余法来生成随机数的。以前算命先生用梅花易数给人算卦,其实底层逻辑也是线性同余法,比如把你的生辰八字的前六个字,也就是出生年月日加起来mod 8,就可以对应到先天八卦的某一卦;再把完整的生辰八字加起来mod 8,又可以得到另一卦。把这两卦拼起来,就可以对应到易经六十四卦中的某一卦,算命先生就可以给你断吉凶了。

下面这段matlab程序实现的就是一个伪随机数发生器,可以生成1000个均匀分布的随机数:

%生成1000个[0,1]内的均匀分布随机数
function A=randomgen(a,c,m,x)
A=zeros(1000,1);
n=1;
while n<=1000
    n=n+1;
    x=rem((a*x+c),m);  %rem(x,y):求整除x/y的余数
    y=x/m;
    A(n-1,1)=y;
End

如果我们把测试输入空间里的所有测试输入点编个号,然后按生成的随机数来选择,就可以实现随机测试了。

工程实践里,还有很多随机选取用例的方法,比如抓阉法、随机数色子法、随机数表法等等。

标签:随机数,用例,麻雀,随机,测试,输入,多样化
From: https://blog.csdn.net/wkqyxyh/article/details/142059935

相关文章

  • 直流充电桩测试仪优势和特点
    直流充电桩测试仪是一种专门用于检测和测试直流充电桩性能的设备。它的主要功能是对充电桩的各项参数进行精确测量,确保其正常工作,提高充电效率和安全性。以下是直流充电桩测试仪的优势和特点:高精度测量:直流充电桩测试仪具有高精度的测量功能,可以对充电桩的电压、电流、功率等参......
  • 【北京迅为】itop-3588开发板快速测试手册-银河麒麟系统功能测试
    1系统启动命令行终端显示如下,进入 root 用户       2系统信息查询查看内核和 cpu 信息,输入如下命令:uname-a查看操作系统信息:cat/etc/issue查看环境变量信息:env     3背光测试背光的亮度设置范围为(0--255),255表示亮度最高,0 表示关闭背光亮度。进入系统后在终......
  • Python3+requests搭建接口自动化测试框架_python3 import requests
    框架理念:使用json文件编写测试用例,建一个脚本循环读取测试用例并执行,然后对比返回的接口和用例中的期望结果。将测试结果写入到一个excel表格中生成测试报告,最后使用发送邮件功能将测试报告发送到指定邮箱。其中对所有公共方法进行封装并放在common公共文件目录下。  ......
  • 【北京迅为】itop-3588开发板快速测试手册-银河麒麟系统功能测试
     1系统启动命令行终端显示如下,进入root用户       2系统信息查询查看内核和cpu信息,输入如下命令:uname-a查看操作系统信息:cat/etc/issue查看环境变量信息:env     3背光测试背光的亮度设置范围为(0--255),255表示亮度最高,0表示关闭背光......
  • 随机过程
    培养OI直觉那么大的组合数根本不可做。当然有的时候你的确能把类似的大数消掉,但是你用心感受一下,在这道题中,你觉得后续真的有机会把它消掉吗?所谓条条大路通罗马,在OI中常常是行不通的。通过之前的训练,你其实也知道一条路走不通很可能是大方向就完全错了。但在赛时,你的临场体验其......
  • 【机器学习】马尔可夫随机场的基本概念、和贝叶斯网络的联系与对比以及在python中的实
    引言马尔可夫随机场(MarkovRandomField,简称MRF)是一种用于描述变量之间依赖关系的概率模型,它在机器学习和图像处理等领域有着广泛的应用文章目录引言一、马尔科夫随机场1.1定义1.2特点1.3应用1.4学习算法1.5总结二、选择马尔可夫随机场的学习算法的标准2.1问......
  • 【愚公系列】《AIGC辅助软件开发》019-AI 辅助测试与调试:AI辅助测试与调试应用案例
    ......
  • 二,PyCharm软件的使用,Python运算符,变量的介绍与运用,以及本章综合测试
    学习:知识的初次邂逅复习:知识的温故知新练习:知识的实践应用目录一,本章知识简介二,PyCharm软件的使用1,修改背景颜色和字体大小2,软件界面的使用3,PyCharm的常用快捷键三,Python运算符1,Python中常见的运算符有哪些?2,算术运算符如何运用?3,赋值运算符如何运用?4,......
  • 【开源推荐】MYScrcpy,不仅仅是python实现的Android投屏工具,更是开发测试新选择
    MYScrcpyV1.5.7python语言实现的一个Scrcpy客户端。包含完整的视频、音频、控制解析及展现,开发友好,引入即用!采用DearPyGui作为主要GUI。支持窗口位置记忆、右键手势控制、断线重连、虚拟摄像头投屏、中文输入,锁屏密码解锁等功能。高速模式使用pygame作为鼠标及键......
  • js产生随机数
    产生\([0,1)\)之间的随机实数,即\(0\le\text{Math.random()}<1\)Math.random()//返回值样例://#1:0.60958701902852//#2:0.16182155144292465//#3:0.30126821448898133随机产生\([0,n]\)之间的整数functionrandint1(n){//各数产生概率较平均returnMath.r......