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

申请号 : CN201610220057.1

文献号 : CN105843743B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王洁洁刘斌

申请人 : 南京邮电大学

摘要 :

本发明公开了一种特殊自动化测试用例实际输出结果正确性的验证方法,该方法在对自动化测试用例产生的实际数据进行特定分析处理时,不影响其自动化测试本身的进程。步骤1:获取无Bug数据存储在本地文件下;步骤2:用获取到的无Bug数据训练出一个神经网络模型;步骤3:给定m维的特征向量为输入值[x1,x2,…,xi,…,xm],执行对应自动化测试用例得到实际测试结果Tk;步骤4:将上述步骤3中的输入值代入步骤2中已训练完成的神经网络中,经过神经网络的训练得出预测输出值ok,然后将步骤3中执行对应自动化测试用例得到实际测试结果Tk与训练完成后的神经网络输出的预测值ok进行比较,通过比较的结果ΔTk来判断此测试用例是否出现Bug。

权利要求 :

1.一种特殊自动化测试用例实际输出结果正确性的验证方法,其特征在于,所述方法包括如下步骤:

步骤1:获取无Bug数据存储在本地文件下,使用自动化测试工具采集无Bug数据存储在本地文件下,此数据包括输入值与输出值,其中的输入值是指设计指定测试用例时根据本测试用例的特点,在编辑脚本时给定的输入数值也可以是录制界面时输入的数值等,执行自动化测试时这些输入数值即是给对应参数的赋值;输出值是指本测试用例执行完毕之后在界面显示的结果数值也可以是机器反馈的log中信息;

步骤2:用获取到的无Bug数据训练出一个神经网络模型,建立神经网络模型,将使用自动化测试工具采集到的n个样本分为两部分,分别是训练样本和测试样本,使用训练样本的输入输出值来训练神经网络,然后再用测试样本的输入输出值来测试已训练好的神经网络的准确度;

步骤3:给定m维的特征向量为输入值[x1,x2,...,xi,...,xm],执行对应自动化测试用例得到实际测试结果Tk,以给定的数据[x1,x2,...,xi,...,xm]为输入值来执行特定功能的自动化测试用例,得到相应的实际输出值Tk;

步骤4:将上述步骤3中的输入值代入步骤2中已训练完成的神经网络中,经过神经网络的训练得出预测输出值ok,然后将步骤3中执行对应自动化测试用例得到实际测试结果Tk与训练完成后的神经网络输出的预测值ok进行比较,通过比较的结果ΔTk来判断此测试用例是否出现Bug,使用上述步骤2中训练完成的神经网络,将所述步骤3使用的输入值[x1,x2,...,xi,...,xm]代入步骤2已训练好的神经网络中,得到相应的输出结果,即特定自动化测试用例的预期值ok,将执行相应功能的自动化测试用例的实际输出结果Tk与训练完成后得到系统输出的预期值ok进行对比,求得输入值为[x1,x2,...,xi,...,xm]时的输出误差ΔTk,根据误差ΔTk来判断是否此被测功能出现了Bug,设定阈值μ,当误差ΔTk超过阈值μ时,使用脚本语言在测试报告中写入Bug,并且终止此自动化测试用例的执行,继续执行下一个自动化测试用例;当误差ΔTk没有超过阈值μ时,继续此自动化测试用例的执行。

说明书 :

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

技术领域

[0001] 本发明涉及一种特殊自动化测试用例实际输出结果正确性的验证方法,属于自动化测试领域。

背景技术

[0002] 目前对自动化测试用例执行结果的验证是在设计特定功能的自动化测试用例之前先给出确定的期望结果,执行测试用例时将之前的预期结果与实际结果进行比较,如果预期结果与实际结果相同则说明本功能无Bug,否则说明本功能出现Bug。此测试用例执行结果的验证很适合已知准确结果的自动化测试用例的设计,而对那些测试用例执行结果无法预知的测试用例此方法没办法进行验证。由于工业软件的特殊性,所以此缺陷在工业软件的自动化测试中尤为明显。
[0003] 目前针对已有的自动化测试技术面临的问题,是自动化测试领域急需解决的难题。而本发明能够很好地解决上面的问题。

发明内容

[0004] 本发明目的在于针对现有的自动化测试用例验证技术存在的不足,提供了一种特殊自动化测试用例输出数据的正确性验证方法。本发明通过采集无Bug数据来训练神经网络,使得在设计特殊的测试用例时可以计算出其预期结果,从而设计出完整的测试用例。本发明可以解决对测试结果无法预期的自动化测试用例的设计。
[0005] 本发明解决其技术问题所采取的技术方案是:本发明提供了一种特殊自动化测试用例实际输出结果正确性的验证方法,所述方法包括以下步骤:
[0006] 步骤1:获取无Bug数据存储在本地文件下;
[0007] 步骤2:用获取到的无Bug数据训练出一个神经网络模型;
[0008] 步骤3:给定m维的特征向量为输入值[x1,x2,...,xi,...,xm],执行对应自动化测试用例得到实际测试结果Tk;
[0009] 步骤4:将上述步骤3中的输入值代入步骤2中已训练完成的神经网络中,经过神经网络的训练得出预测输出值ok,然后将步骤3中执行对应自动化测试用例得到实际测试结果Tk与训练完成后的神经网络输出的预测值ok进行比较,通过比较的结果ΔTk来判断此测试用例是否出现Bug。
[0010] 进一步的,在本发明所述方法的步骤1中,通过使用自动化测试工具采集无Bug数据存储在本地文件下,此数据包括输入值与输出值,其中的输入值是指设计指定测试用例时根据本测试用例的特点,在编辑脚本时给定的输入数值也可以是录制界面时输入的数值等,执行自动化测试时这些输入数值即是给对应参数的赋值;输出值是指本测试用例执行完毕之后在界面显示的结果数值也可以是机器反馈的log中信息。
[0011] 进一步的,在本发明所述步骤2中,对在步骤1中得到的数据进行神经网络的训练,即建立神经网络模型。将步骤1中收集到的n个样本分为两部分,分别是训练样本和测试样本。使用训练样本的输入输出值来训练神经网络,然后再用测试样本的输入输出值来测试已训练好的神经网络的准确度。
[0012] 进一步的,在本发明所述步骤3中,以给定的数据[x1,x2,...,xi,...,xm]为输入值来执行特定功能的自动化测试用例,得到相应的实际输出值Tk。
[0013] 进一步的,在本发明所述步骤4中,将所述步骤3使用的输入值[x1,x2,...,xi,...,xm]代入步骤2已训练好的神经网络中,得到相应的输出结果,即特定自动化测试用例的预期值ok,将执行相应功能的自动化测试用例的实际输出结果Tk与训练完成后得到系统输出的预期值ok进行对比,求得输入值为[x1,x2,...,xi,...,xm]时的输出误差ΔTk,根据误差ΔTk来判断是否此被测功能出现了Bug,设定阈值μ,当误差ΔTk超过阈值μ时,使用脚本语言在测试报告中写入Bug,并且终止此自动化测试用例的执行,继续执行下一个自动化测试用例;当误差ΔTk没有超过阈值μ时,继续此自动化测试用例的执行。
[0014] 有益效果:
[0015] 1、本发明通过对历史无Bug数据进行神经网络建模和训练,使得本来无法提前预知的测试用例执行结果变得可预测。
[0016] 2、本发明解决了特殊工业软件自动化测试的瓶颈,即在无法得到测试用例预期结果时,无法对此测试用例的执行结果进行验证。

附图说明

[0017] 图1为本发明方法的流程图。
[0018] 图2为BP(Backpropagation)算法的网络结构示意图。

具体实施方式

