一种对应用的用户界面ui进行测试的方法和装置的制造方法_2

文档序号:9844014阅读:来源:国知局
例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0065]图1示出了根据本发明一个实施例的一种对应用的用户界面UI进行测试的方法流程图,如图1所示,该方法包括:
[0066]步骤S110,获取提交测试的应用,并启动应用。
[0067]步骤S120,对于应用的每个当前UI,识别该当前UI上的控件特征。
[0068]步骤S130,如果识别出该当前UI上控件特征,则触发该控件特征对应的控件,跳转到所述应用的下一个UI。
[0069]步骤S140,如果在该当前UI上没有识别出控件特征,则通过查询引导页数据库判断该当前UI是否为引导页,如果该当前UI是引导页则进一步从引导页数据库中获取该引导页的操作信息,根据获取的该引导页的操作信息在该当前UI上进行相应的操作,以跳过该引导页。
[0070]可见,图1所示的方法在对应用的UI进行测试时,先识别当前UI上的控件特征,根据识别结果对当前UI上的控件进行针对性地触发,当没有识别出当前UI上的控件特征时,再通过查询引导页数据库获取对应于当前UI是引导页的操作信息以进行相应的操作。与现有技术中通过对UI进行随机盲目触发以完成测试的方案相比,本方案实现了智能地根据UI中的控件特征对UI中的控件进行针对性地触发测试,能够大大提高测试的有效性和可靠性,节省测试时间成本;并且,对于一些无法识别的UI自定义控件特征,进一步提出了通过数据库匹配的方式获取其对应的操作,有效地解决了对UI尤其是引导页的UI进行测试的问题。
[0071 ]在本发明的一个实施例中,图1所示方法的步骤S120,对于应用的每个当前UI,识别该当前UI上的控件特征包括:获取应用的关于所述当前UI的源数据;通过分析获取的源数据识别当前UI上的控件特征。
[0072]以一个具体的实施例说明图1所示的方法:
[0073]获取提交测试的应用A,将该应用A安装在测试用的智能终端上,将代理程序注入到所述智能终端的系统进程中,使得系统在启动的时候不仅要加载操作系统原生的辅助文件,还要加载代理程序的内容,实现代理程序在系统环境下的初始化环境布局,为后续的测试做准备。
[0074]在所述智能终端上运行应用A,对于应用A的每个当前UI,通过调用代理程序获取该当前UI的界面信息,进而识别出该当前UI上的控件特征。具体地,所述智能终端的操作系统是安卓操作系统,代理程序中包含Hook函数,则通过调用代理程序获取应用A的当前UI的界面信息的方式是:因为安卓系统的⑶I (Graphical User Interface,图形用户界面)是属于客户端-服务端模式的,也就是说安卓系统在显示一个界面的时候,应用(客户端)会向安卓的一个服务SurfaceFlinger (服务端)要显示的界面信息,SurfaceFlinger通过多重计算合成能见区后发送至0penGL(0pen Graphics Library,开放图形库)接口,由该接口处理后显示到智能终端的屏幕上。基于该原理,为了获取智能终端的屏幕显示信息,本方案通过代理程序中的Hook函数截获应用A发送给服务SurfaceFlinger的关于当前UI的界面信息,进而获知该当前UI中的各控件特性。然后,针对当前UI上的各控件进行触发测试。例如,对于UI上的一个按键,在已获知其基本特性(包括坐标位置、显示内容等)的前提下,对其进行点击测试,包括两种方式:直接调用这个按键原生的点击函数来实现点击该按键的效果,或者,模拟用户点击的方式,根据该按键的坐标位置发送对该坐标位置处进行点击的事件;具体地,通过Hook函数将该按键的坐标位置参数发送至一个点击函数,使得该点击函数运行时在该按键所在位置处进行点击。再次通过Hook函数获取跳转后下一个UI的界面信息,接着按照上述方法对该UI上的控件进行触发测试,再跳转到下一个UI的界面信息,以此类推,直至遍历完应用A的所有UI中的所有控件后,测试停止,得到应用A的UI的测试结果。
[0075]其中,对于一些使用自定义控件的UI,可能无法获取到界面信息的UI,则本发明进一步提供了通过引导页数据库对其进行判断处理的机制。
[0076]在本发明的一个实施例中,引导页数据库位于服务器侧;则图1所示方法的步骤S140,通过查询引导页数据判断该当前UI是否为引导页包括:通过查询服务器侧的引导页数据判断该当前UI是否为引导页。
[0077]具体地,引导页数据库中对应保存了包名、Activity组件的类名和相应的操作信息;则步骤S140具体包括以下流程:
[0078]步骤S141,获取应用的包名和当前Activity组件的类名。
[0079]步骤S142,以包名和Activity组件的类名作为索引查询所述引导页数据库,如果引导页数据库中存在包含相同包名和Activity组件的类名的条目,则判断当前UI是引导页。
[0080]经过上述判断过程,如果在引导页数据库中仍未查找到与当前UI对应的操作信息,说明当前UI可能不是引导页,或者说明当前UI的引导页信息未被收集到引导页数据库中,对于此种情况,图1所示的方法进一步执行如下处理方式:
[0081]查询经验列表;判断当前UI中是否存在与经验列表中的任一项匹配的文字或字符串;如果存在匹配项,则在当前UI中点击所匹配的文字或字符串,以尝试跳转到下一个UI。其中,经验列表是根据以往测试的经验而建立的,如果在大量的测试中发现,一个指定界面元素具有被触发后即跳转到下一个UI的特点,则将该指定界面元素放入经验列表中;例如,一般情况下,UI中存在“开始使用”时,点击该“开始使用”即可跳转到下一个UI,因此,将“开始使用”放入经验列表中。
[0082]进一步地,对于上述既识别不出UI控件特性、又在引导页数据库中查找不到UI对应的操作信息的应用来说,本发明对其进行统计学习,以逐渐提升UI测试能力,则图1所示的方法在查询经验列表后,还包括:将所述应用添加到新应用统计列表中;其中,运维人员对新应用统计列表中的应用的执行逻辑进行分析后,将该应用的引导页相关内容添加到引导页数据库中。
[0083]除了上述的引导页之外,应用的UI中比较特殊的还包括协议页,协议页中一般包括:协议的文字内容,对于该协议“同意”或“不同意”的控件等;由于协议的文字内容是可见的,使得现有技术中的UI测试方案中往往将协议的文字部分也当作测试对象进行触发,不仅浪费了大量的测试时间,也无法得到有意义的测试结果。为了避免这种情况,本发明也提供了对协议页的处理过程,如下所述:经过图1中步骤S140对当前UI是否为引导页的判断,如果当前UI不是引导页,则图1所示的方法进一步包括:将当前UI上的文字与协议特征列表进行匹配;如果匹配,则判断当前UI是应用的协议页,在当前UI中的查找到同意该协议的控件并触发,以跳转到下一个UI。本实施例旨在利用尽量少的测试时间拿到最有效有意义的测试结果。
[0084]除了上述引导页和协议页之外,应用的UI中比较特殊的还包括登录页,登录页中一般包括:登录信息输入框(用户名输入框、密码输入框)、验证码输入框、“显示密码”控件和“立即登录”控件等。在对应用的UI进行测试的过程中,如果遇到登录页,不登录的话是无法跳转到下一个UI的,对此,本发明提出了解决方案:在本发明的一个实施例中,图1所示方法的步骤S130,如果识别出该当前UI上控件特征,则触发该控件特征对应的控件,跳转到所述应用的下一个UI包括:如果识别出当前UI上的登录控件特征,则进一步确定当前UI上的登录信息输入框;将提交所述应用的用户所提交的登录信息输入到所述登录信息输入框中;进一步识别出当前UI中的确认登录控件并触发。
[0085]在本发明的一个实施例中,图1所示的方法进一步包括:对提交测试的各应用进行分类;根据分类结果,确定引导页数据库的需要补充的内容;获取需要补充的内容,添加到引导页数据库中。本实施例是对测试方案的自学习过程,通过自学习进一步提高本方案的测试能力。
[0086]基于上述各实施例,在对应用的UI进行测试的过程中,记录在应用的每个UI上的执行操作和执行的结果,生成测试报告。
[0087]图2示出了根据本发明一个实施例的一种对应用的用户界面UI进行测试的装置示意图,如图2所示,该对应用的用户界面UI进行测试的装置包括:
[0088]获取单元210,适于获取提交测试的应用,并启动应用。
[0089]控件特征识别单元220,适于对于应用的每个当前UI,识别该当前UI上的控件特征。
[0090]测试执行单元230,适于当控件特征识别单元220识别出该当前UI上控件特征时,触发该控件特征对应的控件,跳转到应用的下一个UI;当控件特征识别单元220在该当前UI上没有识别出控件特征时,通过查询引导页数据库判断该当前UI是否为引导页,如果该当前UI是引导页则进一步从引导页数据库中获取该引导页的操作信息,根据获取的该引导页的操作信息在该当前UI上进行相应的操作,以跳过该引导页。
[0091 ]存储单元240,适于保存引导页数据库。
[0092]可见,图2所示的装置在对应用的UI进行测试时,先识别当前UI上的控件特征,根据识别结果对当前UI上的控件进行针对性地触发,当没有识别出当前UI上的控件特征时,再通过查询引导页数据库获取对应于当前UI是引导页的操作信息以进行相应的操作。与现有技术中通过对UI进行随机盲目触发以完成测试的方案相比,本方案实现了智能地根据UI中的控件特征对UI中的控件进行针对性地触发测试,能够大大提高测试的有效性和可靠性,节省测试时间成本;并且,对于一些无法识别的UI自定义控件特征,进一步提出了通过数据库匹配的方式获取其对应的操作,有效地解决了对UI尤其是引导页的UI进行测试的问题。
[0093]在本发明的一个实施例中,测试执行单元230,适于获取所述应用的包名和当前Activity组件的类名,
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1