CN110727593B - 基于历史需求数据挖掘的测试用例智能生成方法及介质 - Google Patents
基于历史需求数据挖掘的测试用例智能生成方法及介质 Download PDFInfo
- Publication number
- CN110727593B CN110727593B CN201910966703.2A CN201910966703A CN110727593B CN 110727593 B CN110727593 B CN 110727593B CN 201910966703 A CN201910966703 A CN 201910966703A CN 110727593 B CN110727593 B CN 110727593B
- Authority
- CN
- China
- Prior art keywords
- sequence
- test case
- demand
- sub
- test
- 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.)
- Active
Links
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/3684—Test management for test design, e.g. generating new test cases
-
- 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
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Artificial Intelligence (AREA)
- Probability & Statistics with Applications (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于历史需求数据挖掘的测试用例智能生成方法及介质,属于计算机软件开发及软件测试领域,解决现有技术中生成的测试用例有效性和可用性不高的问题。本发明对获取的一个历史需求文档进行处理得到一个需求子项序列,同时,对获取的历史需求文档对应的测试用例进行处理,得到测试用例序列;基于需求子项序列的测试用例序列建立预测测试用例的隐马尔科夫模型;基于训练集和测试集采用监督学习的方式隐马尔科夫模型,得到参数最优的预测模型;将待预测的需求文档的需求子项序列和最优参数的预测模型输入维特比算法,求解最优的测试用例序列并输出,基于输出和映射关系查找最终的测试用例。本发明用于测试用例的生成。
Description
技术领域
一种基于历史需求数据挖掘的测试用例智能生成方法及介质,用于测试用例的生成,属于计算机软件开发及软件测试领域。
背景技术
当前,测试人员设计测试用例的主要思路,是在产品需求分析的过程中形成的。基于需求分析文档的分析和研究,测试人员针对业务实现逻辑和***实现逻辑,结合自身经验和技能,进行测试工作重点和要点的挖掘,形成测试思路,最后将测试思路转化为测试用例输出。
以上过程,全部由测试人员人工完成,测试人员的经验和技能至关重要。不同的测试人员,对于同一个需求设计的测试用例有所不同,导致测试用例的设计质量参差不齐。同时,由于依靠人工完成,效率低下。
另外,也有不少公司将关注点放到测试用例生成相关技术的研究上,但基本上都没有采用机器学习技术,尤其是自然语言处理相关的机器学习技术来解决此问题。
机器学习相关的技术,可以将历史数据中蕴含的经验进行挖掘和量化,并用于预测未来。而测试用例的设计过程本身就是一个利用经验预测未来的过程。因此,如果建立机器学习模型,以产品需求作为输入,进行挖掘和分析,输出预测的测试用例,是一个可以改善当前测试用例设计方案的弊病的新思路,但现有技术中采用机器学习相关的技术生成测试用例的不足之处是没有使用线性序列的自然语言处理相关的机器学习算法来生成测试用例,导致测试用例的生成结果的有效性和可用性不高,即造成预测的准确率真低下,且处理速度慢等问题。
发明内容
针对上述研究的问题,本发明的目的在于提供一种基于历史需求数据挖掘的测试用例智能生成方法及介质,解决现有技术中,基于机器学习,没有使用线性序列的自然语言处理相关的机器学习算法来生成测试用例,导致测试用例的生成结果的有效性和可用性不高,即造成预测的准确率真低下,且处理速度慢等问题。
为了达到上述目的,本发明采用如下技术方案:
一种基于历史需求数据挖掘的测试用例智能生成方法,包括如下步骤:
S1、对获取的一个历史需求文档进行处理,得到多个需求子项,并对需求子项进行处理得到一个需求子项序列,同时,对获取的历史需求文档对应的测试用例进行处理,得到测试用例序列;
S2、以需求子项序列为观测序列、测试用例序列为隐藏状态序列,建立预测测试用例的隐马尔科夫模型,建立后初始化隐马尔科夫模型的参数;
S3、获取大量的历史需求文档和对应其的测试用例进行处理得到对应的需求子项序列、测试用例序列,以及需求文档、需求子项序列与对应的测试用例、测试用例序列之间的映射关系;
S4、基于步骤S3得到的需求子项序列和测试用例序列作为训练集和测试集,基于训练集采用监督学习的方式训练初始化后的隐马尔科夫模型,训练后采用测试集进行测试,用测试后的结果进行参数调优,得到参数最优的预测模型;
S5、将待预测的需求文档的需求子项序列和最优参数的预测模型输入维特比算法,求解最优的测试用例序列并输出,基于输出和步骤S3得到映射关系查找最终的测试用例。
进一步,所述步骤S1的具体步骤为:
S1.1、将历史需求文档里的每个需求按照(U,V)范式进行格式化处理,得到包含多个(U,V)的二元数组序列,即需求子项序列,其中,U表示需求来源对象,V表示需求内容,包括U为后台运维人员和V为增加一个新增配置参数的页面、U为开放平台***和V为核心***增加一个接口、U为用户和V为去掉页面上的一个删除按钮;
S1.2、将历史需求文档所对应的测试用例按照(W,X,Y)范式进行格式化,得到包含多个(W,X,Y)的三元数组序列,即测试用例序列,其中,W表示***,X表示***中的模块,Y表示对***中的模块进行测试的期望结果;
S1.3、基于步骤S1.1和步骤S1.2得到的结果,建立历史需求文档、需求子项序列与对应的测试用例、测试用例序列之间的映射关系(N:N),保存在数据库中。
进一步,所述步骤S2的具体步骤为:
S2.1、以需求子项序列(U,V)为观测序列、测试用例序列(W,X,Y)为隐藏状态序列,建立隐马尔科夫模型λ=(A,B,π),其中,A为隐藏状态序列的状态转移概率的矩阵、B为隐藏状态序列生成观测序列的概率矩阵、π为初始的隐藏状态序列的概率分布矩阵;
其中,隐马尔科夫模型由隐藏状态序列的状态转移概率的矩阵、隐藏状态序列生成观测序列的概率矩阵以及初始的隐藏状态序列的概率分布矩阵确定,其形式化定义如下:
设Q是所有隐藏状态序列集合,V是所有的观测序列的集合:
Q={q1,q2,…qN},V={v1,v2..vM}
其中,N是可能的状态数,M是可能的观测数;
I=(i1,i2…iT),O=(o1,o2,…,oT)
I是长度为T的隐藏状态序列集合,O是对应I的观测序列集合,O和I具有线性关系,其中,I是Q的子集,O是V的子集;
A是为隐藏状态序列的状态转移概率的矩阵:
A=[aij]N×N
aij=P(it+1=qj|it=qi),i=1,2,…,N;j=1,2,…,N
其中,aij表示的是t时刻处于隐藏状态序列qi的条件下在t+1时刻状态转移到隐藏状态序列qj的概率,
B是隐藏状态序列生成观测序列的概率矩阵:
B=[bj(k)]N×N
bj(k)=P(ot=vk|it=qj)k=1,2,…,M;j=1,2,…,N
bj(k)是在时刻t处于隐藏状态序列qj的条件下生成观测序列vk的概率;
π是初始的隐藏状态序列的概率分布矩阵:
π=(πi)
πi=P(i1=qi),i=1,2,…,N
其中,πi是在时刻t=1处于隐藏状态序列qi的概率;
所以隐马尔科夫模型λ用三元符号表示,即:
λ=(A,B,π);
S2.2、初始化隐马尔科夫模型参数,即根据需求子项序列到测试用例序列的转换,将模型参数变量设置为1,设置为1即认为需求子项到测试用例的转换是一定会发生的、测试用例能够完全体现对需求子项的分析结果的。
进一步,所述步骤S3中,大量的历史需求文档为数量不低于200个的历史需求文档,大量的测试用例为数量不低于20000个的测试用例;
所述处理得到的需求子项序列、测试用例序列,以及需求文档、需求子项序列与对应的测试用例、测试用例序列之间的映射关系存储在数据库中。
进一步,所述步骤S4的具体步骤为:
S4.1、基于步骤S3得到的需求子项序列和测试用例序列作为训练集和测试集,从训练集中挑选一组数据,输入初始化后的隐马尔科夫模型,进行隐马尔科夫模型参数的估计,具体采用极大似然估计法来估计模型参数:
假设训练集包含S个长度相同的观测序列和对应的隐藏状态序列{(O1,I1),(O2,I2),…,(OS,IS)};
t时刻处于隐藏状态序列qi的条件下在t+1时刻状态转移到隐藏状态序列qj的概率aij的估计为:
设样本中时刻t处于状态i、时刻t+1处于状态j的频数为Aij,那么状态转移的概率aij的估计为:
在时刻t处于隐藏状态序列qj的条件下生成观测序列vk的概率bj(k)的估计为:
设样本中状态为j并观测为k的频数是Bjk,那么状态为j观测为k的概率bj(k)的估计为:
在时刻t=1处于隐藏状态序列qi的概率πi的估计值为S个样本中初始状态为qi的概率;
S4.2、根据步骤S4.1中得到的估计结果后,通过损失函数进行训练效果度量,若度量结果超过给定阈值,则使用训练集中余下的训练数据,重复4.1步骤,进行参数的调校,否则,用测试集进行测试,若测试结果符合要求,得到一组能够最优拟合训练数据集的模型参数,即得到参数最优的预测模型,否则,将测试集做为训练集,训练集作为测试集进行训练和测试。
进一步,所述步骤S5的具体步骤为:
S5.1:将待预测的需求文档的需求子项序列和最优参数的预测模型输入维特比算法,进行最优的测试用例序列的求解,具体如下:
定义在时刻t状态为i的隐藏状态序列集合(i1,i2,…,iT)中概率最大的值为:
由定义可得变量δ的递推公式:
定义在时刻t状态为i的隐藏状态序列集合(i1,i2,…,it-1,i)中最大概率的路径的第t-1个节点为:
ψt(i)=argmax1≤j≤N[δt-1(j)aji],i=1,2,...,N
基于上述维特比算法求解最佳测试用列序列的过程如下:
输入:最优参数的预测模型λ=(A,B,π)和观测序列O=(o1,o2,…,oT);
输出:最优路径
具体如下:
1).初始化:
δ1(i)=πibi(o1),i=1,2,…,N
ψ1(i)=0
2).递推:对于t=2,3...,T
δt(i)=max1≤j≤N[δt-1(j)aji]bi(ot),i=1,2,…,N
ψt(i)=argmax1≤j≤N[δt-1(j)aji],i=1,2,…,N
3).终止:
P*=max1≤i≤NδT(i)
4).最优路径回溯:
对于t=T-1,T-2,...,1:
于是求得最优路径:
S5.3:对输出的测试用例序列,根据映射关系,在数据库中查找测试用例,得到最终的测试用例。
一种基于历史需求数据挖掘的测试用例智能生成方法的介质,包括供处理器调用的存储器,存储器内存储有基于历史需求数据挖掘的测试用例智能生成方法。
本发明同现有技术相比,其有益效果表现在:
一、本发明基于自然语言处理技术,因此预测结果的可读性和可用性优于其他技术,本方案在相同的训练样本数量级下,预测准确率提升20%以上。
二、本发明基于20000数据量的预测结果的有效比率在50%左右,随着训练样本的丰富,预测有效率将会继续提升;
三、本发明对测试人力成本的节约可达到50%以上,随着训练的持续推进,最终将达到90%以上接近100%,只需要将10%及以下的人力投入到测试用例的有效性判别上;
四、本发明的处理耗时在毫秒级,在计算资源和存储资源的耗用与现有技术接近的情况下,提升了处理速度。
附图说明
图1是本发明的流程示意图。
具体实施方式
下面将结合附图及具体实施方式对本发明作进一步的描述。
一种基于历史需求数据挖掘的测试用例智能生成方法,包括如下步骤:
S1、对获取的一个历史需求文档进行处理,得到多个需求子项,并对需求子项进行处理得到一个需求子项序列,同时,对获取的历史需求文档对应的测试用例进行处理,得到测试用例序列;
具体步骤为:
S1.1、将历史需求文档里的每个需求按照(U,V)范式进行格式化处理,得到包含多个(U,V)的二元数组序列,即需求子项序列,其中,U表示需求来源对象,V表示需求内容,包括U为后台运维人员和V为增加一个新增配置参数的页面、U为开放平台***和V为核心***增加一个接口、U为用户和V为去掉页面上的一个删除按钮;
S1.2、将历史需求文档所对应的测试用例按照(W,X,Y)范式进行格式化,得到包含多个(W,X,Y)的三元数组序列,即测试用例序列,其中,W表示***,X表示***中的模块,Y表示对***中的模块进行测试的期望结果;
S1.3、基于步骤S1.1和步骤S1.2得到的结果,建立历史需求文档、需求子项序列与对应的测试用例、测试用例序列之间的映射关系(N:N),保存在数据库中。
S2、以需求子项序列为观测序列、测试用例序列为隐藏状态序列,建立预测测试用例的隐马尔科夫模型,建立后初始化隐马尔科夫模型的参数;
具体步骤为:
S2.1、以需求子项序列(U,V)为观测序列、测试用例序列(W,X,Y)为隐藏状态序列,建立隐马尔科夫模型λ=(A,B,π),其中,A为隐藏状态序列的状态转移概率的矩阵、B为隐藏状态序列生成观测序列的概率矩阵、π为初始的隐藏状态序列的概率分布矩阵;
其中,隐马尔科夫模型由隐藏状态序列的状态转移概率的矩阵、隐藏状态序列生成观测序列的概率矩阵以及初始的隐藏状态序列的概率分布矩阵确定,其形式化定义如下:
设Q是所有隐藏状态序列集合,V是所有的观测序列的集合:
Q={q1,q2,...qN},V={v1,v2..vM}
其中,N是可能的状态数,M是可能的观测数;
I=(i1,i2...iT),O=(o1,o2,...,oT)
I是长度为T的隐藏状态序列集合,O是对应I的观测序列集合,O和I具有线性关系,其中,I是Q的子集,O是V的子集;
A是为隐藏状态序列的状态转移概率的矩阵:
A=[aij]N×N
aij=P(it+1=qj|it=qi),i=1,2,...,N;j=1,2,...,N
其中,aij表示的是t时刻处于隐藏状态序列qi的条件下在t+1时刻状态转移到隐藏状态序列qj的概率,
B是隐藏状态序列生成观测序列的概率矩阵:
B=[bj(k)]N×N
bj(k)=P(ot=vk|it=qj)k=1,2,...,M;j=1,2,...,N
bj(k)是在时刻t处于隐藏状态序列qj的条件下生成观测序列vk的概率;
π是初始的隐藏状态序列的概率分布矩阵:
π=(πi)
πi=P(i1=qi),i=1,2,...,N
其中,πi是在时刻t=1处于隐藏状态序列qi的概率;
所以隐马尔科夫模型λ用三元符号表示,即:
λ=(A,B,π);
S2.2、初始化隐马尔科夫模型参数,即根据需求子项序列到测试用例序列的转换,将模型参数变量设置为1,设置为1即认为需求子项到测试用例的转换是一定会发生的、测试用例能够完全体现对需求子项的分析结果的。
S3、获取大量的历史需求文档和对应其的测试用例进行处理得到对应的需求子项序列、测试用例序列,以及需求文档、需求子项序列与对应的测试用例、测试用例序列之间的映射关系;大量的历史需求文档为数量不低于200个的历史需求文档,大量的测试用例为数量不低于20000个的测试用例;其中,得到需求子项序列、测试用例序列的处理方式跟步骤S1相同。
所述处理得到的需求子项序列、测试用例序列,以及需求文档、需求子项序列与对应的测试用例、测试用例序列之间的映射关系存储在数据库中。
S4、基于步骤S3得到的需求子项序列和测试用例序列作为训练集和测试集,基于训练集采用监督学习的方式训练初始化后的隐马尔科夫模型,训练后采用测试集进行测试,用测试后的结果进行参数调优,得到参数最优的预测模型;
具体步骤为:
S4.1、基于步骤S3得到的需求子项序列和测试用例序列作为训练集和测试集,从训练集中挑选一组数据,输入初始化后的隐马尔科夫模型,进行隐马尔科夫模型参数的估计,具体采用极大似然估计法来估计模型参数:
假设训练集包含S个长度相同的观测序列和对应的隐藏状态序列{(O1,I1),(O2,I2),…,(OS,IS)};
t时刻处于隐藏状态序列qi的条件下在t+1时刻状态转移到隐藏状态序列qj的概率aij的估计为:
设样本中时刻t处于状态i、时刻t+1处于状态j的频数为Aij,那么状态转移的概率aij的估计为:
在时刻t处于隐藏状态序列qj的条件下生成观测序列vk的概率bj(k)的估计为:
设样本中状态为j并观测为k的频数是Bjk,那么状态为j观测为k的概率bj(k)的估计为:
在时刻t=1处于隐藏状态序列qi的概率πi的估计值为S个样本中初始状态为qi的概率;
S4.2、根据步骤S4.1中得到的估计结果后,通过损失函数进行训练效果度量,若度量结果超过给定阈值,则使用训练集中余下的训练数据,重复4.1步骤,进行参数的调校,否则,用测试集进行测试,若测试结果符合要求,得到一组能够最优拟合训练数据集的模型参数,即得到参数最优的预测模型,否则,将测试集做为训练集,训练集作为测试集进行训练和测试。
S5、将待预测的需求文档的需求子项序列(得到需求子项序列的处理方式跟步骤S1相同)和最优参数的预测模型输入维特比算法,求解最优的测试用例序列并输出,基于输出和步骤S3得到映射关系查找最终的测试用例。
具体步骤为:
S5.1:将待预测的需求文档的需求子项序列和最优参数的预测模型输入维特比算法,进行最优的测试用例序列的求解,具体如下:
定义在时刻t状态为i的隐藏状态序列集合(i1,i2,...,iT)中概率最大的值为:
由定义可得变量δ的递推公式:
定义在时刻t状态为i的隐藏状态序列集合(i1,i2,...,it-1,i)中最大概率的路径的第t-1个节点为:
ψt(i)=argmax1≤j≤N[δt-1(j)aji],i=1,2,···,N
基于上述维特比算法求解最佳测试用列序列的过程如下:
输入:最优参数的预测模型λ=(A,B,π)和观测序列O=(o1,o2,...,oT);
输出:最优路径
具体如下:
1).初始化:
δ1(i)=πibi(o1),i=1,2,...,N
ψ1(i)=0
2).递推:对于t=2,3...,T
δt(i)=max1≤j≤N[δt-1(j)aji]bi(ot),i=1,2,...,N
ψt(i)=argmax1≤j≤N[δt-1(j)aji],i=1,2,…,N
3).终止:
P*=max1≤i≤NδT(i)
4).最优路径回溯:
对于t=T-1,T-2,...,1:
于是求得最优路径:
S5.3:对输出的测试用例序列,根据映射关系,在数据库中查找测试用例,得到最终的测试用例。
一种基于历史需求数据挖掘的测试用例智能生成方法的介质,包括供处理器调用的存储器,存储器内存储有基于历史需求数据挖掘的测试用例智能生成方法。
实施例
现有一个产品需求文档,内容是要求官方网站提供一个注册页面,便于访客注册成为用户。注册页面中要求访客输入用户名、密码、确认密码三个信息,在访客提交注册后,提示访客注册成功或者注册失败。
此历史需求文档对应的测试用例有50条左右,现举若干例如下:
(1)访客进入注册页面,输入信息并提交,且各项信息正确,未注册过。期望:页面提示“注册成功!”。
(2)访客进入注册页面,输入信息并提交,且用户名已存在。期望:页面提示“注册失败:该用户已经注册”。
(3)访客进入注册页面,填写注册信息时输入特殊字符,填写完成后提交。期望:页面提示“注册失败:不允许输入特殊字符”。
(4)对用户***的注册接口进行调用测试,接口参数符合接口要求,发起调用。期望:接口返回“Success”。
(5)对鉴权***的鉴权接口进行调用测试,接口参数中用户名已经存在,发起调用。期望:接口返回“Fail:User already exist”。
一、将历史需求文档处理为需求子项序列。
a.将历史需求文档中的需求内容拆解为以下需求子项:
①作为“访客”,我希望“官网提供注册页面”。
②作为“官网”,我希望“用户***提供注册接口”。
③作为“用户***”,我希望“鉴权***提供鉴权接口”。
④作为“访客”,我希望“注册成功时得到注册成功提示”。
⑤作为“访客”,我希望“注册失败时得到注册失败提示”。
b.将需求子项处理形成需求子项序列:
①(访客,官网提供注册页面);
②(官网,用户***提供注册接口);
③(用户***,鉴权***提供鉴权接口);
④(访客,注册成功时得到注册成功提示);
⑤(访客,注册失败时得到注册失败提示)。
二、将对应历史需求文档对应的测试用例处理为测试用例序列,测试用例序列由测试用例子项构成。
①(官网,注册页面,注册成功);
②(官网,注册页面,注册失败:该用户已经注册);
③(官网,注册页面,注册失败:不允许输入特殊字符);
④(用户***,注册接口,Success);
⑤(鉴权***,鉴权接口,Fail:User already exist);
三、建立隐马尔科夫模型后,初始化隐马尔科夫模型的参数
隐马尔科夫模型模型参数变量设置为1,用于后续训练。
四、训练隐马尔科夫模型
a.使用200个历史需求文档,历史需求文档内容形式与步骤一的内容形式一致。按照步骤一的处理操作将需求文档转换为需求子项。
b.这些需求文档对应的20000个测试用例,内容形式与步骤二的内容形式一致。按照步骤二的处理操作将测试用例转换为测试用例子项。
c.按照步骤三的操作,将以上需求子项和测试用例的子项建立映射关系,并全部保存在数据库中。如果有重复的子项,则略过。建立需求子项序列和测试用例序列的映射关系,并保存在数据库中的具体步骤为:
a.数据库表结构字段设计为:需求文档id、需求子项id、测试用例id、测试用例子项id。
b.将所有需求子项序列以及对应的测试用例序列按照以上字段要求,将映射关系保存在数据库中。
d.将需求子项序列和对应的测试用例序列的id,形成集合,举例如下:
观测序列:(1,5,4,6,9)
隐藏状态序列:(22,30,45,12,18)
e.按照上述步骤d对所有数据进行处理,得到训练集和测试集。
f.训练初始化后的隐马尔科夫模型,根据训练结果逐次调校,直到对训练样本集最佳拟合。以测试样本集测试模型,继续调校参数,直到对测试样本集最佳拟合。最后得到模型的最优参数,即得到最优参数的预测模型。
五、使用预测模型和新需求进行测试用例预测。
a.新需求(即待预测的需求文档)按照步骤一和步骤四处理为需求子项序列,举例如下:
观测序列:(42,87,1,5,7)
b.将预测模型和观测序列输入已实现维特比算法的程序,求解测试用例序列。
输出结果:(22,30,45,4,9)
六、将预测结果转换为测试用例。
将步骤五中得到的测试用例序列,按照id在数据库中查找对应的测试用例子项和测试用例,输出。如果没有找到测试用例,则意味着会产生新的测试用例,此时由人工接入对需求子项进行处理,形成新的测试用例,并将测试用例结果更新到数据库中。
以上仅是本发明众多具体应用范围中的代表性实施例,对本发明的保护范围不构成任何限制。凡采用变换或是等效替换而形成的技术方案,均落在本发明权利保护范围之内。
Claims (7)
1.一种基于历史需求数据挖掘的测试用例智能生成方法,其特征在于,包括如下步骤:
S1、对获取的一个历史需求文档进行处理,得到多个需求子项,并对需求子项进行处理得到一个需求子项序列,同时,对获取的历史需求文档对应的测试用例进行处理,得到测试用例序列;
S2、以需求子项序列为观测序列、测试用例序列为隐藏状态序列,建立预测测试用例的隐马尔科夫模型,建立后初始化隐马尔科夫模型的参数;
S3、获取大量的历史需求文档和对应其的测试用例进行处理得到对应的需求子项序列、测试用例序列,以及需求文档、需求子项序列与对应的测试用例、测试用例序列之间的映射关系;
S4、基于步骤S3得到的需求子项序列和测试用例序列作为训练集和测试集,基于训练集采用监督学习的方式训练初始化后的隐马尔科夫模型,训练后采用测试集进行测试,用测试后的结果进行参数调优,得到参数最优的预测模型;
S5、将待预测的需求文档的需求子项序列和最优参数的预测模型输入维特比算法,求解最优的测试用例序列并输出,基于输出和步骤S3得到映射关系查找最终的测试用例。
2.根据权利要求1所述的一种基于历史需求数据挖掘的测试用例智能生成方法,其特征在于,所述步骤S1的具体步骤为:
S1.1、将历史需求文档里的每个需求按照(U,V)范式进行格式化处理,得到包含多个(U,V)的二元数组序列,即需求子项序列,其中,U表示需求来源对象,V表示需求内容,包括U为后台运维人员和V为增加一个新增配置参数的页面、U为开放平台***和V为核心***增加一个接口、U为用户和V为去掉页面上的一个删除按钮;
S1.2、将历史需求文档所对应的测试用例按照(W,X,Y)范式进行格式化,得到包含多个(W,X,Y)的三元数组序列,即测试用例序列,其中,W表示***,X表示***中的模块,Y表示对***中的模块进行测试的期望结果;
S1.3、基于步骤S1.1和步骤S1.2得到的结果,建立历史需求文档、需求子项序列与对应的测试用例、测试用例序列之间的映射关系(N:N),保存在数据库中。
3.根据权利要求1所述的一种基于历史需求数据挖掘的测试用例智能生成方法,其特征在于,所述步骤S2的具体步骤为:
S2.1、以需求子项序列(U,V)为观测序列、测试用例序列(W,X,Y)为隐藏状态序列,建立隐马尔科夫模型λ=(A,B,π),其中,A为隐藏状态序列的状态转移概率的矩阵、B为隐藏状态序列生成观测序列的概率矩阵、π为初始的隐藏状态序列的概率分布矩阵;
其中,隐马尔科夫模型由隐藏状态序列的状态转移概率的矩阵、隐藏状态序列生成观测序列的概率矩阵以及初始的隐藏状态序列的概率分布矩阵确定,其形式化定义如下:
设Q是所有隐藏状态序列集合,V是所有的观测序列的集合:
Q={q1,q2,...qN},V={v1,v2..vM}
其中,N是可能的状态数,M是可能的观测数;
I=(i1,i2...iT),O=(o1,o2,...,oT)
I是长度为T的隐藏状态序列集合,O是对应I的观测序列集合,O和I具有线性关系,其中,I是Q的子集,O是V的子集;
A是为隐藏状态序列的状态转移概率的矩阵:
A=[aij]N×N
aij=P(it+1=qj|it=qi),i=1,2,...,N;j=1,2,…,N
其中,aij表示的是t时刻处于隐藏状态序列qi的条件下在t+1时刻状态转移到隐藏状态序列qj的概率,
B是隐藏状态序列生成观测序列的概率矩阵:
B=[bj(k)]N×N
bj(k)=P(ot=vk|it=qj)k=1,2,…,M;j=1,2,…,N
bj(k)是在时刻t处于隐藏状态序列qj的条件下生成观测序列vk的概率;
π是初始的隐藏状态序列的概率分布矩阵:
π=(πi)
πi=P(i1=qi),i=1,2,...,N
其中,πi是在时刻t=1处于隐藏状态序列qi的概率;
所以隐马尔科夫模型λ用三元符号表示,即:
λ=(A,B,π);
S2.2、初始化隐马尔科夫模型参数,即根据需求子项序列到测试用例序列的转换,将模型参数变量设置为1,设置为1即认为需求子项到测试用例的转换是一定会发生的、测试用例能够完全体现对需求子项的分析结果的。
4.根据权利要求1-3任意一项所述的一种基于历史需求数据挖掘的测试用例智能生成方法,其特征在于,所述步骤S3中,大量的历史需求文档为数量不低于200个的历史需求文档,大量的测试用例为数量不低于20000个的测试用例;
所述处理得到的需求子项序列、测试用例序列,以及需求文档、需求子项序列与对应的测试用例、测试用例序列之间的映射关系存储在数据库中。
5.根据权利要求4所述的一种基于历史需求数据挖掘的测试用例智能生成方法,其特征在于,所述步骤S4的具体步骤为:
S4.1、基于步骤S3得到的需求子项序列和测试用例序列作为训练集和测试集,从训练集中挑选一组数据,输入初始化后的隐马尔科夫模型,进行隐马尔科夫模型参数的估计,具体采用极大似然估计法来估计模型参数:
假设训练集包含S个长度相同的观测序列和对应的隐藏状态序列{(O1,I1),(O2,I2),…,(OS,IS)};
t时刻处于隐藏状态序列qi的条件下在t+1时刻状态转移到隐藏状态序列qj的概率aij的估计为:
设样本中时刻t处于状态i、时刻t+1处于状态j的频数为Aij,那么状态转移的概率aij的估计为:
在时刻t处于隐藏状态序列qj的条件下生成观测序列vk的概率bj(k)的估计为:
设样本中状态为j并观测为k的频数是Bjk,那么状态为j观测为k的概率bj(k)的估计为:
在时刻t=1处于隐藏状态序列qi的概率πi的估计值为S个样本中初始状态为qi的概率;
S4.2、根据步骤S4.1中得到的估计结果后,通过损失函数进行训练效果度量,若度量结果超过给定阈值,则使用训练集中余下的训练数据,重复4.1步骤,进行参数的调校,否则,用测试集进行测试,若测试结果符合要求,得到一组能够最优拟合训练数据集的模型参数,即得到参数最优的预测模型,否则,将测试集做为训练集,训练集作为测试集进行训练和测试。
6.根据权利要求5所述的一种基于历史需求数据挖掘的测试用例智能生成方法,其特征在于,所述步骤S5的具体步骤为:
S5.1:将待预测的需求文档的需求子项序列和最优参数的预测模型输入维特比算法,进行最优的测试用例序列的求解,具体如下:
定义在时刻t状态为i的隐藏状态序列集合(i1,i2,…,iT)中概率最大的值为:
由定义可得变量δ的递推公式:
定义在时刻t状态为i的隐藏状态序列集合(i1,i2,…,it-1,i)中最大概率的路径的第t-1个节点为:
ψt(i)=argmax1≤j≤N[δt-1(j)aji],i=1,2,…,N
基于上述维特比算法求解最佳测试用列序列的过程如下:
输入:最优参数的预测模型λ=(A,B,π)和观测序列O=(o1,o2,…,oT);
输出:最优路径
具体如下:
1).初始化:
δ1(i)=πibi(o1),i=1,2,…,N
ψ1(i)=0
2).递推:对于t=2,3...,T
δt(i)=max1≤j≤N[δt-1(j)aji]bi(ot),i=1,2,…,N
ψt(i)=argmax1≤j≤N[δt-1(j)aji],i=1,2,…,N
3).终止:
P*=max1≤i≤NδT(i)
4).最优路径回溯:
对于t=T-1,T-2,...,1:
于是求得最优路径:
S5.3:对输出的测试用例序列,根据映射关系,在数据库中查找测试用例,得到最终的测试用例。
7.一种基于历史需求数据挖掘的测试用例智能生成方法的介质,其特征在于,包括供处理器调用的存储器,存储器内存储有用以实现如权利要求1-6任一所述的基于历史需求数据挖掘的测试用例智能生成方法的程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910966703.2A CN110727593B (zh) | 2019-10-12 | 2019-10-12 | 基于历史需求数据挖掘的测试用例智能生成方法及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910966703.2A CN110727593B (zh) | 2019-10-12 | 2019-10-12 | 基于历史需求数据挖掘的测试用例智能生成方法及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110727593A CN110727593A (zh) | 2020-01-24 |
CN110727593B true CN110727593B (zh) | 2023-07-25 |
Family
ID=69220053
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910966703.2A Active CN110727593B (zh) | 2019-10-12 | 2019-10-12 | 基于历史需求数据挖掘的测试用例智能生成方法及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110727593B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124938B (zh) * | 2020-03-31 | 2020-08-21 | 四川新网银行股份有限公司 | 组件化的测试用例的生成方法 |
CN111177016B (zh) * | 2020-04-14 | 2020-08-21 | 四川新网银行股份有限公司 | 软件测试缺陷的管理方法 |
CN113297060A (zh) * | 2020-05-11 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 一种数据测试方法及其装置 |
CN111639024B (zh) * | 2020-05-18 | 2023-06-09 | 四川新网银行股份有限公司 | 基于特征频度数据挖掘的软件质量预测方法 |
CN111597122B (zh) * | 2020-07-24 | 2020-11-06 | 四川新网银行股份有限公司 | 一种基于历史缺陷数据挖掘的软件故障注入方法 |
CN111597121B (zh) * | 2020-07-24 | 2021-04-27 | 四川新网银行股份有限公司 | 一种基于历史测试用例挖掘的精准测试方法 |
CN112559377A (zh) * | 2020-12-25 | 2021-03-26 | 上海高顿教育科技有限公司 | 一种首次测试用例的生成方法和装置 |
CN113157582B (zh) * | 2021-04-28 | 2024-03-08 | 中国工商银行股份有限公司 | 测试脚本执行序列确定方法及装置 |
CN113434436B (zh) * | 2021-07-30 | 2022-12-16 | 拉扎斯网络科技(上海)有限公司 | 测试用例的生成方法、装置、电子设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101908020A (zh) * | 2010-08-27 | 2010-12-08 | 南京大学 | 一种基于分类挖掘和版本变更的测试用例优先化方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9418342B2 (en) * | 2013-12-06 | 2016-08-16 | At&T Intellectual Property I, L.P. | Method and apparatus for detecting mode of motion with principal component analysis and hidden markov model |
WO2016081879A1 (en) * | 2014-11-21 | 2016-05-26 | University Of Washington | Methods and defibrillators utilizing hidden markov models to analyze ecg and/or impedance signals |
CN104699606B (zh) * | 2015-03-06 | 2017-05-24 | 国网四川省电力公司电力科学研究院 | 一种基于隐马尔科夫模型的软件***状态预测方法 |
CN107563801A (zh) * | 2017-08-23 | 2018-01-09 | 浙江大学城市学院 | 一种基于隐马尔可夫模型的消费者线下消费行为预测方法 |
US10949329B2 (en) * | 2017-12-26 | 2021-03-16 | Oracle International Corporation | Machine defect prediction based on a signature |
CN108415838B (zh) * | 2018-03-01 | 2021-07-27 | 吉旗(成都)科技有限公司 | 一种基于自然语言处理技术的自动化测试方法 |
CN108959089A (zh) * | 2018-07-04 | 2018-12-07 | 沈文策 | 一种测试用例生成方法及装置 |
-
2019
- 2019-10-12 CN CN201910966703.2A patent/CN110727593B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101908020A (zh) * | 2010-08-27 | 2010-12-08 | 南京大学 | 一种基于分类挖掘和版本变更的测试用例优先化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110727593A (zh) | 2020-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110727593B (zh) | 基于历史需求数据挖掘的测试用例智能生成方法及介质 | |
CN110705592B (zh) | 分类模型训练方法、装置、设备及计算机可读存储介质 | |
CN110704640A (zh) | 一种知识图谱的表示学习方法及装置 | |
CN109462578B (zh) | 基于统计学习的威胁情报利用与繁殖方法 | |
CN111860981B (zh) | 一种基于lstm深度学习的企业国民行业类别预测方法及*** | |
CN113723070B (zh) | 文本相似度模型训练方法、文本相似度检测方法及装置 | |
CN116402630B (zh) | 一种基于表征学习的财务风险预测方法及*** | |
Wang et al. | Artificial intelligent fault diagnosis system of complex electronic equipment | |
CN113411216A (zh) | 基于离散小波变换和fa-elm的网络流量预测方法 | |
CN117573985B (zh) | 一种应用于智能化在线教育***的信息推送方法及*** | |
Alqallaf et al. | Robust inference in generalized linear models | |
CN113239697B (zh) | 实体识别模型训练方法、装置、计算机设备及存储介质 | |
CN116862318B (zh) | 基于文本语义特征提取的新能源项目评价方法和装置 | |
CN111949530B (zh) | 测试结果的预测方法、装置、计算机设备及存储介质 | |
CN113743453A (zh) | 一种基于随机森林的人口数量预测方法 | |
CN112560480A (zh) | 任务社区发现方法、装置、设备和存储介质 | |
Cao et al. | Presmoothed kernel density estimator for censored data | |
CN109189973B (zh) | 基于策略梯度的大规模图像检索方法及装置 | |
Huang et al. | LogQA: Question answering in unstructured logs | |
CN112445899A (zh) | 一种基于神经网络的知识库问答中的属性匹配方法 | |
CN113641897B (zh) | 基于会话文本的推荐方法和装置、电子设备和存储介质 | |
CN112966501B (zh) | 一种新词发现方法、***、终端及介质 | |
CN112463964B (zh) | 文本分类及模型训练方法、装置、设备及存储介质 | |
Baklizi et al. | On the estimation of reliabilty function in a Weibull lifetime distribution | |
CN112132310A (zh) | 基于改进lstm的电力设备状态预估方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |