CN109254910B - 一种应用程序的测试方法、装置、电子设备及存储介质 - Google Patents
一种应用程序的测试方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN109254910B CN109254910B CN201810896511.4A CN201810896511A CN109254910B CN 109254910 B CN109254910 B CN 109254910B CN 201810896511 A CN201810896511 A CN 201810896511A CN 109254910 B CN109254910 B CN 109254910B
- Authority
- CN
- China
- Prior art keywords
- element control
- test
- script
- test script
- content
- 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
Images
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/3684—Test management for test design, e.g. generating new test cases
-
- 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/3688—Test management for test execution, e.g. scheduling of test suites
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)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种应用程序的测试方法、装置、电子设备及存储介质,该方法包括:方法包括:获取元素控件的触发内容及元素属性;通过将触发内容、及元素属性填充到相应的脚本模板,生成测试脚本;基于测试脚本,回放元素控件的触发内容;本发明的方法、装置、电子设备及存储介质,在获取到应用程序的元素控件的触发内容及元素属性后,通过将元素控件的触发内容及元素属性填充到脚本模板中,可执行该测试脚本以回放该元素控件的触发内容。即:在元素控件测试的过程中即可完成测试脚本的录制,而无需单独耗时去编码该元素控件的触发代码以录制测试脚本,从而可有效降低该应用程序的测试成本,以及,可以有效提升应用程序的测试效率。
Description
技术领域
本发明涉及应用程序的自动测试领域,尤其涉及一种应用程序的测试方法、装置、电子设备及存储介质。
背景技术
随着信息技术的发展,互联网技术也随之发展,越来越多的网络软件开始投放使用。而在软件的开发过程中,测试工作在整个开发的生命周期中占有举足轻重的地位。在现有技术中,软件测试通常是基于录制、回放的自动化测试工具以完成测试。但是,在测试前,需要独开发测试脚本,而无法在使用录制工具进行测试的过程中同时生成测试脚本,由此导致测试成本过高。
发明内容
本发明的主要目的在于提出一种应用程序的测试方法、装置、电子设备及存储介质,其克服了现有技术中因无法在测试过程中生成测试脚本而导致测试成本过高的问题。
根据本发明的第一个方面,提供了一种应用程序的测试方法,所述方法包括:获取元素控件的触发内容及元素属性;通过将所述触发内容、及所述元素属性填充到相应的脚本模板,生成测试脚本;基于所述测试脚本,回放所述元素控件的触发内容。
可选的,在所述获取元素控件的触发内容及元素属性之前,所述方法还包括:将所述元素控件装载至测试页面中;所述获取元素控件的触发内容及元素属性,包括:基于所述测试页面,通过调用预设监测逻辑数据对所述元素控件是否被触发进行监测;在监测到所述元素控件被触发时,获取所述元素控件的触发内容及元素属性。
可选的,所述通过调用预设监测逻辑数据对所述元素控件是否被触发进行监测,包括:通过调用所述预设监测逻辑数据获取所述测试页面的文档对象模型DOM树;基于所述DOM树,通过所述预设监测逻辑数据对所述元素控件是否被触发进行监测。
可选的,所述通过将触发内容、及所述元素属性填充到相应的脚本模板,生成测试脚本,包括:基于所述元素属性,获取所述元素控件的动作类型;通过将所述触发内容、及所述元素属性填充到所述动作类型对应的脚本模板,生成所述测试脚本。
可选的,在生成所述测试脚本之后,所述方法还包括:将所述测试脚本上传至共享服务器。
根据本发明的第二个方面,提供了一种应用程序的测试装置,获取模块,用于获取元素控件的触发内容及元素属性;生成模块,用于通过将所述触发内容、及所述元素属性填充到相应的脚本模板,生成测试脚本;回放模块,用于基于所述测试脚本,回放所述元素控件的触发内容。
可选的,所述装置还包括:装载模块,用于在所述获取元素控件的触发内容及元素属性之前,将所述元素控件装载至测试页面中;所述获取模块包括:监测单元,用于基于所述测试页面,通过调用预设监测逻辑数据对所述元素控件是否被触发进行监测;确定单元,用于在监测到所述元素控件被触发时,获取所述元素控件的触发内容及元素属性。
可选的,所述监测单元具体用于:通过调用所述预设监测逻辑数据获取所述测试页面的文档对象模型DOM树;基于所述DOM树,通过所述预设监测逻辑数据对所述元素控件是否被触发进行监测。
可选的,所述生成模块包括:获取单元,用于基于所述元素属性,获取所述元素控件的动作类型;生成单元,用于通过将所述触发内容、及所述元素属性填充到所述动作类型对应的脚本模板,生成所述测试脚本。
可选的,所述装置还包括:上传模块,用于在生成所述测试脚本之后,将所述测试脚本上传至共享服务器。
根据本发明的第三个方面,提供了一种计算机设备,包括处理器和存储器;
所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种应用程序的测试方法。
根据本发明的第四个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的一种应用程序的测试方法。
本发明有益效果如下:在获取到应用程序的元素控件的触发内容及元素属性后,通过将元素控件的触发内容及元素属性填充到脚本模板中,从而生成测试脚本,接着,即可执行该测试脚本以回放该元素控件的触发内容,从而完成测试。即:在元素控件测试的过程中即可完成测试脚本的录制,而无需单独耗时去编码该元素控件的触发代码以录制测试脚本,从而可有效降低该应用程序的测试成本,以及,可以有效提升应用程序的测试效率。
附图说明
图1为本发明第一实施例一种应用程序的测试方法的流程框图;
图2为本发明第二实施例一种应用程序的测试方法的流程框图;
图3为本发明第三实施例一种应用程序的测试方法的流程框图;
图4为本发明第四实施例一种水印添加的装置的结构示意图;
图5为本发明第五实施例一种应用程序的测试方法的逻辑示意图;
图6为本发明第五实施例一种应用程序的测试方法的架构示意图;
图7为本发明第五实施例一种应用程序的测试方法中装载元素控件的效果图;
图8为本发明第五实施例一种应用程序的测试方法中获取元素属性的示意图;
图9为本发明第五实施例一种应用程序的测试方法中测试用例的结构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
为了便于理解本发明实施例,下面通过几个具体实施例对本发明的实施过程进行详细的阐述。
本发明第一实施例提供了一种应用程序的测试方法,所述方法包括:获取元素控件的触发内容及元素属性;通过将所述触发内容、及所述元素属性填充到相应的脚本模板,生成测试脚本;基于所述测试脚本,回放所述元素控件的触发内容。
就此,在获取到应用程序的元素控件的触发内容及元素属性后,通过将元素控件的触发内容及元素属性填充到脚本模板中,从而生成测试脚本,接着,即可执行该测试脚本以回放该元素控件的触发内容,从而完成测试。即:在元素控件测试的过程中即可完成测试脚本的录制,而无需单独耗时去编码该元素控件的触发代码以录制测试脚本,从而可有效降低该应用程序的测试成本,以及,可以有效提升应用程序的测试效率。
具体的,图1为本发明第一实施例一种应用程序的测试方法的流程框图。根据图1所示,本发明第一实施例提供了一种应用程序的测试方法,所述方法包括:
S11:获取元素控件的触发内容及元素属性;
具体的,在应用程序的元素控件被触发时,需要获取该元素控件的触发内容及该元素控件的元素属性。
在本实施例中,并不对该元素控件进行限定,只需其属于该应用程序的元素即可,如:若该元素控件为输入框,则在该输入框中输入内容即可触发该元素控件;若该元素控件为点击按钮,则在该点击按钮被点击时,即可触发该元素控件;对一个Form对象来说,单击该应用程序的一个空白区域或一个无效控件即可使得触发该Form对象。此外,触发该元素控件可以由鼠标、键盘、及触控笔等实现。
其中,该触发内容包括但不限于:该元素控件被触发过程中的每个步骤,如果该元素控件为输入框,则该触发内容还包括触发该元素控件时输入的内容。
可选的,本实施例中的元素控件能够显示应用程序当前页面的渲染效果。
此外,该应用程序适用于触控终端,例如:手机、平板电脑、游戏机或掌上电脑等各种具备触控屏幕的电子设备。
此外,在本实施例中,还可同时获取多个元素控件的触发内容、以及每个元素控件的元素属性。
S12:通过将所述触发内容、及所述元素属性填充到相应的脚本模板,生成测试脚本;
将获取的触发内容及元素属性填充到相应的脚本模板,以生成测试脚本,即完成了测试脚本的录制。
可选的,将获取的触发内容及元素属性转换为预定格式,并将预定格式的触发内容及元素属性填充到相应的脚本模板,以完成对测试脚本的录制。在本实施例中,通过将触发内容及元素属性分别转换为对应的预定格式,有助于该触发内容及元素属性均与脚本模板适配。
针对测试脚本,其内容包含但不限于:该元素控件的名称、该元素控件被触发过程中的每个步骤、每个步骤发生的时间点、该元素控件的动作类型。
此外,该脚本模板为生成脚本的常用模板,在本实施例中并不对其进行限定。
可选的,在生成该测试脚本后,将该测试脚本进行保存。
可选的,在测试脚本生成后,可将该测试脚本上传至共享服务器。具体的,通过Http(HyperText TransferProtocol,超文本传输协议)接口调用形式,将测试脚本上传到共享服务器的测试用例集合中,从而,终端可以通过Http接口调用形式,将共享服务器中的测试脚本下载至本地。就此,当需要对应用程序进行测试时,终端只需从共享服务器中下载所需的测试脚本,然后,直接执行该测试脚本以回放对应的元素控件的触发内容,从而可以快速的完成软件测试,同时,也避免了在后续进行软件测试时生成测试脚本,有助于提高软件测试速率,当然,也有助于该测试脚本的推广使用。
在本实施例中,若获取到了多个元素控件的触发内容及元素属性,通过将该每个元素控件的触发内容及元素属性一起填充至相应的脚本模板中,虽然每个元素控件所填充的脚本模板不同,但是,却可以关联所生成的不同测试脚本。
而且,本实施例在生成测试脚本的过程中,获取了每个元素控件的触发内容及元素属性,从而可以准确的对用户在复杂页面上的行为进行抓取,以便于生成的测试脚本的准确回放。
S13:基于所述测试脚本,回放所述元素控件的触发内容。
即:在得到测试脚本后,执行该测试脚本,以回放该元素控件的触发内容,从而模拟用户执行该触发内容。
具体的,遍历测试脚本中元素控件被触发的每个步骤,并分析每个步骤的动作代码块,依据每个步骤的时间节点,以顺序调用执行代码,以将动作代码块回放到普通的浏览器中。其中,该执行代码表征为:元素控件的执行方法、元素控件的动作类型、触发内容、及元素属性。
在本实施例中,通过执行单元执行测试脚本以完成触发内容的回放。以元素控件被单击为例:先实例化元素控件的driver,使用 driver.findelementbyXpath(“Xpath”)功能来定位元素控件,然后执行element.click 实现单击操作,具体的,通过浏览器内部实现的一系列API接口,直接调用driver 即可实现对元素控件进行操作。
此外,在另一实施例中,该步骤S13可为现有的关于录制的测试脚本的其他回放技术。
就此,在获取到应用程序的元素控件的触发内容及元素属性后,通过将元素控件的触发内容及元素属性填充到脚本模板中,从而生成测试脚本,接着,即可执行该测试脚本以回放该元素控件的触发内容,从而完成测试。即:在元素控件测试的过程中即可完成测试脚本的录制,而无需单独耗时去编码该元素控件的触发代码以录制测试脚本,从而可有效降低该应用程序的测试成本,以及,可以有效提升应用程序的测试效率。
图2为本发明第二实施例一种应用程序的测试方法的流程框图。根据图2 所示,本发明第二实施例提供了一种应用程序的测试方法,所述方法包括:
S21:将所述元素控件装载至测试页面中;
具体的,在本实施例中,需要将应用程序的待测元素控件均装载至测试页面中。在本实施例中,并不对将元素控件装载至测试页面中的具体方式进行限定,只需其满足本发明的要求即可。如:通过JavaFX webview组件将该待测元素控件装载至测试页面中。而且,Webview为JavaFX提供的一种可以加载网址的容器。可选的,本实施例中的元素控件能够显示应用程序当前页面的渲染效果。
S22:基于所述测试页面,通过调用预设监测逻辑数据对所述元素控件是否被触发进行监测;若是,则执行步骤S23,否则,执行步骤S26;
在该元素控件被加载完毕后,通过调用预设监测逻辑数据即可对该元素控件进行监听。
具体的,在本实施例中,通过调用预设监测逻辑数据获取测试页面的文档对象模型DOM树,通过该DOM树,确定出该测试页面上的元素控件的监控节点,然后,通过该预设监测逻辑数据对该测试页面上的元素控件是否被触发进行监测。如:从webview中可以获取一个浏览器操控引擎engine;通过监听engine 中网页加载的状态,从而可以在网页加载完毕的一瞬间调用自定义的JS方法,使用该JS方法获取当前网页的DOM树,并通过该DOM树该测试页面上的元素控件的监控节点,然后,基于该监控节点,通过该预设监测逻辑数据开始对该测试页面上的元素控件进行监听,通过该监听可以获得每个元素控件的触发内容、元素属性、及超级文本标记语言HTML分析标签。
其中,针对DOM树,其是以层次结构组织的节点或信息片段 的集合,也是把超文本标记语言文档HTML呈现为带有元素、属性和文本的树结构。
当监测到所述元素控件被触发时,确定获取所述元素控件的触发内容及元素属性,即:执行步骤S23。
可选的,基于预设监测逻辑数据获取元素属性。
以被单击即被触发的元素控件为例:鼠标单击该元素控件,通过调用预设监测逻辑数据即可对该元素控件的单击Click事件进行监测,从而可以实现对该元素控件的触发内容Click及该元素控件的元素属性进行捕获。
S23:获取所述元素控件的触发内容及元素属性;
具体的,在应用程序的元素控件被触发时,需要获取该元素控件的触发内容及该元素控件的元素属性。
在本实施例中,并不对该元素控件进行限定,只需其属于该应用程序的元素即可,如:若该元素控件为输入框,则在输入框中输入内容即可触发该元素控件;若该元素控件为点击按钮,则在该点击按钮被点击时,即可触发该元素控件;对一个Form对象来说,单击该应用程序的一个空白区域或一个无效控件即可使得触发该Form对象。此外,触发该元素控件可以由鼠标、键盘、及触控笔等实现。
其中,该触发内容包括但不限于:该元素控件被触发过程中的每个步骤,如果该元素控件为输入框,则该触发内容还包括触发该元素控件时输入的内容。
此外,该应用程序适用于触控终端,例如:手机、平板电脑、游戏机或掌上电脑等各种具备触控屏幕的电子设备。
此外,在本实施例中,还可同时获取多个元素控件的触发内容、以及每个元素控件的元素属性。
S24:通过将所述触发内容、及所述元素属性填充到相应的脚本模板,生成测试脚本;
将获取的触发内容及元素属性填充到相应的脚本模板,以生成测试脚本,即完成了测试脚本的录制。
可选的,将获取的触发内容及元素属性转换为预定格式,并将预定格式的触发内容及元素属性填充到相应的脚本模板,以完成对测试脚本的录制。在本实施例中,通过将触发内容及元素属性分别转换为对应的预定格式,有助于该触发内容及元素属性均与脚本模板适配。
针对脚本模板,其与元素控件的动作类型一一对应,而且,在基于测试模板生成测试用例后,测试脚本中的内容包含但不限于:该元素控件的名称、该元素控件被触发过程中的每个步骤、每个步骤发生的时间点、该元素控件的动作类型。此外,该脚本模板为生成脚本的常用模板,在本实施例中并不对其进行限定。
可选的,在生成该测试脚本后,将该测试脚本进行保存。
可选的,在测试脚本生成后,可将该测试脚本上传至共享服务器。具体的,通过Http接口调用形式,将测试脚本上传到共享服务器的测试用例集合中,从而,终端可以通过Http接口调用形式,将共享服务器中的测试脚本下载至本地。就此,当需要对应用程序进行测试时,终端只需从共享服务器中下载所需的测试脚本,然后,直接执行该测试脚本以回放对应的元素控件的触发内容,从而可以快速的完成软件测试,同时,也避免了在后续进行软件测试时生成测试脚本,有助于提高软件测试速率,当然,也有助于该测试脚本的推广使用。
在本实施例中,若获取到了多个元素控件的触发内容及元素属性,通过将该每个元素控件的触发内容及元素属性一起填充至相应的脚本模板中,虽然每个元素控件所填充的脚本模板不同,但是,却可以关联所生成的不同测试脚本。
而且,本实施例在生成测试脚本的过程中,获取了每个元素控件的触发内容及元素属性,从而可以准确的对用户在复杂页面上的行为进行抓取,以便于生成的测试脚本的准确回放。
S25:基于所述测试脚本,回放所述元素控件的触发内容;
即:在得到测试脚本后,执行该测试脚本,以回放该元素控件的触发内容,从而模拟用户执行该触发内容。
具体的,遍历测试脚本中元素控件被触发的每个步骤,并分析每个步骤的动作代码块,依据每个步骤的时间节点,以顺序调用执行代码,以将动作代码块回放到普通的浏览器中。其中,该执行代码表征为:元素控件的执行方法、元素控件的动作类型、触发内容、及元素属性。
在本实施例中,通过执行单元执行测试脚本以完成触发内容的回放。以元素控件被单击为例:先实例化元素控件的driver,使用 driver.findelementbyXpath(“Xpath”)功能来定位元素控件,然后执行element.click 实现单击操作,具体的,通过浏览器内部实现的一系列API接口,直接调用driver 即可实现对元素控件进行操作。
此外,在另一实施例中,该步骤S25可为现有的关于录制的测试脚本的其他回放技术。
S26:不作处理。
就此,在获取到应用程序的元素控件的触发内容及元素属性后,通过将元素控件的触发内容及元素属性填充到脚本模板中,从而生成测试脚本,接着,即可执行该测试脚本以回放该元素控件的触发内容,从而完成测试。即:在元素控件测试的过程中即可完成测试脚本的录制,而无需单独耗时去编码该元素控件的触发代码以录制测试脚本,从而可有效降低该应用程序的测试成本,以及,可以有效提升应用程序的测试效率。
图3为本发明第三实施例一种应用程序的测试方法的流程框图。根据图3 所示,本发明第三实施例提供了一种应用程序的测试方法,所述方法包括:
S31:将所述元素控件装载至测试页面中;
具体的,在本实施例中,需要将应用程序的待测元素控件均装载至测试页面中。在本实施例中,并不对将元素控件装载至测试页面中的具体方式进行限定,只需其满足本发明的要求即可。如:通过JavaFX webview组件将该待测元素控件装载至测试页面中。而且,Webview为JavaFX提供的一种可以加载网址的容器。可选的,本实施例中的元素控件能够显示应用程序当前页面的渲染效果。
S32:基于所述测试页面,通过调用预设监测逻辑数据对所述元素控件是否被触发进行监测;若是,则执行步骤S33,否则,执行步骤S37;
在该元素控件被加载完毕后,通过调用预设监测逻辑数据即可对该元素控件进行监听。
具体的,在本实施例中,通过调用预设监测逻辑数据获取测试页面的文档对象模型DOM树,通过该DOM树,确定出该测试页面上的元素控件的监控节点,然后,通过该预设监测逻辑数据对该测试页面上的元素控件是否被触发进行监测。如:从webview中可以获取一个浏览器操控引擎engine;通过监听engine 中网页加载的状态,从而可以在网页加载完毕的一瞬间调用自定义的JS方法,使用该JS方法获取当前网页的DOM树,并通过该DOM树该测试页面上的元素控件的监控节点,然后,基于该监控节点,通过该预设监测逻辑数据开始对该测试页面上的元素控件进行监听,通过该监听可以获得每个元素控件的触发内容、元素属性、及超级文本标记语言HTML分析标签。
其中,针对DOM树,其是以层次结构组织的节点或信息片段 的集合,也是把超文本标记语言文档HTML呈现为带有元素、属性和文本的树结构。
当监测到所述元素控件被触发时,确定获取所述元素控件的触发内容及元素属性,即:执行步骤S23。
可选的,基于预设监测逻辑数据获取元素属性。
以被单击即被触发的元素控件为例:鼠标单击该元素控件,通过调用预设监测逻辑数据即可对该元素控件的单击Click事件进行监测,从而可以实现对该元素控件的触发内容Click及该元素控件的元素属性进行捕获。
S33:获取所述元素控件的触发内容及元素属性;
具体的,在应用程序的元素控件被触发时,需要获取该元素控件的触发内容及该元素控件的元素属性。
在本实施例中,并不对该元素控件进行限定,只需其属于该应用程序的元素即可,如:若该元素控件为输入框,则在输入框中输入内容即可触发该元素控件;若该元素控件为点击按钮,则在该点击按钮被点击时,即可触发该元素控件;对一个Form对象来说,单击该应用程序的一个空白区域或一个无效控件即可使得触发该Form对象。此外,触发该元素控件可以由鼠标、键盘、及触控笔等实现。
其中,该触发内容包括但不限于:该元素控件被触发过程中的每个步骤,如果该元素控件为输入框,则该触发内容还包括触发该元素控件时输入的内容。
此外,该应用程序适用于触控终端,例如:手机、平板电脑、游戏机或掌上电脑等各种具备触控屏幕的电子设备。
此外,在本实施例中,还可同时获取多个元素控件的触发内容、以及每个元素控件的元素属性。
S34:基于所述元素属性,获取所述元素控件的动作类型;
以被单击即被触发的元素控件为例:1、鼠标单击该元素,通过调用预设监测逻辑数据即可对该元素控件的单击Click事件进行监测,捕获该元素控件的触发内容Click及该元素控件的元素属性;2、基于该元素控件的元素属性,即可获取该元素控件的动作类型,3、通过该元素控件的元素属性的HTML分析标签映射动作类型,以得到该元素控件所属的动作类型。
S35:通过将所述触发内容、及所述元素属性填充到所述动作类型对应的脚本模板,生成所述测试脚本;
将获取的触发内容及元素属性填充到该元素控件的动作类型对应的脚本模板,以生成测试脚本,即完成了测试脚本的录制。
可选的,将获取的触发内容及元素属性转换为预定格式,并将预定格式的触发内容及元素属性填充到相应的脚本模板,以完成对测试脚本的录制。在本实施例中,通过将触发内容及元素属性分别转换为对应的预定格式,有助于该触发内容及元素属性均与脚本模板适配。
针对脚本模板,其与元素控件的动作类型一一对应,而且,在基于测试模板生成测试用例后,测试脚本的内容包含但不限于:该元素控件的名称、该元素控件被触发过程中的每个步骤、每个步骤发生的时间点、该元素控件的动作类型。此外,该脚本模板为生成脚本的常用模板,在本实施例中并不对其进行限定。
可选的,在生成该测试脚本后,将该测试脚本进行保存。
可选的,在测试脚本生成后,可将该测试脚本上传至共享服务器。具体的,通过Http接口调用形式,将测试脚本上传到共享服务器的测试用例集合中,从而,终端可以通过Http接口调用形式,将共享服务器中的测试脚本下载至本地。就此,当需要对应用程序进行测试时,终端只需从共享服务器中下载所需的测试脚本,然后,直接执行该测试脚本以回放对应的元素控件的触发内容,从而可以快速的完成软件测试,同时,也避免了在后续进行软件测试时生成测试脚本,有助于提高软件测试速率,当然,也有助于该测试脚本的推广使用。
在本实施例中,若获取到了多个元素控件的触发内容及元素属性,通过将该每个元素控件的触发内容及元素属性一起填充至相应的脚本模板中,虽然每个元素控件所填充的脚本模板不同,但是,却可以关联所生成的不同测试脚本。
而且,本实施例在生成测试脚本的过程中,获取了每个元素控件的触发内容及元素属性,从而可以准确的对用户在复杂页面上的行为进行抓取,以便于生成的测试脚本的准确回放。
S36:基于所述测试脚本,回放所述元素控件的触发内容;
即:在得到测试脚本后,执行该测试脚本,以回放该元素控件的触发内容,从而模拟用户执行该触发内容。
具体的,遍历测试脚本中元素控件被触发的每个步骤,并分析每个步骤的动作代码块,依据每个步骤的时间节点,以顺序调用执行代码,以将动作代码块回放到普通的浏览器中。其中,该执行代码表征为:元素控件的执行方法、元素控件的动作类型、触发内容、及元素属性。
在本实施例中,通过执行单元执行测试脚本以完成触发内容的回放。以元素控件被单击为例:先实例化元素控件的driver,使用 driver.findelementbyXpath(“Xpath”)功能来定位元素控件,然后执行element.click 实现单击操作,具体的,通过浏览器内部实现的一系列API接口,直接调用driver 即可实现对元素控件进行操作。
此外,在另一实施例中,该步骤S36可为现有的关于录制的测试脚本的其他回放技术。
S37:不作处理。
就此,在获取到应用程序的元素控件的触发内容及元素属性后,通过将元素控件的触发内容及元素属性填充到脚本模板中,从而生成测试脚本,接着,即可执行该测试脚本以回放该元素控件的触发内容,从而完成测试。即:在元素控件测试的过程中即可完成测试脚本的录制,而无需单独耗时去编码该元素控件的触发代码以录制测试脚本,从而可有效降低该应用程序的测试成本,以及,可以有效提升应用程序的测试效率。
图4为本发明第四实施例一种应用程序的测试装置的结构示意图。根据图4 所示,本发明第四实施例提供了一种应用程序的测试装置,所述装置包括:获取模块110,用于获取元素控件的触发内容及元素属性;生成模块120,用于通过将所述触发内容、及所述元素属性填充到相应的脚本模板,生成测试脚本;回放模块130,用于基于所述测试脚本,回放所述元素控件的触发内容。
可选的,所述装置还包括:装载模块,用于在所述获取元素控件的触发内容及元素属性之前,将所述元素控件装载至测试页面中;所述获取模块110包括:监测单元,用于基于所述测试页面,通过调用预设监测逻辑数据对所述元素控件是否被触发进行监测;确定单元,用于在监测到所述元素控件被触发时,确定获取所述元素控件的触发内容及元素属性。
可选的,所述监测单元具体用于:通过调用所述预设监测逻辑数据获取所述测试页面的文档对象模型DOM树;基于所述DOM树,对所述元素控件是否被触发进行监测。
可选的,所述生成模块120包括:获取单元,用于基于所述元素属性,获取所述元素控件的动作类型;生成单元,用于通过将所述触发内容、及所述元素属性填充到所述动作类型对应的脚本模板,生成所述测试脚本。
可选的,所述装置还包括:上传模块,用于在生成所述测试脚本之后,将所述测试脚本上传至共享服务器。
为了更好说明本实施例所述方法的实施过程,下面结合一个具体应用示例,对本实施例所述方法进行说明。
图5为本发明第五实施例一种应用程序的测试方法的逻辑示意图;图6为本发明第五实施例一种应用程序的测试方法的架构示意图;图7为本发明第五实施例一种应用程序的测试方法中装载元素控件的效果图;图8为本发明第五实施例一种应用程序的测试方法中获取元素属性的示意图;图9为本发明第五实施例一种应用程序的测试方法中元素控件为输入框时测试用例的结构示意图。
本发明第五实施例提供了一种应用程序的测试方法,所述方法包括:
根据图5-7所示,先通过JavaFX webview组件将能够显示当前页面的渲染效果的HTML元素装载至浏览器的任一测试页面中。该装载效果如图7所示, JavaFX Panel组件中包含有JavaFX TextField组件及JavaFX webview组件,其中,该JavaFX webview组件中包括HTML元素A、HTML元素B、HTML元素C、……、 HTML元素O。其中,该HTML元素A、HTML元素B、HTML元素C、……、 HTML元素O均为不同的如实施例一至四所示的元素控件。具体的,从webview 中获取一个engine;然后通过监听engine中网页加载的状态,从而可以在网页加载完毕的一瞬间调用自定义的JS方法,使用该JS方法获取当前网页的DOM 树,然后通过该DOM树,即可确定出该测试页面上的HTML元素的监控节点,然后,基于该监控节点,再通过该JS方法对该HTML元素进行监听,通过监听可以获得每个HTML元素的HTML分析标签。
根据图7、8所示,HTML元素K为单击按钮,HTML元素H为输入框。当用户用鼠标单击该HTML元素K以实现触发该HTML元素K时,通过该JS 方法即可捕获到该HTML元素K的Click事件,即:捕获到用户对该HTML元素K进行触发时的触发内容。同时,在该HTML元素K被触发时,通过该JS 方法可立马得知该HTML元素K的元素属性,基于该元素属性及该HTML元素 K自身的网页标签可以确定该HTML元素K的动作类型为单击。
此外,当用户触发该HTML元素H时,用户会在该HTML元素H中输入内容,同样的,通过该JS方法即可捕获到该HTML元素H的Click事件,即:捕获到用户对该HTML元素H进行触发时的触发内容。同时,在该HTML元素 H被触发时,通过该JS方法可立马得知该HTML元素H的元素属性以及输入内容,基于该元素属性及该HTML元素H自身的网页标签可以确定该HTML元素H的动作类型为文本输入。
其中,该动作类型包括但不限于:单击、文本输入、下拉框、弹出框Alert、及标签Iframe。
针对HTML元素K,在获知该HTML元素K的触发内容、元素属性、以及该HTML元素K的动作类型之后,通过录制单元将该HTML元素K的触发内容及元素属性填充到“单击”对应的脚本模板中,以实现基于录制单元完成针对该HTML元素K的测试用例的录制,从而,生成了对应的测试用例。该测试用例中包括:HTML元素K被触发过程中每个步骤的时间点、节点文本、全标签文本、节点坐标、动作类型、以及当前时间点。其中,该测试用例相当于实施例一至四中的测试脚本。
根据图9所示,针对HTML元素H,在获知该HTML元素H的触发内容、元素属性、以及该HTML元素H的动作类型之后,通过录制单元将该HTML 元素H的触发内容及元素属性填充到“文本输入”对应的脚本模板中,以实现基于录制单元完成针对该HTML元素H的测试用例的录制,从而,生成了对应的测试用例。该测试用例中包括:HTML元素H被触发过程中每个步骤的时间点、节点文本、全标签文本、输入的文本内容、节点坐标、动作类型、以及当前时间点。
该录制单元相当于第四实施例中的生成模块。
在测试用例生成后,可将该测试用例上传至用例服务器。若待测试的元素控件有多个,则将由对应的多个测试用例所形成的用例集合上传至用例服务器,具体的,通过Http接口调用形式,将测试用例上传到用例服务器的测试用例集合中,从而,终端可以通过Http接口调用形式,将用例服务器中的测试用例下载至本地。就此,当需要对应用程序进行测试时,终端只需从用例服务器下载所需的测试用例至本地环境,然后,直接执行该测试用例以回放对应的HTML 元素的触发内容,从而可以快速的完成软件测试,同时,也避免了在后续进行软件测试时生成测试用例,有助于提高软件测试速率,当然,也有助于该测试用例的推广使用。其中,该用例服务器相当于实施例一至四中的共享服务器。
此外,在测试用例生成后,通过执行单元使得该测试用例可以在浏览器中进行回放,以完成对该测试用例对应的HTML元素进行测试。在本实施例中,以HTML元素K为例,对执行HTML元素K的测试用例进行说明:
具体的,通过脚本解析代码块解析HTML元素K的测试用例,得到该测试用例被触发时的每一个步骤的动作类型,然后,将各自的动作交给的各自的动作执行代码块,具体的,先遍历该测试用例,将带有“#类型标签#”的项筛选出来,然后传给动作类型代码块,从而获取动作类型的实体,在实体里进一步转化为Selenium2能执行的代码块。
接着,执行代码块调用driver对象,基于触发内容以模拟用户对网页上的 HTML元素H进行相应操作,具体的,以HTML元素K被单击为例:先实例化 HTML元素K的driver,使用driver.findelementbyXpath(“Xpath”)功能来定位 HTML元素K,然后执行element.click实现单击操作,具体的,通过浏览器内部实现的一系列API接口,直接调用driver即可实现对HTML元素K进行操作。
其中,Selenium 2的工作原理为:将浏览器原生的API封装成WebDriverAPI,通过调用WebDriverAPI可以直接操作浏览器页面里的HTML元素,可以模拟用户操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书等)。
此外,在对测试用例进行执行回放后,还可以基于测试结果生成测试报告,以供快速、清晰的获知测试结果。而且,将该报告经测试平台转发至本地环境。
本发明第六实施例提供了一种电子设备,包括处理器和存储器;所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现上述的一种应用程序的测试方法。
本发明第六实施例中的一种电子设备所涉及的名词及实现原理具体可以参照本发明实施例中的第一至四实施例的一种应用程序的测试方法,在此不再赘述。
本发明第七实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个模块,所述一个或者多个模块可被一个或者多个处理器执行,以实现上述的一种应用程序的测试方法。
本发明第七实施例中的一种计算机可读存储介质所涉及的名词及实现原理具体可以参照本发明实施例中的第一至四实施例的一种应用程序的测试方法,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (10)
1.一种应用程序的测试方法,其特征在于,所述方法包括:
获取元素控件的触发内容及元素属性;
通过将所述触发内容、及所述元素属性填充到相应的脚本模板,生成测试脚本,包括:基于所述元素属性,获取所述元素控件的动作类型;通过将所述触发内容、及所述元素属性填充到所述动作类型对应的脚本模板,生成所述测试脚本;
基于所述测试脚本,回放所述元素控件的触发内容;
其中,所述测试脚本在所述元素控件测试的过程中生成。
2.根据权利要求1所述的方法,其特征在于,在所述获取元素控件的触发内容及元素属性之前,所述方法还包括:
将所述元素控件装载至测试页面中;
所述获取元素控件的触发内容及元素属性,包括:
基于所述测试页面,通过调用预设监测逻辑数据对所述元素控件是否被触发进行监测;在监测到所述元素控件被触发时,获取所述元素控件的触发内容及元素属性。
3.根据权利要求2所述的方法,其特征在于,所述通过调用预设监测逻辑数据对所述元素控件是否被触发进行监测,包括:
通过调用所述预设监测逻辑数据获取所述测试页面的文档对象模型DOM树;
基于所述DOM树,通过所述预设监测逻辑数据对所述元素控件是否被触发进行监测。
4.根据权利要求1所述的方法,其特征在于,在生成所述测试脚本之后,所述方法还包括:
将所述测试脚本上传至共享服务器。
5.一种应用程序的测试装置,其特征在于,
获取模块,用于获取元素控件的触发内容及元素属性;
生成模块,用于通过将所述触发内容、及所述元素属性填充到相应的脚本模板,生成测试脚本;所述生成模块包括:获取单元,用于基于所述元素属性,获取所述元素控件的动作类型;生成单元,用于通过将所述触发内容、及所述元素属性填充到所述动作类型对应的脚本模板,生成所述测试脚本;
回放模块,用于基于所述测试脚本,回放所述元素控件的触发内容;
其中,所述测试脚本在所述元素控件测试的过程中生成。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
装载模块,用于在所述获取元素控件的触发内容及元素属性之前,将所述元素控件装载至测试页面中;
所述获取模块包括:
监测单元,用于基于所述测试页面,通过调用预设监测逻辑数据对所述元素控件是否被触发进行监测;
确定单元,用于在监测到所述元素控件被触发时,获取所述元素控件的触发内容及元素属性。
7.根据权利要求6所述的装置,其特征在于,所述监测单元具体用于:
通过调用所述预设监测逻辑数据获取所述测试页面的文档对象模型DOM树;
基于所述DOM树,通过所述预设监测逻辑数据对所述元素控件是否被触发进行监测。
8.根据权利要求5所述的装置,其特征在于,所述装置还包括:
上传模块,用于在生成所述测试脚本之后,将所述测试脚本上传至共享服务器。
9.一种计算机设备,其特征在于,包括处理器和存储器;
所述存储器用于存储计算机指令,所述处理器用于运行所述存储器存储的计算机指令,以实现权利要求1至4中任一项所述的一种应用程序的测试方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1至4中任一项所述的一种应用程序的测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810896511.4A CN109254910B (zh) | 2018-08-08 | 2018-08-08 | 一种应用程序的测试方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810896511.4A CN109254910B (zh) | 2018-08-08 | 2018-08-08 | 一种应用程序的测试方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109254910A CN109254910A (zh) | 2019-01-22 |
CN109254910B true CN109254910B (zh) | 2022-09-02 |
Family
ID=65049731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810896511.4A Active CN109254910B (zh) | 2018-08-08 | 2018-08-08 | 一种应用程序的测试方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109254910B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096277B (zh) * | 2019-03-19 | 2020-06-12 | 北京三快在线科技有限公司 | 一种动态页面展示方法、装置、电子设备及存储介质 |
CN110209570A (zh) * | 2019-04-18 | 2019-09-06 | 北京字节跳动网络技术有限公司 | 事件的处理方法、装置、电子设备及存储介质 |
CN110297759B (zh) * | 2019-05-22 | 2022-04-12 | 深圳壹账通智能科技有限公司 | 一种制作测试页面脚本的方法、装置、设备及存储介质 |
CN110225246B (zh) * | 2019-05-28 | 2021-07-20 | 北京字节跳动网络技术有限公司 | 事件脚本的生成方法、装置、电子设备及计算机可读存储介质 |
CN110618934A (zh) * | 2019-08-15 | 2019-12-27 | 重庆金融资产交易所有限责任公司 | 前端自动化测试调试方法、装置及计算机可读存储介质 |
CN110928573B (zh) * | 2019-11-18 | 2023-05-19 | 中国民航信息网络股份有限公司 | 一种客户端离港设备与web应用互联方法及系统 |
CN111752827A (zh) * | 2020-06-04 | 2020-10-09 | 武汉迎风聚智科技有限公司 | 一种测试脚本的生成方法以及装置 |
CN111752828A (zh) * | 2020-06-04 | 2020-10-09 | 武汉迎风聚智科技有限公司 | 一种Web应用的性能测试方法以及装置 |
CN111722904B (zh) * | 2020-06-22 | 2024-07-12 | 深圳前海微众银行股份有限公司 | 页面告警脚本的生成方法、装置、设备及可读存储介质 |
CN112597031A (zh) * | 2020-12-26 | 2021-04-02 | 中国农业银行股份有限公司 | 一种web页面测试用例生成装置及方法 |
CN112882933B (zh) * | 2021-02-09 | 2024-08-16 | 京东科技信息技术有限公司 | 脚本录制方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649092A (zh) * | 2016-10-21 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种测试脚本生成方法、网页测试方法、装置和系统 |
CN107451052A (zh) * | 2017-07-11 | 2017-12-08 | 广州慧睿思通信息科技有限公司 | 一种基于Web系统定位页面元素测试方法 |
CN108255722A (zh) * | 2018-01-15 | 2018-07-06 | 厦门美图移动科技有限公司 | 脚本生成方法、脚本生成装置及服务器 |
-
2018
- 2018-08-08 CN CN201810896511.4A patent/CN109254910B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106649092A (zh) * | 2016-10-21 | 2017-05-10 | 郑州云海信息技术有限公司 | 一种测试脚本生成方法、网页测试方法、装置和系统 |
CN107451052A (zh) * | 2017-07-11 | 2017-12-08 | 广州慧睿思通信息科技有限公司 | 一种基于Web系统定位页面元素测试方法 |
CN108255722A (zh) * | 2018-01-15 | 2018-07-06 | 厦门美图移动科技有限公司 | 脚本生成方法、脚本生成装置及服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN109254910A (zh) | 2019-01-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254910B (zh) | 一种应用程序的测试方法、装置、电子设备及存储介质 | |
CN108628741B (zh) | 网页页面测试方法、装置、电子设备和介质 | |
CN102272757B (zh) | 用于执行客户端浏览器状态的服务器端记录的方法和系统 | |
CN111061526B (zh) | 自动化测试方法、装置、计算机设备及存储介质 | |
CN103810089B (zh) | 自动测试基于姿态的应用 | |
US9003423B1 (en) | Dynamic browser compatibility checker | |
CN112068824B (zh) | 一种网页开发预览方法、装置及电子设备 | |
CN105955888B (zh) | 一种页面调试预览方法及系统 | |
CN107783899A (zh) | 应用程序中h5页面的测试方法、装置和计算机设备 | |
EP1679619A2 (en) | Methods and apparatus for evaluating aspects of a web page | |
CN109815119B (zh) | 一种app链接渠道的测试方法及装置 | |
CN105975393B (zh) | 一种页面显示的检测方法及系统 | |
CN110825618A (zh) | 一种生成测试用例的方法及相关装置 | |
CN113296653B (zh) | 一种仿真交互模型构建方法、交互方法及相关设备 | |
CN103177115A (zh) | 一种提取网页页面链接的方法和装置 | |
CN112835809A (zh) | 一种基于浏览器的测试数据设置方法、装置、设备及介质 | |
CN113704590A (zh) | 网页数据获取方法、装置、电子设备及存储介质 | |
CN113760763A (zh) | 软件测试方法、设备、服务器和系统 | |
CN110908915A (zh) | 一种测试覆盖率的展示方法、装置及计算机系统 | |
CN111694550A (zh) | 一种页面显示控制方法、装置及系统 | |
CN117707982A (zh) | 测试方法、装置、设备、介质和程序产品 | |
JP4681673B1 (ja) | 動作検証装置、動作検証方法および動作検証プログラム | |
CN116521567A (zh) | 一种埋点测试方法、装置、车辆和存储介质 | |
CN113590564B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN112256564B (zh) | 应用程序的运行方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |