软件测试蜕变oracle,一种面向软件升级的软件测试方法

一种面向软件升级的软件测试方法

【技术领域】

[0001] 本发明提供一种面向软件升级的基于等式描述的蜕变关系自动构造的软件测试 方法,该方法可以辅助蜕变测试的进行,属于软件测试领域。

【背景技术】

[0002] 在软件测试领域,测试人员通常凭借测试预言(test oracle)判断待测程序是否 通过。但对很多程序而言(如科学计算程序),测试预言的获取极其困难,测试人员往往无法 判断特定输入下的输出结果的正确性。蜕变测试技术是一种新型的软件测试技术,该方法 通过检测程序多次输出结果之间的蜕变关系来测试程序,不需要构造程序单次执行的预期 输出。

[0003] 蜕变关系是蜕变测试的核心。简单说来,蜕变关系表明了程序多次执行过程中输 入的改变对输出结果的影响。以三角函数sin为例,sin(X+31 )=-sin(X)是一个简单的脱 变关系(输入由X变为X+η,则输出结果互为相反数),当测试计算sin函数的程序P时,若 测试用例为x=39°,测试人员很难得知sin(39° )的准确预期结果,却能够比较容易的判 断sin(39° +π)和-Sin(39° )是否相等。若不相等,则程序P存在错误。

[0004] 当前蜕变测试相关研究主要包括:蜕变测试过程的优化、蜕变关系的筛选、蜕变测 试与其他验证或测试技术的结合、蜕变测试技术在特定领域中的应用等等。现有研究虽然 可以有效弥补传统测试方法的不足,但是缺少实用的蜕变关系构造方法,且到目前为止没 有方法能够实现自动构造蜕变关系。

【发明内容】

[0005] 本发明针对现有技术的不足,提供了一种面向软件升级的基于等式描述的蜕 变关系自动构造的软件测试方法,可应用于软件版本升级过程中的缺少测试预言(test oracle)程序的检错。

[0006] 本发明提供的技术方案如下:

[0007] -种面向软件升级的软件测试方法,其特征是,

[0008] A.在软件升级前,测试人员针对现有软件,构造每个程序的蜕变关系;所述程序 指的是实现特定函数计算功能的程序代码;

[0009] B.在软件升级后,针对修改后的程序,测试人员产生η (该值可由用户指定,例如, 可以设置η=100或200等)个一定范围内(如-5~5)的随机数作为测试用例,然后将每个 测试用例和其在修改后程序中相应的输出代入修改之前程序构造出的蜕变关系式中,查看 蜕变关系式是否成立,若修改后的程序不符合之前所构造出来的蜕变关系,则说明软件在 升级过程中存在错误。

[0010] 其中,步骤A中,构造程序蜕变关系的步骤如下:

[0011] 1)蜕变关系形式化:所有程序中的蜕变关系用如下公式表示:

[0012] /<.>/?μ(Ο ρα) (1)

[0013] 其中,I1为程序原有输入,I2为改变后的输入A 1为和I1相对应的输出,O2为和I2 相对应的输出,Ri代表11和I2之间的关系,Rtl代表O 1和O2之间的关系;

[0014] 2)蜕变关系参数化:为了构造蜕变关系,将Ri和Rtl限制在等式范围内,当R i为线 性等式时,包括如下情形:

[0015] 情形A :R。为线性等式;

[0016] 情形B :R。为二次等式;

[0017] 情形C :R。为三次等式;

[0018] 假设I1和I2各有η组参数值,分别表示为(X1, X2,…,xn>和〈y。y2,…,yn>,由于 以上三种情形中R i均为线性等式,I2的每个元素可看成I1所有元素的线性组合,即可表示 为:

【主权项】

1. 一种面向软件升级的软件测试方法,其特征是, A. 在软件升级前,测试人员针对现有软件,构造每个程序的蜕变关系;所述程序指的 是实现特定函数计算功能的程序代码; B. 在软件升级后,针对修改后的程序,测试人员产生n个一定范围内的随机数作为测 试用例,然后将每个测试用例和其在修改后程序中相应的输出代入修改之前程序构造出的 蜕变关系式中,查看蜕变关系式是否成立,若修改后的程序不符合之前所构造出来的蜕变 关系,则说明软件在升级过程中存在错误。

2. 如权利要求1所述的软件测试方法,其特征是,步骤A中,构造程序蜕变关系的步骤 如下: 1) 蜕变关系形式化:所有程序中的蜕变关系用如下公式表示: (1) 其中,Ii为程序原有输入,12为改变后的输入;〇:为和L相对应的输出,〇2为和12相对 应的输出,氏代表L和12之间的关系,R〇代表h和〇2之间的关系; 2) 蜕变关系参数化:为了构造蜕变关系,将氏和&限制在等式范围内,当氏为线性等 式时,包括如下情形: 情形A:R。为线性等式; 情形B:R。为二次等式; 情形C:R。为三次等式; 假设L和L各有n组参数值,分别表示为〈XpX2,…,xn>和〈ypy2,…,yn>,由于以上 三种情形中氏均为线性等式,12的每个元素可看成L所有元素的线性组合,即可表示为: 为=2^=1叫;?勺+ 4,其中%和1^为线性参数;设a代表由%组成的数组a[i,j],@代 表向量〈buh,…,bn>,则IfaIi+旦; 2.1)对于情形A:假设被测程序为F,则可用P(Ii)表示,02可用P(I2)表示;由于R〇也为线性等式,因此R〇可表示为: c1P(I1)+c2P(aI1+3 )+d=0 (2) 其中,Cl,c2,d以及a和0中的每个参数均为蜕变参数; 2. 2)对于情形B:RQ可表不为: ClP2 (Ii) +c2P2 (al^ ^ ) +c3P(Ii)P(al^ ^ ) +(1^di) +d2P(ali+ ^ ) +e=〇 (3) 其中,Cl,c2,a,P,c3,屯,d2,e均为蜕变参数; 2. 3)对于情形C:%可表示为: CjP3 (Ij) +c2P3 (alj+ ) +c3P2 (Ij)P(alj+ ) +c4P(Ij)P2 (alj+ ) +c5P2 (Ij) +c6P2 (alj+ ) +c7 P(Ii)P(al^ ^ ) +(1^di) +d2P(ali+ ^ ) +e=〇 (4) 其中,a,0,(^(1=1..7),4(」=1..2),6均为蜕变参数; 三次以上的情形据此类推; 3) 蜕变关系构造:定义了蜕变参数之后,使用进化算法寻找尽可能多的符合条件的参 数组合,进化算法每次执行会给出一组最优解,让进化算法重复运行多次,得到多组最优 解,每组最优解即为一组蜕变参数值,将蜕变参数值带入公式(2)、(3)或(4)中即可得到蜕 变关系式。

3. 如权利要求2所述的软件测试方法,其特征是,步骤3)中,使用聚类算法,将多个相 似的最优解合并为一个解。

4. 如权利要求2所述的软件测试方法,其特征是,当超过指定阈值的蜕变关系被违反 时,即可判断出程序中存在错误。

5. 如权利要求4所述的软件测试方法,其特征是,所述阈值为5%。

6. 如权利要求2所述的软件测试方法,其特征是,步骤3)中使用的进化算法为粒子群 算法:在粒子群算法中,每一个候选解都被称作一个粒子,考虑在一个D维空间里搜索N个 粒子,用<=,*",4>和4=纟,/;2,"%/; 0,>来分别代表第1(1彡1:^)个粒子在时 间t(t=l,2,…)的速度和位置;粒子根据下式更新速度:

在上式中,t4+1表示粒子i在d维上t+1时刻的速度;w是惯性权重;Cl和c2是学习因 子;^和r2是[0,1]之间的随机数,用以保持群体的多样性;尤是粒子i在d维上到时刻 t为止搜索到的最优位置;是整个粒子群迄今为止搜索到的最优位置;/【是粒子i的d 维位置矢量,且粒子根据如下公式更新自己的位置: l,J1=l,u!+v,idl (h) 起始时刻,t=l,N个粒子的初速度和起始位置均为随机生成,在到达终止时刻T之前, 每个粒子的速度和位置根据公式(a)和公式(b)更新。

7. 如权利要求6所述的软件测试方法,其特征是,将学习因子Cl和c2均设为1. 49445, 粒子数目N定位20,总的迭代次数定为350,t时刻的惯性权重一=0. 9-0. 5* (t/T)2。

【专利摘要】一种面向软件升级的软件测试方法,所述方法基于等式描述的蜕变关系自动构造。在软件升级前,测试人员针对现有软件,构造每个程序的蜕变关系;所述程序指的是实现特定函数计算功能的程序代码;在软件升级后,针对修改后的程序,测试人员产生n个一定范围内的随机数作为测试用例,然后将每个测试用例和其在修改后程序中相应的输出代入修改之前程序构造出的蜕变关系式中,查看蜕变关系式是否成立,若修改后的程序不符合之前所构造出来的蜕变关系,则说明软件在升级过程中存在错误。通过本发明,测试人员可以将构造出的蜕变关系应用到蜕变测试中,从而验证软件版本升级过程中程序的正确性。

【IPC分类】G06F11-36, G06F9-445

【公开号】CN104699595

【申请号】CN201310655851

【发明人】张洁, 陈俊洁, 郝丹, 熊英飞, 谢冰, 梅宏

【申请人】北京大学

【公开日】2015年6月10日

【申请日】2013年12月6日

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值