一种基于神经元模型的自动遍历控件方法及终端与流程

文档序号:13421704阅读:210来源:国知局
一种基于神经元模型的自动遍历控件方法及终端与流程

本发明涉及软件测试领域,尤其涉及一种基于神经元模型的自动遍历控件方法及终端。



背景技术:

目前软件测试行业存在两种主要的自动化方案:一种是测试人员根据业务和产品界面,编写自动化测试脚本;另外一种是自动遍历控件的方式,遍历产品所有控件。第一种方式因对测试人员要求较高、需要投入大量时间开发及维护脚本、对界面依赖性高等原因,出现项目不愿花过多精力在第一种方案的情况。第二种方案相比第一种方案,界面依赖性小,且通过解析控件的方式,自动对界面进行有效点击,解决了monkey可控性差的问题。不论是配合性能测试还是作为稳定性测试的工具,遍历都是比较不错的选择。目前,行业内有不少遍历工具,各大市场上自动遍历功能都是限制了时长,企业无法定制,并且目前的遍历工具普遍存在遍历深度不够和遍历回环问题。



技术实现要素:

本发明所要解决的技术问题是:提供一种基于神经元模型的自动遍历控件方法及终端,改善存在的遍历深度不够和遍历回环问题。

为了解决上述技术问题,本发明采用的一种技术方案为:

一种基于神经元模型的自动遍历控件方法,包括步骤:

s1、获取界面控件信息,解析出可点击的控件群;

s2、判断所述界面是否遍历完全,如果是,执行步骤s3,否则,通过神经元模型选择出需要点击的控件,点击所述控件,返回步骤s1;

s3、判断所述界面是否存在未遍历完全的子界面,如果是,依次进入所述子界面,返回步骤s1;否则,判断所述界面是否为子界面,如果是,返回父界面,否则,结束。

为了解决上述技术问题,本发明采用的另一种技术方案为:

一种基于神经元模型的自动遍历控件终端1,包括存储器2、处理器3及存储在存储器2上并可在处理器3上运行的计算机程序,所述处理器3执行所述程序时实现以下步骤:

s1、获取界面控件信息,解析出可点击的控件群;

s2、判断所述界面是否遍历完全,如果是,执行步骤s3,否则,通过神经元模型选择出需要点击的控件,点击所述控件,返回步骤s1;

s3、判断所述界面是否存在未遍历完全的子界面,如果是,依次进入所述子界面,返回步骤s1;否则,判断所述界面是否为子界面,如果是,返回父界面,否则,结束。

本发明的有益效果在于:通过神经元模型选择需要点击的控件,并在当前界面遍历完全的情况下,进一步遍历当前界面的子界面,不仅解决了控件遍历时的回环问题,而且增加了遍历深度,解决遍历深度问题。

附图说明

图1为本发明实施例的一种基于神经元模型的自动遍历控件方法的流程图;

图2为本发明实施例的一种基于神经元模型的自动遍历控件终端的结构示意图;

图3为本发明实施例的神经元模型图;

图4为本发明实施例的一种基于神经元模型的自动遍历控件方法的完整流程图;

标号说明:

1、基于神经元模型的自动遍历控件终端;2、存储器;3、处理器。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

本发明最关键的构思在于:通过神经元模型选择需要点击的控件,并在当前界面遍历完全的情况下,进一步遍历当前界面的子界面。

请参照图1,一种基于神经元模型的自动遍历控件方法,包括步骤:

s1、获取界面控件信息,解析出可点击的控件群;

s2、判断所述界面是否遍历完全,如果是,执行步骤s3,否则,通过神经元模型选择出需要点击的控件,点击所述控件,返回步骤s1;

s3、判断所述界面是否存在未遍历完全的子界面,如果是,依次进入所述子界面,返回步骤s1;否则,判断所述界面是否为子界面,如果是,返回父界面,否则,结束。

从上述描述可知,本发明的有益效果在于:通过神经元模型选择需要点击的控件,并在当前界面遍历完全的情况下,进一步遍历当前界面的子界面,不仅解决了控件遍历时的回环问题,而且增加了遍历深度,解决遍历深度问题。

进一步的,所述步骤s1具体包括:

基于uiautomator通过hierarchy的方式获取界面控件信息,解析所述控件的clickable属性和text属性,根据所述clickable属性和text属性判断是否将所述控件加入可点击的控件群。

由上述描述可知,基于uiautomator框架,通过hierarchy的方式获取界面控件信息,不仅可以获取静态界面,也可以获取动态界面而不报错,提高了测试检测的全面性。

进一步的,所述步骤s2中通过神经元模型选择出需要点击的控件具体包括:

根据控件是否可点击、是否触发了隐藏控件、是否被点击过、点击该控件跳转的下一个界面是否被遍历完全、是否是黑名单中的控件及其对应的权重依次计算所述可点击的控件群中的各个控件的点击次数,选择点击数最大且大于零的控件作为需要点击的控件。

由上述描述可知,通过构建合理的控件的神经元模型,基于所述神经元模型计算控件的点击次数,并基于所述点击次数选择出符合要求的需要点击的控件,保证了控件遍历时不漏不重。

进一步的,还包括:设置一具有预设容量的历史界面控件树,所述历史界面控件树存储最近点击过的控件及所述控件所在的界面;

每点击完一控件,将所述控件及所述控件所在的界面添加到所述历史界面控件树。

进一步的,还包括:

每隔一预设时间间隔查询所述历史界面控件树,若发现存在遍历循环,将所述遍历循环中的子界面的控件的点击次数置零。

由上述描述可知,通过设置历史界面控件树,存储最近点击过的控件及所述控件所在的界面,并定期对所述历史界面控件树进行查询,及时将遍历循环中的子界面的控件的点击数置零,能够避免界面间的回环问题,即界面a→界面b→界面a循环的问题。

请参照图2,一种基于神经元模型的自动遍历控件终端1,包括存储器2、处理器3及存储在存储器2上并可在处理器3上运行的计算机程序,所述处理器3执行所述程序时实现以下步骤:

s1、获取界面控件信息,解析出可点击的控件群;

s2、判断所述界面是否遍历完全,如果是,执行步骤s3,否则,通过神经元模型选择出需要点击的控件,点击所述控件,返回步骤s1;

s3、判断所述界面是否存在未遍历完全的子界面,如果是,依次进入所述子界面,返回步骤s1;否则,判断所述界面是否为子界面,如果是,返回父界面,否则,结束。

从上述描述可知,本发明的有益效果在于:通过神经元模型选择需要点击的控件,并在当前界面遍历完全的情况下,进一步遍历当前界面的子界面,不仅解决了控件遍历时的回环问题,而且增加了遍历深度,解决遍历深度问题。

进一步的,所述步骤s1具体包括:

基于uiautomator通过hierarchy的方式获取界面控件信息,解析所述控件的clickable属性和text属性,根据所述clickable属性和text属性判断是否将所述控件加入可点击的控件群。

由上述描述可知,基于uiautomator框架,通过hierarchy的方式获取界面控件信息,不仅可以获取静态界面,也可以获取动态界面而不报错,提高了测试检测的全面性。

进一步的,所述步骤s2中通过神经元模型选择出需要点击的控件具体包括:

根据控件是否可点击、是否触发了隐藏控件、是否被点击过、点击该控件跳转的下一个界面是否被遍历完全、是否是黑名单中的控件及其对应的权重依次计算所述可点击的控件群中的各个控件的点击次数,选择点击数最大且大于零的控件作为需要点击的控件。

由上述描述可知,通过构建合理的控件的神经元模型,基于所述神经元模型计算控件的点击次数,并基于所述点击次数选择出符合要求的需要点击的控件,保证了控件遍历时不漏不重。

进一步的,还包括:设置一具有预设容量的历史界面控件树,所述历史界面控件树存储最近点击过的控件及所述控件所在的界面;

每点击完一控件,将所述控件及所述控件所在的界面添加到所述历史界面控件树。

进一步的,还包括:

每隔一预设时间间隔查询所述历史界面控件树,若发现存在遍历循环,将所述遍历循环中的子界面的控件的点击次数置零。

由上述描述可知,通过设置历史界面控件树,存储最近点击过的控件及所述控件所在的界面,并定期对所述历史界面控件树进行查询,及时将遍历循环中的子界面的控件的点击数置零,能够避免界面间的回环问题,即界面a→界面b→界面a循环的问题。

实施例一

请参照图1,一种基于神经元模型的自动遍历控件的方法,包括步骤:

s1、获取界面控件信息,解析出可点击的控件群;

其中,可以基于uiautomator框架,通过hierarchy的方式获取界面控件信息,然后解析所述控件的bounds属性、clickable属性、long-clickable属性、scrollable属性、class属性、password属性、text属性,根据所述clickable属性和text属性判断是否将所述控件加入可点击的控件群,具体的,选取clickable=true并且text值不在黑名单中的控件加入该界面可点击的控件群中;黑名单可以是用户自定义的,对于黑名单中的控件,遍历时不会触发点击,如应用中的“退出登录”按钮,点击后退出登录,对于没有登录的测试是没有意义的,可将其设在黑名单中;

在测试之前,用户可以自定义测试策略,有两种测试策略:一种是以时间为测试结束节点,用户可以自定义测试时间,以适应不同测试周期,当测试时间到时,测试自动结束;另一种是以遍历程度为测试结束节点,即用户可以设定遍历达到怎样的程度才结束测试,可以以控件遍历覆盖度(已点击控件数/总控件数)和界面覆盖度(已触发的界面数/总界面数)的平均值作为遍历程度的度量,可以事先设定一预设阈值,当实际度量值大于等于所述预设阈值时,则说明遍历程度已达用户要求,可以结束遍历,从而满足不同测试的需要;

可选的,用户可以配置账户信息,以实现自动登录,对于登录界面有弹框覆盖、登录后需要再次输入密码确认的情况,在获取界面时,可以先判断是否是登录界面,如果不是,通过点击操作使登录界面的覆盖弹窗去掉,从而达到适应性更强的自动登录效果;

s2、判断所述界面是否遍历完全,如果是,执行步骤s3,否则,通过神经元模型选择出需要点击的控件,点击所述控件,返回步骤s1;

所述神经元模型具体参见图3,图3中:

x1=控件具有可点击属性;

x2=该控件被点击过;

x3=点击该控件触发出了新的隐藏控件;

x4=点击该控件跳转的下一个界面是否被遍历完全;

x5=是否是黑名单中的控件;

w1至w5分别是x1至x5的权值;

x1至x5的取值如下:

x2=-n(控件被点击的次数n);

x3=m(控件触发的隐藏控件数m);

w1=w2=w3=w4=w5=1;

根据所述神经元模型计算出可点击的控件群中的各个控件的点击次数,所述计算公式为:点击次数其中,当控件是黑名单控件时,一般的,x5取绝对值较大的负数,如-100,可选的,可以将所述黑名单控件被过滤在可点击的控件群之外的方式来体现所述控件为黑名单控件;

根据计算出的可点击的控件群中各个控件的点击次数,选择点击次数最大且大于零的控件作为需要点击的控件,若存在数值相等且都大于零的多个控件,则取在控件群中排序靠前的控件作为优先点击的控件;

在进行控件点击时,获取需要点击的控件的坐标,对所述坐标对应的位置进行点击,采用模拟输入的方式,对计算出的坐标对应的位置进行点击,可以通过调用shell模拟用户操作,如点击、返回、开启应用等;

s3、判断所述界面是否存在未遍历完全的子界面,如果是,依次进入所述子界面,返回步骤s1;否则,判断所述界面是否为子界面,如果是,返回父界面,否则,结束。

在当前界面遍历完全的情况下,进一步查询其子界面是否遍历完全,如果存在未遍历完全的子界面,则搜索进入子界面的路径,进入子界面进行遍历,从而解决遍历深度问题;

在进行控件遍历的过程中,一般会遇到两种情况的回环:一种是一个界面内的回环;另一种是界面间的回环;对于界面内的回环,通过神经元模型实时动态计算控件的点击次数,点击次数大于零的控件才可被点击能够很好地解决,而对于界面间的回环,实践中发现对于界面间的回环,特别是对于当前界面已经遍历完全,找到子界面并进行点击时,经常会出现返回当前界面的问题,即界面a→界面b→界面a循环的问题;对于这种情况,用历史界面控件树的方式解决;即历史界面控件树实质是一个具有预设容量的数组,可以设置所述容量为12,则历史界面控件树记录着最近的12个控件及其对应的界面,每点击完一控件,将所述控件及所述控件所在的界面添加到所述历史界面控件树,通过对历史界面控件树的定期检查,如有发现循环问题,则对循环中涉及的子界面的控件的点击次数进行强制置零,例如,有界面a、b,有控件m、n,m位于a界面上,a界面点击m跳转至b界面,当a界面遍历完全后,搜索发现其子界面b的n控件还有点击数,若出现死循环,历史界面控件树会有a,m,b,n,a,m,b,n,a,m,b,n的情况,此时,可强制子界面b中的控件n的点击次数为0;定期对历史界面控件树进行检查,并及时处理,可以达到解决界面间死循环的问题。

实施例二

请参照图4,一种基于神经元模型的自动遍历控件方法,应用于android系统中,具体步骤如下:

android的service接收待测试app数据,所述数据包括包名、界面名、测试时间、账户以及密码;

判断是否是首次进入service,如果是,则清除历史log数据,存储所述待测app数据至文件中,并存储遍历测试开始时间,否则,从文件中获取待测app数据;

获取待测app所有界面,判断是否满足测试结束的条件,条件包括测试时间到或者遍历度达到阈值或者遍历完全,如果是,则遍历结束,存储遍历数据,发送结束广播,否则,获取当前界面;

判断当前界面是否是待测app界面,如果否,重新打开待测app界面直至是待测app界面为止;

在使待测app界面的情况下,判断是否是登录界面,如果是,输入账号密码,进行登录,如账号错误发送通知,否则,将当前界面加入界面树;

获取当前界面控件,解析可点击控件群,判断当前界面控件是否被点击出隐藏控件,如果是,则增加控件的x3值,所述增加可以是递增方式,即点击出一个隐藏控件,则相应的控件的x3值加1,否则,判断当前界面是否遍历完全,

如果已经遍历完全,则查找当前界面的子界面是否遍历完成,如果是,则判断当前界面是否是子界面,如果是,返回父界面,如果否,则遍历结束;

如果当前界面的子界面遍历未完全,则根据界面树跳转至没有遍历完全的子界面,并跳转到获取当前界面步骤;

如果当前界面未遍历完全,则根据神经元模型采用实施例一中的方法选择出需要点击的控件,点击所述控件,并添加当前界面以及点击的控件至历史界面控件树,并跳转至获取当前界面步骤。

实施例三

一种基于神经元模型的自动遍历控件终端1,包括存储器2、处理器3及存储在存储器2上并可在处理器3上运行的计算机程序,其特征在于,所述处理器3执行所述程序时实现实施例一种的步骤。

实施例四

一种基于神经元模型的自动遍历控件终端1,包括存储器2、处理器3及存储在存储器2上并可在处理器3上运行的计算机程序,其特征在于,所述处理器3执行所述程序时实现实施例二种的步骤。

综上所述,本发明提供的基于神经元模型的自动遍历控件的方法及终端,通过神经元模型,计算出控件的点击次数,使控件遍历时不漏不重;进一步的,建立历史界面控件树,记录最近点击过的控件及所述控件所在的界面,并定期对历史界面控制树进行检查,避免界面在一个回环里跳转,从而解决回环问题;进一步的,在当前界面遍历完全之后,通过搜索当前界面的子界面的遍历程度,如发现有子界面没有遍历完全,搜索进入子界面的路径,进入子界面进行遍历,从而解决遍历深度问题。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

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