一种终端应用的模型构建方法及装置与流程

文档序号:11154870阅读:244来源:国知局
一种终端应用的模型构建方法及装置与制造工艺

本发明属于软件测试技术领域,尤其涉及一种终端应用的模型构建方法及装置。



背景技术:

随着移动互联网时代的到来,终端应用软件得到了迅速发展。对于应用开发者而言,快速地推出应用有助于占领市场,从而赢得更多的用户,因此应用的测试周期较短。但未经细致测试的应用将可能包含有未知异常及错误,应用软件的功能不能实现。应用开发者的一大难题便是如何对开发的应用进行高效充分的测试,从而减少应用可能存在的异常及错误,提升应用产品的质量。

相对于人工测试,自动化测试是对应用进行高效测试的方法。其中,基于模型的测试方法可以通过模型对应用进行自动化的测试,对应用能够起到良好的测试效果。但目前终端应用的模型构建过程较为复杂,且当开发人员对应用程序进行一些功能补充后,模型需要重新构建。



技术实现要素:

本发明实施例的目的在于提供一种终端应用的模型构建方法及装置,旨在解决终端应用的模型构建过程较为复杂,且当开发人员对应用程序进行一些功能补充后,模型需要重新构建的问题。

本发明实施例是这样实现的,一种终端应用的模型构建方法,包括:

获取终端应用正常运行时从应用启动到应用关闭之间的状态序列,所述状态序列中的状态包括用户输入的操作指令和运行过程中发生跳转的界面包名;

将获取到的多个状态序列组成行为训练集,终端应用的任一状态至少包含在所述多个状态序列的其中一个状态序列之中;

基于所述行为训练集,构建关于所述应用运行的马尔科夫测试模型。

本发明实施例的另一目的在于提供一种终端应用的模型构建装置,包括:

获取单元,用于获取终端应用正常运行时从应用启动到应用关闭之间的状态序列,所述状态序列中的状态包括用户输入的操作指令和运行过程中发生跳转的界面包名;

组成单元,用于将获取到的多个状态序列组成行为训练集,终端应用的任一状态至少包含在所述多个状态序列的其中一个状态序列之中;

构建单元,用于基于所述行为训练集,构建关于所述应用运行的马尔科夫测试模型。

本发明实施例中,终端应用运行过程中的操作指令和发生跳转的界面包名组成状态序列,由多个状态序列组成训练集,构建终端应用测试的马尔科夫测试模型。本发明实施例终端应用的模型构建过程简单,并且可以通过在行为训练集中添加状态序列,在原有测试模型上进行改善,避免了若应用功能有所修改,必须全部重建模型的情况,提高了终端应用的模型构建效率。

附图说明

图1是本发明实施例提供的终端应用的模型构建方法的实现流程图;

图2是本发明实施例提供的终端应用的模型构建方法S103的具体实现流程图;

图3是本发明实施例提供的终端应用的模型构建装置的结构框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例中,终端应用运行过程中的操作指令和发生跳转的界面包名组成状态序列,由多个状态序列组成训练集,构建终端应用测试的马尔科夫测试模型。本发明实施例终端应用的模型构建过程简单,并且可以通过在行为训练集中添加状态序列,在原有测试模型上进行改善,避免了若应用功能有所修改,必须全部重建模型的情况,提高了终端应用的模型构建效率。

终端包括手机、平板电脑、笔记本、智能电视等可以安装并运行应用程序的终端设备。操作指令指终端接收到的用户在使用应用时通过输入操作所触发的指令,如返回、设置、进入等指令。输入操作包括按键操作、滑动操作、点击操作等。终端根据所接收到的操作指令使应用执行相应的界面切换、窗口弹出等动作。

应用程序的界面是由各种UI组件组成。UI组件包括文件、图片、动画显示组件、按钮、选择框组件等等。每一个界面根据其界面对应有唯一的界面包名。可以根据界面包名区分不同的界面。

马尔科夫(Markov)模型是基于马尔科夫链的一种数学统计中的概率模型。其中,马尔科夫链用来描述状态和时间都离散的Markov随机过程。定义如下:

