CN112395203A - 程序测试方法、装置及存储介质 - Google Patents
程序测试方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112395203A CN112395203A CN202011370178.7A CN202011370178A CN112395203A CN 112395203 A CN112395203 A CN 112395203A CN 202011370178 A CN202011370178 A CN 202011370178A CN 112395203 A CN112395203 A CN 112395203A
- Authority
- CN
- China
- Prior art keywords
- program
- coverage rate
- training
- tested
- prediction model
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012549 training Methods 0.000 claims abstract description 115
- 238000000034 method Methods 0.000 claims abstract description 61
- 238000012545 processing Methods 0.000 claims abstract description 27
- 239000011159 matrix material Substances 0.000 claims description 40
- 230000006870 function Effects 0.000 claims description 23
- 238000004422 calculation algorithm Methods 0.000 claims description 22
- 230000005284 excitation Effects 0.000 claims description 15
- 238000005457 optimization Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 6
- 239000000126 substance Substances 0.000 claims description 6
- 238000012360 testing method Methods 0.000 description 35
- 238000010586 diagram Methods 0.000 description 10
- 210000002569 neuron Anatomy 0.000 description 9
- 238000013528 artificial neural network Methods 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000007547 defect Effects 0.000 description 3
- 238000009795 derivation Methods 0.000 description 2
- 238000011990 functional testing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Abstract
本申请提供一种程序测试方法、装置及存储介质,该方法包括:获取待测试程序的源代码中的输出点的理论数量以及每个输出点的位置信息,将输出点的理论数量和每个输出点的位置信息输入覆盖率预测模型进行处理,得到预测代码覆盖率。本实施例的覆盖率预测模型是根据在线序列的极限学习机OS‑ELM训练得到的用于预测代码覆盖率的模型,通过该模型可快速、准确地获取一段待测试程序的代码覆盖率,无需运行整个待测试程序,预测的实时性好,为测试人员提供可靠的理论指导。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种程序测试方法、装置及存储介质。
背景技术
随着互联网技术的飞速发展,移动应用更是呈指数增长,移动终端应用程序APP、小程序的测试方面需求大涨。为了确保应用产品的软件质量,测试人员常常需要通过多种手段或工具对测试程序进行评估,其中,代码覆盖率就是其中比较重要的一个环节。
代码覆盖率,是一种通过计算测试过程中被执行的源代码占全部源代码的比例,进而间接度量软件质量的方法。它在保证测试质量的时候潜在保证实际产品的质量,可以基于此在程序中寻找没有被测试用例测试过的地方,进一步创建新的测试用例来增加覆盖率。
目前主要通过手动执行多个测试代码,统计多个测试代码的代码覆盖率。对于较为复杂的应用程序,其测试代码较长且数量较多,测试效率及精确度较低。
发明内容
本申请实施例提供一种程序测试方法、装置及存储介质,提高对代码覆盖率预测的效率和精确度。
本申请实施例的第一方面,提供一种程序测试方法,包括:
获取待测试程序的源代码中的输出点的理论数量以及每个输出点的位置信息;
将所述输出点的理论数量和所述每个输出点的位置信息,输入覆盖率预测模型进行处理,得到预测代码覆盖率;其中,所述覆盖率预测模型是根据在线序列的极限学习机OS-ELM训练得到的用于预测代码覆盖率的模型。
在本申请的一个实施例中,所述方法还包括:
获取训练样本集,所述训练样本集中包括多组训练样本,每一组训练样本中包括程序输出点的理论数量、位置信息以及所述程序实际运行时的代码覆盖率;
获取OS-ELM的训练参数,所述训练参数包括隐含层节点数、激励函数、训练数据集大小以及预测数据大小;
根据随机生成的隐含层的权值矩阵和偏置向量,所述训练参数以及所述训练样本集,采用OS-ELM算法进行模型训练,得到所述覆盖率预测模型。
在本申请的一个实施例中,所述方法还包括:
在所述待测试程序运行后,获取所述待测试程序运行时输出的日志文件;
根据所述日志文件,获取所述待测试程序运行时的输出点的实际数量;
根据所述待测试程序的输出点的所述理论数量和所述实际数量,计算获取所述待测试程序的实际代码覆盖率;
根据所述实际代码覆盖率对所述覆盖率预测模型进行优化处理,得到优化后的覆盖率预测模型。
在本申请的一个实施例中,所述根据所述实际代码覆盖率对所述覆盖率预测模型进行优化处理,得到优化后的覆盖率预测模型,包括:
根据所述待测试程序的输出点的理论数量,每个输出点的位置信息,以及所述实际代码覆盖率,得到一组新的训练样本;
对模型训练过程中的权值矩阵进行更新,得到更新后的权值矩阵;
根据所述新的训练样本以及所述更新后的权值矩阵,对所述覆盖率预测模型进行优化训练,得到所述优化后的覆盖率预测模型。
本申请实施例的第二方面,提供一种程序测试装置,包括:
获取模块,用于获取待测试程序的源代码中的输出点的理论数量以及每个输出点的位置信息;
处理模块,用于将所述输出点的理论数量和所述每个输出点的位置信息,输入覆盖率预测模型进行处理,得到预测代码覆盖率;其中,所述覆盖率预测模型是根据在线序列的极限学习机OS-ELM训练得到的用于预测代码覆盖率的模型。
在本申请的一个实施例中,所述获取模块,还用于获取训练样本集,所述训练样本集中包括多组训练样本,每一组训练样本中包括程序输出点的理论数量、位置信息以及所述程序实际运行时的代码覆盖率;
获取OS-ELM的训练参数,所述训练参数包括隐含层节点数、激励函数、训练数据集大小以及预测数据大小;
所述处理模块,还用于根据随机生成的隐含层的权值矩阵和偏置向量,所述训练参数以及所述训练样本集,采用OS-ELM算法进行模型训练,得到所述覆盖率预测模型。
在本申请的一个实施例中,所述获取模块,还用于在所述待测试程序运行后,获取所述待测试程序运行时输出的日志文件;
根据所述日志文件,获取所述待测试程序运行时的输出点的实际数量;
所述处理模块,还用于根据所述待测试程序的输出点的所述理论数量和所述实际数量,计算获取所述待测试程序的实际代码覆盖率;
根据所述实际代码覆盖率对所述覆盖率预测模型进行优化处理,得到优化后的覆盖率预测模型。
在本申请的一个实施例中,所述处理模块,具体用于:
根据所述待测试程序的输出点的理论数量,每个输出点的位置信息,以及所述实际代码覆盖率,得到一组新的训练样本;
对模型训练过程中的权值矩阵进行更新,得到更新后的权值矩阵;
根据所述新的训练样本以及所述更新后的权值矩阵,对所述覆盖率预测模型进行优化训练,得到所述优化后的覆盖率预测模型。
本申请实施例的第三方面,提供一种程序测试装置,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述程序测试装置能够执行上述第一方面中任一项所述的方法。
本申请实施例的第四方面,提供一种计算机可读存储介质,包括:用于存储计算机程序,当所述计算机程序在计算机上执行时,使得所述计算机执行上述第一方面中任一项所述的方法。
本申请实施例提供一种程序测试方法、装置及存储介质,其中,程序测试方法包括:获取待测试程序的源代码中的输出点的理论数量以及每个输出点的位置信息,将输出点的理论数量和每个输出点的位置信息输入覆盖率预测模型进行处理,得到预测代码覆盖率。本实施例的覆盖率预测模型是根据在线序列的极限学习机OS-ELM训练得到的用于预测代码覆盖率的模型,通过该模型可快速、准确地获取一段待测试程序的代码覆盖率,测试人员无需运行整个待测试程序,预测的实时性好,为测试人员提供可靠的理论指导。
附图说明
图1为本申请实施例提供的程序测试方法的流程示意图;
图2为本申请实施例提供的极限学习机ELM的结构示意图;
图3为本申请实施例提供的覆盖率预测模型的训练方法示意图;
图4为本申请实施例提供的覆盖率预测模型的更新方法示意图;
图5为本申请实施例提供的程序测试装置的结构示意图;
图6为本申请实施例提供的程序测试装置的硬件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
移动终端应用程序、小程序的测试直接关系到产品上线后的质量,一个小的缺陷bug可能会导致巨大的损失。因此,测试人员需要在产品上线之前,对应用产品进行功能测试,确保应用产品的软件质量。大多数功能测试中,测试人员一般不能直接得到被测源代码,源代码也不是测试人员关心的重点。在具体的测试过程中,测试人员一般以一个有意义的功能模块作为测试关心的重点,而能够反映一定功能含义的代码覆盖率在功能测试中更有价值。因此,代码覆盖率是功能测试的一个重要指标。
尽管百分之百的代码覆盖率不能代表被测对象完全没有问题,但是测试覆盖的部分以及覆盖比率可以增加测试者对测试工作的信心,指导测试执行以及测试的方向。另外,当测试用例执行出现异常时,针对每个测试用例的测试报告还可以提供可疑代码的范围,为代码纠错提供帮助。
现有技术方案主要是通过执行测试代码,来获取测试代码的代码覆盖率。对于较为复杂的应用程序,测试人员需要将所有测试代码执行一遍,然后根据执行结果统计所有测试代码的代码覆盖率,测试效率及测试精确度不高。
针对上述问题,本申请实施例提供一种程序测试方法,针对待测试程序的源代码,建立机器学习算法的覆盖率预测模型,通过覆盖率预测模型快速、准确地获取待测试程序的源代码的预测代码覆盖率,为测试人员提供可靠的理论指导,进而提高测试的效率和精确度。在上述方法的基础上,通过引入在线序列的极限学习机OS-ELM,还可以实现对待测试程序的代码覆盖率的实时预测,便于测试人员根据预测结果进行测试调整。
下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1为本申请实施例提供的程序测试方法的流程示意图,如图1所示,本实施例提供的程序测试方法包括如下几个步骤:
步骤101、获取待测试程序的源代码中的输出点的理论数量以及每个输出点的位置信息。
具体的,通过读取待测试程序的源代码,获取源代码中输出点的理论数量以及每个输出点的位置信息。
本实施例中,待测试程序的源代码中包括多个输出点,通常情况下,在执行源代码过程中,每个输出点的位置处将返回一个执行结果,输出点的理论数量应等于执行结果的数量。
然而,在实际测试过程中,有可能存在测试代码的部分输出点没有返回执行结果,造成执行结果的理论值与实际值存在差异。
步骤102、将输出点的理论数量和每个输出点的位置信息,输入覆盖率预测模型进行处理,得到预测代码覆盖率。
其中,覆盖率预测模型是根据在线序列的极限学习机(Online SequentialExtreme Learning Machine,OS-ELM)训练得到的用于预测代码覆盖率的模型。
下面首先对极限学习机ELM模型进行说明。
示例性的,图2为本申请实施例提供的极限学习机ELM的结构示意图,如图2所示,极限学习机包括输入层、隐含层以及输出层。
其中,单隐层的前馈神经网络,其输入层对应输入变量xi=[xi1,xi2,…,xin]T,包含n个神经元,输出层包含m个神经元,对应m个输出变量yi=[yi1,yi2,…,yim]T,m代表输出层包含m个神经元,其中隐含层包含L个神经元,则输入层与隐含层之间的权值矩阵w可表示为:
式中,wij表示第i个隐含层中神经元与第j个输入层神经元之间的权重值;偏置向量b可表示为:
隐含层与输出层之间的权值矩阵β可表示为:
式中,βjk表示隐含层中的第j个神经元与输出层中的第k个神经元的输出权值。
假设模型输入样本集中含有Q组样本,其对应的样本输入矩阵X以及样本输出矩阵Y可表示为:
设隐含层的激励函数为g(x),则通过运算可以得到该网络的输出矩阵T为:
上式可简写为
Hβ=T 公式六
其中,H是网络中隐含层的输出矩阵,即:
随机生成输入权重和隐节点的偏置向量,然后利用极限学习机模型求得线性函数Hβ=T的最小二乘解β:
ELM的输出表达式可直接表示为:
f(x)=g(x)β=g(x)H-1T 公式九
对于给定训练样本(xi,ti),其中xi=[xi1,xi2,...,xin]T∈R,ti=[ti1,ti2,...,tim]T∈R。激励函数g(x)和L个隐层节点的ELM算法可归纳为如下步骤:
步骤a、随机生成输入层到隐含层的权值矩阵w以及隐含层偏置向量b。
步骤b、输入训练样本,建立训练模型,计算模型中隐含层的输出矩阵H。
步骤c、最后得到输出权重β=H-1T。
通过上述过程可以看出,相比传统的神经网络,极限学习机在建模过程中不需要设置大量的参数。在算法执行过程中,ELM模型根据输入的训练样本集,随机生成隐含层的权值矩阵w以及隐含层的偏置矩阵b,通过矩阵运算得到隐含层的输出权值,即为唯一的全局最优解。此算法无需进行反复迭代,大大提高了网络模型的运算速度。因此,极限学习机ELM与传统的神经网络相比,大大减少了训练时间并且提升了模型的泛化性能,克服了传统神经网络学习效率低、容易陷入局部极小值的缺点。
在一些实施例中,可以利用上述极限学习机ELM模型,实现对待测试程序的代码覆盖率的预测,与传统神经网络相比,学习效率高,得到的预测代码覆盖率的准确率较高。
ELM模型采取的是全部的数据传输完成后,才进行一次数据学习,但是在实际应用中,数据往往是一个一个或一块一块添加到测试装置中,因此,可以在ELM模型的基础上,对其进行改进,采用在线序列的极限学习机OS-ELM。OS-ELM是一种单隐层前馈神经网络训练算法的极限学习机,具备极限学习机ELM的速度和泛化能力,可以随着新数据的到来不断更新模型。该方法采用分块矩阵的方法,有效的避免了数据的重复训练,采用OS-ELM算法更新后的模型适应性增强,预测精确度提高。OS-ELM算法包括初始化阶段(即模型的初始训练过程)以及在线序列更新阶段(即模型的更新过程),具体可参见下面两个实施例,此处不做展开。
本申请实施例提供的程序测试方法,通过获取待测试程序的源代码中的输出点的理论数量以及每个输出点的位置信息,将输出点的理论数量和每个输出点的位置信息输入覆盖率预测模型进行处理,得到预测代码覆盖率。本实施例的覆盖率预测模型是根据在线序列的极限学习机OS-ELM训练得到的用于预测代码覆盖率的模型,通过该模型可快速、准确地获取一段待测试程序的代码覆盖率,测试人员无需运行整个待测试程序,预测的实时性好,为测试人员提供可靠的理论指导。
下面一个实施例针对上述覆盖率预测模型的训练过程进行说明。图3为本申请实施例提供的覆盖率预测模型的训练方法示意图,如图3所示,本实施例提供的覆盖率预测模型的训练过程,包括如下几个步骤:
步骤201、获取训练样本集,训练样本集中包括多组训练样本,每一组训练样本中包括程序输出点的理论数量、位置信息以及程序实际运行时的代码覆盖率。
步骤202、获取OS-ELM的训练参数,训练参数包括隐含层节点数、激励函数、训练数据集大小以及预测数据大小。
OS-ELM的训练参数是建模时预先设置好的参数。其中,隐含层节点数,即图2所示实施例中隐含层的神经元的数量L。在神经网络中,隐含层和输出层节点的输入和输出之间具有函数关系,这个函数称为激励函数,常见的激励函数有:线性激励函数、阈值或阶跃激励函数、S形激励函数、双曲正切激励函数和高斯激励函数等。训练数据集大小是指OS-ELM算法的初始化阶段的训练样本的数量,记为N0,N0为正整数,可根据实际需求设置。预测数据大小是指OS-ELM算法的初始化阶段一个训练样本对应的输入变量的大小,输入变量可以表示为xi=[xi1,xi2,…,xin]T。本实施例中,输入变量至少包括待测试程序的源代码中的输出点的理论数量以及每个输出点的位置信息。
步骤203、根据随机生成的隐含层的权值矩阵和偏置向量,训练参数以及训练样本集,采用OS-ELM算法进行模型训练,得到覆盖率预测模型。
具体的,根据随机生成的隐含层的权值矩阵和偏置向量,训练参数,建立初始的覆盖率预测模型,输入训练样本集中的训练样本,采用OS-ELM算法对初始的覆盖率预测模型进行训练,求取满足的β0,根据广义逆的计算方法可以计算出其中,
上述训练过程得到的覆盖率预测模型,可实现对任意待测试程序的代码覆盖率的预测,为测试人员提供可靠的理论指导,提高对待测试程序的代码覆盖率的预测效率和精确度。
由于覆盖率预测模型采用在线序列的极限学习机OS-ELM进行训练,可以实现对待测试程序的代码覆盖率进行实时预测,并基于该新的测试程序数据,更新覆盖率预测模型。下面结合附图4对上述覆盖率预测模型的更新过程进行说明。
图4为本申请实施例提供的覆盖率预测模型的更新方法示意图,如图4所示,本实施例提供的覆盖率预测模型的更新过程,包括如下几个步骤:
步骤301、在待测试程序运行后,获取待测试程序运行时输出的日志文件。
步骤302、根据日志文件,获取待测试程序运行时的输出点的实际数量。
待测试程序的源代码中包括多个输出点,在正常情况下,每一个输出点对应一个执行结果。如果代码存在缺陷或者外部因素干扰,可能导致部分输出点没有返回执行结果或者执行结果不正确,造成部分功能缺失。因此,通过执行待测试程序,获取待测试程序运行时输出的日志文件,根据日志文件统计待测试程序在实际运行过程中正确返回执行结果的输出点的实际数量。
步骤303、根据待测试程序的输出点的理论数量和实际数量,计算获取待测试程序的实际代码覆盖率。
其中,待测试程序的实际代码覆盖率可通过待测试程序的输出点的实际数量与理论数量的比值表征。
步骤304、根据实际代码覆盖率对覆盖率预测模型进行优化处理,得到优化后的覆盖率预测模型。
本步骤的优化过程,具体包括:
步骤3041、根据待测试程序的输出点的理论数量,每个输出点的位置信息,以及实际代码覆盖率,得到一组新的训练样本。
步骤3042、对模型训练过程中的权值矩阵进行更新,得到更新后的权值矩阵。
步骤3043、根据新的训练样本以及更新后的权值矩阵,对覆盖率预测模型进行优化训练,得到优化后的覆盖率预测模型。
当有新的训练样本进入覆盖率预测模型时,可通过如下公式对模型中的权值矩阵进行更新:
β(K+1)=β(K)+PK+1HK+1 T(TK+1-Hk+1β(K))
具体的推导过程如下:
步骤2、a)当新的N1个样本进入模型时,利用基本的极限学习机的思想,求得:
b)我们把β(1)表示成β(0),经过推导得出
K1=K0+H1 TH1 公式十一
c)由上述公式十一,可以得到在线序列的递推公式。
β(K+1)=β(K)+PK+1HK+1 T(TK+1-Hk+1β(K))
当N0=N时,OS-ELM算法就等价为ELM算法。
OS-ELM算法相比于ELM算法具有很高的预测精度,它更适合处理复杂环境下的大量原始数据,对之前的历史数据依赖性比较小,具有很好的鲁棒性。因此,相比于ELM算法,OS-ELM算法更加适合互联网测试程序,实现对大量测试程序的在线代码覆盖率预测。
本申请实施例可以根据上述方法实施例对程序测试装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以使用硬件的形式实现,也可以使用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。下面以使用对应各个功能划分各个功能模块为例进行说明。
图5为本申请实施例提供的程序测试装置的结构示意图。如图5所示,本实施例提供的程序测试装置500,包括:
获取模块501,用于获取待测试程序的源代码中的输出点的理论数量以及每个输出点的位置信息;
处理模块502,用于将所述输出点的理论数量和所述每个输出点的位置信息,输入覆盖率预测模型进行处理,得到预测代码覆盖率;其中,所述覆盖率预测模型是根据在线序列的极限学习机OS-ELM训练得到的用于预测代码覆盖率的模型。
在本申请的一个实施例中,所述获取模块501,还用于:
获取训练样本集,所述训练样本集中包括多组训练样本,每一组训练样本中包括程序输出点的理论数量、位置信息以及所述程序实际运行时的代码覆盖率;
获取OS-ELM的训练参数,所述训练参数包括隐含层节点数、激励函数、训练数据集大小以及预测数据大小;
所述处理模块502,还用于根据随机生成的隐含层的权值矩阵和偏置向量,所述训练参数以及所述训练样本集,采用OS-ELM算法进行模型训练,得到所述覆盖率预测模型。
在本申请的一个实施例中,所述获取模块501,还用于:
在所述待测试程序运行后,获取所述待测试程序运行时输出的日志文件;
根据所述日志文件,获取所述待测试程序运行时的输出点的实际数量;
所述处理模块502,还用于根据所述待测试程序的输出点的所述理论数量和所述实际数量,计算获取所述待测试程序的实际代码覆盖率;
根据所述实际代码覆盖率对所述覆盖率预测模型进行优化处理,得到优化后的覆盖率预测模型。
在本申请的一个实施例中,所述处理模块502,具体用于:
根据所述待测试程序的输出点的理论数量,每个输出点的位置信息,以及所述实际代码覆盖率,得到一组新的训练样本;
对模型训练过程中的权值矩阵进行更新,得到更新后的权值矩阵;
根据所述新的训练样本以及所述更新后的权值矩阵,对所述覆盖率预测模型进行优化训练,得到所述优化后的覆盖率预测模型。
本申请实施例提供的程序测试装置,用于执行前述任一方法实施例的技术方案,其实现原理和技术效果类似,在此不再赘述。
图6为本申请实施例提供的程序测试装置的硬件结构示意图。如图6所示,本实施例提供的程序测试装置600,包括:
至少一个处理器601(图6中仅示出了一个处理器);以及
与所述至少一个处理器通信连接的存储器602;其中,
所述存储器602存储有可被所述至少一个处理器601执行的指令,所述指令被所述至少一个处理器601执行,以使所述程序测试装置600能够执行前述任一方法实施例的各个步骤。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被处理器执行时用于实现前述任一方法实施例的技术方案。
本申请实施例还提供一种程序,当该程序被处理器执行时,用于执行前述方法实施例的技术方案。
本申请实施例还提供一种计算机程序产品,包括程序指令,程序指令用于实现前述方法实施例的技术方案。
本申请实施例还提供了一种芯片,包括:处理模块与通信接口,该处理模块能执行前述方法实施例的技术方案。
进一步地,该芯片还包括存储模块(如,存储器),存储模块用于存储指令,处理模块用于执行存储模块存储的指令,并且对存储模块中存储的指令的执行使得处理模块执行前述方法实施例的技术方案。
应理解,本申请实施例中提及的处理器可以是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DR RAM)。
需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)集成在处理器中。
应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (11)
1.一种程序测试方法,其特征在于,包括:
获取待测试程序的源代码中的输出点的理论数量以及每个输出点的位置信息;
将所述输出点的理论数量和所述每个输出点的位置信息,输入覆盖率预测模型进行处理,得到预测代码覆盖率;其中,所述覆盖率预测模型是根据在线序列的极限学习机OS-ELM训练得到的用于预测代码覆盖率的模型。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取训练样本集,所述训练样本集中包括多组训练样本,每一组训练样本中包括程序输出点的理论数量、位置信息以及所述程序实际运行时的代码覆盖率;
获取OS-ELM的训练参数,所述训练参数包括隐含层节点数、激励函数、训练数据集大小以及预测数据大小;
根据随机生成的隐含层的权值矩阵和偏置向量,所述训练参数以及所述训练样本集,采用OS-ELM算法进行模型训练,得到所述覆盖率预测模型。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在所述待测试程序运行后,获取所述待测试程序运行时输出的日志文件;
根据所述日志文件,获取所述待测试程序运行时的输出点的实际数量;
根据所述待测试程序的输出点的所述理论数量和所述实际数量,计算获取所述待测试程序的实际代码覆盖率;
根据所述实际代码覆盖率对所述覆盖率预测模型进行优化处理,得到优化后的覆盖率预测模型。
4.根据权利要求3所述的方法,其特征在于,所述根据所述实际代码覆盖率对所述覆盖率预测模型进行优化处理,得到优化后的覆盖率预测模型,包括:
根据所述待测试程序的输出点的理论数量,每个输出点的位置信息,以及所述实际代码覆盖率,得到一组新的训练样本;
对模型训练过程中的权值矩阵进行更新,得到更新后的权值矩阵;
根据所述新的训练样本以及所述更新后的权值矩阵,对所述覆盖率预测模型进行优化训练,得到所述优化后的覆盖率预测模型。
5.一种程序测试装置,其特征在于,包括:
获取模块,用于获取待测试程序的源代码中的输出点的理论数量以及每个输出点的位置信息;
处理模块,用于将所述输出点的理论数量和所述每个输出点的位置信息,输入覆盖率预测模型进行处理,得到预测代码覆盖率;其中,所述覆盖率预测模型是根据在线序列的极限学习机OS-ELM训练得到的用于预测代码覆盖率的模型。
6.根据权利要求5所述的装置,其特征在于,
所述获取模块,还用于获取训练样本集,所述训练样本集中包括多组训练样本,每一组训练样本中包括程序输出点的理论数量、位置信息以及所述程序实际运行时的代码覆盖率;
获取OS-ELM的训练参数,所述训练参数包括隐含层节点数、激励函数、训练数据集大小以及预测数据大小;
所述处理模块,还用于根据随机生成的隐含层的权值矩阵和偏置向量,所述训练参数以及所述训练样本集,采用OS-ELM算法进行模型训练,得到所述覆盖率预测模型。
7.根据权利要求5或6所述的装置,其特征在于,
所述获取模块,还用于在所述待测试程序运行后,获取所述待测试程序运行时输出的日志文件;
根据所述日志文件,获取所述待测试程序运行时的输出点的实际数量;
所述处理模块,还用于根据所述待测试程序的输出点的所述理论数量和所述实际数量,计算获取所述待测试程序的实际代码覆盖率;
根据所述实际代码覆盖率对所述覆盖率预测模型进行优化处理,得到优化后的覆盖率预测模型。
8.根据权利要求7所述的装置,其特征在于,所述处理模块,具体用于:
根据所述待测试程序的输出点的理论数量,每个输出点的位置信息,以及所述实际代码覆盖率,得到一组新的训练样本;
对模型训练过程中的权值矩阵进行更新,得到更新后的权值矩阵;
根据所述新的训练样本以及所述更新后的权值矩阵,对所述覆盖率预测模型进行优化训练,得到所述优化后的覆盖率预测模型。
9.一种程序测试装置,其特征在于,
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述程序测试装置能够执行权利要求1-4中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,包括:用于存储计算机程序,当所述计算机程序在计算机上执行时,使得所述计算机执行权利要求1-4中任一项所述的方法。
11.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011370178.7A CN112395203A (zh) | 2020-11-30 | 2020-11-30 | 程序测试方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011370178.7A CN112395203A (zh) | 2020-11-30 | 2020-11-30 | 程序测试方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112395203A true CN112395203A (zh) | 2021-02-23 |
Family
ID=74604714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011370178.7A Pending CN112395203A (zh) | 2020-11-30 | 2020-11-30 | 程序测试方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112395203A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246602A (zh) * | 2012-02-14 | 2013-08-14 | 阿里巴巴集团控股有限公司 | 代码覆盖率确定方法及系统、代码覆盖检测方法及系统 |
CN107346286A (zh) * | 2017-07-03 | 2017-11-14 | 武汉大学 | 一种基于核主成分分析和极限学习机的软件缺陷预测方法 |
CN108615071A (zh) * | 2018-05-10 | 2018-10-02 | 阿里巴巴集团控股有限公司 | 模型测试的方法及装置 |
CN109240929A (zh) * | 2018-09-18 | 2019-01-18 | 百度在线网络技术(北京)有限公司 | 软件质量预测方法、装置、终端和计算机可读存储介质 |
CN109558328A (zh) * | 2018-12-04 | 2019-04-02 | 郑州云海信息技术有限公司 | 一种代码覆盖率的测试方法、系统、装置及可读存储介质 |
CN110389764A (zh) * | 2019-06-19 | 2019-10-29 | 平安普惠企业管理有限公司 | 无用代码清理方法、设备、存储介质及装置 |
CN110580226A (zh) * | 2019-09-23 | 2019-12-17 | 上海创景信息科技有限公司 | 操作系统级程序的目标码覆盖率测试方法、系统及介质 |
CN110941555A (zh) * | 2019-11-26 | 2020-03-31 | 广州品唯软件有限公司 | 测试用例推荐方法、装置、计算机设备和存储介质 |
-
2020
- 2020-11-30 CN CN202011370178.7A patent/CN112395203A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246602A (zh) * | 2012-02-14 | 2013-08-14 | 阿里巴巴集团控股有限公司 | 代码覆盖率确定方法及系统、代码覆盖检测方法及系统 |
CN107346286A (zh) * | 2017-07-03 | 2017-11-14 | 武汉大学 | 一种基于核主成分分析和极限学习机的软件缺陷预测方法 |
CN108615071A (zh) * | 2018-05-10 | 2018-10-02 | 阿里巴巴集团控股有限公司 | 模型测试的方法及装置 |
CN109240929A (zh) * | 2018-09-18 | 2019-01-18 | 百度在线网络技术(北京)有限公司 | 软件质量预测方法、装置、终端和计算机可读存储介质 |
CN109558328A (zh) * | 2018-12-04 | 2019-04-02 | 郑州云海信息技术有限公司 | 一种代码覆盖率的测试方法、系统、装置及可读存储介质 |
CN110389764A (zh) * | 2019-06-19 | 2019-10-29 | 平安普惠企业管理有限公司 | 无用代码清理方法、设备、存储介质及装置 |
CN110580226A (zh) * | 2019-09-23 | 2019-12-17 | 上海创景信息科技有限公司 | 操作系统级程序的目标码覆盖率测试方法、系统及介质 |
CN110941555A (zh) * | 2019-11-26 | 2020-03-31 | 广州品唯软件有限公司 | 测试用例推荐方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lomuscio et al. | An approach to reachability analysis for feed-forward relu neural networks | |
US20230229978A1 (en) | Debugging correctness issues in training machine learning models | |
CN111814385A (zh) | 预测加工件质量的方法、装置和计算机设备 | |
US20070061144A1 (en) | Batch statistics process model method and system | |
JP2019021303A (ja) | ソフトウェアプログラムフォールト位置特定 | |
CN111290967A (zh) | 一种软件缺陷预测方法、装置、设备及存储介质 | |
CN111124898B (zh) | 问答系统测试方法、装置、计算机设备和存储介质 | |
Kaur et al. | A proposed new model for maintainability index of open source software | |
CN114881343A (zh) | 基于特征选择的电力系统短期负荷预测方法及装置 | |
CN112633362B (zh) | 一种旋转机械自适应故障诊断方法、装置、设备及介质 | |
CN113541985B (zh) | 物联网故障诊断方法、模型的训练方法及相关装置 | |
CN113537614A (zh) | 电网工程造价预测模型的构建方法、系统、设备及介质 | |
US20190042681A1 (en) | Method and apparatus for selecting integrated circuit device neural network modeling sample | |
CN112395203A (zh) | 程序测试方法、装置及存储介质 | |
Chen et al. | Inference for a mean-reverting stochastic process with multiple change points | |
CN110553678A (zh) | 多传感器系统检测方法、装置、计算机设备和存储介质 | |
CN109187898B (zh) | 水产养殖环境中水质氨氮含量的软测量方法及装置 | |
CN114860617B (zh) | 一种智能压力测试方法及系统 | |
US20220269991A1 (en) | Evaluating reliability of artificial intelligence | |
CN115344386A (zh) | 基于排序学习的云仿真计算资源预测方法、装置和设备 | |
CN115270932A (zh) | 整车排放参数优化方法、系统、电子设备和存储介质 | |
Ritter et al. | Noise-resilient empirical performance modeling with deep neural networks | |
CN111209214B (zh) | 代码测试处理方法、装置、电子设备及介质 | |
CN110298690B (zh) | 对象类目的周期判断方法、装置、服务器及可读存储介质 | |
EP3913547A1 (en) | Modelling input-output relation of computer-controlled entity |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176 Applicant after: Jingdong Technology Holding Co.,Ltd. Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Beijing Economic and Technological Development Zone, 100176 Applicant before: Jingdong Digital Technology Holding Co., Ltd |
|
CB02 | Change of applicant information |