[0019] 下面结合说明书附图对本发明创造做进一步的详细说明。
[0020] 如图1所示,本发明提供了一种特殊自动化测试用例实际输出结果正确性的验证方法,所述方法包括以下步骤:
[0021] 步骤1:获取无Bug数据存储在本地文件下;
[0022] 使用自动化测试工具采集无Bug的数值,比如使用Ranorex自动化测试工具,在Ranorex中引用存储有测试所需n条记录的Excel,假设在Excel中,每条记录有m个数值,即特征向量是m维。执行相应功能的自动化测试,在确保执行自动化测试用例期间无Bug的情况下,以自动化测试用例执行得到的结果为输出值。将Excel中的n条输入值与执行自动化测试用例得到的n个输出值存储在一定格式的文件中,这是文件中存储有n个样本,每个样本中有(m+1)个数值,其中有m个为输入值,1个为输出值。
[0023] 步骤2:用获取到的无Bug数据训练出一个神经网络模型;
[0024] 使用在步骤1中得到的数据进行神经网络的训练。本次训练使用的神经网络模型是BP算法的神经网络。在使用神经网络训练数据之前,必须确定神经网络的结构,即神经网络的层数以及每层神经结点的个数。
[0025] (1)BP算法的网络结构
[0026] 图2是针对于本次训练设计的BP算法的网络结构。
[0027] 引入记号:xi表示输入层第i个神经结点的输入值,在本发明中假设收集到的n个样本,并将其分为两部分,分别是训练样本(p个)和测试样本(n-p个),其中每一个样本中有m个输入值,1个输出值,即一个实例的特征向量为[x1,x2,…,xi,…,xm];wij表示神经结点i与神经结点j之间的权重;oj表示神经结点j的输出值;θj表示偏置,其中每一个神经结点都有特定的偏置。
[0028] 在本发明中使用的BP算法神经网络有一层输入层,一层隐藏层,一层输出层。输入层的神经结点个数为特征向量的维数m;隐藏层的神经结点个数可以是任意的,并且后期可根据实验测试误差,以及准确度来实验并改进,在本发明中我们先设置隐藏层神经结点个数为(k-1);输出层神经结点个数为输出值的维数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]
[0036]
[0037] 其中oj表示神经结点j的输出值;Ij表示神经结点j所在层的上一层的加权求和之后再加上神经结点j的偏置的和;wij表示神经结点i与神经结点j之间的权重;oi表示上一层神经结点i的输出值;θj表示神经结点j的偏置。
[0038] 根据式(1)(2)求出所有隐藏层和输出层神经结点的输出值oj(j=1,2,...,k)。通过正向传播得出本样本的实际输出ok,将其与期望输出Tk进行比较,如果实际输出不等于期望输出,则进入反向传播过程。
[0039] (2.2)反向传播
[0040] 反向传播时,把误差按原来正向传播的通路反向传回,并对每个隐藏层的各个神经元的权重和偏置进行修改,以望输出误差趋向最小。
[0041] 根据误差反向传送
[0042] 对于输出层神经结点k实际输出与期望输出之间的误差Errk:
[0043] Errk=ok(1-ok)(Tk-ok)  式(3)
[0044] 其中Errk表示输出层神经结点k实际输出与期望输出之间的误差;οk表示神经结点k的实际输出;Tk表示神经结点k的期望输出。ok(1-ok)是sigmoid函数的导数。
[0045] 对于隐藏层神经结点j实际输出与期望输出之间的误差Errj:
[0046]
[0047] 其中Errj表示隐藏层神经结点j实际输出与期望输出之间的误差;oj表示神经结点j的实际输出值;
[0048] 权重更新:
[0049] Δwij=(l)Errjoi  式(5)
[0050] wij=wij+Δwij  式(6)
[0051] 其中Δwij表示前向传播后的权重wij与后向传播后的权重wij之间的误差;l表示学习率或者变化率,可在0到1之间随机选取。式(6)等号左边的wij表示后向传播后更新的权重;
[0052] 偏置更新:
[0053] Δθj=(l)Errj  式(7)
[0054] θj=θj+Δθj  式(8)
[0055] 其中Δθj表示前向传播后的权重θj与后向传播后的权重θj之间的误差;式(8)等式左边的θj表示后向传播后更新的偏置值;
[0056] 通过式(3)~(8)的反向传播步骤对隐藏层与输出层的各个神经元的权重和偏置进行修改,使得输出误差值逐渐趋向最小。
[0057] 以上是使用一个样本对BP神经网络的训练原则以及BP算法实现的具体步骤,本发明其他(p-1)个样本的训练如上。在p个样本全部训练完成之后,用(n-p)个测试样本来测试已训练好的BP神经网络的准确度。
[0058] 步骤3:给定m维的特征向量为输入值[x1,x2,...,xi,...,xm],执行对应自动化测试用例得到实际测试结果Tk;
[0059] 在步骤3中,给定输入值[x1,x2,...,xi,...,xm]来执行特定功能的自动化测试用例。比如在Ranorex中引用存储有测试所需数据的Excel,执行相应功能的自动化测试,得到相应的实际输出值Tk。
[0060] 步骤4:将上述步骤3中的输入值代入步骤2中已训练完成的神经网络中,经过神经网络的训练得出预测输出值ok,然后将步骤3中执行对应自动化测试用例得到实际测试结果Tk与训练完成后的神经网络输出的预测值ok进行比较,通过比较的结果ΔTk来判断此测试用例是否出现Bug。
[0061] 在步骤4中,将步骤3使用的[x1,x2,...,xi,...,xm]输入值代入步骤2中已训练好的BP神经网络中,得到相应的输出结果,即特定自动化测试用例的预期值ok。将执行相应功能的自动化测试用例的实际输出结果Tk与训练完成后得到系统输出的预期值ok进行对比,并求得输入值为[x1,x2,...,xi,...,xm]时的输出误差ΔTk,根据误差ΔTk来判断是否此被测功能出现了Bug。考虑到实际环境中,工业软件控制的机械可能受到工作环境以及机械本身温度、损耗等的影响,设定阈值μ,当误差ΔTk超过阈值μ时,Ranorex将在报告中写入Bug,并且终止此自动化测试用例的执行,继续执行下一个自动化测试用例;当误差ΔTk没有超过阈值μ时,继续此自动化测试用例的执行。
[0062] 本发明主要针对现有自动化测试用例测试结果验证方法面临的问题,提供了一种特殊自动化测试用例实际输出结果正确性的验证方法,该发明将对工业软件的特殊自动化测试用例测试结果验证问题的解决具有应用意义。
[0063] 在上述实施例中,仅对本发明进行了示范性描述,但是本领域技术人员在阅读本发明申请后可以在不脱离本发明的精神和范围的情况下对本发明进行各种修改。