CN104166541A - 用于更新被测控件库的方法和装置 - Google Patents
用于更新被测控件库的方法和装置 Download PDFInfo
- Publication number
- CN104166541A CN104166541A CN201310183156.3A CN201310183156A CN104166541A CN 104166541 A CN104166541 A CN 104166541A CN 201310183156 A CN201310183156 A CN 201310183156A CN 104166541 A CN104166541 A CN 104166541A
- Authority
- CN
- China
- Prior art keywords
- information
- control information
- script
- control
- operation steps
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000013515 script Methods 0.000 claims abstract description 179
- 230000004048 modification Effects 0.000 claims description 39
- 238000012986 modification Methods 0.000 claims description 39
- 230000004044 response Effects 0.000 claims description 25
- 238000012360 testing method Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 11
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012917 library technology Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000009394 selective breeding Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本申请提供用于更新被测控件库的方法和装置,该方法包括:获取被测页面的控件信息、页面信息和操作步骤信息;依据页面信息查询得到被测页面在被测控件库中的控件信息列表;当检测到控件信息在控件信息列表中不存在时,在控件信息列表中生成与控件信息、页面信息和操作步骤信息对应的记录;以及当检测到控件信息在控件信息列表中存在时,保留控件信息在控件信息列表中的原有记录。通过在控件库中存储被测页面信息、被测控件信息以及操作步骤信息并将这些信息进行关联,使得确保被测控件库中控件定位信息的唯一性,另外,在脚本信息更新及控件本身属性更新时,通过监测控件信息的变化并在发生变化时进行更新,从而实现被测控件库的自动实时更新。
Description
技术领域
本申请涉及互联网测试领域,更具体地涉及用户界面(UI)自动化测试技术,尤其涉及用于更新被测控件库的方法和装置。
背景技术
在互联网领域的UI自动化测试中,使用UI自动化脚本进行网站的UI自动化测试,实际是模拟人的行为操作网页上的控件并验证操作带来的结果。这些控件因为被UI自动化脚本测试到,所以称为被测控件。对于一个网站的所有的UI自动化脚本集合在测试执行过程中所测试到的所有被测控件的集合称为被测控件库。被测控件库具有实时反映自动化脚本集合对被测网页元素的覆盖程度的属性。
当测试人员通过UI自动化测试框架编写或维护UI自动化脚本时,如果能够得到UI自动化脚本集合和其实时对应的被测控件库,会使测试人员很清楚目前UI自动化脚本集合对网站的功能覆盖程度,从而极为有效地帮助测试人员提高UI自动化测试脚本的质量。
但目前现有技术中的UI测试框架却很难使得测试人员做到这一点。例如,有些UI测试框架比如淘宝的AutoMan提供了公共控件库,使用公共控件库来存放测试人员手工建立的各种控件,在编写或维护UI自动化脚本时手工引用公共控件库中的控件,并且在UI自动化脚本中的控件信息发生变化时,手工修改公共控件库中的控件,以使其体现被测控件库的作用。
具体而言,在现有技术中,对于控件库中的控件新增、删除或更改操作都是人工进行的,即测试人员在编写UI自动化脚本之前先在公共控件库中手工建立公共控件(如:控件A),然后在编写UI自动化脚本时,在脚本代码中引用该公共控件(如:点击控件A的操作“控件A.click”),这样就完成了新建控件的工作。在维护UI自动化脚本时,如果在脚本代码中删除了某个公共控件,就要在公共控件库中进行人工检查,如果该控件没有被其他脚本引用则手工删除,如果有被其他脚本引用则不能删除。在编写UI自动化脚本时,对某个控件的操作进行更改后,可能原先公共控件库中有这个控件,但由于与此脚本中的操作不同,所以会又手动地在公共控件库中新增这个控件,这样就造成了公共控件库中的冗余。
由上述可以看出,在对控件的引用发生改变(增、删、改)时,都需要进行手工操作,才能保证公共控件库真正体现被测控件库的作用,但在实际的互联网测试过程中会有成千上万的脚本进行编写操作,这样的人为手工操作根本无法完成工作。另外,由于UI自动化脚本的维护和更新非常频繁,及时的手工检查和确认更是不可行,所以公共控件库中的空间无法实时跟随更新,不可避免地产生大量过时(即,没有被UI自动化脚本引用的控件)、冗余(即,人为原因产生同样的两个或多个控件)的控件,从而使得公共控件库无法起到被测控件库的作用。
综上所述,在目前的现有技术中存在公共控件库会出现大量过时、冗余数据,对资源消耗过大,无法代表被测控件库,且被测控件库需要进行手动更新的问题,因此有必要提出改进的技术来解决上述问题。
发明内容
如上所述,本申请发明人注意到,在现有的公共控件库技术中,由于需要手动更新控件库,对于动辄数千个测试脚本频繁发生改变的互联网测试而言,及时更新控件库几乎是不可能的,因而在控件库中往往出现大量过时、冗余的数据,从而无法实时精准地反映自动化测试脚本集合对被测网页元素的覆盖程度。
为此,本申请发明人提出了一种自动更新被测控件库的机制以克服上述问题。具体而言,本申请发明人想到,通过在控件库中存储被测页面信息、被测控件信息以及与被测控件相关联的操作步骤信息,并且监测这些信息的变化并在发生变化时进行更新,从而实现被测控件库的自动实时更新。
根据本申请实施例的一个方面,提供一种用于更新被测控件库的方法,包括:获取被测页面的控件信息、页面信息和操作步骤信息;依据所述页面信息查询得到所述被测页面在被测控件库中的控件信息列表;当检测到所述控件信息在所述控件信息列表中不存在时,在所述控件信息列表中生成与所述控件信息、页面信息和操作步骤信息对应的记录;以及当检测到所述控件信息在所述控件信息列表中存在时,保留所述控件信息在所述控件信息列表中的原有记录。
根据本申请的实施例,其中,所述生成与所述控件信息、页面信息和操作步骤信息对应的记录的步骤包括:将所述控件信息、页面信息和操作步骤信息分别保存在所述控件信息列表中的控件表、页面表和操作步骤表中,并在所述控件信息、页面信息和操作步骤信息之间进行关联。
根据本申请的实施例,其中,在所述控件信息、页面信息和操作步骤信息之间进行关联的步骤包括:将所述控件信息与所述页面信息关联;以及将所述控件信息与所述操作步骤信息关联。
根据本申请的实施例,其中,还包括:响应于删除脚本信息的脚本更新指令,检测所述脚本信息对应的控件信息是否与所述操作步骤表中的其他操作步骤信息关联;当检测到所述脚本信息对应的控件信息没有与其他操作步骤信息关联时,删除所述脚本信息对应的控件信息在所述控件表中的记录;以及当检测到所述脚本信息对应的控件信息与其他操作步骤信息关联时,保留所述脚本信息对应的控件信息在所述控件表中的记录。
根据本申请的实施例,其中,还包括:响应于修改脚本信息中的控件信息的脚本更新指令,将所述脚本信息对应的操作步骤信息关联到修改后的脚本信息对应的控件信息。
根据本申请的实施例,其中,还包括:当所述修改后的脚本信息对应的控件信息在所述控件表中不存在时,在所述控件表中生成对应的记录。
根据本申请的实施例,其中,还包括:检测所述修改前的脚本信息对应的控件信息是否与所述操作步骤表中的其他操作步骤信息关联;当检测到所述修改前的脚本信息对应的控件信息没有与其他操作步骤信息关联时,删除所述修改前的脚本信息对应的控件信息在所述控件表中的记录;以及当检测到所述修改前的脚本信息对应的控件信息与其他操作步骤信息关联时,保留所述修改前的脚本信息对应的控件信息在所述控件表中的记录。
根据本申请的实施例,其中,还包括:响应于修改所述被测页面中的控件的属性信息的控件属性更新命令,修改所述控件信息列表中的对应控件信息。
根据本申请的另一个方面,还提供一种用于更新被测控件库的装置,其特征在于,包括:获取模块,用于获取被测页面的控件信息、页面信息和操作步骤信息;查询模块,用于依据所述页面信息查询得到所述被测页面在被测控件库中的控件信息列表;生成模块,用于当检测到所述控件信息在所述控件信息列表中不存在时,在所述控件信息列表中生成与所述控件信息、页面信息和操作步骤信息对应的记录;以及当检测到所述控件信息在所述控件信息列表中存在时,保留所述控件信息在所述控件信息列表中的原有记录。
根据本申请的实施例,其中,所述生成与所述控件信息、页面信息和操作步骤信息对应的记录的步骤包括:将所述控件信息、页面信息和操作步骤信息分别保存在所述控件信息列表中的控件表、页面表和操作步骤表中,并在所述控件信息、页面信息和操作步骤信息之间进行关联。
根据本申请的实施例,其中,在所述控件信息、页面信息和操作步骤信息之间进行关联的步骤包括:将所述控件信息与所述页面信息关联;以及将所述控件信息与所述操作步骤信息关联。
根据本申请的实施例,其中,还包括删除模块,所述删除模块用于:响应于删除脚本信息的脚本更新指令,检测所述脚本信息对应的控件信息是否与所述操作步骤表中的其他操作步骤信息关联;当检测到所述脚本信息对应的控件信息没有与其他操作步骤信息关联时,删除所述脚本信息对应的控件信息在所述控件表中的记录;以及当检测到所述脚本信息对应的控件信息与其他操作步骤信息关联时,保留所述脚本信息对应的控件信息在所述控件表中的记录。
根据本申请的实施例,其中,还包括修改模块,所述修改模块用于:响应于修改脚本信息中的控件信息的脚本更新指令,将所述脚本信息对应的操作步骤信息关联到修改后的脚本信息对应的控件信息。
根据本申请的实施例,其中,所述修改模块还用于:当所述修改后的脚本信息对应的控件信息在所述控件表中不存在时,在所述控件表中生成对应的记录。
根据本申请的实施例,其中,所述修改模块还用于:检测所述修改前的脚本信息对应的控件信息是否与所述操作步骤表中的其他操作步骤信息关联;当检测到所述修改前的脚本信息对应的控件信息没有与其他操作步骤信息关联时,删除所述修改前的脚本信息对应的控件信息在所述控件表中的记录;以及当检测到所述修改前的脚本信息对应的控件信息与其他操作步骤信息关联时,保留所述修改前的脚本信息对应的控件信息在所述控件表中的记录。
根据本申请的实施例,其中,还包括:控件属性更新模块,所述控件属性更新模块用于:响应于修改所述被测页面中的控件的属性信息的控件属性更新命令,修改所述控件信息列表中的对应控件信息。
根据本申请的技术方案,在服务器侧的被测控件库中对控件信息、页面信息和操作步骤信息进行分别存储,并建立它们之间的关联关系,使得确保被测控件库中控件定位信息的唯一性。并且,在脚本信息输入过程中,获取被测页面的控件信息并将其与服务器侧的被测控件库中的记录进行比对,从而获知是否需要在被测控件库中针对获取到的该控件信息生成相关信息记录。另外,在对脚本信息进行删除和修改的操作时,通过相关控制逻辑也可以完成对被测控件库的自动删除和修改。由上述操作可以达到对被测控件库进行自动更新的目的,大大节约了人力资源和系统资源。并且,可以达到对被测控件库进行实时更新的目的,从而实时精准地反映对被测控件的覆盖程度,有效地帮助测试人员提高UI自动化脚本的质量。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的用于更新被测控件库的方法的流程图;
图2是根据本申请实施例的删除控件信息记录的操作的流程图;
图3是根据本申请实施例的修改控件信息记录的操作的流程图;
图4是根据本申请实施例的用于更新被测控件库的装置的示意结构框图;
图5是根据本申请另一实施例的用于更新被测控件库的装置的示意结构框图;以及
图6示出了根据本申请实施例的被测控件库中的控件信息列表的示意结构图。
具体实施方式
如上面提到的,本申请的主要思想在于,在服务器侧的被测控件库中对控件信息、页面信息和操作步骤信息进行存储,并建立它们之间的关联关系,使得确保被测控件库中控件定位信息的唯一性。在脚本信息输入过程中,可以通过获取被测页面的控件信息并将其与服务器侧的被测控件库中的记录进行比对,来获知是否需要在被测控件库中针对获取到的该控件信息生成相关信息记录。在对脚本信息进行删除和修改的操作时,也可以通过相关控制逻辑来完成对被测控件库的自动删除和修改。
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参考图1,图1是根据本申请实施例的用于更新被测控件库的方法的流程图。
当测试人员对某个页面进行测试时,就需要进行测试脚本的编写,在脚本中会对被测页面中的一些控件进行相关操作以达到测试的目的。在本申请的实施例中可以采用录制的方式进行脚本信息的输入工作。当然,脚本信息的输入也不局限于此方式,本申请对此不做限制,对于以各种不同的方式进行脚本信息输入而获取到相关脚本信息的方案都属于本申请保护范围。
在本申请的实施例中,可以在脚本输入端(例如录制工具)输入脚本信息时完成对被测控件库的自动更新。在本申请的其它实施例中,可以在服务器端获取到脚本信息时完成对被测控件库的自动更新。也就是,本申请的方法既可以在脚本输入端(例如录制端)实现,也可以在服务器端(诸如脚本管理服务器)实现。
具体而言,在步骤S101处,获取被测页面的控件信息、页面信息和操作步骤信息。
优选地,可以在脚本信息输入过程中获取被测页面的控件信息、页面信息和操作步骤信息。当然,也可以在脚本信息输入完成之后再获取被测页面的控件信息、页面信息和操作步骤信息。
根据本申请的一个实施例,可以通过录制工具进行脚本信息的录制输入,并且在录制过程中,录制工具可以记录测试人员的操作,具体而言可以获取并记录被测页面的控件信息、页面信息和操作步骤信息以及它们之间的关联关系。例如可以使用json方式记录数据如下:
其中,page部分表示页面信息,steps部分表示操作步骤信息,Element部分表示控件信息。更具体而言,可以通过url定位被测页面,通过控件信息中的名称(Element Name)和动作(action)可以知道对什么控件进行了什么操作。获取得到相关数据后,流程进行到步骤S102。
在步骤S102处,依据步骤S101处获取到的页面信息查询得到被测页面在被测控件库中的控件信息列表。
根据本申请实施例,可以在服务器端的被测控件库中的控件信息列表中存储被测页面的控件和与之相关联的页面和操作步骤的信息并将这些信息进行关联。在一个具体实施例中,控件信息列表可以包括用于存储控件信息的控件表、用于存储页面信息的页面表和用于存储操作步骤信息的操作步骤表,并且可以在这些表中存储反映所存储的控件信息、页面信息和操作步骤信息之间关联关系的参数,由此确保被测控件库中控件定位信息的唯一性。图6示出了根据本申请实施例的被测控件库中的控件信息列表的示意图。
更具体而言,在本申请的一个具体实施例中,控件表可以包括标识部分和属性部分,该标识部分可以包括用于唯一地标识控件的控件标识,该属性部分可以包括与之关联的页面的页面标识和操作步骤标识。该属性部分还可以包括以下信息中的一种或多种:创建时间、修改时间、版本、数据参数、状态。
在本申请的一个具体实施例中,页面表可以包括标识部分和属性部分,该标识部分可以包括用于唯一地标识页面的页面标识,该属性部分可以包括以下信息中的一种或多种:创建时间、修改时间、版本、URL、名称、描述、状态。
在本申请的一个具体实施例中,操作步骤表可以包括标识部分和属性部分,该标识部分可以包括用于唯一地标识操作步骤的操作步骤标识,该属性部分可以包括与之关联的控件的控件标识和动作内容。该属性部分还可以包括以下信息中的一种或多种:创建时间、修改时间、版本、数据参数、状态、序号。
依据步骤S101处获取到的页面信息,可以对服务器端的被测控件库中的控件信息列表进行查询,例如通过获取到的页面URL可以在控件信息列表的页面表中找到对应的被测页面,然后根据被测页面信息例如页面标识可以从控件表中找到与被测页面(页面标识)关联的一个或多个控件,并且根据控件信息例如控件标识可以从步骤信息表中可以找到与该一个或多个控件关联的操作步骤,从而得到与被测页面对应的控件信息列表的内容。例如依据页面信息“Page1”查询得到所有与“Page1”对应的控件,这其中就可能包括“控件A”、“控件B”、“控件C”等等。接着流程进行到步骤S103。
在步骤S103处,检测在步骤S101中获取到的控件信息在控件信息列表中是否存在。例如,检测获取到的“控件A”在控件信息列表中是否已经存在。
根据本申请的一个实施例,可以通过将控件A的标识信息以及属性信息分别与控件表中的控件的标识信息和属性信息(对应于上述标识部分和属性部分)进行对比,并且当标识信息和属性信息都一致时,确定该控件A已经存在于控件信息列表中,而当标识信息和属性信息中的任一参数不一致时,确定该控件A并不存在于控件信息列表中。
根据本申请的另一个实施例,例如在通过录制方式输入脚本信息的情况下,录制端可以将获取到的控件信息列表中的控件信息以DOM(DocumentObject Model,文件对象模型)数据的形式呈现,当需要检测例如控件A在控件信息列表中是否存在时,可以通过查询控件信息在DOM数据中是否存在,即完成对控件信息的检测。
这里需要指出的是,除了上述实施例中所列出的方式之外,还可以通过本领域已知的或者未来开发的其它任意合适方式来检测控件信息的存在。
在步骤S104处,当检测到在步骤S101中获取到的控件信息在控件信息列表中不存在时,在控件信息列表中生成与所述控件信息、页面信息和操作步骤信息对应的记录。
在本申请的一个实施例中,将在步骤S101处获取到的控件信息、页面信息和操作步骤信息分别保存在控件信息列表中的控件表、页面表和操作步骤表中,并在控件信息、页面信息和操作步骤信息之间进行关联。更具体而言,将控件信息与页面信息关联并将控件信息与操作步骤信息关联。在一种具体实施例中,这种关联可以通过在控件表、页面表和操作步骤表中保存关联参数实现,例如,在控件表中可以保存有与该控件关联的页面标识信息和操作步骤信息,而在操作步骤表中可以保存有与该操作步骤关联的控件标识信息。本申请并不限于上述关联方式,而是可以采用本领域已知或未来开发的任意合适关联方式来将控件信息、页面信息和操作步骤信息三者关联。
在步骤S105处,当检测到在步骤S101中获取到的控件信息在控件信息列表中存在时,保留控件信息在控件信息列表中的原有记录。也就是,不对控件信息列表作任何处理。
通过上述方法,可以根据获取到的被测页面上的被测控件信息来自动且实时地生成或更新被测控件库,从而实时反映当前测试脚本对被测页面上的控件的覆盖程度。
需要说明的是,在上述实施例中,控件信息列表是使用三个表分别存储页面信息、控件信息以及操作步骤信息,并通过参数将它们关联,但本申请并不限于此。应当明白的是,可以使用本领域已知或未来开发的任意合适方式来存储页面信息、控件信息以及操作步骤信息以及对它们进行关联。例如,可以在一个表中以控件信息作为索引来存储与之关联的页面信息和操作步骤信息。
另外,上面的实施例是以按照录制方式输入脚本信息作为示例进行描述,但本申请对脚本信息的输入方式并不做任何限制。根据本申请的其它实施例,还可以通过非录制的方式输入脚本信息,例如手动填写、人工选择等。
在针对被测页面的自动化测试脚本生成之后,当用户需要对脚本语句信息进行修改以更新脚本信息时,根据本申请的方法也可以对被测控件库进行实时更新,以实时反映当前测试脚本对被测页面上的控件的覆盖程度。下面结合图2和图3对此进行具体描述。
参照图2,图2是根据本申请实施例的删除控件信息记录的操作的流程图。
在自动化脚本生成之后,根据用户需求的不同,当需要对脚本信息进行更新例如删除脚本信息时,也就是,当接收到用于删除脚本信息的脚本更新指令时,根据本申请的方法可以相应地自动更新被测控件库。
响应于删除脚本信息的脚本更新指令,如图2所示,在步骤S201处,可以检测所述脚本信息对应的控件信息是否与操作步骤表中的其他操作步骤信息关联。
例如脚本更新指令为删除针对被测页面“Page1”的测试脚本语句“控件A.click(点击控件A)”。此时如果在其它操作步骤中也没有涉及到控件A,则控件A就变为冗余的控件,进而可以从被测控件库中将控件A删除。另一方面,如果在其它操作步骤中还对控件A操作,则不需要将控件A删除。因此,检测控件A是否与被测控件库的操作步骤表中的其他操作步骤信息关联,在一个实施例中,可以检查在操作步骤表的其它操作步骤信息中的控件ID是否包括控件A。
接下来,在步骤S202处,当检测到脚本信息对应的控件信息没有与其它操作步骤信息关联时,删除该控件信息在被测控件库的控件表中的记录。
在步骤S203处,当检测到脚本信息对应的控件信息与其它操作步骤信息关联时,则保留该控件信息在被测控件库的控件表中的记录。
由此,通过本申请的方法可以响应于删除脚本信息的脚本更新指令来实时更新被测控件库中的被测控件信息。
在本申请的另一实施例中,在对脚本信息中的控件信息进行修改时也可以对被测控件库进行更新。针对这种情况下的被测控件库的更新,存在两个方面的操作。
一方面,响应于修改脚本信息中的控件信息的脚本更新指令,可以将所述脚本信息对应的操作步骤信息关联到修改后的脚本信息对应的控件信息。例如,当前脚本信息为“控件A.click(点击控件A)”,修改后的脚本信息为“控件B.click(点击控件B)”。则响应于该脚本信息的修改,可以将被测控件库中的操作步骤信息“点击”与控件B关联。进一步而言,可以将操作步骤表中的控件ID修改为控件B,并且将控件表中的操作步骤ID修改为“点击”的操作步骤ID。
图3示出了根据本申请实施例的修改控件信息记录的操作的流程图。如图3所示,在步骤S301处,可以检测修改后的脚本信息对应的控件信息在被测控件库的控件表中是否存在。
接下来,在步骤S302处,当检测到修改后的脚本信息对应的控件信息存在于控件表中时,将修改前的脚本信息对应的操作步骤信息关联到修改后的脚本信息对应的控件信息。如上所述,具体地可以通过修改被测控件库的操作步骤表和控件表的对应参数来进行关联。这里不再赘述。
在步骤S303处,当检测到修改后的脚本信息对应的控件信息在控件表中不存在时,在控件表中生成对应的记录。
在控件表中生成与修改后的脚本信息中涉及的控件信息对应的记录之后,将修改前的脚本信息对应的操作步骤信息关联到该控件信息。
另一方面,响应于修改脚本信息中的控件信息的脚本更新指令,需要判断修改前的脚本信息对应的控件信息是否变得冗余,进而实现被测控件库的精准且实时的更新。
具体而言,参照图3,在步骤S304处,可以检测修改前的脚本信息对应的控件信息是否与操作步骤表中的其他操作步骤信息关联。
接下来,在步骤S305处,当检测到修改前的脚本信息对应的控件信息没有与其他操作步骤信息关联时,删除修改前的脚本信息对应的控件信息在控件表中的记录。
在步骤S306处,当检测到修改前的脚本信息对应的控件信息与其他操作步骤信息关联时,保留修改前的脚本信息对应的控件信息在控件表中的记录。
由此,通过上述操作可以响应于修改脚本信息中的控件信息的脚本更新指令来自动、实时且精准地更新被测控件库。
另外需要说明的是,上述两方面的操作可以同时进行也可以先后进行,本申请对此不做限制。
除了上述根据脚本信息的更新来自动更新被测控件库之外,还可以根据控件本身的属性信息的更新来更新被测控件库中的对应控件信息。
根据本申请的一个实施例,更新被测控件库的方法还可以包括响应于修改所述被测页面中的控件的属性信息的控件属性更新命令,修改所述控件信息列表中的对应控件信息。例如,开发人员在页面开发过程中只是对页面中的控件的属性信息进行修改,则响应于这样的控件属性更新命令,可以仅修改或更新该控件在控件信息列表的控件表中的属性部分,其他与控件信息对应的操作步骤信息或其他对应关系都不变。如上面提到的,属性信息可以包括:创建时间、修改时间、版本、数据参数、状态等。在本实施例中,可以依据控件的属性信息修改的内容,在被测控件库的控件表中对原有控件信息的记录中的属性部分进行对应修改或替换。
通过以上响应于脚本信息更新指令的删除和修改控件信息记录的操作以及响应于控件属性更新指令的更新控件信息记录的操作可以完成在脚本信息维护以及控件维护过程中对被测控件库的更新,结合脚本信息输入过程中新建控件信息记录的操作,能达到在测试过程中对被测控件库进行自动更新的效果,而不需要像现有技术中那样对被测控件库中的控件信息进行手动新增、删除和修改。同时保证了被测控件库中的控件信息为单一不重复记录。
与上述用于更新被测控件库的方法类似,本申请还提供一种用于更新被测控件库的装置。
参照图4,图4是根据本申请实施例的用于更新被测控件库的装置的结构框图。
如图4所示,该装置可以包括获取模块410、查询模块420以及生成模块430。
具体而言,获取模块410可以用于获取被测页面的控件信息、页面信息和操作步骤信息。
查询模块420可以用于依据获取模块410获取到的页面信息查询得到被测页面在被测控件库中的控件信息列表。
生成模块430可以用于当检测到控件信息在控件信息列表中存在时,保留控件信息在控件信息列表中的原有记录。生成模块430还可以用于当检测到控件信息在控件信息列表中不存在时,在控件信息列表中生成与控件信息、页面信息和操作步骤信息对应的记录。
更具体而言,生成模块430可以将获取模块410获取到的控件信息与查询模块420查询到的控件信息列表进行对比,如果在控件信息列表中没有存在该控件信息,则在被测控件库中生成所述控件信息的相关记录,即将获取模块410获取到的控件信息、页面信息和操作步骤信息分别保存在被测控件库的控件信息列表中。
在一种具体实施例中,控件信息列表可以包括用于存储控件信息的控件表、用于存储页面信息的页面表和用于存储操作步骤信息的操作步骤表,并且当需要生成控件信息的相关记录时,在控件表中存储所述控件信息,在操作步骤表中存储所述控件信息对应的操作步骤信息,在页面表中存储所述控件信息对应的页面信息,并且在所存储的控件信息、页面信息和操作步骤信息之间进行关联。具体地,可以将控件信息与页面信息关联并且将控件信息与操作步骤信息关联。图6示出了根据本申请实施例的被测控件库中的控件信息列表的示意图。
在上述实施例中,控件信息列表是使用三个表分别存储页面信息、控件信息以及操作步骤信息,并通过参数将它们关联,但本申请并不限于此。应当明白的是,可以使用本领域已知或未来开发的任意合适方式来存储页面信息、控件信息以及操作步骤信息以及对它们进行关联。例如,可以在一个表中以控件信息作为索引来存储与之关联的页面信息和操作步骤信息。
图5是根据本申请另一实施例的用于更新被测控件库的装置的结构框图。如图5所示,该装置可以包括获取模块510、查询模块520、生成模块530、删除模块540、修改模块550和控件属性更新模块560。
其中,获取模块510、查询模块520、生成模块530与图4中的对应装置类似,这里不再重复。下面仅对删除模块540、修改模块550和控件属性更新模块560进行详细描述。
删除模块540可以用于响应于删除脚本信息的脚本更新指令,检测脚本信息对应的控件信息是否与被测控件库的操作步骤表中的其他操作步骤信息关联。当检测到脚本信息对应的控件信息没有与其他操作步骤信息关联时,删除模块540可以删除脚本信息对应的控件信息在被测控件库的控件表中的记录。当检测到脚本信息对应的控件信息与其他操作步骤信息关联时,删除模块540可以保留脚本信息对应的控件信息在被测控件库的控件表中的记录。
修改模块550可以用于响应于修改脚本信息中的控件信息的脚本更新指令,将脚本信息对应的操作步骤信息关联到修改后的脚本信息对应的控件信息。当修改后的脚本信息对应的控件信息在控件表中不存在时,修改模块550还可以用于在控件表中生成对应的记录,并且之后将脚本信息对应的操作步骤信息关联到该控件信息记录。
修改模块550还可以用于检测修改前的脚本信息对应的控件信息是否与操作步骤表中的其他操作步骤信息关联。当检测到修改前的脚本信息对应的控件信息没有与其他操作步骤信息关联时,修改模块550还可以删除修改前的脚本信息对应的控件信息在控件表中的记录。当检测到修改前的脚本信息对应的控件信息与其他操作步骤信息关联时,修改模块550还可以保留修改前的脚本信息对应的控件信息在控件表中的记录。
控件属性更新模块560可以用于响应于修改所述被测页面中的控件的属性信息的控件属性更新命令,修改所述控件信息列表中的对应控件信息。
由于本申请实施例的装置所实现的功能基本相应于前述图1-3所示的方法实施例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。
与上述用于更新被测控件库的方法类似,通过本申请的用于更新被测控件库的装置同样可以自动且实时地更新被测控件库,从而实时反映当前测试脚本对被测页面上的控件的覆盖程度。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块或单元。一般地,程序模块或单元可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。一般来说,程序模块或单元可以由软件、硬件或两者的结合来实现。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块或单元可以位于包括存储设备在内的本地和远程计算机存储介质中。
最后,还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其主要思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包括在本申请的权利要求范围之内。综上所述,本说明书内容不应理解为对本申请的限制。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
以上所述仅为本申请的实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (16)
1.一种用于更新被测控件库的方法,其特征在于,包括:
获取被测页面的控件信息、页面信息和操作步骤信息;
依据所述页面信息查询得到所述被测页面在被测控件库中的控件信息列表;
当检测到所述控件信息在所述控件信息列表中不存在时,在所述控件信息列表中生成与所述控件信息、页面信息和操作步骤信息对应的记录;以及
当检测到所述控件信息在所述控件信息列表中存在时,保留所述控件信息在所述控件信息列表中的原有记录。
2.根据权利要求1所述的方法,其特征在于,所述生成与所述控件信息、页面信息和操作步骤信息对应的记录的步骤包括:
将所述控件信息、页面信息和操作步骤信息分别保存在所述控件信息列表中的控件表、页面表和操作步骤表中,并在所述控件信息、页面信息和操作步骤信息之间进行关联。
3.根据权利要求2所述的方法,其特征在于,在所述控件信息、页面信息和操作步骤信息之间进行关联的步骤包括:
将所述控件信息与所述页面信息关联;以及
将所述控件信息与所述操作步骤信息关联。
4.根据权利要求1-3中任一项所述的方法,其特征在于,还包括:
响应于删除脚本信息的脚本更新指令,检测所述脚本信息对应的控件信息是否与所述操作步骤表中的其他操作步骤信息关联;
当检测到所述脚本信息对应的控件信息没有与其他操作步骤信息关联时,删除所述脚本信息对应的控件信息在所述控件表中的记录;以及
当检测到所述脚本信息对应的控件信息与其他操作步骤信息关联时,保留所述脚本信息对应的控件信息在所述控件表中的记录。
5.根据权利要求1-3中任一项所述的方法,其特征在于,还包括:
响应于修改脚本信息中的控件信息的脚本更新指令,将所述脚本信息对应的操作步骤信息关联到修改后的脚本信息对应的控件信息。
6.根据权利要求5所述的方法,其特征在于,还包括:
当所述修改后的脚本信息对应的控件信息在所述控件表中不存在时,在所述控件表中生成对应的记录。
7.根据权利要求5所述的方法,其特征在于,还包括:
检测所述修改前的脚本信息对应的控件信息是否与所述操作步骤表中的其他操作步骤信息关联;
当检测到所述修改前的脚本信息对应的控件信息没有与其他操作步骤信息关联时,删除所述修改前的脚本信息对应的控件信息在所述控件表中的记录;以及
当检测到所述修改前的脚本信息对应的控件信息与其他操作步骤信息关联时,保留所述修改前的脚本信息对应的控件信息在所述控件表中的记录。
8.根据权利要求1-3中任一项所述的方法,其特征在于,还包括:
响应于修改所述被测页面中的控件的属性信息的控件属性更新命令,修改所述控件信息列表中的对应控件信息。
9.一种用于更新被测控件库的装置,其特征在于,包括:
获取模块,用于获取被测页面的控件信息、页面信息和操作步骤信息;
查询模块,用于依据所述页面信息查询得到所述被测页面在被测控件库中的控件信息列表;
生成模块,用于当检测到所述控件信息在所述控件信息列表中不存在时,在所述控件信息列表中生成与所述控件信息、页面信息和操作步骤信息对应的记录;以及当检测到所述控件信息在所述控件信息列表中存在时,保留所述控件信息在所述控件信息列表中的原有记录。
10.根据权利要求9所述的装置,其特征在于,所述生成与所述控件信息、页面信息和操作步骤信息对应的记录的步骤包括:
将所述控件信息、页面信息和操作步骤信息分别保存在所述控件信息列表中的控件表、页面表和操作步骤表中,并在所述控件信息、页面信息和操作步骤信息之间进行关联。
11.根据权利要求10所述的装置,其特征在于,在所述控件信息、页面信息和操作步骤信息之间进行关联的步骤包括:
将所述控件信息与所述页面信息关联;以及
将所述控件信息与所述操作步骤信息关联。
12.根据权利要求9-11中任一项所述的装置,其特征在于,还包括删除模块,所述删除模块用于:
响应于删除脚本信息的脚本更新指令,检测所述脚本信息对应的控件信息是否与所述操作步骤表中的其他操作步骤信息关联;
当检测到所述脚本信息对应的控件信息没有与其他操作步骤信息关联时,删除所述脚本信息对应的控件信息在所述控件表中的记录;以及
当检测到所述脚本信息对应的控件信息与其他操作步骤信息关联时,保留所述脚本信息对应的控件信息在所述控件表中的记录。
13.根据权利要求9-11中任一项所述的装置,其特征在于,还包括修改模块,所述修改模块用于:
响应于修改脚本信息中的控件信息的脚本更新指令,将所述脚本信息对应的操作步骤信息关联到修改后的脚本信息对应的控件信息。
14.根据权利要求13所述的装置,其特征在于,所述修改模块还用于:
当所述修改后的脚本信息对应的控件信息在所述控件表中不存在时,在所述控件表中生成对应的记录。
15.根据权利要求13所述的装置,其特征在于,所述修改模块还用于:
检测所述修改前的脚本信息对应的控件信息是否与所述操作步骤表中的其他操作步骤信息关联;
当检测到所述修改前的脚本信息对应的控件信息没有与其他操作步骤信息关联时,删除所述修改前的脚本信息对应的控件信息在所述控件表中的记录;以及
当检测到所述修改前的脚本信息对应的控件信息与其他操作步骤信息关联时,保留所述修改前的脚本信息对应的控件信息在所述控件表中的记录。
16.根据权利要求9-11中任一项所述的装置,其特征在于,还包括:控件属性更新模块,所述控件属性更新模块用于:
响应于修改所述被测页面中的控件的属性信息的控件属性更新命令,修改所述控件信息列表中的对应控件信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310183156.3A CN104166541B (zh) | 2013-05-17 | 2013-05-17 | 用于更新被测控件库的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310183156.3A CN104166541B (zh) | 2013-05-17 | 2013-05-17 | 用于更新被测控件库的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104166541A true CN104166541A (zh) | 2014-11-26 |
CN104166541B CN104166541B (zh) | 2018-01-19 |
Family
ID=51910376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310183156.3A Active CN104166541B (zh) | 2013-05-17 | 2013-05-17 | 用于更新被测控件库的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104166541B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104866182A (zh) * | 2015-02-16 | 2015-08-26 | 锤子软件(北京)有限公司 | 一种图片数据的移动方法及移动终端 |
CN108153641A (zh) * | 2016-12-05 | 2018-06-12 | 北京国双科技有限公司 | 一种无埋点部署监测方法及相关装置 |
CN108664382A (zh) * | 2017-03-28 | 2018-10-16 | 上海合福信息科技有限公司 | 一种控件验证方法及软件自动测试方法 |
CN110554951A (zh) * | 2018-05-31 | 2019-12-10 | 北京京东尚科信息技术有限公司 | 一种埋点管理的方法和装置 |
CN111858331A (zh) * | 2020-07-16 | 2020-10-30 | 安徽听见科技有限公司 | 前端控件覆盖度检测方法、装置以及设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049369B (zh) * | 2011-10-14 | 2016-03-09 | 阿里巴巴集团控股有限公司 | 一种自动化测试方法及系统 |
CN102541732B (zh) * | 2011-12-23 | 2015-05-27 | 中国移动(深圳)有限公司 | 一种构建Web自动化测试框架的方法 |
CN103064789B (zh) * | 2013-01-11 | 2017-08-04 | 上海斐讯数据通信技术有限公司 | 一种软件控制的自动化测试方法 |
-
2013
- 2013-05-17 CN CN201310183156.3A patent/CN104166541B/zh active Active
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104866182A (zh) * | 2015-02-16 | 2015-08-26 | 锤子软件(北京)有限公司 | 一种图片数据的移动方法及移动终端 |
CN104866206A (zh) * | 2015-02-16 | 2015-08-26 | 锤子软件(北京)有限公司 | 一种图片数据的移动方法及移动终端 |
WO2016131207A1 (zh) * | 2015-02-16 | 2016-08-25 | 锤子软件(北京)有限公司 | 一种控制方法、控制装置及电子设备 |
CN104866182B (zh) * | 2015-02-16 | 2018-05-18 | 锤子软件(北京)有限公司 | 一种图片数据的移动方法及移动终端 |
CN108153641A (zh) * | 2016-12-05 | 2018-06-12 | 北京国双科技有限公司 | 一种无埋点部署监测方法及相关装置 |
WO2018103532A1 (zh) * | 2016-12-05 | 2018-06-14 | 北京国双科技有限公司 | 一种无埋点部署监测方法及相关装置 |
CN108664382A (zh) * | 2017-03-28 | 2018-10-16 | 上海合福信息科技有限公司 | 一种控件验证方法及软件自动测试方法 |
CN108664382B (zh) * | 2017-03-28 | 2022-02-25 | 上海合福信息科技有限公司 | 一种控件验证方法及软件自动测试方法 |
CN110554951A (zh) * | 2018-05-31 | 2019-12-10 | 北京京东尚科信息技术有限公司 | 一种埋点管理的方法和装置 |
CN111858331A (zh) * | 2020-07-16 | 2020-10-30 | 安徽听见科技有限公司 | 前端控件覆盖度检测方法、装置以及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104166541B (zh) | 2018-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10324830B2 (en) | Conditional upgrade and installation of software based on risk-based validation | |
CN102067106B (zh) | 通过确定子节点和父节点的度量值进行的数据质量跟踪 | |
CN105144088A (zh) | 元数据与源代码的关联以及基于其的应用和服务 | |
CN104915595B (zh) | 云平台虚拟化漏洞修复的方法及装置 | |
US8311794B2 (en) | Testing executable logic | |
US20190095319A1 (en) | Generating test scripts for testing a network-based application | |
AU2014202907A1 (en) | Migration Assessment for Cloud Computing Platforms | |
US11334472B2 (en) | Automated testing for metadata-driven custom applications | |
CN104424093A (zh) | 一种兼容性测试方法及系统 | |
JP2017224277A (ja) | モデル駆動手法による自動化されたユーザインターフェース(ui)テストのための方法およびシステム | |
CN104166541A (zh) | 用于更新被测控件库的方法和装置 | |
CN103425584A (zh) | 基于Java字节码的大型应用回归测试信息处理方法 | |
CN110032388A (zh) | 一种增量文件的构建、发布、下载方法及装置 | |
CN104932973A (zh) | 一种版本兼容测试方法和装置 | |
WO2019037418A1 (zh) | 代码管理方法、装置、计算机设备和计算机可读存储介质 | |
CN104423961A (zh) | 一种生成测试脚本的方法及系统 | |
US10185559B2 (en) | Documentation notification | |
CN106407123B (zh) | 一种服务器接口的自动化测试方法及装置 | |
CN115658452A (zh) | 埋点校验方法、埋点校验装置、可读存储介质、电子设备 | |
CN114238085A (zh) | 接口测试方法、装置、计算机设备、存储介质 | |
US20220342802A1 (en) | Automated testing for metadata-driven custom applications | |
CN112835779A (zh) | 测试用例确定方法、装置、计算机设备 | |
US20130166603A1 (en) | Consumer-related specialization of metadata models based on a template-projection approach | |
US11468249B2 (en) | Linking an entity relating to product development to a document portion | |
Weise et al. | Implementation issues in optimization algorithms: do they matter? |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240314 Address after: # 04-08, Lai Zanda Building 1, 51 Belarusian Road, Singapore Patentee after: Alibaba Singapore Holdings Ltd. Country or region after: Singapore Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands Patentee before: ALIBABA GROUP HOLDING Ltd. Country or region before: Cayman Islands |
|
TR01 | Transfer of patent right |