CN104536889A - 用户界面测试的方法、用例管理平台、操作终端及系统 - Google Patents
用户界面测试的方法、用例管理平台、操作终端及系统 Download PDFInfo
- Publication number
- CN104536889A CN104536889A CN201410826936.XA CN201410826936A CN104536889A CN 104536889 A CN104536889 A CN 104536889A CN 201410826936 A CN201410826936 A CN 201410826936A CN 104536889 A CN104536889 A CN 104536889A
- Authority
- CN
- China
- Prior art keywords
- window object
- management platform
- hook
- image parameter
- 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.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种用户界面测试的方法、用例管理平台、操作终端及系统,涉及应用测试领域,为解决编写测试用例耗时较长的问题而发明。本发明的方法包括:显示被测应用的界面窗口,并接收针对界面窗口中窗口对象的点击操作;通过Hook机制对点击事件的函数调用进行截获,获得点击事件对应的坐标参数;查找对应坐标参数的窗口对象,获取窗口对象的对象参数,其中对象参数用于唯一标记窗口对象;根据对象参数生成测试用例。本发明主要应用于安卓应用的UI测试。
Description
技术领域
本发明涉及应用测试领域,尤其一种用户界面测试的方法、用例管理平台、操作终端及系统。
背景技术
用户界面(User Interface,简称UI)测试一般包括布局测试、内容测试(包括文字和图片)、风格测试、控件测试等内容。对于布局、内容风格、字体等测试对象,通常采用静态方式进行测试,例如使用点检表结合人工观察的方式获得测试结果。而对于用户界面中的控件来说,由于其具有人机交互的特性,能够向用户提供诸如界面跳转、开关控制、文字输入等交互性功能,因此现有技术中往往采用动态方式对UI进行测试。
现有针对UI的动态测试通常需要测试人员编写测试用例,对被测试对象、测试方式、预期结果等内容进行界定,然后由测试终端(例如手机)执行该测试用例完成对UI测试。
在上述测试UI的过程中发明人发现,通常应用程序涉及的对象元素(如控件、view等)数量较多,一次测试可能会涵盖成百上千的对象元素。因此编写测试用例通常十分耗时,测试人员往往需要花费大量时间对测试用例进行编写和修改,实际应用中过于耗费人力成本。此外,现有的测试用例兼容性一般较差,即使对于一套测试方案,测试人员也需要针对不同操作系统,甚至不同的测试机型编写不同的测试用例,由此进一步提升了测试过程的人力成本。
发明内容
本发明提供了一种用户界面测试的方法、用例管理平台、操作终端及系统,能够解决编写测试用例耗时较长的问题。
为解决上述问题,在第一方面中,本发明提供了一种用户界面测试的方法,该方法包括:
显示被测应用的界面窗口,并接收针对界面窗口中窗口对象的点击操作;
通过Hook机制对点击事件的函数调用进行截获,获得点击事件对应的坐标参数;
查找对应坐标参数的窗口对象,获取窗口对象的对象参数,其中对象参数用于唯一标记窗口对象;
根据对象参数生成测试用例。
在第二方面中,本发明还提供了一种用例管理平台,该用例管理平台包括:
显示单元,用于显示被测应用的界面窗口;
接收单元,用于接收针对显示单元显示的界面窗口中窗口对象的点击操作;
参数获取单元,用于通过Hook机制对接收单元接收的点击操作所对应的点击事件的函数调用进行截获,获得点击事件对应的坐标参数;
查找单元,用于查找对应参数获取单元获取的坐标参数的窗口对象,获取窗口对象的对象参数,其中对象参数用于唯一标记窗口对象;
生成单元,用于根据查找单元查找到的对象参数生成测试用例。
在第三方面中,本发明还提供了一种用户界面测试的系统,该系统包括:用例管理平台及测试终端;其中,
用例管理平台,用于显示被测应用的界面窗口,并接收针对界面窗口中窗口对象的点击操作,通过Hook机制对点击事件的函数调用进行截获,获得点击事件对应的坐标参数,查找对应坐标参数的窗口对象,获取窗口对象的对象参数,其中对象参数用于唯一标记窗口对象,根据对象参数生成测试用例,将测试用例下发给测试终端;
测试终端,用于接收用例管理平台下发的测试用例,并执行测试用例,对窗口对象进行点击测试。
在第四方面中,本发明还提供了一种用户界面测试的方法,该方法包括:
向用例管理平台获取Hook模块,Hook模块中包含有用于实现Hook机制的Hook函数;
显示被测应用的界面窗口,并接收针对界面窗口中窗口对象的点击操作;
通过Hook机制对点击事件的函数调用进行截获,获得点击事件对应的坐标参数;
查找对应坐标参数的窗口对象,获取窗口对象的对象参数,其中对象参数用于唯一标记窗口对象;
将窗口对象的对象参数发送给用例管理平台,以使得用例管理平台根据对象参数生成测试用例。
在第五方面中,本发明还提供了一种操作终端,该操作终端包括:
模块获取单元,用于向用例管理平台获取Hook模块,Hook模块中包含有用于实现Hook机制的Hook函数;
显示单元,用于显示被测应用的界面窗口;
接收单元,用于接收针对显示单元显示的界面窗口中窗口对象的点击操作;
参数获取单元,用于通过Hook机制对接收单元接收的点击操作的点击事件的函数调用进行截获,获得点击事件对应的坐标参数;
查找单元,用于查找对应参数获取单元获取的坐标参数的窗口对象,获取窗口对象的对象参数,其中对象参数用于唯一标记窗口对象;
发送单元,用于将查找单元获得的窗口对象的对象参数发送给用例管理平台,以使得用例管理平台根据对象参数生成测试用例。
在第六方面中,本发明还提供了一种用户界面测试的系统,该系统包括:操作终端及用例管理平台;其中,
用例管理平台,用于向操作终端发送Hook模块,Hook模块中包含有用于实现Hook机制的Hook函数;
操作终端,用于向用例管理平台获取Hook模块,显示被测应用的界面窗口,接收针对界面窗口中窗口对象的点击操作,通过Hook机制对点击事件的函数调用进行截获,获得点击事件对应的坐标参数,查找对应坐标参数的窗口对象,获取窗口对象的对象参数,其中对象参数用于唯一标记窗口对象,将窗口对象的对象参数发送给用例管理平台;
用例管理平台,还用于根据对象参数生成测试用例。
借由上述技术方案,本发明提供的用户界面测试的方法、用例管理平台、操作终端及系统,能够接收测试人员在被测应用的界面窗口中,对窗口对象触发的点击操作,并通过Hook机制对点击事件的函数调用进行截获,获得点击事件对应的坐标参数。然后查找对应坐标参数的窗口对象,获取窗口对象的对象参数,并根据对象参数生成测试用例。最后将生成的测试用例下发给测试终端,以使得测试终端执行该测试用例,对窗口对象进行点击测试。针对UI界面类的测试而言,本发明能够使测试人员在手机、电脑等设备上,仅通过手动点击的方式就可以自动编辑出需要的测试用例,测试终端依据测试用例,完全按照测试人员的点击路径执行测试过程。与现有技术相比,本发明完全无需测试人员对任何形式的测试用例进行编写,能够节省大量因编写测试用例而耗费的时间,从而大大提高自动化测试的效率。
此外,由于无需编写任何形式的测试用例,本发明还可以降低测试人员的入行门槛,即使完全不具备编程基础的人员也可以快速高效的制定测试用例,因此本发明能够提高自动化测试的易用性。
最后,本发明仅需要测试人员一次性制定测试方案,由此生成的测试用例可以下发给大量测试终端同时进行执行。与现有技术中测试人员手动进行测试操作相比,本发明能够实现应用程序的批量测试,进一步节省人力并提高测试效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的第一种用户界面测试的方法流程图;
图2示出了本发明实施例提供的第二种用户界面测试的方法流程图;
图3示出了本发明实施例提供的第一种用例管理平台的结构示意图;
图4示出了本发明实施例提供的第二种用例管理平台的结构示意图;
图5示出了本发明实施例提供的第一种用户界面测试的系统示意图;
图6示出了本发明实施例提供的第二种用户界面测试的系统示意图;
图7示出了本发明实施例提供的第三种用户界面测试的方法流程图;
图8示出了本发明实施例提供的第四种用户界面测试的方法流程图;
图9示出了本发明实施例提供的第一种操作终端的结构示意图;
图10示出了本发明实施例提供的第二种操作终端的结构示意图;
图11示出了本发明实施例提供的第三种用户界面测试的系统示意图;
图12示出了本发明实施例提供的第四种用户界面测试的系统示意图;
图13示出了本发明实施例提供的第五种用户界面测试的系统示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为节省测试人员手动编写测试用例的耗时,本发明的一个实施例提供了一种用户界面测试的方法。如图1所示,该方法包括:
101、显示被测应用的界面窗口,并接收针对界面窗口中窗口对象的点击操作。
本实施例以用例管理平台作为实现图1流程的执行主体进行说明。实际应用中,用例管理平台用于接收、存储、管理测试人员编写的测试用例。而在本实施例中,用例管理平台则用于通过客户端页面或Web页面向测试人员提供制定测试方案的人机交互接口。测试人员可以将手机或电脑等操作终端连接到用例管理平台上,在操作终端上运行被测应用并执行制定的点击操作。
实际应用中,测试人员可以在具备触摸屏的操作终端上使用手指直接触发点击操作,也可以在非触屏设备上通过鼠标点选触发点击操作,或者还可以通过键盘或遥控器上的方向键/导航键控制操作焦点(例如高亮的选择框)的移动,并触发点击操作。测试人员触发点击操作的具体形式由操作终端所支持的操作类型决定,用例管理平台仅以电信号的形式接收操作终端发送的点击操作指令。
102、通过Hook机制对点击事件的函数调用进行截获,获得点击事件对应的坐标参数。
测试人员在触发点击操作后,操作终端上产生点击事件,并且该点击事件会逐层传递到系统底层的窗口对象上。如果测试人员通过触控屏触发点击事件,则产生touch事件;如果测试人员通过鼠标触发点击事件,则产生click事件。在系统底层,点击事件会触发相应的函数调用,该函数中包含系统获得的该点击事件的相关参数,包括点击的坐标参数及事件类型(长按、短按、点击操作、滑动操作、单点触控、多点触控等)。用例管理平台即是在系统底层通过Hook机制对点击事件的函数调用进行截获,从该函数中获得点击事件的坐标参数。
103、查找对应坐标参数的窗口对象,获取窗口对象的对象参数。
本实施例中,获取坐标参数的目的在于获得窗口对象。本实施例不将坐标参数直接写入测试用例的原因在于:不同操作终端的屏幕尺寸可能存在差异,同一窗口对象在不同终端上显示的坐标位置可能不同。如果测试终端直接使用操作终端上获取的坐标参数,那么有可能会定位到其他窗口对象上去。此外,同一应用在不同终端上的客户端(例如手机客户端和电脑客户端),其界面布局通常也会存在差异,窗口对象的大小、位置可能相互不同,直接使用坐标参数也会出现上述问题。如果将窗口对象写入测试用例,那么无论终端的屏幕尺寸是否相同,客户端的界面布局是否相同,都可以保证测试终端对窗口对象的准确定位,提高测试用例的设备兼容性。
本实施例中,窗口对象的对象参数用于唯一标记窗口对象,其主要是指窗口对象的标识,例如控件的ID;当然,实际应用中对象参数还可以包含对象名称、对象类型等其他参数,本实施例对此不作限制。
104、根据对象参数生成测试用例。
在得到对象参数后,用例管理平台生成包含该对象参数的测试用例。本实施例中,测试人员可以仅进行一次点击操作,对一个窗口对象进行点击测试,此时写入测试用例的对象参数仅有一个;而更加常见的是,测试人员会对不同层级窗口中的多个窗口对象进行连续点击,获得一条点击路径,对于此种情况,用例管理平台需要分别获取各个窗口对象的对象参数,并按照点击顺序将所有对象参数合并为一个参数序列,写入到测试用例中。
示例性的,假设测试人员依次点击了主页面中的控件1、控件1对应子页面中的控件2以及控件1对应子页面中的控件3,则用例管理平台获取控件1至控件3的参数1至参数3,并获得“参数1—>参数2—>参数3”的参数序列。
需要说明的是,在生成测试用例时,用例管理平台需要将对象参数的格式转换为符合用例语言要求的格式,由此保证测试终端对测试用例的顺利执行。示例性的,对于执行JAVA测试用例的测试终端,用例管理平台需要将对象参数转换为JAVA语句,而对于执行lua测试用例的测试终端,用例管理平台需要将对象参数转换为lua语句。
值得注意的是,本实施例中,将对象参数“转换”为测试用例的过程完全由用例管理平台自动执行,该过程无需测试人员介入,由此简化了编写测试用例的难度及复杂度。
可选的,在生成测试用例后,可以将测试用例下发给测试终端。测试终端根据测试用例,依次查找测试用例中对象参数所对应的窗口对象,执行测试。例如测试人员在操作终端上依次点击了控件h、控件t和控件k,那么测试终端执行的测试过程亦为控件h—>控件—>控件k,即测试终端通过对测试用例的执行,“模仿”测试人员在操作终端上触发的测试过程。
需要说明的是,测试人员在操作终端上触发点击操作的过程属于“编写”测试用例,而非对被测应用的实际测试。测试终端对测试用例进行执行即可实现自动化测试,无需测试人员在测试终端上重复进行点击操作。由于测试用例具有可复制性,因此可以将测试用例下发给多台测试终端同时进行批量测试,这也是相对传统手动测试方式而言,本实施例能够大量节省人工成本的原因。
本实施例提供的用户界面测试的方法,能够接收测试人员在被测应用的界面窗口中,对窗口对象触发的点击操作,并通过Hook机制对点击事件的函数调用进行截获,获得点击事件对应的坐标参数。然后查找对应坐标参数的窗口对象,获取窗口对象的对象参数,并根据对象参数生成测试用例。最后将生成的测试用例下发给测试终端,以使得测试终端执行该测试用例,对窗口对象进行点击测试。针对UI界面类的测试而言,本实施例能够使测试人员在手机、电脑等设备上,仅通过手动点击的方式就可以自动编辑出需要的测试用例,测试终端依据测试用例,完全按照测试人员的点击路径执行测试过程。与现有技术相比,本实施例完全无需测试人员对任何形式的测试用例进行编写,能够节省大量因编写测试用例而耗费的时间,从而大大提高自动化测试的效率。
此外,由于无需编写任何形式的测试用例,本实施例还可以降低测试人员的入行门槛,即使完全不具备编程基础的人员也可以快速高效的制定测试用例,因此本实施例能够提高自动化测试的易用性。
最后,本实施例仅需要测试人员一次性制定测试方案,由此生成的测试用例可以下发给大量测试终端同时进行执行。与现有技术中测试人员手动进行测试操作相比,本实施例能够实现应用程序的批量测试,进一步节省人力并提高测试效率。
进一步的,作为对图1所示方法的细化及进一步扩展,本发明的另一实施例还提供了一种用户界面测试的方法。如图2所示,该方法包括:
201、显示被测应用的界面窗口,并接收针对界面窗口中窗口对象的点击操作。
202、通过Hook机制获取界面窗口的窗口进程。
在获取点击操作的坐标参数之前,用例管理平台首先需要定位到对应该坐标参数的窗口对象,并获取窗口对象的对象参数。本步骤中,获取窗口进程目的在于,首先找到测试人员操作的界面窗口,然后通过步骤203对该界面窗口中的窗口对象进行查找,由此才能够在后续获得坐标参数后,定位对应坐标参数的窗口对象,并获得窗口对象的对象参数。
本实施例中,用例管理平台是通过函数注入的方式获得窗口进程的。用例管理平台将Hook模块中用于获取界面窗口的第一Hook函数注入到系统进程中,并执行第一Hook函数截获系统进程,在系统底层中进行方法调用,获得界面窗口的窗口进程。
在本实施例的一种实现方式中,Hook模块的名称可以形如libxHook.so。将libxHook.so中用于截获系统进程的第一Hook函数注入到系统进程中,将系统进程挂起。待Hook函数执行完毕后,继续执行系统进程。
在注入第一Hook函数后就进入到了系统底层,在系统底层中,第一Hook函数执行的上下文(Context)环境就是系统进程的上下文环境,亦可以认为在注入第一Hook函数后,Hook函数就与系统处于统一进程中。
通常,被测应用所涉及的界面窗口不止一个,本步骤中获得的界面窗口通常是指测试用例规定的测试起始界面(当然,多数情况下测试起始界面就是被测应用的首界面)。在执行第一Hook函数获取界面窗口的进程时,可以通过进程标识(名称、ID、句柄标识、文件路径等)对界面窗口的进程识别。
下面给出一种获取窗口进程的实现方式,应当明确该方式并不为实际应用中的唯一实现。
用例管理平台通过Inject注入器将Hook模块中的第一Hook函数注入到System_server中,但实际应用中第一Hook函数的注入方式并不仅限于此。在进入到系统底层后,用例管理平台在系统底层中调用ActivityManagerService活动管理服务对象。在ActivityManagerService中调用成员WindowsManagerService窗口管理服务对象,获得当前窗口的进程。通常,ActivityManagerService中会有一个成员WindowsManagerService,该WindowsManagerService是一个用于管理被测应用所有界面窗口的功能。在WindowsManagerService中调用GetFocusWindow的对象函数就可以获得界面窗口的窗口进程了。
203、通过Hook机制遍历界面窗口中的窗口对象。
在获得界面窗口的窗口进程后,用例管理平台进一步界面窗口中的窗口对象,窗口对象包括控件、view等。与步骤202类似的,用例管理平台同样通过Hook机制遍历界面窗口中的窗口对象,将Hook模块中的第二Hook函数注入到界面窗口的窗口进程中,截获该窗口进程,并执行第二Hook函数截获窗口进程,遍历界面窗口中的窗口对象。本实施例中用例管理平台除遍历当前窗口中的窗口对象之外,还需要对窗口对象对应的下一级窗口中的子窗口对象进行遍历,获得被测应用中所有的窗口对象及其父子关系。
204、通过Hook机制对点击事件的函数调用进行截获,获得点击事件对应的坐标参数。
在接收到测试人员触发的点击操作后,用例管理平台将Hook模块中用于获得坐标参数的第三Hook函数注入到系统进程中,然后执行第三Hook函数,截获点击事件的函数调用,并从点击事件的函数中获取坐标参数。
205、查找对应坐标参数的窗口对象,获取窗口对象的对象参数。
通过步骤202和步骤203的执行,用例管理平台获得了界面窗口中的所有窗口对象(包括子窗口中的子窗口对象),由此用例管理平台就可以根据坐标参数查找对应的窗口对象了。具体的,用例管理平台预设有用于记录窗口对象及对象参数的映射关系表,用例管理平台在该映射表中对坐标参数进行循环遍历,获得对应坐标参数的对象参数。本实施例中,用例管理平台获得的对象参数除涉及对象ID外,还包含对象名称、对象类型等参数。
进一步的,作为对图2所示方式的改进,用例管理平台还可以省略步骤205的执行,直接将获取的坐标参数写入到测试用中,供测试终端使用。如前所述,由于设备间存在屏幕尺寸及界面布局等差异,用例管理平台获得的坐标参数无法直接供测试终端使用,因此,在本方式中,用例管理平台需要对坐标参数进行修正。用例管理平台可以预设一个用于记录操作终端型号、测试终端型号、操作终端客户端版本以及测试终端客户端版本的关系表。通过该表用例管理平台可以获得操作终端和测试终端的屏幕尺寸,根据两者的相对差异对坐标参数进行修正。同时,用例管理平台还可以根据操作终端客户端版本以及测试终端客户端版本,确定两客户端的界面布局,并根据界面布局的差异对坐标参数做进一步修正,由此获得测试终端能够直接使用的坐标参数。
206、根据对象参数生成测试用例。
在获得对应坐标参数的对象参数后,用例管理平台将对象参数记录到一个文本文件中,并将该文本文件导入到特定的测试用例框架中,获得测试用例。
用例管理平台需要针对不同的测试语言和/或不同的测试机型生成不同版本的测试用例。此外,设备间还可能存在操作系统的差异,因此,用例管理平台还需要生成匹配不同操作系统的测试用例。用例管理平台将文本文件导入到对应不同测试语言的测试用例框架中,和/或,将文本文件导入到对应不同测试机型的测试用例框架中,和/或,将文本文件导入到对应不同操作系统的测试用例框架中。
实际应用中,测试用例涉及的测试语言包括但不限于是VB、C、C++、JAVA及脚本语言;其中脚本语言又可以包括APL、Dao、Dylan、Groovy、Lua、MUMPS(M)、newLISP、Nuva、Perl、PHP、Python、Ruby、Scheme、Smalltalk、SuperCard。而操作系统主要涉及Android系统、IOS系统、Windows系统。
可选的,在生成测试用例后,用例管理平台还可以将测试用例下发给测试终端执行测试任务。
本实施例中,用例管理平台可以通过WIFI等无线网络下发测试用例,也可以通过传统的有线网络(例如同轴电缆、双绞线等)下发测试用例。对于后者方式,通常还需要为测试终端提供用于连接的物理接口,例如USB接口。测试终端可以通过USB线连接到用例管理平台上。
进一步的,还可以在用例管理平台与测试终端之间增设一级中控服务器,用例管理平台通过有线方式将测试用例发送给中控服务器,由中控服务器通过无线网络或USB接口将测试用例下发给测试终端。
在获得测试用例后,测试终端启动被测应用的进程,通过解释器解析测试用例,获得其中携带的对象参数,并对对象参数对应的窗口对象进行点击测试。实际应用中,当测试用例中写有多个窗口对象的对象参数序列时,测试终端根据该序列顺序点击各个窗口对象。
本实施例中,测试终端是对窗口对象的点击可以有两种方式:
1、根据坐标进行点击
此方式属于模拟点击方式,测试终端需要根据测试用例中的对象参数转换为坐标参数,然后再根据坐标参数对窗口对象进行模拟点击。
进一步的,当测试用例中直接携带修正过的坐标参数时,测试终端可以对该坐标参数直接进行使用。
2、根据对象参数直接进行点击
除根据坐标参数进行模拟点击外,测试用例还可以通过调用点击事件的方式直接实现对窗口对象的点击。在从测试用例中获得对象参数后,测试用例查找该对象参数对应的窗口对象,然后调用该窗口对象的点击事件进行点击测试。
进一步的,本实施例中的测试终端在获得测试用例后,可以断开与用例管理平台或中控服务器的连接,进行离线测试。此外,在测试结束后,测试终端也可以通过与用例管理平台或中控服务器的连接,向用例管理平台上报测试结果,供测试人员查看之用。对于离线测试的情况,测试终端也可以对测试结果进行本地缓存,并通过屏幕、扬声器、指示灯等输出设备向测试人员展示测试结果。
进一步的,作为对图1或图2所示方法的实现,本发明的另一实施例还提供了一种用例管理平台。该用例管理平台用于记录测试人员的手动测试过程并将其转化为测试用例下发给测试终端进行执行。具体的,如图3所示,该用例管理平台包括:显示单元31、接收单元32、参数获取单元33、查找单元34以及生成单元35;其中,
显示单元31,用于显示被测应用的界面窗口;
接收单元32,用于接收针对显示单元31显示的界面窗口中窗口对象的点击操作;
参数获取单元33,用于通过Hook机制对接收单元32接收的点击操作所对应的点击事件的函数调用进行截获,获得点击事件对应的坐标参数;
查找单元34,用于查找对应参数获取单元33获取的坐标参数的窗口对象,获取窗口对象的对象参数,其中对象参数用于唯一标记窗口对象;
生成单元35,用于根据查找单元34查找到的对象参数生成测试用例。
进一步的,如图4所示,用例管理平台还包括:
进程获取单元36,用于在接收单元32接收针对界面窗口中窗口对象的点击操作之前,通过Hook机制获取界面窗口的窗口进程。
进一步的,如图4所示,进程获取单元36,包括:
第一注入模块361,用于将Hook模块中的第一Hook函数注入到系统进程中,第一Hook函数用于获取界面窗口;
第一执行模块362,用于执行第一注入模块361注入的第一Hook函数截获系统进程,并在系统底层中进行方法调用,获得界面窗口的窗口进程。
进一步的,如图4所示,用例管理平台还包括:
遍历单元37,用于在进程获取单元36通过Hook机制获取界面窗口的窗口进程之后,通过Hook机制遍历界面窗口中的窗口对象。
进一步的,如图4所示,遍历单元37,包括:
第二注入模块371,用于将Hook模块中的第二Hook函数注入到界面窗口的窗口进程中;
第二执行模块372,用于执行第二注入模块371注入的第二Hook函数截获窗口进程,并遍历界面窗口中的窗口对象。
进一步的,如图4所示,参数获取单元33,包括:
第三注入模块331,用于将Hook模块中的第三Hook函数注入到系统进程中,第三Hook函数用于获得点击事件对应的坐标参数;
第三执行模块332,用于执行第三注入模块331注入的第三Hook函数,截获点击事件的函数调用,并从点击事件的函数中获取坐标参数。
进一步的,查找单元34用于在预设的映射表中,对坐标参数进行循环遍历,获得对应坐标参数的对象参数。
进一步的,如图4所示,生成单元35,包括:
记录模块351,用于将对象参数记录到文本文件中;
导入模块352,用于将记录模块351记录的文本文件导入到特定的测试用例框架中,获得测试用例。
进一步的,导入模块352,用于:
将文本文件导入到对应不同测试语言的测试用例框架中;
将文本文件导入到对应不同测试机型的测试用例框架中。
进一步的,如图4所示,用例管理平台还包括:
发送单元38,用于将生成单元35生成的测试用例下发给测试终端,以使得测试终端执行测试用例,对窗口对象进行点击测试。
本实施例提供的用例管理平台,能够接收测试人员在被测应用的界面窗口中,对窗口对象触发的点击操作,并通过Hook机制对点击事件的函数调用进行截获,获得点击事件对应的坐标参数。然后查找对应坐标参数的窗口对象,获取窗口对象的对象参数,并根据对象参数生成测试用例。最后将生成的测试用例下发给测试终端,以使得测试终端执行该测试用例,对窗口对象进行点击测试。针对UI界面类的测试而言,本实施例能够使测试人员在手机、电脑等设备上,仅通过手动点击的方式就可以自动编辑出需要的测试用例,测试终端依据测试用例,完全按照测试人员的点击路径执行测试过程。与现有技术相比,本实施例完全无需测试人员对任何形式的测试用例进行编写,能够节省大量因编写测试用例而耗费的时间,从而大大提高自动化测试的效率。
此外,由于无需编写任何形式的测试用例,本实施例还可以降低测试人员的入行门槛,即使完全不具备编程基础的人员也可以快速高效的制定测试用例,因此本实施例能够提高自动化测试的易用性。
最后,本实施例仅需要测试人员一次性制定测试方案,由此生成的测试用例可以下发给大量测试终端同时进行执行。与现有技术中测试人员手动进行测试操作相比,本实施例能够实现应用程序的批量测试,进一步节省人力并提高测试效率。
进一步的,作为对图1或图2所示方法的实现,本发明的另一实施例还提供了一种用户界面测试的系统。如图5所示,该系统包括用例管理平台51及测试终端52;其中,
用例管理平台51,用于显示被测应用的界面窗口,并接收针对界面窗口中窗口对象的点击操作,通过Hook机制对点击事件的函数调用进行截获,获得点击事件对应的坐标参数,查找对应坐标参数的窗口对象,获取窗口对象的对象参数,其中对象参数用于唯一标记窗口对象,根据对象参数生成测试用例,将测试用例下发给测试终端52;
测试终端52,用于接收用例管理平台51下发的测试用例,并执行测试用例,对窗口对象进行点击测试。
进一步的,测试终端52用于:
根据测试用例中的对象参数查找对应窗口对象的坐标参数;
基于坐标参数触发对窗口对象的模拟点击。
进一步的,测试终端52用于:
根据测试用例中的对象参数查找对应窗口对象的触发事件;
执行触发事件对窗口对象的模拟点击。
图5所示网络架构示出了用例管理平台与测试终端直连的情况,除此之外,用例管理平台与测试终端之间还可以增设中控服务器进行中继。包含中控服务器的网络架构如图6所示:
用例管理平台51,用于将测试用例下发给中控服务器53;
中控服务器53,用于接收用例管理平台51下发的测试用例,并将测试用例下发给测试终端52。
除此之外,在测试结束后,如果测试终端52需要向用例管理平台51上报测试结果,则对于图5所示架构,测试终端52可以直接将测试用例上报给用例管理平台51,而对于图6所示架构,测试终端52则可以通过中控服务器53将测试用例上报给用例管理平台51。
本实施例提供的用户界面测试的系统,能够接收测试人员在被测应用的界面窗口中,对窗口对象触发的点击操作,并通过Hook机制对点击事件的函数调用进行截获,获得点击事件对应的坐标参数。然后查找对应坐标参数的窗口对象,获取窗口对象的对象参数,并根据对象参数生成测试用例。最后将生成的测试用例下发给测试终端,以使得测试终端执行该测试用例,对窗口对象进行点击测试。针对UI界面类的测试而言,本实施例能够使测试人员在手机、电脑等设备上,仅通过手动点击的方式就可以自动编辑出需要的测试用例,测试终端依据测试用例,完全按照测试人员的点击路径执行测试过程。与现有技术相比,本实施例完全无需测试人员对任何形式的测试用例进行编写,能够节省大量因编写测试用例而耗费的时间,从而大大提高自动化测试的效率。
此外,由于无需编写任何形式的测试用例,本实施例还可以降低测试人员的入行门槛,即使完全不具备编程基础的人员也可以快速高效的制定测试用例,因此本实施例能够提高自动化测试的易用性。
最后,本实施例仅需要测试人员一次性制定测试方案,由此生成的测试用例可以下发给大量测试终端同时进行执行。与现有技术中测试人员手动进行测试操作相比,本实施例能够实现应用程序的批量测试,进一步节省人力并提高测试效率。
进一步的,作为对图1或图2所示方法的替换,本发明的又一实施例还提供了一种用户界面测试的方法,该方法的执行主体还可以替换为测试人员使用的操作终端。具体的,如图7所示,该方法包括:
701、向用例管理平台获取Hook模块。
其中,Hook模块中包含有用于实现Hook机制的Hook函数。所述Hook函数包括如图2所示方法中的第一Hook函数、第二Hook函数以及第三Hook函数。
702、显示被测应用的界面窗口,并接收针对界面窗口中窗口对象的点击操作。
703、通过Hook机制对点击事件的函数调用进行截获,获得点击事件对应的坐标参数。
704、查找对应坐标参数的窗口对象,获取窗口对象的对象参数。
图7步骤702至步骤704的实现方式与图1中步骤101至步骤103的实现方式对应相同,仅是将步骤的执行主体由用例管理平台替换为操作终端,对于步骤702至步骤704的实现方式,可以参考图1对应的步骤进行实现,本实施例对此不再赘述。
705、将窗口对象的对象参数发送给用例管理平台。
在获得窗口对象的对象参数之后,操作终端将该对象参数发送给用例管理平台,以使得用例管理平台根据该对象参数生成测试用例。本步骤中用例管理平台生成测试用例的实现方式与图1中步骤104的实现方式相同,此处不再赘述。
进一步的,作为对图7所示方法的细化和进一步扩展,本发明的又一实施例还提供了一种用户界面测试的方法。如图8所示,该方法包括:
801、向用例管理平台获取Hook模块。
本步骤的实现方式与图7中步骤701的实现方式相同,此处不再赘述。
802、显示被测应用的界面窗口,并接收针对界面窗口中窗口对象的点击操作。
803、通过Hook机制获取界面窗口的窗口进程。
804、通过Hook机制遍历界面窗口中的窗口对象。
805、通过Hook机制对点击事件的函数调用进行截获,获得点击事件对应的坐标参数。
806、查找对应坐标参数的窗口对象,获取窗口对象的对象参数。
本实施例中,步骤802至步骤806的实现方式与图2中步骤201至步骤205的实现方式相同,仅是将步骤的执行主体由用例管理平台替换为操作终端,对于步骤802至步骤806的实现方式,可以参考图2对应的步骤进行实现,本实施例对此不再赘述。
807、将窗口对象的对象参数发送给用例管理平台。
本步骤的实现方式与图7中步骤705的实现方式相同,此处不再赘述。
进一步的,作为对图7或图8所示方法的实现,本发明的又一实施例还提供了一种操作终端,如图9所示,该操作终端包括:模块获取单元91、显示单元92、接收单元93、参数获取单元94、查找单元95以及发送单元96,其中,
模块获取单元91,用于向用例管理平台获取Hook模块,Hook模块中包含有用于实现Hook机制的Hook函数;
显示单元92,用于显示被测应用的界面窗口;
接收单元93,用于接收针对显示单元92显示的界面窗口中窗口对象的点击操作;
参数获取单元94,用于通过Hook机制对接收单元93接收的点击操作的点击事件的函数调用进行截获,获得点击事件对应的坐标参数;
查找单元95,用于查找对应参数获取单元94获取的坐标参数的窗口对象,获取窗口对象的对象参数,其中对象参数用于唯一标记窗口对象;
发送单元96,用于将查找单元95获得的窗口对象的对象参数发送给用例管理平台,以使得用例管理平台根据对象参数生成测试用例。
进一步的,如图10所示,该操作终端还包括:
进程获取单元97,用于在接收单元93接收针对界面窗口中窗口对象的点击操作之前,通过Hook机制获取界面窗口的窗口进程。
进一步的,如图10所示,进程获取单元97,包括:
第一注入模块971,用于将Hook模块中的第一Hook函数注入到系统进程中,第一Hook函数用于获取界面窗口;
第一执行模块972,用于执行第一注入模块971注入的第一Hook函数截获系统进程,并在系统底层中进行方法调用,获得界面窗口的窗口进程。
进一步的,如图10所示,该操作终端还包括:
遍历单元98,用于在进程获取单元97通过Hook机制获取界面窗口的窗口进程之后,通过Hook机制遍历界面窗口中的窗口对象。
进一步的,如图10所示,遍历单元98,包括:
第二注入模块981,用于将Hook模块中的第二Hook函数注入到界面窗口的窗口进程中;
第二执行模块982,用于执行第二注入模块981注入的第二Hook函数截获窗口进程,并遍历界面窗口中的窗口对象。
进一步的,如图10所示,参数获取单元94,包括:
第三注入模块941,用于将Hook模块中的第三Hook函数注入到系统进程中,第三Hook函数用于获得点击事件对应的坐标参数;
第三执行模块942,用于执行第三注入模块941注入的第三Hook函数,截获点击事件的函数调用,并从点击事件的函数中获取坐标参数。
进一步的,查找单元95用于在预设的映射表中,对坐标参数进行循环遍历,获得对应坐标参数的对象参数。
进一步的,作为对图7或图8所示方法的实现,本发明的又一实施例还提供了一种用户界面测试的系统。如图11所示,该系统包括:操作终端111及用例管理平台112;其中,
用例管理平台112,用于向操作终端111发送Hook模块,Hook模块中包含有用于实现Hook机制的Hook函数;
操作终端111,用于向用例管理平台112获取Hook模块,显示被测应用的界面窗口,接收针对界面窗口中窗口对象的点击操作,通过Hook机制对点击事件的函数调用进行截获,获得点击事件对应的坐标参数,查找对应坐标参数的窗口对象,获取窗口对象的对象参数,其中对象参数用于唯一标记窗口对象,将窗口对象的对象参数发送给用例管理平台112;
用例管理平台112,还用于根据对象参数生成测试用例。
进一步的,如图12所示,系统还包括测试终端113;
用例管理平台112,用于将生成的测试用例下发给测试终端113;
测试终端113,用于接收用例管理平台112下发的测试用例,并执行测试用例,对窗口对象进行点击测试。
进一步的,测试终端113用于:
根据测试用例中的对象参数查找对应窗口对象的坐标参数;
基于坐标参数触发对窗口对象的模拟点击。
进一步的,测试终端113用于:
根据测试用例中的对象参数查找对应窗口对象的触发事件;
执行触发事件对窗口对象的模拟点击。
进一步的,如图13所示,系统还包括中控服务器114;
中控服务器114,用于接收用例管理平台112下发的测试用例,并将测试用例下发给测试终端113。
本发明的实施例提供了:
A1、一种用户界面测试的方法,所述方法包括:
显示被测应用的界面窗口,并接收针对所述界面窗口中窗口对象的点击操作;
通过Hook机制对点击事件的函数调用进行截获,获得所述点击事件对应的坐标参数;
查找对应所述坐标参数的窗口对象,获取所述窗口对象的对象参数,其中所述对象参数用于唯一标记所述窗口对象;
根据所述对象参数生成测试用例。
A2、根据A1所述的方法,在所述接收针对所述界面窗口中窗口对象的点击操作之前,所述方法进一步包括:
通过Hook机制获取所述界面窗口的窗口进程。
A3、根据A2所述的方法,所述通过Hook机制获取所述界面窗口的窗口进程,包括:
将Hook模块中的第一Hook函数注入到系统进程中,所述第一Hook函数用于获取所述界面窗口;
执行所述第一Hook函数截获系统进程,并在系统底层中进行方法调用,获得所述界面窗口的窗口进程。
A4、根据A2或A3所述的方法,在所述通过Hook机制获取所述界面窗口的窗口进程之后,所述方法进一步包括:
通过Hook机制遍历所述界面窗口中的窗口对象。
A5、根据A4所述的方法,所述通过Hook机制遍历所述界面窗口中的窗口对象,包括:
将Hook模块中的第二Hook函数注入到所述界面窗口的窗口进程中;
执行所述第二Hook函数截获所述窗口进程,并遍历所述界面窗口中的窗口对象。
A6、根据A1所述的方法,所述通过Hook机制对点击事件的函数调用进行截获,获得所述点击事件对应的坐标参数,包括:
将Hook模块中的第三Hook函数注入到系统进程中,所述第三Hook函数用于获得所述点击事件对应的坐标参数;
执行所述第三Hook函数,截获所述点击事件的函数调用;
从所述点击事件的函数中获取所述坐标参数。
A7、根据A1所述的方法,所述查找对应所述坐标参数的窗口对象,获取所述窗口对象的对象参数,包括:
在预设的映射表中,对所述坐标参数进行循环遍历,获得对应所述坐标参数的对象参数。
A8、根据A1所述的方法,所述根据所述对象参数生成测试用例,包括:
将所述对象参数记录到文本文件中;
将所述文本文件导入到特定的测试用例框架中,获得所述测试用例。
A9、根据A8所述的方法,所述将所述文本文件导入到特定的测试用例框架中,包括:
将所述文本文件导入到对应不同测试语言的测试用例框架中;
和/或,将所述文本文件导入到对应不同测试机型的测试用例框架中。
A10、根据A1所述的方法,在所述根据所述对象参数生成测试用例之后,所述方法进一步包括:
将所述测试用例下发给测试终端,以使得所述测试终端执行所述测试用例,对所述窗口对象进行点击测试。
B11、一种用例管理平台,所述用例管理平台包括:
显示单元,用于显示被测应用的界面窗口;
接收单元,用于接收针对所述显示单元显示的所述界面窗口中窗口对象的点击操作;
参数获取单元,用于通过Hook机制对所述接收单元接收的点击操作所对应的点击事件的函数调用进行截获,获得所述点击事件对应的坐标参数;
查找单元,用于查找对应所述参数获取单元获取的所述坐标参数的窗口对象,获取所述窗口对象的对象参数,其中所述对象参数用于唯一标记所述窗口对象;
生成单元,用于根据所述查找单元查找到的所述对象参数生成测试用例。
B12、根据B11所述的用例管理平台,所述用例管理平台还包括:
进程获取单元,用于在所述接收单元接收针对所述界面窗口中窗口对象的点击操作之前,通过Hook机制获取所述界面窗口的窗口进程。
B13、根据B12所述的用例管理平台,所述进程获取单元,包括:
第一注入模块,用于将Hook模块中的第一Hook函数注入到系统进程中,所述第一Hook函数用于获取所述界面窗口;
第一执行模块,用于执行所述第一注入模块注入的所述第一Hook函数截获系统进程,并在系统底层中进行方法调用,获得所述界面窗口的窗口进程。
B14、根据B12或B13所述的用例管理平台,所述用例管理平台还包括:
遍历单元,用于在所述进程获取单元通过Hook机制获取所述界面窗口的窗口进程之后,通过Hook机制遍历所述界面窗口中的窗口对象。
B15、根据B14所述的用例管理平台,所述遍历单元,包括:
第二注入模块,用于将Hook模块中的第二Hook函数注入到所述界面窗口的窗口进程中;
第二执行模块,用于执行所述第二注入模块注入的所述第二Hook函数截获所述窗口进程,并遍历所述界面窗口中的窗口对象。
B16、根据B11所述的用例管理平台,所述参数获取单元,包括:
第三注入模块,用于将Hook模块中的第三Hook函数注入到系统进程中,所述第三Hook函数用于获得所述点击事件对应的坐标参数;
第三执行模块,用于执行所述第三注入模块注入的所述第三Hook函数,截获所述点击事件的函数调用,并从所述点击事件的函数中获取所述坐标参数。
B17、根据B11所述的用例管理平台,所述查找单元用于在预设的映射表中,对所述坐标参数进行循环遍历,获得对应所述坐标参数的对象参数。
B18、根据B11所述的用例管理平台,所述生成单元,包括:
记录模块,用于将所述对象参数记录到文本文件中;
导入模块,用于将所述记录模块记录的所述文本文件导入到特定的测试用例框架中,获得所述测试用例。
B19、根据B18所述的用例管理平台,所述导入模块,用于:
将所述文本文件导入到对应不同测试语言的测试用例框架中;
将所述文本文件导入到对应不同测试机型的测试用例框架中。
B20、根据B11所述的用例管理平台,所述用例管理平台还包括:
发送单元,用于将所述生成单元生成的所述测试用例下发给测试终端,以使得所述测试终端执行所述测试用例,对所述窗口对象进行点击测试。
C21、一种用户界面测试的系统,所述系统包括:用例管理平台及测试终端;其中,
所述用例管理平台,用于显示被测应用的界面窗口,并接收针对所述界面窗口中窗口对象的点击操作,通过Hook机制对点击事件的函数调用进行截获,获得所述点击事件对应的坐标参数,查找对应所述坐标参数的窗口对象,获取所述窗口对象的对象参数,其中所述对象参数用于唯一标记所述窗口对象,根据所述对象参数生成测试用例,将所述测试用例下发给所述测试终端;
所述测试终端,用于接收所述用例管理平台下发的所述测试用例,并执行所述测试用例,对所述窗口对象进行点击测试。
C22、根据C21所述的系统,所述测试终端用于:
根据所述测试用例中的对象参数查找对应所述窗口对象的坐标参数;
基于所述坐标参数触发对所述窗口对象的模拟点击。
C23、根据C21所述的系统,所述测试终端用于:
根据所述测试用例中的对象参数查找对应所述窗口对象的触发事件;
执行所述触发事件对所述窗口对象的模拟点击。
C24、根据C21至C23中任一项所述的系统,所述系统还包括中控服务器;
所述中控服务器,用于接收所述用例管理平台下发的所述测试用例,并将所述测试用例下发给所述测试终端。
D25、一种用户界面测试的方法,所述方法包括:
向用例管理平台获取Hook模块,所述Hook模块中包含有用于实现Hook机制的Hook函数;
显示被测应用的界面窗口,并接收针对所述界面窗口中窗口对象的点击操作;
通过Hook机制对点击事件的函数调用进行截获,获得所述点击事件对应的坐标参数;
查找对应所述坐标参数的窗口对象,获取所述窗口对象的对象参数,其中所述对象参数用于唯一标记所述窗口对象;
将所述窗口对象的对象参数发送给用例管理平台,以使得所述用例管理平台根据所述对象参数生成测试用例。
D26、根据D25所述的方法,在所述接收针对所述界面窗口中窗口对象的点击操作之前,所述方法进一步包括:
通过Hook机制获取所述界面窗口的窗口进程。
D27、根据D26所述的方法,所述通过Hook机制获取所述界面窗口的窗口进程,包括:
将所述Hook模块中的第一Hook函数注入到系统进程中,所述第一Hook函数用于获取所述界面窗口;
执行所述第一Hook函数截获系统进程,并在系统底层中进行方法调用,获得所述界面窗口的窗口进程。
D28、根据D26或D27所述的方法,在所述通过Hook机制获取所述界面窗口的窗口进程之后,所述方法进一步包括:
通过Hook机制遍历所述界面窗口中的窗口对象。
D29、根据D28所述的方法,所述通过Hook机制遍历所述界面窗口中的窗口对象,包括:
将所述Hook模块中的第二Hook函数注入到所述界面窗口的窗口进程中;
执行所述第二Hook函数截获所述窗口进程,并遍历所述界面窗口中的窗口对象。
D30、根据D25所述的方法,所述通过Hook机制对点击事件的函数调用进行截获,获得所述点击事件对应的坐标参数,包括:
将所述Hook模块中的第三Hook函数注入到系统进程中,所述第三Hook函数用于获得所述点击事件对应的坐标参数;
执行所述第三Hook函数,截获所述点击事件的函数调用;
从所述点击事件的函数中获取所述坐标参数。
D31、根据D25所述的方法,所述查找对应所述坐标参数的窗口对象,获取所述窗口对象的对象参数,包括:
在预设的映射表中,对所述坐标参数进行循环遍历,获得对应所述坐标参数的对象参数。
E32、一种操作终端,所述操作终端包括:
模块获取单元,用于向用例管理平台获取Hook模块,所述Hook模块中包含有用于实现Hook机制的Hook函数;
显示单元,用于显示被测应用的界面窗口;
接收单元,用于接收针对所述显示单元显示的所述界面窗口中窗口对象的点击操作;
参数获取单元,用于通过Hook机制对所述接收单元接收的点击操作的点击事件的函数调用进行截获,获得所述点击事件对应的坐标参数;
查找单元,用于查找对应所述参数获取单元获取的所述坐标参数的窗口对象,获取所述窗口对象的对象参数,其中所述对象参数用于唯一标记所述窗口对象;
发送单元,用于将所述查找单元获得的所述窗口对象的对象参数发送给用例管理平台,以使得所述用例管理平台根据所述对象参数生成测试用例。
E33、根据E32所述的操作终端,所述操作终端还包括:
进程获取单元,用于在所述接收单元接收针对所述界面窗口中窗口对象的点击操作之前,通过Hook机制获取所述界面窗口的窗口进程。
E34、根据E33所述的操作终端,所述进程获取单元,包括:
第一注入模块,用于将所述Hook模块中的第一Hook函数注入到系统进程中,所述第一Hook函数用于获取所述界面窗口;
第一执行模块,用于执行所述第一注入模块注入的所述第一Hook函数截获系统进程,并在系统底层中进行方法调用,获得所述界面窗口的窗口进程。
E35、根据E33或E34所述的操作终端,所述操作终端还包括:
遍历单元,用于在所述进程获取单元通过Hook机制获取所述界面窗口的窗口进程之后,通过Hook机制遍历所述界面窗口中的窗口对象。
E36、根据E35所述的操作终端,所述遍历单元,包括:
第二注入模块,用于将所述Hook模块中的第二Hook函数注入到所述界面窗口的窗口进程中;
第二执行模块,用于执行所述第二注入模块注入的所述第二Hook函数截获所述窗口进程,并遍历所述界面窗口中的窗口对象。
E37、根据E32所述的操作终端,所述参数获取单元,包括:
第三注入模块,用于将所述Hook模块中的第三Hook函数注入到系统进程中,所述第三Hook函数用于获得所述点击事件对应的坐标参数;
第三执行模块,用于执行所述第三注入模块注入的所述第三Hook函数,截获所述点击事件的函数调用,并从所述点击事件的函数中获取所述坐标参数。
E38、根据E32所述的操作终端,所述查找单元用于在预设的映射表中,对所述坐标参数进行循环遍历,获得对应所述坐标参数的对象参数。
F39、一种用户界面测试的系统,所述系统包括:操作终端及用例管理平台;其中,
所述用例管理平台,用于向所述操作终端发送Hook模块,所述Hook模块中包含有用于实现Hook机制的Hook函数;
所述操作终端,用于向用例管理平台获取所述Hook模块,显示被测应用的界面窗口,接收针对所述界面窗口中窗口对象的点击操作,通过Hook机制对点击事件的函数调用进行截获,获得所述点击事件对应的坐标参数,查找对应所述坐标参数的窗口对象,获取所述窗口对象的对象参数,其中所述对象参数用于唯一标记所述窗口对象,将所述窗口对象的对象参数发送给用例管理平台;
所述用例管理平台,还用于根据所述对象参数生成测试用例。
F40、根据F39所述的系统,所述系统还包括测试终端;
所述用例管理平台,用于将生成的所述测试用例下发给所述测试终端;
所述测试终端,用于接收所述用例管理平台下发的所述测试用例,并执行所述测试用例,对所述窗口对象进行点击测试。
F41、根据F40所述的系统,所述测试终端用于:
根据所述测试用例中的对象参数查找对应所述窗口对象的坐标参数;
基于所述坐标参数触发对所述窗口对象的模拟点击。
F42、根据F40所述的系统,所述测试终端用于:
根据所述测试用例中的对象参数查找对应所述窗口对象的触发事件;
执行所述触发事件对所述窗口对象的模拟点击。
F43、根据F40至F42中任一项所述的系统,所述系统还包括中控服务器;
所述中控服务器,用于接收所述用例管理平台下发的所述测试用例,并将所述测试用例下发给所述测试终端。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的发明名称(如确定网站内链接等级的装置)中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (10)
1.一种用户界面测试的方法,其特征在于,所述方法包括:
显示被测应用的界面窗口,并接收针对所述界面窗口中窗口对象的点击操作;
通过Hook机制对点击事件的函数调用进行截获,获得所述点击事件对应的坐标参数;
查找对应所述坐标参数的窗口对象,获取所述窗口对象的对象参数,其中所述对象参数用于唯一标记所述窗口对象;
根据所述对象参数生成测试用例。
2.根据权利要求1所述的方法,其特征在于,在所述接收针对所述界面窗口中窗口对象的点击操作之前,所述方法进一步包括:
通过Hook机制获取所述界面窗口的窗口进程。
3.根据权利要求2所述的方法,其特征在于,所述通过Hook机制获取所述界面窗口的窗口进程,包括:
将Hook模块中的第一Hook函数注入到系统进程中,所述第一Hook函数用于获取所述界面窗口;
执行所述第一Hook函数截获系统进程,并在系统底层中进行方法调用,获得所述界面窗口的窗口进程。
4.根据权利要求2或3所述的方法,其特征在于,在所述通过Hook机制获取所述界面窗口的窗口进程之后,所述方法进一步包括:
通过Hook机制遍历所述界面窗口中的窗口对象。
5.根据权利要求4所述的方法,其特征在于,所述通过Hook机制遍历所述界面窗口中的窗口对象,包括:
将Hook模块中的第二Hook函数注入到所述界面窗口的窗口进程中;
执行所述第二Hook函数截获所述窗口进程,并遍历所述界面窗口中的窗口对象。
6.一种用例管理平台,其特征在于,所述用例管理平台包括:
显示单元,用于显示被测应用的界面窗口;
接收单元,用于接收针对所述显示单元显示的所述界面窗口中窗口对象的点击操作;
参数获取单元,用于通过Hook机制对所述接收单元接收的点击操作所对应的点击事件的函数调用进行截获,获得所述点击事件对应的坐标参数;
查找单元,用于查找对应所述参数获取单元获取的所述坐标参数的窗口对象,获取所述窗口对象的对象参数,其中所述对象参数用于唯一标记所述窗口对象;
生成单元,用于根据所述查找单元查找到的所述对象参数生成测试用例。
7.一种用户界面测试的系统,其特征在于,所述系统包括:用例管理平台及测试终端;其中,
所述用例管理平台,用于显示被测应用的界面窗口,并接收针对所述界面窗口中窗口对象的点击操作,通过Hook机制对点击事件的函数调用进行截获,获得所述点击事件对应的坐标参数,查找对应所述坐标参数的窗口对象,获取所述窗口对象的对象参数,其中所述对象参数用于唯一标记所述窗口对象,根据所述对象参数生成测试用例,将所述测试用例下发给所述测试终端;
所述测试终端,用于接收所述用例管理平台下发的所述测试用例,并执行所述测试用例,对所述窗口对象进行点击测试。
8.一种用户界面测试的方法,其特征在于,所述方法包括:
向用例管理平台获取Hook模块,所述Hook模块中包含有用于实现Hook机制的Hook函数;
显示被测应用的界面窗口,并接收针对所述界面窗口中窗口对象的点击操作;
通过Hook机制对点击事件的函数调用进行截获,获得所述点击事件对应的坐标参数;
查找对应所述坐标参数的窗口对象,获取所述窗口对象的对象参数,其中所述对象参数用于唯一标记所述窗口对象;
将所述窗口对象的对象参数发送给用例管理平台,以使得所述用例管理平台根据所述对象参数生成测试用例。
9.一种操作终端,其特征在于,所述操作终端包括:
模块获取单元,用于向用例管理平台获取Hook模块,所述Hook模块中包含有用于实现Hook机制的Hook函数;
显示单元,用于显示被测应用的界面窗口;
接收单元,用于接收针对所述显示单元显示的所述界面窗口中窗口对象的点击操作;
参数获取单元,用于通过Hook机制对所述接收单元接收的点击操作的点击事件的函数调用进行截获,获得所述点击事件对应的坐标参数;
查找单元,用于查找对应所述参数获取单元获取的所述坐标参数的窗口对象,获取所述窗口对象的对象参数,其中所述对象参数用于唯一标记所述窗口对象;
发送单元,用于将所述查找单元获得的所述窗口对象的对象参数发送给用例管理平台,以使得所述用例管理平台根据所述对象参数生成测试用例。
10.一种用户界面测试的系统,其特征在于,所述系统包括:操作终端及用例管理平台;其中,
所述用例管理平台,用于向所述操作终端发送Hook模块,所述Hook模块中包含有用于实现Hook机制的Hook函数;
所述操作终端,用于向用例管理平台获取所述Hook模块,显示被测应用的界面窗口,接收针对所述界面窗口中窗口对象的点击操作,通过Hook机制对点击事件的函数调用进行截获,获得所述点击事件对应的坐标参数,查找对应所述坐标参数的窗口对象,获取所述窗口对象的对象参数,其中所述对象参数用于唯一标记所述窗口对象,将所述窗口对象的对象参数发送给用例管理平台;
所述用例管理平台,还用于根据所述对象参数生成测试用例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410826936.XA CN104536889A (zh) | 2014-12-26 | 2014-12-26 | 用户界面测试的方法、用例管理平台、操作终端及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410826936.XA CN104536889A (zh) | 2014-12-26 | 2014-12-26 | 用户界面测试的方法、用例管理平台、操作终端及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104536889A true CN104536889A (zh) | 2015-04-22 |
Family
ID=52852419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410826936.XA Pending CN104536889A (zh) | 2014-12-26 | 2014-12-26 | 用户界面测试的方法、用例管理平台、操作终端及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104536889A (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224457A (zh) * | 2015-09-29 | 2016-01-06 | 北京奇虎科技有限公司 | 一种测试框架实现方法和装置 |
CN105975367A (zh) * | 2016-04-29 | 2016-09-28 | 腾讯科技(深圳)有限公司 | 移动设备的测试方法和装置 |
CN106021102A (zh) * | 2016-05-16 | 2016-10-12 | 北京奇虎科技有限公司 | 自动化测试文件的生成方法及装置 |
CN106294104A (zh) * | 2015-05-22 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 一种测试用例的执行方法及移动终端 |
CN107122295A (zh) * | 2017-03-30 | 2017-09-01 | 腾讯科技(深圳)有限公司 | 测试用例脚本的生成方法和装置 |
CN107766194A (zh) * | 2017-11-17 | 2018-03-06 | 深圳市泉眼网络科技有限公司 | 测试方法、装置、系统、终端设备及计算机可读存储介质 |
CN108228464A (zh) * | 2018-01-12 | 2018-06-29 | 浪潮通用软件有限公司 | 一种基于数据驱动的移动应用ui测试框架及其实现方法 |
CN108595327A (zh) * | 2018-04-16 | 2018-09-28 | 深圳市腾讯网络信息技术有限公司 | 应用执行脚本的方法、应用测试方法、装置和计算机设备 |
CN109117373A (zh) * | 2018-08-16 | 2019-01-01 | 杭州友声科技股份有限公司 | 一种基于规则引导进行ui遍历的方法 |
CN109408355A (zh) * | 2017-08-16 | 2019-03-01 | 迈普通信技术股份有限公司 | 测试用例获取方法及装置 |
CN110825616A (zh) * | 2019-09-25 | 2020-02-21 | 北京中科晶上科技股份有限公司 | 一种局域网内移动终端设备自动化测试系统 |
CN110825618A (zh) * | 2019-10-10 | 2020-02-21 | 重庆金融资产交易所有限责任公司 | 一种生成测试用例的方法及相关装置 |
CN111352844A (zh) * | 2020-03-04 | 2020-06-30 | 腾讯科技(深圳)有限公司 | 一种测试方法和相关装置 |
CN112015662A (zh) * | 2020-09-09 | 2020-12-01 | 深圳市通久电子有限公司 | 视频终端界面菜单功能的自动测试方法、系统及其设备 |
CN112685328A (zh) * | 2021-03-12 | 2021-04-20 | 北京志翔科技股份有限公司 | 一种图形界面测试方法、装置及存储介质 |
CN113094291A (zh) * | 2021-06-10 | 2021-07-09 | 深圳掌酷软件有限公司 | 锁屏界面的匹配验证方法、装置、设备及存储介质 |
CN116756045A (zh) * | 2023-08-14 | 2023-09-15 | 海马云(天津)信息技术有限公司 | 应用测试方法及装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102810143A (zh) * | 2012-04-28 | 2012-12-05 | 天津大学 | 基于Android平台手机应用程序的安全检测系统及方法 |
CN103136100A (zh) * | 2011-12-02 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 一种Android测试的方法和系统 |
CN103309802A (zh) * | 2012-03-16 | 2013-09-18 | 百度在线网络技术(北京)有限公司 | 一种移动终端中系统稳定性测试的方法及装置 |
CN103336742A (zh) * | 2013-07-18 | 2013-10-02 | 北京航空航天大学 | 一种基于Android的自动化软件黑盒测试系统及方法 |
-
2014
- 2014-12-26 CN CN201410826936.XA patent/CN104536889A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136100A (zh) * | 2011-12-02 | 2013-06-05 | 阿里巴巴集团控股有限公司 | 一种Android测试的方法和系统 |
CN103309802A (zh) * | 2012-03-16 | 2013-09-18 | 百度在线网络技术(北京)有限公司 | 一种移动终端中系统稳定性测试的方法及装置 |
CN102810143A (zh) * | 2012-04-28 | 2012-12-05 | 天津大学 | 基于Android平台手机应用程序的安全检测系统及方法 |
CN103336742A (zh) * | 2013-07-18 | 2013-10-02 | 北京航空航天大学 | 一种基于Android的自动化软件黑盒测试系统及方法 |
Non-Patent Citations (2)
Title |
---|
星辰木子: "《http://blog.csdn.net/u010561359/article/details/8986716》", 28 May 2013 * |
李江: ""基于hook机制的android自动化脚本录制回放框架的设计与实现"", 《软件》 * |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294104A (zh) * | 2015-05-22 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 一种测试用例的执行方法及移动终端 |
CN106294104B (zh) * | 2015-05-22 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 一种测试用例的执行方法及移动终端 |
CN105224457B (zh) * | 2015-09-29 | 2018-04-17 | 北京奇虎科技有限公司 | 一种测试框架实现方法和装置 |
CN105224457A (zh) * | 2015-09-29 | 2016-01-06 | 北京奇虎科技有限公司 | 一种测试框架实现方法和装置 |
CN105975367A (zh) * | 2016-04-29 | 2016-09-28 | 腾讯科技(深圳)有限公司 | 移动设备的测试方法和装置 |
CN106021102A (zh) * | 2016-05-16 | 2016-10-12 | 北京奇虎科技有限公司 | 自动化测试文件的生成方法及装置 |
CN107122295A (zh) * | 2017-03-30 | 2017-09-01 | 腾讯科技(深圳)有限公司 | 测试用例脚本的生成方法和装置 |
CN107122295B (zh) * | 2017-03-30 | 2020-12-29 | 腾讯科技(深圳)有限公司 | 测试用例脚本的生成方法和装置 |
CN109408355A (zh) * | 2017-08-16 | 2019-03-01 | 迈普通信技术股份有限公司 | 测试用例获取方法及装置 |
CN109408355B (zh) * | 2017-08-16 | 2022-02-22 | 迈普通信技术股份有限公司 | 测试用例获取方法及装置 |
CN107766194A (zh) * | 2017-11-17 | 2018-03-06 | 深圳市泉眼网络科技有限公司 | 测试方法、装置、系统、终端设备及计算机可读存储介质 |
CN108228464A (zh) * | 2018-01-12 | 2018-06-29 | 浪潮通用软件有限公司 | 一种基于数据驱动的移动应用ui测试框架及其实现方法 |
CN108595327A (zh) * | 2018-04-16 | 2018-09-28 | 深圳市腾讯网络信息技术有限公司 | 应用执行脚本的方法、应用测试方法、装置和计算机设备 |
CN108595327B (zh) * | 2018-04-16 | 2023-06-06 | 深圳市腾讯网络信息技术有限公司 | 应用执行脚本的方法、应用测试方法、装置和计算机设备 |
CN109117373A (zh) * | 2018-08-16 | 2019-01-01 | 杭州友声科技股份有限公司 | 一种基于规则引导进行ui遍历的方法 |
CN110825616A (zh) * | 2019-09-25 | 2020-02-21 | 北京中科晶上科技股份有限公司 | 一种局域网内移动终端设备自动化测试系统 |
CN110825618A (zh) * | 2019-10-10 | 2020-02-21 | 重庆金融资产交易所有限责任公司 | 一种生成测试用例的方法及相关装置 |
CN110825618B (zh) * | 2019-10-10 | 2024-01-26 | 天航长鹰(江苏)科技有限公司 | 一种生成测试用例的方法及相关装置 |
CN111352844A (zh) * | 2020-03-04 | 2020-06-30 | 腾讯科技(深圳)有限公司 | 一种测试方法和相关装置 |
CN112015662A (zh) * | 2020-09-09 | 2020-12-01 | 深圳市通久电子有限公司 | 视频终端界面菜单功能的自动测试方法、系统及其设备 |
CN112015662B (zh) * | 2020-09-09 | 2022-03-15 | 深圳市通久电子有限公司 | 视频终端界面菜单功能的自动测试方法、系统及其设备 |
CN112685328A (zh) * | 2021-03-12 | 2021-04-20 | 北京志翔科技股份有限公司 | 一种图形界面测试方法、装置及存储介质 |
CN112685328B (zh) * | 2021-03-12 | 2021-06-08 | 北京志翔科技股份有限公司 | 一种图形界面测试方法、装置及存储介质 |
CN113094291A (zh) * | 2021-06-10 | 2021-07-09 | 深圳掌酷软件有限公司 | 锁屏界面的匹配验证方法、装置、设备及存储介质 |
CN113094291B (zh) * | 2021-06-10 | 2021-10-12 | 深圳掌酷软件有限公司 | 锁屏界面的匹配验证方法、装置、设备及存储介质 |
CN116756045A (zh) * | 2023-08-14 | 2023-09-15 | 海马云(天津)信息技术有限公司 | 应用测试方法及装置、计算机设备和存储介质 |
CN116756045B (zh) * | 2023-08-14 | 2023-10-31 | 海马云(天津)信息技术有限公司 | 应用测试方法及装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104536889A (zh) | 用户界面测试的方法、用例管理平台、操作终端及系统 | |
CN109857667B (zh) | 接口自动化测试方法、测试装置、测试设备及存储介质 | |
CN106294166B (zh) | 一种游戏数据监控方法和装置 | |
CN108182060B (zh) | 一种混合应用的埋点方法、移动终端及系统 | |
CN110297759A (zh) | 一种制作测试页面脚本的方法、装置、设备及存储介质 | |
US8490050B2 (en) | Automatic generation of user interfaces | |
CN108681508B (zh) | 一种基于视觉识别的测试方法及终端 | |
CN105204875B (zh) | 网页调用native功能的方法和系统 | |
CN106021102A (zh) | 自动化测试文件的生成方法及装置 | |
CN104090762A (zh) | 一种截图处理装置和方法 | |
CN103177115B (zh) | 一种提取网页页面链接的方法和装置 | |
CN103324674B (zh) | 网页内容选取方法及装置 | |
CN105955888A (zh) | 一种页面调试预览方法及系统 | |
CN110633461B (zh) | 文档检测处理方法、装置、电子设备和存储介质 | |
CN105302461B (zh) | 一种用于在移动应用中提供目标页面的方法与设备 | |
CN105630674A (zh) | 一种针对界面的测试方法和装置 | |
CN110297636A (zh) | 一种基于页面配置文件的页面自动生成和参数管理方法、系统和装置 | |
CN110489312A (zh) | 用于控件触发数据采集的数据关联方法和装置 | |
CN105808701A (zh) | 实现表单自动化验证及多系统间通讯的方法及系统 | |
CN113220391A (zh) | 一种安卓应用按钮功能实现机制的分析方法及装置 | |
CN112231213A (zh) | Web自动化测试方法、系统、存储介质及终端设备 | |
CN110298000A (zh) | 页面参数的获取方法、终端设备及介质 | |
CN104504058A (zh) | 一种页面展示方法和浏览器装置 | |
CN107958029A (zh) | 联动展示方法、介质、装置和计算设备 | |
CN112162740A (zh) | 基于ios-sdk的可视化数据采集方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150422 |
|
RJ01 | Rejection of invention patent application after publication |