定义一:若{Xn,n=0,1,2,...}是一个离散的随机过程,其状态集为Ω={θ12,...,θN},则对于任何k≥1,n0<n1<...<nk-1<m<n,有随机序列在n时刻所处的状态为sn的概率只与它在m时刻所处的状态sm有关,而与m时刻之前它所处的状态无关。即:

其中,s1,s2,...,sm,sn∈Ω={θ12,...,θN},则称{Xn,n=0,1,2,...}为马尔科夫链。

定义二:对于N个状态的Markov链{Xn,n=0,1,2,...,N},称Pij(n,n+k)=P(Xn+k=θj|Xn=θi),1≤i,j≤N为Markov链的k步转移概率;如果Pij(n,n+k)与n无关,则称该Markov链为齐次Markov链,此时Pij(n,n+k)=Pij(k)。特别的,当k=1时,Pij(1)称为一步转移概率,简称转移概率,记为aij,0≤aij≤1,并称A=(aij)N×N为状态转移概率矩阵,即状态转移序列。本文采用一阶齐次Markov链。

定义三:对于N个状态的Markov链{Xn,n=0,1,2,...,N},记πi=P(Xi=θi)并称矢量π=(π12,...,πN)为初始状态概率矢量。

图1示出了本发明实施例提供的终端应用的模型构建方法的实现流程,详述如下:

在S101中,获取终端应用正常运行时从应用启动到应用关闭之间的状态序列,所述状态序列中的状态包括用户输入的操作指令和运行过程中发生跳转的界面包名。

在本实施例中,终端应用正常运行是指在用户操作和界面跳转都没有发生运行错误。状态序列为按照应用跳转的先后顺序进行排列的一组状态。每个状态都是由一个操作指令和该操作指令使应用界面跳转后的界面包名组成。状态序列的起始状态为打开应用的操作指令和应用的主界面,状态序列的最终状态为关闭应用的操作指令和应用的退出界面。

状态序列的获取可以通过获取设计人员提供的终端应用能够实现的界面跳转过程中的操作指令和应用界面跳转的界面包名,将多个状态按照时间先后顺序排列为状态序列。或者通过实际对应用软件进行操作,记录下应用运行过程中的操作指令和应用界面跳转的界面包名,组合为状态后按照记录时间的先后顺序排列为状态序列。

例如,状态序列:打开指令,应用主界面,设置指令,设置界面,安全设置指令,安全设置界面,退出指令,退出界面。其中,打开指令和应用主界面为一个状态,设置指令和设置界面为一个状态,安全设置指令和安全设置界面为一个状态,退出指令和退出界面为一个状态。整个状态序列由四个不同的状态按照时间先后排列而成。

在S102中,将获取到的多个状态序列组成行为训练集,终端应用的任一状态至少包含在所述多个状态序列的其中一个状态序列之中。

在本实施例中,多个状态序列是指多个不同的状态序列,且在这些序列中包含了终端应用能够实现的所有状态。即,终端应用能够实现的任何一个状态都在状态序列中至少出现一次。这些状态序列一起形成行为训练集。行为训练集用于构建马尔科夫测试模型。行为训练集中的状态序列数目越多,所构建的模型能够测试的项目越多,测试的也更为精准。

为方便叙述,此处将用户输入的操作指令和该指令指后发生跳转的界面包名组成的状态称为一次原子操作。如打开指令和应用主界面为一次原子操作。设终端应用的行为训练集包含M个状态序列,分别记为R1,R2,R3,...RM。其中第i个状态序列记为Ri中的表示按照时间相对顺序排列的第j(1≤j≤r(i))个原子操作。

在S103中,基于所述行为训练集,构建关于所述应用运行的马尔科夫测试模型。

即,根据行为训练集中所有的状态序列,构建用于测试终端应用的马尔科夫测试模型。

作为本发明的一个实施例,如图2所示,S103中,基于所述行为训练集,构建马关于所述应用运行的尔科夫测试模型,包括:

在S201中,将所述多个状态序列中的所有状态组成一个集合,集合中相同的状态用一个状态表示,形成马尔科夫测试模型的状态集合。

其中,马尔科夫测试模型的状态集合为这些状态序列中出现过的所有不同状态的集合。这些序列中相同的多个状态只作为一个状态加入马尔科夫测试模型的状态集合。此处将状态集合记为

在S202中,基于所述行为训练集,计算马尔科夫测试模型的初始状态概率矢量和状态转移概率矩阵。

在本实施例中,行为训练集包含多个状态序列,根据这些多个状态序列来计算马尔科夫测试模型的模型参数。模型参数包括状态集合、初始状态概率矢量和状态转移概率矩阵。

其中,初始状态概率矢量为马尔科夫测试模型中各状态在初始时刻出现的概率。对于N个状态的Markov链{Xn,n=0,1,2,...,N},记πi=P(Xi=θi)并称矢量π=(π12,...,πN)为初始状态概率矢量。

初始状态概率矢量π=(π12,...,πN)用于描述各个原子操作在初始时刻出现的概率,初始状态概率矢量π=(π12,...,πN)的具体计算方式如下:

统计状态集合中每个状态(即每个原子操作)在行为训练集R={R1,R2,R3,...,RM}中出现的次数以及它们之间互相转移的次数。设任意一个第一状态在行为训练集R中出现的次数为Ci,所有第一状态在行为训练集R中出现的次数为r,则

状态转移概率矩阵A=(aij)N×N描述各个原子操作之间的时序相关性。状态转移概率矩阵A=(aij)N×N的计算方式如下:

设在行为训练集R中,原子操作向转移的次数为Zij,即序列在行为训练集中出现的次数,并设在行为训练集中原子操作向各个原子操作转移的总次数为Yi,则

作为本发明的一个实施例,当测试产生的状态序列和所述行为训练集中的所有状态序列都不相同时,则将该状态序列添加到所述行为训练集中。

在本实施例中,将测试产生的状态序列和行为训练集中的状态序列进行对比。如果测试产生的状态序列和行为训练集中的任一状态序列都不相同,则将该状态序列添加到行为训练集中。

因为马尔科夫测试模型是基于行为训练集进行构建的。行为训练集中的状态序列数目越多,所构建出的测试模型对终端应用的测试越准确。将测试过程中产生的新的行为序列加入到测试模型的行为训练集中,之后再利用该行为训练集对原有测试模型进行改善。这样可以使测试模型在测试过程中进一步改善,随着测试次数和测试生成的状态序列的增多,进一步提高测试模型的测试准确度。

当终端应用的设计人员对应用的界面跳转功能进行改进时,可以在行为训练集中删除改进后应用不能实现的状态序列,添加改进后应用新增的能够实现的状态序列。这样可以在应用功能改进时,对测试模型也进行改进,从而避免应用功能发生改进时测试模型需要完全重建的情况发生,提高测试模型的构建效率。

作为本发明的一个实施例,所述马尔科夫测试模型包括概率数据库,所述概率数据库中的概率为所述行为训练集中的状态序列对应的概率。

在本实施例中,根据初始状态概率矢量和状态转移概率矩阵来计算行为训练集中的状态序列的概率,并将这些概率加入到马尔科夫测试模型的概率数据库中。这样当进行终端应用的测试时,可以根据初始状态概率矢量和状态转移概率矩阵计算测试生成的状态序列的概率。通过将计算出的概率与概率数据库中的概率进行对比,判断出测试生成的状态序列是否正确。

如果计算出的概率与概率数据库中的某一概率相同,则表明该测试生成的状态序列为正常序列,测试过程中的用户输入的操作指令和发生跳转的界面全部正常。

作为本发明的一个实施例,当测试产生的状态序列和所述行为训练集中的所有状态序列都不相同时,计算出该行为序列对应的概率,添加到所述概率数据库中。

在本实施例中,当测试产生的状态序列和所述行为训练集中的所有状态序列都不相同时,则根据初始状态概率矢量和状态转移概率矩阵来计算该行为序列对应的概率,并将计算出的概率加入到概率数据库中。

随着测试进行,测试生成的状态序列将会增多。有些状态序列可能不属于行为训练集。此时可以计算出这些状态序列的概率补充到概率数据库中。这样随着测试过程的进行,该测试模型的测试效率和测试精度可以得到有效的提高。

作为本发明的一个实施例,所述方法还包括:

监听测试过程中终端应用的用户输入的操作指令和运行过程中发生跳转的界面包名,生成由测试状态排列成的测试状态序列;所述测试状态包括用户输入的操作指令和运行过程中发生跳转的界面包名。

根据所述马尔科夫测试模型的初始状态概率矢量和状态转移概率矩阵,计算所述测试状态序列对应的概率。

将所述测试状态序列对应的概率和所述概率数据库中的概率进行匹配,根据匹配结果,判断所述测试状态序列中的界面跳转是否正常。

在本实施例中,监听并记录测试过程中从应用启动到应用关闭之间用户输入的操作指令和运行过程中发生跳转的界面包名。将所述用户输入的操作指令和运行过程中发生跳转的界面包名组合成测试状态。将测试状态按照时间顺序排列成测试状态序列。然后根据所述马尔科夫测试模型的初始状态概率矢量和状态转移概率矩阵,计算所述测试状态序列对应的概率。

所述根据匹配结果,判断所述测试状态序列中的界面跳转是否正常,包括:如果所述测试状态序列对应的概率和所述概率数据库中的某个概率相同,则所述测试状态序列中所有界面跳转都正常。如果所述测试状态序列对应的概率和所述概率数据库中的概率都不相同,则所述测试状态序列中至少有一次界面跳转异常。

当所述测试状态序列对应的概率和所述概率数据库中的概率都不相同时,对比所述测试状态序列和所述行为训练集中的状态序列,确定所述测试状态序列中界面跳转发生异常的操作指令和界面包名。这样可以通过测试模型发现被测应用中哪个界面跳转步骤发生错误。设计人员可以据此进行相应的调整,提高测试效率。

本发明实施例中,终端应用运行过程中的操作指令和发生跳转的界面包名组成状态序列,由多个状态序列组成训练集,构建终端应用测试的马尔科夫测试模型。本发明实施例终端应用的模型构建过程简单,并且可以通过在行为训练集中添加状态序列,在原有测试模型上进行改善,避免了若应用功能有所修改,必须全部重建模型的情况,提高了终端应用的模型构建效率。

应理解,在本发明实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

对应于本发明实施例所提供的终端应用的模型构建方法,图3示出了本发明实施例提供的终端应用的模型构建装置的结构框图。为了便于说明,仅示出了与本实施例相关的部分。

参照图3,该终端应用的模型构建装置包括:

获取单元31,用于获取终端应用正常运行时从应用启动到应用关闭之间的状态序列,所述状态序列中的状态包括用户输入的操作指令和运行过程中发生跳转的界面包名。

组成单元32,用于将获取到的多个状态序列组成行为训练集,终端应用的任一状态至少包含在所述多个状态序列的其中一个状态序列之中。

构建单元33,用于基于所述行为训练集,构建关于所述应用运行的马尔科夫测试模型。

优选地,所述构建单元33用于:

将所述多个状态序列中的所有状态组成一个集合,集合中相同的状态用一个状态表示,形成马尔科夫测试模型的状态集合。

基于所述行为训练集,计算马尔科夫测试模型的初始状态概率矢量和状态转移概率矩阵。

优选地,所述装置还包括添加单元,所述添加单元用于:

当测试产生的状态序列和所述行为训练集中的所有状态序列都不相同时,则将该状态序列添加到所述行为训练集中。

优选地,所述马尔科夫测试模型包括概率数据库,所述概率数据库中的概率为所述行为训练集中的状态序列对应的概率。

优选地,所述装置还包括计算单元,所述计算单元用于:

当测试产生的状态序列和所述行为训练集中的所有状态序列都不相同时,计算出该行为序列对应的概率,添加到所述概率数据库中。

本发明实施例中,终端应用运行过程中的操作指令和发生跳转的界面包名组成状态序列,由多个状态序列组成训练集,构建终端应用测试的马尔科夫测试模型。本发明实施例终端应用的模型构建过程简单,并且可以通过在行为训练集中添加状态序列,在原有测试模型上进行改善,避免了若应用功能有所修改,必须全部重建模型的情况,提高了终端应用的模型构建效率。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1