CN106294152B - 应用用户界面的遍历测试装置及方法 - Google Patents
应用用户界面的遍历测试装置及方法 Download PDFInfo
- Publication number
- CN106294152B CN106294152B CN201610649124.1A CN201610649124A CN106294152B CN 106294152 B CN106294152 B CN 106294152B CN 201610649124 A CN201610649124 A CN 201610649124A CN 106294152 B CN106294152 B CN 106294152B
- Authority
- CN
- China
- Prior art keywords
- control
- user interface
- user
- attribute
- current goal
- 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/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/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种应用用户界面的遍历测试装置,包括:获取模块,用于获取当前目标用户界面的控件树;遍历模块,用于对控件树所对应的各控件进行遍历,并生成当前目标用户界面上可发生的若干用户动作;模拟模块,用于模拟执行用户动作,并对模拟执行用户动作后所对应的第一用户界面进行截图;任务栈模块,用于当第一用户界面中存在与当前目标用户界面不同的若干第二用户界面时,将第二用户界面加入任务栈中;获取模块还用于:获取任务栈的栈顶所对应的用户界面,并将该用户界面作为当前目标用户界面。本发明还公开了一种应用用户界面的遍历测试方法。本发明能够提升用户界面遍历测试的自动化程度和用户界面的覆盖率,进而提高测试效果。
Description
技术领域
本发明涉及应用测试技术领域,尤其涉及应用用户界面的遍历测试装置及方法。
背景技术
随着移动互联网的发展,Android应用数量迅速增长,但由于Android***的开放性以及缺乏严格的审查,从而导致Android应用的质量偏低,进而使得在用户使用应用的过程中,可能会出险崩溃、无响应、运行缓慢等问题。因此,为保证Android应用的安全性与稳定性,需要对应用的用户界面进行分析和测试。
现有测试技术中,对Android应用的用户界面进行测试的工具很多,例如MonkeyRunner、Robotium、Uiautomator等都可以通过模拟用户动作,进而使用户界面发生变化,但要实现对用户界面的自动化遍历仍有以下的不足:
1)、模拟用户动作需要测试开发人员编写测试脚本;2)、不能实现用户界面的自动转换。因此,现有测试技术中,对于应用的用户界面遍历测试的自动化程度和用户界面的覆盖率较低,进而使得测试效果不佳。
发明内容
本发明的主要目的在于提供一种应用用户界面的遍历测试装置及方法,旨在解决现有测试技术中,对于应用的用户界面遍历测试的自动化程度和用户界面的覆盖率较低,进而使得测试效果不佳的技术问题。
为实现上述目的,本发明提供一种应用用户界面的遍历测试装置,所述应用用户界面的遍历测试装置包括:
获取模块,用于获取当前目标用户界面的控件树,所述控件树至少包括当前目标用户界面上显示的所有控件的相关信息;
遍历模块,用于根据所述相关信息,对当前目标用户界面上显示的各控件进行遍历,并生成当前目标用户界面上可发生的若干用户动作;
模拟模块,用于模拟执行所述用户动作,并对模拟执行所述用户动作后所对应的第一用户界面进行截图;
任务栈模块,用于当所述第一用户界面中存在与当前目标用户界面不同的若干第二用户界面时,将所述第二用户界面加入任务栈中;
所述获取模块还用于:获取所述任务栈的栈顶所对应的用户界面,并将该用户界面作为当前目标用户界面,其中,所述获取模块直至所述任务栈为空或满足预置停止条件时停止获取。
可选的,所述相关信息至少包括当前用户界面上显示的所有控件的层次结构信息、单个控件的属性及属性值;
所述遍历模块包括:
遍历单元,用于根据所述层次结构信息,对当前目标用户界面上显示的各控件进行遍历,并在遍历控件时,根据该控件的属性及属性值,判断通过该控件是否可发生用户动作;
生成单元,用于若通过该控件可发生用户动作,则根据该控件的属性及属性值,或者还根据与该控件相关的其他相关控件的属性及属性值,生成通过该控件可发生的用户动作。
可选的,所述遍历单元具体用于:
根据该控件的属性及属性值,判断该控件是否具有可点击属性且可点击属性值为真,若是,则确定通过该控件可发生用户动作,其中,若该控件与其他控件存在关联关系,则确定通过该控件可发生复合用户动作,若该控件与其他控件不存在关联关系,则确定通过该控件可发生单一用户动作;
所述生成单元具体用于:
若通过该控件可发生复合用户动作,则根据该控件的属性及属性值,以及根据与该控件相关联的其他相关控件的属性及属性值,生成通过该控件可发生的复合用户动作;或,
若通过该控件可发生单一用户动作,则根据该控件的属性及属性值,生成通过该控件可发生的单一用户动作。
可选的,所述应用用户界面的遍历测试装置还包括:
预处理模块,用于解析待测试应用程序安装包中的应用配置文件,以获取该待测试应用程序的安装启动信息;根据所述安装启动信息,安装并启动该待测试应用程序。
可选的,所述模拟模块还用于:
按照各用户界面之间的层级关系,保存对应用户界面的截图,并在遍历测试结束后将保存的截图发送至外部设备进行处理。
进一步地,为实现上述目的,本发明还提供一种应用用户界面的遍历测试方法,所述应用用户界面的遍历测试方法包括步骤:
S1、获取当前目标用户界面的控件树,所述控件树至少包括当前目标用户界面上显示的所有控件的相关信息;
S2、根据所述相关信息,对当前目标用户界面上显示的各控件进行遍历,并生成当前目标用户界面上可发生的若干用户动作;
S3、模拟执行所述用户动作,并对模拟执行所述用户动作后所对应的第一用户界面进行截图;
S4、当所述第一用户界面中存在与当前目标用户界面不同的若干第二用户界面时,将所述第二用户界面加入任务栈中;
S5、获取所述任务栈的栈顶所对应的用户界面,并将该用户界面作为当前目标用户界面,执行步骤S1-S5,直至所述任务栈为空或满足预置停止条件时退出。
可选的,所述相关信息至少包括当前用户界面上显示的所有控件的层次结构信息、单个控件的属性及属性值;
所述根据所述相关信息,对当前目标用户界面上显示的各控件进行遍历,并生成当前目标用户界面上可发生的若干用户动作包括:
根据所述层次结构信息,对当前目标用户界面上显示的各控件进行遍历,并在遍历控件时,根据该控件的属性及属性值,判断通过该控件是否可发生用户动作;
若通过该控件可发生用户动作,则根据该控件的属性及属性值,或者还根据与该控件相关的其他相关控件的属性及属性值,生成通过该控件可发生的用户动作。
可选的,所述根据该控件的属性及属性值,判断通过该控件是否可发生用户动作包括:
根据该控件的属性及属性值,判断该控件是否具有可点击属性且可点击属性值为真,若是,则确定通过该控件可发生用户动作,其中,若该控件与其他控件存在关联关系,则确定通过该控件可发生复合用户动作,若该控件与其他控件不存在关联关系,则确定通过该控件可发生单一用户动作;
所述若通过该控件可发生用户动作,则根据该控件的属性及属性值,或者还根据与该控件相关的其他相关控件的属性及属性值,生成通过该控件可发生的用户动作包括:
若通过该控件可发生复合用户动作,则根据该控件的属性及属性值,以及根据与该控件相关联的其他相关控件的属性及属性值,生成通过该控件可发生的复合用户动作;或,
若通过该控件可发生单一用户动作,则根据该控件的属性及属性值,生成通过该控件可发生的单一用户动作。
可选的,所述获取当前目标用户界面的控件树之前包括步骤:
解析待测试应用程序安装包中的应用配置文件,以获取该待测试应用程序的安装启动信息;
根据所述安装启动信息,安装并启动该待测试应用程序。
可选的,所述应用用户界面的遍历测试方法还包括:
按照各用户界面之间的层级关系,保存对应用户界面的截图,并在遍历测试结束后将保存的截图发送至外部设备进行处理。
本发明中,通过获取当前用户界面上的控件树,进而完成对当前用户界面上显示的各控件的访问,并在访问控件过程中模拟控件所对应的用户动作,进而完成对当前用户界面的测试并截图,同时,考虑到模拟用户动作可能会产生新的用户界面,因此,对每一用户界面以及通过模拟用户动作而新产生的新的用户界面进行循环遍历,进而提高用户界面遍历测试的自动化程度,同时也提升对用户界面的遍历测试覆盖率,从而提高用户界面遍历测试效果。
附图说明
图1为本发明应用用户界面的遍历测试装置第一实施例的模块示意图;
图2为图1中遍历模块一实施例的模块示意图;
图3为本发明应用用户界面的遍历测试装置中用户界面一实施例的示意图;
图4为图3中用户界面所对应的控件树一实施例的示意图;
图5为本发明应用用户界面的遍历测试装置第二实施例的模块示意图;
图6为本发明应用用户界面的遍历测试方法第一实施例的流程示意图;
图7为图6中步骤S2一实施例的流程示意图;
图8为本发明应用用户界面的遍历测试方法第二实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明应用用户界面的遍历测试装置第一实施例的模块示意图。
本实施例中具体对Android应用程序进行用户界面的遍历测试。
为实现提升应用的用户界面遍历测试的自动化程度以及用户界面的覆盖率,本实施例中,应用用户界面的遍历测试装置包括:
获取模块10,用于获取当前目标用户界面的控件树,控件树至少包括当前目标用户界面上显示的所有控件的相关信息;
控件树是安卓***中的一种控件架构,该控件架构至上而下的形成了树形结构,控件树至少包括当前目标用户界面上显示的所有控件的相关信息,比如各控件的层级关系、各控件的名称及属性等。
可选的,控件树所包括的相关信息至少包括当前用户界面上显示的所有控件的层次结构信息、单个控件的属性及属性值。
本实施例中,通过获取模块10获取当前目标用户界面的控件树,进而可自动得到当前目标用户界面上显示的所有控件的相关信息,以便对控件进行遍历访问。
遍历模块20,用于根据相关信息,对当前目标用户界面上显示的各控件进行遍历,并生成当前目标用户界面上可发生的若干用户动作;
本实施例中,当前目标用户界面上显示的各控件具体为树形层级结构,因此,可基于该树形层级结构对各控件进行遍历访问,具体遍历访问的算法不限。
通常,用户在使用应用时,通常都是通过应用的用户界面上的控件来触发产生相应的用户动作,从而完成相应功能或者跳转到其他新的用户界面上。本实施例中,为实现用户界面的自动跳转,因此,将在遍历访问各控件时,自动通过控件而反向推出可以在该控件上发生的用户动作,比如输入、点击、长按、滑动等用户动作。
模拟模块30,用于模拟执行用户动作,并对模拟执行用户动作后所对应的第一用户界面进行截图;
本实施例中对于用户动作的模拟执行方式不限。通常,大多数的用户动作都是作为一种触发动作来处理的,因此,比如在模拟执行用户动作时,并不需要真的模拟用户动作,而是可以模拟出控件被触发而调用相应的执行程序或执行函数。当然,对于其他比较复杂的控件,比如输入控件,则需要进行相应的输入处理,比如输入登录账号密码等。因此,对于这类复杂的控件,则需要同时模拟多种操作。
当模拟模块30模拟执行用户动作后,此时对应的用户界面既可能发生了变化,也可能没有发生变化,比如在模拟调节字体的大小可以在当前用户界面上进行,而比如模拟设置账户密码等则需要跳转到设置界面上进行。
需要说明的是,本实施例中对于用户界面是否发生变化的判断标准的设置不限,例如根据每一个用户界面所对应的Activity名称进行区别,也即具体通过判断模拟执行用户动作前后用户界面的Activity名称是否相同进行区别,Activity名称相同,则认为没有发生变化。也即即使模拟用户动作后界面的内容发生了变化,也可以认为是没有产生新的用户界面。
此外,为便于测试人员能够了解到测试的问题,因此,在模拟执行用户动作后,模拟模块30将对当前界面进行截图,从而便于测试人员能够根据截图发现应用的相关问题。
任务栈模块40,用于当第一用户界面中存在与当前目标用户界面不同的若干第二用户界面时,将第二用户界面加入任务栈中;获取模块10还用于:获取任务栈的栈顶所对应的用户界面,并将该用户界面作为当前目标用户界面,其中,获取模块直至任务栈为空或满足预置停止条件时停止获取。
本实施例中,当模拟模块30模拟执行用户动作后,可能会产生新的用户界面,而新的用户界面也同样需要进行遍历测试,因此,任务栈模块40将新产生的用户界面放入任务栈中,待当前目标用户界面的遍历测试结束后,获取模块10将获取任务栈的栈顶所对应的用户界面,并将该用户界面作为当前目标用户界面继续进行获取控件树、生成用户动作、模拟执行用户动作等测试,直至任务栈为空或满足预置停止条件时获取模块10停止获取用户界面。
进一步可选的,模拟模块30还用于:按照各用户界面之间的层级关系,保存对应用户界面的截图,并在遍历测试结束后将保存的截图发送至外部设备进行处理。本实施例中所述的每一个用户界面两两之间都存在对应的层级关系,比如,A1界面与A2界面同属于通过界面A中控件所触发,通过A1界面中的控件可触发生成B1界面等。
本实施例中,通过获取当前用户界面上的控件树,进而完成对当前用户界面上显示的各控件的访问,并在访问控件过程中模拟控件所对应的用户动作,进而完成对当前用户界面的测试并截图,同时,考虑到模拟用户动作可能会产生新的用户界面,因此,对每一用户界面以及通过模拟用户动作而新产生的新的用户界面进行循环遍历,进而提高用户界面遍历测试的自动化程度,同时也提升对用户界面的遍历测试覆盖率,从而提高用户界面遍历测试效果。
参照图2,图2为图1中遍历模块一实施例的模块示意图。
本实施例中,遍历模块20包括:
遍历单元201,用于根据层次结构信息,对当前目标用户界面上显示的各控件进行遍历,并在遍历控件时,根据该控件的属性及属性值,判断通过该控件是否可发生用户动作;
如图3所示的用户界面以及如图4所示的用户界面对应的控件树。
本实施例中,通过控件树可以获知当前用户界面上显示的所有控件的层次结构信息、单个控件的属性及属性值,进而根据层次结构信息,对当前目标用户界面上显示的各控件进行遍历,同时,在遍历控件时,根据该控件的属性及属性值,判断通过该控件是否可发生用户动作。
需要说明的是,Android***中对于用户可以点击的控件都设置有可点击属性(clickable属性),若clickable属性值为true,则通过该控件是否可发生用户动作。
生成单元202,用于若通过该控件可发生用户动作,则根据该控件的属性及属性值,或者还根据与该控件相关的其他相关控件的属性及属性值,生成通过该控件可发生的用户动作。
本实施例中,基于某些功能需要,比如登录功能对应的用户动作需要输入账户、密码,然后再通过登录按钮点击提交进行登录,也即在实现该登录功能时,需要进行多种不同的且相互关联的用户动作。当然,也有某些简单的用户动作,比如点击设置按钮而打开设置界面等。
因此,本实施例中在通过控件生成用户动作时,将基于不同类型的用户动作,对应根据该控件的属性及属性值,或者还根据与该控件相关的其他相关控件的属性及属性值,生成通过该控件可发生的用户动作。
本实施例中,具体通过获取的用户界面的控件树,完成对该用户界面的控件的遍历,并根据各控件的属性及属性值,生成该用户界面上可发生的用户动作,进而为模拟用户动作以自动触发跳转到新的用户界面提供实现方式。
进一步的,在本发明应用用户界面的遍历测试装置一实施例中,遍历单元201用于:根据该控件的属性及属性值,判断该控件是否具有可点击属性且可点击属性值为真,若是,则确定通过该控件可发生用户动作,其中,若该控件与其他控件存在关联关系,则确定通过该控件可发生复合用户动作,若该控件与其他控件不存在关联关系,则确定通过该控件可发生单一用户动作;
生成单元202具体用于:若通过该控件可发生复合用户动作,则根据该控件的属性及属性值,以及根据与该控件相关联的其他相关控件的属性及属性值,生成通过该控件可发生的复合用户动作;或,若通过该控件可发生单一用户动作,则根据该控件的属性及属性值,生成通过该控件可发生的单一用户动作。
本实施例中,通过当前目标用户界面的控件树,进而确定各控件之间层次结构关系,比如是否处于同一层级、是否存在兄弟关系、父子关系等,进而确定该控件与其他控件是否存在关联关系,若该控件与其他控件存在关联关系,则确定通过该控件可发生复合用户动作,若该控件与其他控件不存在关联关系,则确定通过该控件可发生单一用户动作。
例如,在遍历树形结构的当前用户界面上的各控件时,对控件进行处理,进而生成当前用户界面上可发生的用户动作。对于复合用户动作生成过程示例如下:
1)、从控件树的根节点开始遍历,当访问到输入控件(EditText)且clickable属性为true时,保存该控件节点信息;
2)、获取与该控件节点相关的文本信息,假设存在一个与该输入控件相关的文本控件(TextView)含有用户名、密码等关键字,因此可通过访问输入控件节点的子节点、兄弟节点、父节点来获取相关的文本控件节点,进而提取文本控件所含有的关键字;
3)、查找可点击的命令控件,比如登陆、确定、保存等;
4)、将输入控件、文本控件、命令控件这一系列控件所对应的系列逻辑功能组合在一起生成一个复合用户动作。
此外,本实施例中对于简单用户动作生成过程如下:遍历控件树中对应的各控件,并参考各控件节点的class、clickabel等属性,进而生成相应的简单动作,比如点击、长按、滑动等。
参照图5,图5为本发明应用用户界面的遍历测试装置第二实施例的模块示意图。本实施例与上述实施例的区别在于,本实施例中,应用用户界面的遍历测试装置还包括:
预处理模块50,用于解析待测试应用程序安装包中的应用配置文件,以获取该待测试应用程序的安装启动信息;根据安装启动信息,安装并启动该待测试应用程序。
现有测试技术中,获取用户界面通常都需要测试开发人员提供相关信息,比如包名、Activity组件名等,因此,为提高遍历测试的自动化能力,本实施例中,具体通过解析待测试应用程序安装包中的应用配置文件以获取该待测试应用程序的安装启动信息。
例如,以apk安装包为输入,预处理模块50通过解析apk安装包中的AndroidManifest文件,进而获取apk安装包的包名以及相关Activity组件,比如该应用程序的主Activity组件,进而根据获取的包名以及主Activity组件自动安装该apk安装包,并在安装成功后运行该应用程序,进而便于后续对该应用程序的用户界面进行遍历测试处理。
本实施例中,通过解析待测试应用程序安装包中的应用配置文件,进而可提高遍历测试的自动化能力。
参照图6,图6为本发明应用用户界面的遍历测试方法第一实施例的流程示意图。本实施例中具体对Android应用程序进行用户界面的遍历测试。
为实现提升应用的用户界面遍历测试的自动化程度以及用户界面的覆盖率,本实施例中,应用用户界面的遍历测试方法包括:
步骤S1,获取当前目标用户界面的控件树,控件树至少包括当前目标用户界面上显示的所有控件的相关信息;
控件树是安卓***中的一种控件架构,该控件架构至上而下的形成了树形结构,控件树至少包括当前目标用户界面上显示的所有控件的相关信息,比如各控件的层级关系、各控件的名称及属性等。
可选的,控件树所包括的相关信息至少包括当前用户界面上显示的所有控件的层次结构信息、单个控件的属性及属性值。
本实施例中,通过遍历测试装置获取当前目标用户界面的控件树,进而可自动得到当前目标用户界面上显示的所有控件的相关信息,以便对控件进行遍历访问。
步骤S2,根据相关信息,对当前目标用户界面上显示的各控件进行遍历,并生成当前目标用户界面上可发生的若干用户动作;
本实施例中,当前目标用户界面上显示的各控件具体为树形层级结构,因此,可基于该树形层级结构对各控件进行遍历访问,具体遍历访问的算法不限。
通常,用户在使用应用时,通常都是通过应用的用户界面上的控件来触发产生相应的用户动作,从而完成相应功能或者跳转到其他新的用户界面上。本实施例中,为实现用户界面的自动跳转,因此,将在遍历访问各控件时,自动通过控件而反向推出可以在该控件上发生的用户动作,比如输入、点击、长按、滑动等用户动作。
步骤S3,模拟执行用户动作,并对模拟执行用户动作后所对应的第一用户界面进行截图;
本实施例中对于用户动作的模拟执行方式不限。通常,大多数的用户动作都是作为一种触发动作来处理的,因此,比如在模拟执行用户动作时,并不需要真的模拟用户动作,而是可以模拟出控件被触发而调用相应的执行程序或执行函数。当然,对于其他比较复杂的控件,比如输入控件,则需要进行相应的输入处理,比如输入登录账号密码等。因此,对于这类复杂的控件,则需要同时模拟多种操作。
当遍历测试装置模拟执行用户动作后,此时对应的用户界面既可能发生了变化,也可能没有发生变化,比如在模拟调节字体的大小可以在当前用户界面上进行,而比如模拟设置账户密码等则需要跳转到设置界面上进行。
需要说明的是,本实施例中对于用户界面是否发生变化的判断标准的设置不限,例如根据每一个用户界面所对应的Activity名称进行区别,也即具体通过判断模拟执行用户动作前后用户界面的Activity名称是否相同进行区别,Activity名称相同,则认为没有发生变化。也即即使模拟用户动作后界面的内容发生了变化,也可以认为是没有产生新的用户界面。
此外,为便于测试人员能够了解到测试的问题,因此,在模拟执行用户动作后,遍历测试装置将对当前界面进行截图,从而便于测试人员能够根据截图发现应用的相关问题。
步骤S4,当第一用户界面中存在与当前目标用户界面不同的若干第二用户界面时,将第二用户界面加入任务栈中;
步骤S5,获取任务栈的栈顶所对应的用户界面,并将该用户界面作为当前目标用户界面,执行步骤S1-S5,直至任务栈为空或满足预置停止条件时退出。
本实施例中,当遍历测试装置模拟执行用户动作后,可能会产生新的用户界面,而新的用户界面也同样需要进行遍历测试,因此,遍历测试装置将新产生的用户界面放入任务栈中,待当前目标用户界面的遍历测试结束后,遍历测试装置将获取任务栈的栈顶所对应的用户界面,并将该用户界面作为当前目标用户界面继续进行获取控件树、生成用户动作、模拟执行用户动作等测试,直至任务栈为空或满足预置停止条件时遍历测试装置停止获取用户界面。
进一步可选的,在本发明应用用户界面的遍历测试方法一实施例中,应用用户界面的遍历测试方法还包括:按照各用户界面之间的层级关系,保存对应用户界面的截图,并在遍历测试结束后将保存的截图发送至外部设备进行处理。本实施例中所述的每一个用户界面两两之间都存在对应的层级关系,比如,A1界面与A2界面同属于通过界面A中控件所触发,通过A1界面中的控件可触发生成B1界面等。
本实施例中,通过获取当前用户界面上的控件树,进而完成对当前用户界面上显示的各控件的访问,并在访问控件过程中模拟控件所对应的用户动作,进而完成对当前用户界面的测试并截图,同时,考虑到模拟用户动作可能会产生新的用户界面,因此,对每一用户界面以及通过模拟用户动作而新产生的新的用户界面进行循环遍历,进而提高用户界面遍历测试的自动化程度,同时也提升对用户界面的遍历测试覆盖率,从而提高用户界面遍历测试效果。
参照图7,图7为图6中步骤S2一实施例的流程示意图。
本实施例中,上述步骤S2包括:
步骤S21,根据层次结构信息,对当前目标用户界面上显示的各控件进行遍历,并在遍历控件时,根据该控件的属性及属性值,判断通过该控件是否可发生用户动作;
如图3所示的用户界面以及如图4所示的用户界面对应的控件树。
本实施例中,通过控件树可以获知当前用户界面上显示的所有控件的层次结构信息、单个控件的属性及属性值,进而根据层次结构信息,对当前目标用户界面上显示的各控件进行遍历,同时,在遍历控件时,根据该控件的属性及属性值,判断通过该控件是否可发生用户动作。
需要说明的是,Android***中对于用户可以点击的控件都设置有可点击属性(clickable属性),若clickable属性值为true,则通过该控件是否可发生用户动作。
步骤S22,若通过该控件可发生用户动作,则根据该控件的属性及属性值,或者还根据与该控件相关的其他相关控件的属性及属性值,生成通过该控件可发生的用户动作。
本实施例中,基于某些功能需要,比如登录功能对应的用户动作需要输入账户、密码,然后再通过登录按钮点击提交进行登录,也即在实现该登录功能时,需要进行多种不同的且相互关联的用户动作。当然,也有某些简单的用户动作,比如点击设置按钮而打开设置界面等。
因此,本实施例中在通过控件生成用户动作时,将基于不同类型的用户动作,对应根据该控件的属性及属性值,或者还根据与该控件相关的其他相关控件的属性及属性值,生成通过该控件可发生的用户动作。
本实施例中,具体通过获取的用户界面的控件树,完成对该用户界面的控件的遍历,并根据各控件的属性及属性值,生成该用户界面上可发生的用户动作,进而为模拟用户动作以自动触发跳转到新的用户界面提供实现方式。
进一步的,在本发明应用用户界面的遍历测试方法一实施例中。
基于上述实施例,本实施例中,上述步骤S21包括:
根据该控件的属性及属性值,判断该控件是否具有可点击属性且可点击属性值为真,若是,则确定通过该控件可发生用户动作,其中,若该控件与其他控件存在关联关系,则确定通过该控件可发生复合用户动作,若该控件与其他控件不存在关联关系,则确定通过该控件可发生单一用户动作;
上述步骤S22包括:若通过该控件可发生复合用户动作,则根据该控件的属性及属性值,以及根据与该控件相关联的其他相关控件的属性及属性值,生成通过该控件可发生的复合用户动作;或,若通过该控件可发生单一用户动作,则根据该控件的属性及属性值,生成通过该控件可发生的单一用户动作。
本实施例中,通过当前目标用户界面的控件树,进而确定各控件之间层次结构关系,比如是否处于同一层级、是否存在兄弟关系、父子关系等,进而确定该控件与其他控件是否存在关联关系,若该控件与其他控件存在关联关系,则确定通过该控件可发生复合用户动作,若该控件与其他控件不存在关联关系,则确定通过该控件可发生单一用户动作。
例如,在遍历树形结构的当前用户界面上的各控件时,对控件进行处理,进而生成当前用户界面上可发生的用户动作。对于复合用户动作生成过程示例如下:
1)、从控件树的根节点开始遍历,当访问到输入控件(EditText)且clickable属性为true时,保存该控件节点信息;
2)、获取与该控件节点相关的文本信息,假设存在一个与该输入控件相关的文本控件(TextView)含有用户名、密码等关键字,因此可通过访问输入控件节点的子节点、兄弟节点、父节点来获取相关的文本控件节点,进而提取文本控件所含有的关键字;
3)、查找可点击的命令控件,比如登陆、确定、保存等;
4)、将输入控件、文本控件、命令控件这一系列控件所对应的系列逻辑功能组合在一起生成一个复合用户动作。
此外,本实施例中对于简单用户动作生成过程如下:遍历控件树中对应的各控件,并参考各控件节点的class、clickabel等属性,进而生成相应的简单动作,比如点击、长按、滑动等。
参照图8,图8为本发明应用用户界面的遍历测试方法第二实施例的流程示意图。本实施例与上述各实施例的区别在于,本实施例中,在上述步骤S1之前还包括:
步骤S0,解析待测试应用程序安装包中的应用配置文件,以获取该待测试应用程序的安装启动信息;根据安装启动信息,安装并启动该待测试应用程序。
现有测试技术中,获取用户界面通常都需要测试开发人员提供相关信息,比如包名、Activity组件名等,因此,为提高遍历测试的自动化能力,本实施例中,具体通过解析待测试应用程序安装包中的应用配置文件以获取该待测试应用程序的安装启动信息。
例如,以apk安装包为输入,预处理模块50通过解析apk安装包中的AndroidManifest文件,进而获取apk安装包的包名以及相关Activity组件,比如该应用程序的主Activity组件,进而根据获取的包名以及主Activity组件自动安装该apk安装包,并在安装成功后运行该应用程序,进而便于后续对该应用程序的用户界面进行遍历测试处理。
本实施例中,通过解析待测试应用程序安装包中的应用配置文件,进而可提高遍历测试的自动化能力。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种应用用户界面的遍历测试装置,其特征在于,所述应用用户界面的遍历测试装置包括:
获取模块,用于获取当前目标用户界面的控件树,所述控件树至少包括当前目标用户界面上显示的所有控件的相关信息,所述相关信息至少包括当前用户界面上显示的所有控件的层次结构信息、单个控件的属性及属性值;
遍历模块,用于根据所述相关信息,对当前目标用户界面上显示的各控件进行遍历,并生成当前目标用户界面上可发生的若干用户动作;
模拟模块,用于模拟执行所述用户动作,并对模拟执行所述用户动作后所对应的第一用户界面进行截图;
任务栈模块,用于当所述第一用户界面中存在与当前目标用户界面不同的若干第二用户界面时,将所述第二用户界面加入任务栈中;
所述获取模块还用于:获取所述任务栈的栈顶所对应的用户界面,并将该用户界面作为当前目标用户界面,其中,所述获取模块直至所述任务栈为空或满足预置停止条件时停止获取;
所述遍历模块包括:
遍历单元,用于根据所述层次结构信息,对当前目标用户界面上显示的各控件进行遍历,并在遍历控件时,根据该控件的属性及属性值,判断通过该控件是否可发生用户动作;
生成单元,用于若通过该控件可发生用户动作,则根据该控件的属性及属性值,或者还根据与该控件相关的其他相关控件的属性及属性值,生成通过该控件可发生的用户动作;
其中,所述遍历单元具体用于:
根据该控件的属性及属性值,判断该控件是否具有可点击属性且可点击属性值为真,若是,则确定通过该控件可发生用户动作,其中,若该控件与其他控件存在关联关系,则确定通过该控件可发生复合用户动作,若该控件与其他控件不存在关联关系,则确定通过该控件可发生单一用户动作;
所述生成单元具体用于:
若通过该控件可发生复合用户动作,则根据该控件的属性及属性值,以及根据与该控件相关联的其他相关控件的属性及属性值,生成通过该控件可发生的复合用户动作;或,若通过该控件可发生单一用户动作,则根据该控件的属性及属性值,生成通过该控件可发生的单一用户动作。
2.如权利要求1所述的应用用户界面的遍历测试装置,其特征在于,所述应用用户界面的遍历测试装置还包括:
预处理模块,用于解析待测试应用程序安装包中的应用配置文件,以获取该待测试应用程序的安装启动信息;根据所述安装启动信息,安装并启动该待测试应用程序。
3.如权利要求2所述的应用用户界面的遍历测试装置,其特征在于,所述模拟模块还用于:
按照各用户界面之间的层级关系,保存对应用户界面的截图,并在遍历测试结束后将保存的截图发送至外部设备进行处理。
4.一种应用用户界面的遍历测试方法,其特征在于,所述应用用户界面的遍历测试方法包括步骤:
S1、获取当前目标用户界面的控件树,所述控件树至少包括当前目标用户界面上显示的所有控件的相关信息,所述相关信息至少包括当前用户界面上显示的所有控件的层次结构信息、单个控件的属性及属性值;
S2、根据所述相关信息,对当前目标用户界面上显示的各控件进行遍历,并生成当前目标用户界面上可发生的若干用户动作;
其中,所述根据所述相关信息,对当前目标用户界面上显示的各控件进行遍历,并生成当前目标用户界面上可发生的若干用户动作包括:
根据所述层次结构信息,对当前目标用户界面上显示的各控件进行遍历,并在遍历控件时,根据该控件的属性及属性值,判断该控件是否具有可点击属性且可点击属性值为真,若是,则确定通过该控件可发生用户动作,其中,若该控件与其他控件存在关联关系,则确定通过该控件可发生复合用户动作,若该控件与其他控件不存在关联关系,则确定通过该控件可发生单一用户动作;
若通过该控件可发生复合用户动作,则根据该控件的属性及属性值,以及根据与该控件相关联的其他相关控件的属性及属性值,生成通过该控件可发生的复合用户动作;或,若通过该控件可发生单一用户动作,则根据该控件的属性及属性值,生成通过该控件可发生的单一用户动作;
S3、模拟执行所述用户动作,并对模拟执行所述用户动作后所对应的第一用户界面进行截图;
S4、当所述第一用户界面中存在与当前目标用户界面不同的若干第二用户界面时,将所述第二用户界面加入任务栈中;
S5、获取所述任务栈的栈顶所对应的用户界面,并将该用户界面作为当前目标用户界面,执行步骤S1-S5,直至所述任务栈为空或满足预置停止条件时退出。
5.如权利要求4所述的应用用户界面的遍历测试方法,其特征在于,所述获取当前目标用户界面的控件树之前包括步骤:
解析待测试应用程序安装包中的应用配置文件,以获取该待测试应用程序的安装启动信息;
根据所述安装启动信息,安装并启动该待测试应用程序。
6.如权利要求5所述的应用用户界面的遍历测试方法,其特征在于,所述应用用户界面的遍历测试方法还包括:
按照各用户界面之间的层级关系,保存对应用户界面的截图,并在遍历测试结束后将保存的截图发送至外部设备进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610649124.1A CN106294152B (zh) | 2016-08-09 | 2016-08-09 | 应用用户界面的遍历测试装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610649124.1A CN106294152B (zh) | 2016-08-09 | 2016-08-09 | 应用用户界面的遍历测试装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106294152A CN106294152A (zh) | 2017-01-04 |
CN106294152B true CN106294152B (zh) | 2019-03-12 |
Family
ID=57667521
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610649124.1A Active CN106294152B (zh) | 2016-08-09 | 2016-08-09 | 应用用户界面的遍历测试装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106294152B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112527689A (zh) * | 2021-02-09 | 2021-03-19 | 腾讯科技(深圳)有限公司 | 应用测试方法、装置及存储介质 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844214A (zh) * | 2017-01-23 | 2017-06-13 | 北京思特奇信息技术股份有限公司 | 一种自动对页面渲染进行截图的方法及装置 |
CN108427557A (zh) * | 2017-05-10 | 2018-08-21 | 平安科技(深圳)有限公司 | 一种控件布局显示控制方法、装置及计算机可读存储介质 |
CN107329893A (zh) * | 2017-06-21 | 2017-11-07 | 广州酷狗计算机科技有限公司 | 应用界面的遍历方法、装置及存储介质 |
CN107506300B (zh) * | 2017-08-09 | 2020-10-13 | 百度在线网络技术(北京)有限公司 | 一种用户界面测试方法、装置、服务器和存储介质 |
CN107451062B (zh) * | 2017-08-09 | 2020-12-29 | 百度在线网络技术(北京)有限公司 | 一种用户界面遍历测试方法、装置、服务器、存储介质 |
CN109783343A (zh) * | 2017-11-13 | 2019-05-21 | 北京嘀嘀无限科技发展有限公司 | 控件测试方法、装置、客户端设备和计算机可读存储介质 |
CN109814957B (zh) * | 2017-11-20 | 2022-06-07 | 北京京东尚科信息技术有限公司 | 一种用于ios***的标签添加方法和装置 |
CN108763097A (zh) * | 2018-06-06 | 2018-11-06 | 上海携程国际旅行社有限公司 | 自动化测试方法、装置、电子设备、存储介质 |
CN109871316A (zh) * | 2019-01-10 | 2019-06-11 | 北京云测信息技术有限公司 | 一种控件识别方法和装置 |
CN110413518B (zh) * | 2019-07-17 | 2023-11-14 | 深圳证券交易所 | 控件对象库的生成方法及生成装置和计算机可读存储介质 |
CN111127223B (zh) * | 2019-11-25 | 2023-07-18 | 泰康保险集团股份有限公司 | 保险产品测试方法、装置和存储介质 |
CN111176982B (zh) * | 2019-12-12 | 2023-08-22 | 中国建设银行股份有限公司 | 一种测试界面生成方法和装置 |
CN111857720B (zh) * | 2020-07-31 | 2023-08-22 | 抖音视界有限公司 | 用户界面状态信息的生成方法、装置、电子设备及介质 |
CN113076242A (zh) * | 2021-02-24 | 2021-07-06 | 西安闻泰电子科技有限公司 | 用户界面测试方法、装置、存储介质和电子设备 |
CN113076257A (zh) * | 2021-04-19 | 2021-07-06 | 西安闻泰信息技术有限公司 | 测试脚本录制方法、装置、介质及计算机设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019937A (zh) * | 2012-12-13 | 2013-04-03 | 广东欧珀移动通信有限公司 | 一种人机交互界面遍历测试方法 |
CN104035867A (zh) * | 2014-06-04 | 2014-09-10 | 重庆泰凯科技有限公司 | 基于Android的应用功能遍历测试方法 |
CN104050076A (zh) * | 2013-03-12 | 2014-09-17 | 阿里巴巴集团控股有限公司 | 移动终端上的应用软件测试方法、装置及*** |
CN104572430A (zh) * | 2013-10-24 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 一种终端应用界面的测试方法、装置和*** |
CN104794050A (zh) * | 2014-01-21 | 2015-07-22 | 腾讯科技(深圳)有限公司 | 应用程序的测试方法、装置及*** |
CN104866413A (zh) * | 2014-02-24 | 2015-08-26 | 腾讯科技(深圳)有限公司 | 多进程测试的方法及装置 |
CN105260301A (zh) * | 2015-09-24 | 2016-01-20 | 努比亚技术有限公司 | 用户界面的视效比对测试装置及其实现方法 |
CN105607993A (zh) * | 2015-09-30 | 2016-05-25 | 北京奇虎科技有限公司 | 一种对应用的用户界面ui进行测试的方法和装置 |
CN105630686A (zh) * | 2016-03-24 | 2016-06-01 | 厦门美图移动科技有限公司 | 一种应用遍历测试方法、设备和移动终端 |
CN105718370A (zh) * | 2016-01-21 | 2016-06-29 | 上海斐讯数据通信技术有限公司 | 一种Android设备测试方法及测试装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7093238B2 (en) * | 2001-07-27 | 2006-08-15 | Accordsqa, Inc. | Automated software testing and validation system |
-
2016
- 2016-08-09 CN CN201610649124.1A patent/CN106294152B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019937A (zh) * | 2012-12-13 | 2013-04-03 | 广东欧珀移动通信有限公司 | 一种人机交互界面遍历测试方法 |
CN104050076A (zh) * | 2013-03-12 | 2014-09-17 | 阿里巴巴集团控股有限公司 | 移动终端上的应用软件测试方法、装置及*** |
CN104572430A (zh) * | 2013-10-24 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 一种终端应用界面的测试方法、装置和*** |
CN104794050A (zh) * | 2014-01-21 | 2015-07-22 | 腾讯科技(深圳)有限公司 | 应用程序的测试方法、装置及*** |
CN104866413A (zh) * | 2014-02-24 | 2015-08-26 | 腾讯科技(深圳)有限公司 | 多进程测试的方法及装置 |
CN104035867A (zh) * | 2014-06-04 | 2014-09-10 | 重庆泰凯科技有限公司 | 基于Android的应用功能遍历测试方法 |
CN105260301A (zh) * | 2015-09-24 | 2016-01-20 | 努比亚技术有限公司 | 用户界面的视效比对测试装置及其实现方法 |
CN105607993A (zh) * | 2015-09-30 | 2016-05-25 | 北京奇虎科技有限公司 | 一种对应用的用户界面ui进行测试的方法和装置 |
CN105718370A (zh) * | 2016-01-21 | 2016-06-29 | 上海斐讯数据通信技术有限公司 | 一种Android设备测试方法及测试装置 |
CN105630686A (zh) * | 2016-03-24 | 2016-06-01 | 厦门美图移动科技有限公司 | 一种应用遍历测试方法、设备和移动终端 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112527689A (zh) * | 2021-02-09 | 2021-03-19 | 腾讯科技(深圳)有限公司 | 应用测试方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106294152A (zh) | 2017-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106294152B (zh) | 应用用户界面的遍历测试装置及方法 | |
US8522214B2 (en) | Keyword based software testing system and method | |
Leotta et al. | Visual vs. DOM-based web locators: An empirical study | |
CN107291438B (zh) | 自动化脚本的生成方法、装置及电子设备 | |
US11449370B2 (en) | System and method for determining a process flow of a software application and for automatically generating application testing code | |
US8903690B2 (en) | Linking graphical user interface testing tools and human performance modeling to enable usability assessment | |
US20210073110A1 (en) | Authoring automated test suites using artificial intelligence | |
Hesenius et al. | Automating UI tests for mobile applications with formal gesture descriptions | |
CN108874649B (zh) | 自动化测试脚本的生成方法、装置及其计算机设备 | |
US10877778B2 (en) | Sequence detection and automation for complex portal environments | |
CN106294172B (zh) | 基于终端设备的app自测方法和装置 | |
CN108829389A (zh) | 基于Appium的安卓应用自动化触发执行方法 | |
US11372750B2 (en) | Test script for application under test having abstracted action group instantiations | |
Lämsä | Comparison of GUI testing tools for Android applications | |
Ferreira et al. | Android testing crawler | |
CN111143205A (zh) | 一种面向安卓平台的测试用例自动化生成方法及生成*** | |
Jiang et al. | To what extent is stress testing of android TV applications automated in industrial environments? | |
Grechanik et al. | Differencing graphical user interfaces | |
Paulovsky et al. | High-coverage testing of navigation models in android applications | |
Amalfitano | Reverse Engineering and Testing of Rich Internet Applications | |
Faella | Seriously Good Software: Code that works, survives, and wins | |
SYAIFUDIN et al. | Implementation and Performance Evaluation of Unit Testing for Student’s Answer Validation in Android Programming Learning Assistant System | |
Yasin et al. | DroidbotX: Test Case Generation Tool for Android Applications Using Q-Learning. Symmetry 2021, 13, 310 | |
TR202020295A2 (tr) | Bi̇r test senaryosu oluşturma si̇stemi̇ | |
Grönlund | A comparison study betweenmobile cross platform frameworks Flutter and React Native |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |