一种特殊自动化测试用例实际输出结果正确性的验证方法

文档序号:10488871阅读:472来源:国知局
一种特殊自动化测试用例实际输出结果正确性的验证方法
【专利摘要】本发明公开了一种特殊自动化测试用例实际输出结果正确性的验证方法,该方法在对自动化测试用例产生的实际数据进行特定分析处理时,不影响其自动化测试本身的进程。步骤1:获取无Bug数据存储在本地文件下;步骤2:用获取到的无Bug数据训练出一个神经网络模型;步骤3:给定m维的特征向量为输入值[x1,x2,...,xi,...,xm],执行对应自动化测试用例得到实际测试结果Tk;步骤4:将上述步骤3中的输入值代入步骤2中已训练完成的神经网络中,经过神经网络的训练得出预测输出值ok,然后将步骤3中执行对应自动化测试用例得到实际测试结果Tk与训练完成后的神经网络输出的预测值ok进行比较,通过比较的结果ΔTk来判断此测试用例是否出现Bug。
【专利说明】
一种特殊自动化测试用例实际输出结果正确性的验证方法
技术领域
[0001 ]本发明涉及一种特殊自动化测试用例实际输出结果正确性的验证方法,属于自动 化测试领域。
【背景技术】
[0002] 目前对自动化测试用例执行结果的验证是在设计特定功能的自动化测试用例之 前先给出确定的期望结果,执行测试用例时将之前的预期结果与实际结果进行比较,如果 预期结果与实际结果相同则说明本功能无Bug,否则说明本功能出现Bug。此测试用例执行 结果的验证很适合已知准确结果的自动化测试用例的设计,而对那些测试用例执行结果无 法预知的测试用例此方法没办法进行验证。由于工业软件的特殊性,所以此缺陷在工业软 件的自动化测试中尤为明显。
[0003] 目前针对已有的自动化测试技术面临的问题,是自动化测试领域急需解决的难 题。而本发明能够很好地解决上面的问题。

【发明内容】

[0004] 本发明目的在于针对现有的自动化测试用例验证技术存在的不足,提供了一种特 殊自动化测试用例输出数据的正确性验证方法。本发明通过采集无Bug数据来训练神经网 络,使得在设计特殊的测试用例时可以计算出其预期结果,从而设计出完整的测试用例。本 发明可以解决对测试结果无法预期的自动化测试用例的设计。
[0005] 本发明解决其技术问题所采取的技术方案是:本发明提供了一种特殊自动化测试 用例实际输出结果正确性的验证方法,所述方法包括以下步骤:
[0006]步骤1:获取无Bug数据存储在本地文件下;
[0007] 步骤2:用获取到的无Bug数据训练出一个神经网络模型;
[0008] 步骤3:给定m维的特征向量为输入值[xi,X2, . . .,Xi, . . .,Xm],执行对应自动化测 试用例得到实际测试结果Tk;
[0009] 步骤4:将上述步骤3中的输入值代入步骤2中已训练完成的神经网络中,经过神经 网络的训练得出预测输出值〇k,然后将步骤3中执行对应自动化测试用例得到实际测试结 果T k与训练完成后的神经网络输出的预测值〇1{进行比较,通过比较的结果ATk来判断此测 试用例是否出现Bug。
[0010] 进一步的,在本发明所述方法的步骤1中,通过使用自动化测试工具采集无Bug数 据存储在本地文件下,此数据包括输入值与输出值,其中的输入值是指设计指定测试用例 时根据本测试用例的特点,在编辑脚本时给定的输入数值也可以是录制界面时输入的数值 等,执行自动化测试时这些输入数值即是给对应参数的赋值;输出值是指本测试用例执行 完毕之后在界面显示的结果数值也可以是机器反馈的log中信息。
[0011] 进一步的,在本发明所述步骤2中,对在步骤1中得到的数据进行神经网络的训练, 即建立神经网络模型。将步骤1中收集到的η个样本分为两部分,分别是训练样本和测试样 本。使用训练样本的输入输出值来训练神经网络,然后再用测试样本的输入输出值来测试 已训练好的神经网络的准确度。
[0012] 进一步的,在本发明所述步骤3中,以给定的数据[X1,X2, . . .,Xi, . . .,Xm]为输入值 来执行特定功能的自动化测试用例,得到相应的实际输出值Tk。
[0013] 进一步的,在本发明所述步骤4中,将所述步骤3使用的输入值[χι,Χ2, ...,xi, ..., xm]代入步骤2已训练好的神经网络中,得到相应的输出结果,即特定自动化测试用例的预 期值〇k,将执行相应功能的自动化测试用例的实际输出结果T k与训练完成后得到系统输出 的预期值〇k进行对比,求得输入值为[X1,X2, . . .,Xl,. . .,xm]时的输出误差Δ Tk,根据误差Δ Tk来判断是否此被测功能出现了Bug,设定阈值μ,当误差ATk超过阈值μ时,使用脚本语言在 测试报告中写入Bug,并且终止此自动化测试用例的执行,继续执行下一个自动化测试用 例;当误差A Tk没有超过阈值μ时,继续此自动化测试用例的执行。
[0014] 有益效果:
[0015] 1、本发明通过对历史无Bug数据进行神经网络建模和训练,使得本来无法提前预 知的测试用例执行结果变得可预测。
[0016] 2、本发明解决了特殊工业软件自动化测试的瓶颈,即在无法得到测试用例预期结 果时,无法对此测试用例的执行结果进行验证。
【附图说明】
[0017] 图1为本发明方法的流程图。
[0018] 图2为BP(Backpropagation)算法的网络结构示意图。
【具体实施方式】
[0019] 下面结合说明书附图对本发明创造做进一步的详细说明。
[0020] 如图1所示,本发明提供了一种特殊自动化测试用例实际输出结果正确性的验证 方法,所述方法包括以下步骤:
[0021 ]步骤1:获取无Bug数据存储在本地文件下;
[0022]使用自动化测试工具采集无Bug的数值,比如使用Ranorex自动化测试工具,在 Ranorex中引用存储有测试所需η条记录的Excel,假设在Excel中,每条记录有m个数值,即 特征向量是m维。执行相应功能的自动化测试,在确保执行自动化测试用例期间无Bug的情 况下,以自动化测试用例执行得到的结果为输出值。将Excel中的η条输入值与执行自动化 测试用例得到的η个输出值存储在一定格式的文件中,这是文件中存储有η个样本,每个样 本中有(m+1)个数值,其中有m个为输入值,1个为输出值。
[0023]步骤2:用获取到的无Bug数据训练出一个神经网络模型;
[0024]使用在步骤1中得到的数据进行神经网络的训练。本次训练使用的神经网络模型 是BP算法的神经网络。在使用神经网络训练数据之前,必须确定神经网络的结构,即神经网 络的层数以及每层神经结点的个数。
[0025] (I)BP算法的网络结构
[0026] 图2是针对于本次训练设计的BP算法的网络结构。
[0027] 引入记号:Xl表示输入层第i个神经结点的输入值,在本发明中假设收集到的η个 样本,并将其分为两部分,分别是训练样本(P个)和测试样本(n-p个),其中每一个样本中有 m个输入值,1个输出值,即一个实例的特征向量为[Xl,X2,…,Xi,…,Xm] ; Wi j表示神经结点i 与神经结点j之间的权重;Oj表示神经结点j的输出值;Gj表示偏置,其中每一个神经结点都 有特定的偏置。
[0028]在本发明中使用的BP算法神经网络有一层输入层,一层隐藏层,一层输出层。输入 层的神经结点个数为特征向量的维数m;隐藏层的神经结点个数可以是任意的,并且后期可 根据实验测试误差,以及准确度来实验并改进,在本发明中我们先设置隐藏层神经结点个 数为(k-Ι);输出层神经结点个数为输出值的维数1。
[0029] (2)BP算法原理
[0030] BP算法是通过迭代性来处理训练集中的实例,BP算法分二步进行,即正向传播和 反向传播。在开始训练BP神经网络之前需要随机初始化所有权重(通常随机选取的权重在-1到1之间)和随机初始化偏置(通常随机选取的偏置值在-0.5到0.5之间)。本发明先以单个 样本为例对这两个过程进行简述:
[0031] (2.1)正向传播
[0032]输入的样本从输入层经过隐藏层神经结点一层一层进行处理,通过所有的隐藏层 之后,则传向输出层;在逐层处理的过程中,每一层神经元的状态只对下一层神经元的状态 产生影响。在输出层把实际输出和期望输出进行比较,如果实际输出不等于期望输出,则进 入反向传播过程。
[0033]针对于本发明的神经网络正向传播具体算法如下:
[0034]在本发明中使用sigmoid函数(S曲线)来进行非线性关系的模拟。神经结点j的输 出值Oj的求解过程是先得出神经结点j所在层的上一层的加权求和再加上神经结点j的偏 置的和,然后再对其和讲行非线性转换,具体的公式如下:
[0035] 式.(1)
[0036] 式(2)
[0037]兵甲Oj衣不押泣结点J的输出值;Ij表示神经结点j所在层的上一层的加权求和之 后再加上神经结点j的偏置的和;Wij表示神经结点i与神经结点j之间的权重;Oi表示上一层 神经结点i的输出值;Θ谦示神经结点j的偏置。
[0038]根据式(1)(2)求出所有隐藏层和输出层神经结点的输出值~(」=1,2,...,1〇。通 过正向传播得出本样本的实际输出〇k,将其与期望输出Tk进行比较,如果实际输出不等于期 望输出,则进入反向传播过程。
[0039] (2.2)反向传播
[0040] 反向传播时,把误差按原来正向传播的通路反向传回,并对每个隐藏层的各个神 经元的权重和偏置进行修改,以望输出误差趋向最小。
[0041] 根据误差反向传送
[0042] 对于输出层神经结点k实际输出与期望输出之间的误差Em:
[0043] Em = Ok(I-Ok)(Tk-Ok)式(3)
[0044] 其中Em表示输出层神经结点k实际输出与期望输出之间的误差;〇k表示神经结点 k的实际输出;Tk表示神经结点k的期望输出。〇k(l-〇k)是sigmoid函数的导数。
[0045] 材不陷S巨妯釔姑占給rn与期望输出之间的误差Errj:
[0046] 式(4)
[0047]其中Em表示隐藏层神经结点j实际输出与期望输出之间的误差;Oj表示神经结点 j的实际输出值;
[0048] 权重更新:
[0049] Awij = (I)ErrjOi 式(5)
[0050] Wij=Wij+ Δ Wij 式(6)
[00511其中Awij表示前向传播后的权重Wij与后向传播后的权重Wij之间的误差;1表示学 习率或者变化率,可在0到1之间随机选取。式(6)等号左边的Wlj表示后向传播后更新的权 重;
[0052] 偏置更新:
[0053] Δ Bj = (I)Errj 式(7)
[0054] 0j = 0j+A 0j 式(8)
[0055] 其中ΔΘ」表示前向传播后的权重~与后向传播后的权重~之间的误差;式(8)等式 左边的h表示后向传播后更新的偏置值;
[0056] 通过式(3)~(8)的反向传播步骤对隐藏层与输出层的各个神经元的权重和偏置 进行修改,使得输出误差值逐渐趋向最小。
[0057]以上是使用一个样本对BP神经网络的训练原则以及BP算法实现的具体步骤,本发 明其他(P-I)个样本的训练如上。在P个样本全部训练完成之后,用(n-p)个测试样本来测试 已训练好的BP神经网络的准确度。
[0058] 步骤3:给定m维的特征向量为输入值[xi,X2, . . .,xi, . . .,xm],执行对应自动化测 试用例得到实际测试结果Tk;
[0059] 在步骤3中,给定输入值[X1,X2, . . .,Xi, . . .,Xm]来执行特定功能的自动化测试用 例。比如在Ranorex中引用存储有测试所需数据的Excel,执行相应功能的自动化测试,得到 相应的实际输出值Tk。
[0060] 步骤4:将上述步骤3中的输入值代入步骤2中已训练完成的神经网络中,经过神经 网络的训练得出预测输出值〇k,然后将步骤3中执行对应自动化测试用例得到实际测试结 果T k与训练完成后的神经网络输出的预测值〇k进行比较,通过比较的结果ATk来判断此测 试用例是否出现Bug。
[0061] 在步骤4中,将步骤3使用的[Χ1,χ2, . . .,Xi,. . . 4"]输入值代入步骤2中已训练好 的BP神经网络中,得到相应的输出结果,即特定自动化测试用例的预期值0k。将执行相应功 能的自动化测试用例的实际输出结果T k与训练完成后得到系统输出的预期值〇k进行对比, 并求得输入值为[xm,. . .,Xl,. . .,xm]时的输出误差ATk,根据误差八!\来判断是否此被 测功能出现了Bug。考虑到实际环境中,工业软件控制的机械可能受到工作环境以及机械本 身温度、损耗等的影响,设定阈值μ,当误差△ Tk超过阈值μ时,Ranorex将在报告中写入Bug, 并且终止此自动化测试用例的执行,继续执行下一个自动化测试用例;当误差AT k没有超 过阈值μ时,继续此自动化测试用例的执行。
[0062] 本发明主要针对现有自动化测试用例测试结果验证方法面临的问题,提供了一种 特殊自动化测试用例实际输出结果正确性的验证方法,该发明将对工业软件的特殊自动化 测试用例测试结果验证问题的解决具有应用意义。
[0063] 在上述实施例中,仅对本发明进行了示范性描述,但是本领域技术人员在阅读本 发明申请后可以在不脱离本发明的精神和范围的情况下对本发明进行各种修改。
【主权项】
1. 一种特殊自动化测试用例实际输出结果正确性的验证方法,其特征在于,所述方法 包括如下步骤: 步骤1:获取无 Bug数据存储在本地文件下; 步骤2:用获取到的无 Bug数据训练出一个神经网络模型; 步骤3:给定m维的特征向量为输入值[X1,X2, . . .,Xi, . . .,Xm],执行对应自动化测试用例 得到实际测试结果Tk; 步骤4:将上述步骤3中的输入值代入步骤2中已训练完成的神经网络中,经过神经网络 的训练得出预测输出值〇k,然后将步骤3中执行对应自动化测试用例得到实际测试结果Tk与 训练完成后的神经网络输出的预测值〇k进行比较,通过比较的结果△ Tk来判断此测试用例 是否出现Bug。2. 根据权利要求1所述的方法,其特征在于,在所述步骤1中,使用自动化测试工具采集 无 Bug数据存储在本地文件下,此数据包括输入值与输出值,其中的输入值是指设计指定测 试用例时根据本测试用例的特点,在编辑脚本时给定的输入数值也可以是录制界面时输入 的数值等,执行自动化测试时这些输入数值即是给对应参数的赋值;输出值是指本测试用 例执行完毕之后在界面显示的结果数值也可以是机器反馈的log中信息。3. 根据权利要求1所述的方法,其特征在于,在所述步骤2中,建立神经网络模型,将使 用自动化测试工具采集到的η个样本分为两部分,分别是训练样本和测试样本,使用训练样 本的输入输出值来训练神经网络,然后再用测试样本的输入输出值来测试已训练好的神经 网络的准确度。4. 根据权利要求1所述的方法,其特征在于,在所述步骤3中,以给定的数据[Χ1,Χ2,..., Xl,...,&]为输入值来执行特定功能的自动化测试用例,得到相应的实际输出值Tk。5. 根据权利要求1所述的方法,其特征在于,在所述步骤4中,使用所述步骤2中训练完 成的神经网络,将所述步骤3使用的输入值[ X1,X2,...,Xl,...,Xm]代入步骤2已训练好的神 经网络中,得到相应的输出结果,即特定自动化测试用例的预期值〇k,将执行相应功能的自 动化测试用例的实际输出结果T k与训练完成后得到系统输出的预期值〇1{进行对比,求得输 入值为[X1, X2, . . .,Xl,. . .,xm]时的输出误差ATk,根据误差ATk来判断是否此被测功能出 现了Bug,设定阈值μ,当误差过阈值μ时,使用脚本语言在测试报告中写入Bug,并且 终止此自动化测试用例的执行,继续执行下一个自动化测试用例;当误差AT k没有超过阈 值μ时,继续此自动化测试用例的执行。
【文档编号】G06F11/36GK105843743SQ201610220057
【公开日】2016年8月10日
【申请日】2016年4月11日
【发明人】王洁洁, 刘斌
【申请人】南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1