CN109840197A - 一种自动化测试对象库的系统及方法 - Google Patents
一种自动化测试对象库的系统及方法 Download PDFInfo
- Publication number
- CN109840197A CN109840197A CN201810422189.1A CN201810422189A CN109840197A CN 109840197 A CN109840197 A CN 109840197A CN 201810422189 A CN201810422189 A CN 201810422189A CN 109840197 A CN109840197 A CN 109840197A
- Authority
- CN
- China
- Prior art keywords
- library
- test
- control
- test object
- user
- 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
- 238000012360 testing method Methods 0.000 title claims abstract description 263
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000012986 modification Methods 0.000 claims abstract description 11
- 230000004048 modification Effects 0.000 claims abstract description 11
- 238000011017 operating method Methods 0.000 claims abstract description 6
- 238000010200 validation analysis Methods 0.000 claims description 16
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 239000000126 substance Substances 0.000 claims description 3
- 238000007792 addition Methods 0.000 description 25
- 238000007726 management method Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 11
- 238000013461 design Methods 0.000 description 8
- 238000011161 development Methods 0.000 description 8
- 238000012795 verification Methods 0.000 description 8
- 239000008186 active pharmaceutical agent Substances 0.000 description 7
- 238000010276 construction Methods 0.000 description 4
- 241000406668 Loxodonta cyclotis Species 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 230000007257 malfunction Effects 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- BUGBHKTXTAQXES-UHFFFAOYSA-N Selenium Chemical compound [Se] BUGBHKTXTAQXES-UHFFFAOYSA-N 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 229910052711 selenium Inorganic materials 0.000 description 1
- 239000011669 selenium Substances 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种自动化测试对象库的方法,其中工作方法包括以下操作步骤:A)、用户新建一个对象库,用于存储某个被测应用上的测试对象;B)、用户选择“侦测控件”逐一添加测试对象或“批量侦测控件”界面批量添加控件方式中的任意一种;C)、修改推荐的测试对象属性和推荐的对象,即添加测试对象时,用户对推荐的测试对象和推荐的测试对象属性做修改,然后再添加到测试对象库;D)、将上一步的测试对象添加到对象库;E)、编辑测试对象库;F)、对已在对象库中的测试对象做验证或高亮方式中的任意一种;G)、将某个对象生成代码,插入到用户的测试脚本编辑器中;H)、完成。本发明实现了各种便捷的测试对象管理,能够使自动化脚本开发便捷高效。
Description
技术领域
本发明属于计算机软件测试技术领域,特别涉及一种自动化测试对象库的系统及方法。
背景技术
目前,在自动化测试中,通常通过定义一组控件属性(例如控件ID、显示名称、XPath或AutomationID等属性)来定位控件。当多个测试场景的测试代码会对某被测应用界面上的一组控件做类似操作,最直接的方式是脚本每次操作控件的代码都使用这些属性。但是这样势必有很多重复的属性定义分布在脚本的不同地方,这样不利于维护和更新控件属性。使用一个专用的存储库来管理这些测试属性是一个优化后的解决方法。需要多个属性的组合定位一个控件时,通常将属性存储在一个对象中,简称测试对象。存储这些测试对象的库可称为测试对象库,或简称对象库。流行的测试软件QTP/UFT就可以定义这样一个对象库。
测试对象:在自动化测试脚本中,测试函数库构造的对象,用于识别被测应用中某个控件,它和控件一般是一一对应的关系。它包含了一组控件属性,用于描述和定位这个控件,以及一组操作函数,对这些函数的调用会导致对关联控件上的相应操作。
测试对象库:为便于管理和使用,将测试对象的描述信息集中放到一个文件中管理,自动化测试工具中的对象库管理程序对这个文件提供了检索、修改、验证的功能。这个文件就是测试对象库,简称为“对象库”。自动化测试API运行时可读取对象库中的测试对象,然后操作相应的被测应用控件。
敏捷开发已经成为主流的开发模式。其中持续集成要求软件快速、频繁发布新版本,这对自动化测试和自动化测试工具软件带来挑战;如何设计一种新的测试代码开发工具,如何能够在设计时就显著降低脚本出错的可能性且无需在运行时再修正相关的语法错误,如何提高了开发者的生产率并实现各种便捷的测试对象管理,如何方便快速更新和验证测试对象库,如何适应敏捷开发的需要,成为急需解决的问题。
发明内容
本发明的目的是要解决上述技术问题。
一种自动化测试对象库的系统,包括测试对象库管理器,其特征在于:所述的测试对象库管理器与对象库文件双向连接,测试对象库管理器与被测应用连接并形成闭环,测试对象库管理器与用户代码连接;
被测应用为界面控件,界面控件包括窗体控件、按钮控件、文本框控件、列表控件等各类界面控件;
测试对象库管理器包括对象模型管理器、控件侦测器,控件侦测器依次与测试对象生成器、对象批量添加模块、对象库模型连接;
对象模型管理器分三路输出,第一路与对象属性编辑器连接,第二路与对象库模型连接,第三路通过代码生成器与用户代码连接,代码生成器被对象模型管理器调用,将某个测试对象生成代码片段,插到用户的脚本中;
对象库模型分三路输出,第一路通过控件识别器与被测应用连接,第二路通过对象批量验证模块与控件识别器连接,第三路通过序列化模块与对象库文件双向连接。
一种自动化测试对象库的方法,包括自动化测试对象库的工作方法、自动化测试对象库的模块内部交互方法,其特征在于:自动化测试对象库的工作方法包括以下操作步骤:
A)、用户新建一个对象库,用于存储某个被测应用上的测试对象;
B)、用户选择“侦测控件”逐一添加测试对象或“批量侦测控件”界面批量添加控件方式中的任意一种;
C)、修改推荐的测试对象属性和推荐的对象,即添加测试对象时,用户对推荐的测试对象和推荐的测试对象属性做修改,然后再添加到测试对象库;
D)、将上一步的测试对象添加到对象库;
E)、编辑测试对象库,
对已经在对象库的测试对象做系列编辑修改,包括但不限于a.编辑对象识别属性;b.从控件更新测试对象;c.合并重复的测试对象;d.创建组对象管理测试对象;
F)、对已在对象库中的测试对象做验证或高亮方式中的任意一种;
G)、将某个对象生成代码,插入到用户的测试脚本编辑器中;
H)、完成;
自动化测试对象库的模块内部交互方法包括以下操作步骤:
A)、控件侦测器接受用户点击后,侦测到被测应用的被点击控件及其它的相邻控件、多级父控件;
B)、测试对象生成器根据生成控件对应的测试对象,输出到对象批量添加模块;
C)、测试对象被对象批量添加模块添加到对象库模型中;
D)、对象模型管理器提供对象库模型的操作界面和实际操作,对象模型管理器对对象库模型实现更新;同时对象模型管理器通过调用对象属性编辑器,实现对单个测试对象的修改;
E)、做测试对象验证的时候,控件识别器会从对象库模型中读取测试对象,然后对被测应用上的对应控件做识别;
F)、序列化模块将整个对象库模型序列化成文件保存;
G)、代码生成器被对象模型管理器调用,将某个测试对象生成代码片段,插到用户的脚本中;
H)、完成。
所述的自动化测试对象库的工作方法的步骤B)及F)中,当用户选择“侦测控件”逐一添加测试对象,对已在对象库中的测试对象做单个对象的验证。
所述的自动化测试对象库的工作方法的步骤B)及F)中,当用户选择“批量侦测控件”界面批量添加控件,对已在对象库中的测试对象做单个对象的验证或批量验证方式中的任意一种。
所述的自动化测试对象库的模块内部交互方法的步骤E)中,做测试对象验证的时候,对象批量验证模块会针对对象库模型的一批对象,逐一调用控件识别器做识别。
本发明是一种独特的不同于QTP/UFT或其它自动化工具的对象库管理方法,实现了各种便捷的测试对象管理,提供了使用对象库的方法,能够使自动化脚本开发便捷高效,能够在设计时就显著降低脚本出错的可能性且无需在运行时再修正相关的语法错误,提高了开发者的生产率,能方便快速更新和验证测试对象库,适应了敏捷开发的需要,推广应用具有良好的经济效益和社会效益。
附图说明
图1是本发明的工作流程图。
图2是本发明的模块内部交互方法流程图。
图3是本发明实施例一的测试对象库界面示例图。
图4是图3中对象树中某个对象上点击后的界面图。
图5是本发明实施例一的批量添加控件界面图。
具体实施方式
下面结合附图对本发明作进一步说明,但不作为对本发明的限制:
一种自动化测试对象库的系统,包括测试对象库管理器,其特征在于:所述的测试对象库管理器与对象库文件双向连接,测试对象库管理器与被测应用连接并形成闭环,测试对象库管理器与用户代码连接;
被测应用为界面控件,界面控件包括窗体控件、按钮控件、文本框控件、列表控件等各类界面控件;
测试对象库管理器包括对象模型管理器、控件侦测器,控件侦测器依次与测试对象生成器、对象批量添加模块、对象库模型连接;
对象模型管理器分三路输出,第一路与对象属性编辑器连接,第二路与对象库模型连接,第三路通过代码生成器与用户代码连接,代码生成器被对象模型管理器调用,将某个测试对象生成代码片段,插到用户的脚本中;
对象库模型分三路输出,第一路通过控件识别器与被测应用连接,第二路通过对象批量验证模块与控件识别器连接,第三路通过序列化模块与对象库文件双向连接。
一种自动化测试对象库的方法,包括自动化测试对象库的工作方法、自动化测试对象库的模块内部交互方法,其特征在于:自动化测试对象库的工作方法包括以下操作步骤:
A)、用户新建一个对象库,用于存储某个被测应用上的测试对象;
B)、用户选择“侦测控件”逐一添加测试对象或“批量侦测控件”界面批量添加控件方式中的任意一种;
C)、修改推荐的测试对象属性和推荐的对象,即添加测试对象时,用户对推荐的测试对象和推荐的测试对象属性做修改,然后再添加到测试对象库;
D)、将上一步的测试对象添加到对象库;
E)、编辑测试对象库,
对已经在对象库的测试对象做系列编辑修改,包括但不限于a.编辑对象识别属性;b.从控件更新测试对象;c.合并重复的测试对象;d.创建组对象管理测试对象;
F)、对已在对象库中的测试对象做验证或高亮方式中的任意一种;
G)、将某个对象生成代码,插入到用户的测试脚本编辑器中;
H)、完成;
自动化测试对象库的模块内部交互方法包括以下操作步骤:
A)、控件侦测器接受用户点击后,侦测到被测应用的被点击控件及其它的相邻控件、多级父控件;
B)、测试对象生成器根据生成控件对应的测试对象,输出到对象批量添加模块;
C)、测试对象被“对象批量添加模块”添加到对象库模型中;
D)、对象模型管理器提供对象库模型的操作界面和实际操作,对象模型管理器对对象库模型实现更新;同时对象模型管理器通过调用对象属性编辑器,实现对单个测试对象的修改;
E)、做测试对象验证的时候,控件识别器会从对象库模型中读取测试对象,然后对被测应用上的对应控件做识别;
F)、序列化模块将整个对象库模型序列化成文件保存;
G)、代码生成器被对象模型管理器调用,将某个测试对象生成代码片段,插到用户的脚本中;
H)、完成;
所述的自动化测试对象库的工作方法的步骤B)及F)中,当用户选择“侦测控件”逐一添加测试对象,对已在对象库中的测试对象做单个对象的验证;
所述的自动化测试对象库的工作方法的步骤B)及F)中,当用户选择“批量侦测控件”界面批量添加控件,对已在对象库中的测试对象做单个对象的验证或批量验证方式中的任意一种;
所述的自动化测试对象库的模块内部交互方法的步骤E)中,做测试对象验证的时候,对象批量验证模块会针对对象库模型的一批对象,逐一调用控件识别器做识别。
具体实施时,本发明的设计针对层级化控件识别技术做了优化,“层级化控件识别”是指对于要识别的某个控件,需要首先识别到它的直接父控件,或更高层级的父控件,然后在这个父控件下通过一组属性再定位到某个的控件;如果不通过父控件,单凭这个控件的一组属性要么不能唯一以定位到它,或定位的性能不好(因为搜索整个被测应用的控件树范围太大),微软Coded UI(也称为UIAutomation或UIA)就是这样一种控件树的定位机制;本发明描述的对象库管理机制可以很好的管理用CodedUI技术识别的测试对象,以及其它类似的树状控件识别方式,例如Android的UIAutomation技术;相比起其它产品,本发明的设计具有独特的,别的对象库不具备的功能特性,例如:
1.侦测对象后智能判断和推荐添加的测试对象及属性;
2.批量添加时控件树结构独特的导航界面和添加方式;
3.对象编辑时的一些便利的添加方法,如快速合并对象树节点去除冗余,添加index属性、调整对象的识别属性和非识别属性等;
4.对象的批量验证及调用API自动化验证;
5.生成代码时的多种生成方式及多种编程语言代码的自动生成,对方法或属性的直接测试;
6.通过组对象来分组管理测试对象,快速搜索并编辑等功能。
本发明描述的对象库设计,针对测试对象库的如下方面做了创新的设计:1.添加对象到对象库;2.测试对象的批量添加;3.测试对象的编辑;4.测试对象的验证;5.代码生成;6.其它易用性特性;下文对这些功能设计做详细的描述:一)、添加对象到对象库:
当通过界面点击选择被测应用上的某个控件时,对象库的控件侦测模块可以获得控件的层级结构,它包括点击到的控件及其所有的上级控件,这些控件关联的测试对象都可添加到对象库中,但并不是所有的都是必要的;对象库根据内置的规则智能选中其中的某些父控件和当前控件,推荐用户添加;同时对于每个备选控件,智能推荐出可以唯一标识控件的属性组合,缺省勾选这些控件和这些推荐属性;当用户接受所有推荐的控件和属性时,只需点击“添加”按钮,则这一组控件和属性就会构造相应的一组测试对象,并添加到对象库中,同时保存了它们的父子关系;用户也可以通过选择勾选不同于推荐的对象或属性来覆盖推荐的选择,从而让控件的识别更适合自己被测应用的实际情况;理论上可以将所有这些控件和它们的属性添加到对象库;但这样对于管理和识别控件都不够有效;选择控件和属性添加目标是满足识别和操作的最小子集;
添加属性的时候属性分为两类,识别属性和非识别属性;所有的识别属性通过“与”的关系用来识别一个控件;例如添加了一个测试对象有两个识别属性“Type=Hyperlink”和“Name=Report”,即控件类型是超链接、名称为“Report”;它意味着运行自动化时某个控件要同时具有这两个属性才能成功匹配这个测试对象;如果其中任何一个识别属性不匹配,则这个测试对象都不会匹配这个控件;
对象库在智能推荐对象、属性时采取了系列的智能判断,包括但不限于:如AutomationId不为空,首先尝试用AutomationId属性,因为这是专门为自动化测试使用的属性;其次优先使用Type+Name组合,即控件类型加名称;如不能唯一定位,添加className属性,如Name为空,或上述方法都不能唯一定位,则控件不作为备选控件推荐;上述只是针对CodedUI技术举例说明,针对其它不同的自动化技术可配置不同的选择规则;
二)、测试对象的批量添加:
被测应用的某个界面上通常有多个控件需要添加到对象库,每次侦测一个控件并添加不够高效;为此本专利描述的对象库提供了批量添加对象的方法;当选择批量添加按钮时,管理程序会提示用户选择侦测被测应用上的某一个要添加的控件;根据用户点击并侦测到控件后,对象库会显示批量添加操作的对话框,对话框显示用户点中的控件在被测应用控件树同一个层次上的所有控件,用户可以一次性勾选某些控件或是所有控件,选择添加;如果还有其它要添加的控件可以通过树状结构浏览到对应的控件树层次,再选择批量添加;对话框显示某个层次的所有测试对象时,也会同时显示这些测试对象关联控件的截图,选中测试对象也会同时高亮控件,方便用户了解这个控件和它的位置;举例来说,如果要将Windows自带的计算器上的按钮都添加到对象库中,先选择“批量添加”按钮,再侦测某个数字按钮如“5”,批量添加对话框显示,所有的数字按钮和加减乘除按钮都排列在列表中,只要选择列表中所有的对象,再选择添加就可以完成;
三)、测试对象的编辑:
a)添加和调整属性,
如果添加的测试对象不能唯一定位控件,例如有多个控件都具有同样的两个属性的情况则需要编辑测试对象的属性;有如下修改测试对象的方法:
为测试对象添加index属性,index是一个虚拟属性,用于在一组已经满足匹配的多个控件中选择第index个控件,确保识别的唯一性;
添加更多的识别属性,例如某个测试对象有一些非识别属性,可以转换成识别属性,转换后可以唯一标识这个控件;操作上,在控件库中选择这个测试对象,再在它的非识别属性选择“转换”,可将其转换成识别属性;
b)截屏:
在测试对象的上下文菜单上可以选择“截屏”按钮,对象库应用截取控件的快照图片,作为控件库的一部分;对象库可以选择只存储测试对象的属性信息,这样对象库占磁盘空间会比较小,或选择存储控件的截图信息,浏览对象库可以直观的看到所对应控件的界面,这样会相应的增加库的大小;
c)更新对象:
如果被测应用有新版本,原对象库中的某个测试对象已经不能识别新版本应用上的控件,则可以选中测试对象,在它的上下文工具条上选择更新对象,这时对象库提示你选择侦测一个控件,你在新版的应用上选中应该对应的控件,对象库就会把这个控件的一系列属性更新到这个测试对象上,当然在更新之前,对象库显示推荐的属性,让用户选择确认哪些属性要加到测试对象,或是修改它们,这一点同新添加测试对象的界面是类似的;
d)对象树的合并:
有这样的情况,对象库中的两个测试对象实际指向同一个控件,因此有合并消除冗余的需要;合并的前提是:
两个测试对象有相同的一组识别属性;如果不同,用户可以先通过修改识别属性来完成;
两个测试对象在同一个父测试对象下;
当在这个测试对象上的任意一个选择“合并”,会将当前选中的对象和它的所有子对象递归式的合并到与之有重复的另一个测试对象下,消除了冗余,只要这些对象符合上述的两个条件;每次合并两个测试对象会抛弃被合并的对象,保留了另外一个对象;
四)、测试对象的验证:
a)手动批量验证:
在被测应用更新后,或测试对象手动修改后,经常要验证测试对象是否仍旧有效,即能够识别对应的控件;这可以在对象库选择某个测试对象,并按“高亮”按钮;对象库会识别应用上的控件并通过红色线条框在屏幕上高亮这个控件,完成控件识别的验证;这个功能同QTP/UFT类似;不同的是,本专利的对象库可以同时验证一批测试对象,并显示这组对象验证的结果;经常当打开被测应用的某个窗体或网页后,具备验证这个窗体或页面的所有相关测试对象的条件;这时还逐一验证测试对象并不高效,本对象库提供了高效的批量验证的功能;如果一组相关的测试对象要验证,而且它们在某个父层级有一个共同的父节点,例如窗体对象;为了验证这组测试对象,可以在这个父对象(窗体对象)上点击,选择“验证子树”,则对象库会对子树上的测试对象做批量验证;并将验证结果显示在对象树上;针对应用发布更新版本的情况,这种批量验证的方式可以快速验证对象库中的测试对象是否仍旧有效或是需要更新;
b)脚本自动化验证:
为方便在持续集成实践中有更好的支持,对象库也提供了验证对象的API,及用户可以通过API批量验证测试对象,例如批量验证的API叫ValidateSubtree,给它传入一个窗体对象或组对象名,就可验证下面所有的测试对象;返回结果包括验证状态,及所有无法识别的对象列表;将对象的自动化验证结合自动化操作的API,可以在持续集成中快速验证对象库的正确性;正确的对象库是自动化脚本成功运行的前提;典型的场景是,在持续集成的自动化测试任务中,可先执行对象库的验证,如验证成功则继续运行后面的所有自动化测试脚本,如不成功,会打印出无法识别的测试对象列表,测试人员可根据这个列表更新测试库中的对象,直到验证脚本成功运行;测试人员也可以从这个列表知道界面的哪部分有更新,然后相应的更新自动化测试脚本;
五)、代码生成:
a)生成多种语言:
因为支持多种语言做自动化操作,包括JavaScript、VBScript、C#,对象库还支持将某个测试对象转换成相应语言的代码;用户首先在对象库的配置中设置编程语言种类,例如JavaScript,这样缺省生成的代码都是JavaScript语法的;
b)多种生成对象方法:
对象库提供了多种测试对象转换成代码的操作方法:
选择测试对象,在属性面板上会显示这个对象可用的方法和属性,用户可以进一步选择某个或某些属性方法,然后点击“生成代码”按钮,相应的代码会复制到剪贴板上,然后用户可以粘贴到自己的程序中;
直接在方法列表中选择某个方法和属性,拖拽到代码编辑器中,也可生成代码;在测试库的对象树上将某个测试对象拖拽到代码编辑器中,这时会显示一个浮动对话框,列出这个对象的所有方法和属性,用户可以在对应的方法属性边上勾选复选框,点击确认可将对应的代码生成在代码编辑器的相应位置;
除了生成测试对象代码,对象库还可生成模型加载代码,同样在对象库上点击“复制加载代码”按钮,就会将加载对象库的代码复制到剪贴板中;
c)对方法或属性的直接测试:
对于测试对象的某个方法,在调用时需要传递某些参数,参数的值可能正确也可能不正确,如果等到生成脚本代码后再整体执行去验证,会增加调试时间和定位错误的难度;为此,本对象库提供了直接调用某个对象方法的界面;例如对于方法VScroll(垂直滚动),如果不确定滚动多少能产生期望的结果,可以在界面中直接调用这个方法,并传递测试参数,查看效果;如果效果符合期望,则在代码中可直接使用这个参数值;
d)生成描述式编程代码:
上述生成的测试对象代码都是依赖对象库的,运行测试脚本时需要读取对象库文件,再从中读取对象;另种代码生成方式是直接将测试对象的识别属性放在代码中,动态构造一个测试对象;本对象库也支持这种代码生成方式;在配置中勾选“描述编程”的复选框,生成的代码可以不依赖对象库运行;
六)、其它易用性特性:
a)多种技术的测试对象管理:
某些应用是用混合技术开发的,比如主界面使用.NET技术开发,其中一部分是用Web浏览器控件嵌入在.NET,然后在中间使用web页面;这个被测应用涉及2种识别技术,Coded UI和Selenium;对于这样的被测应用,本对象库也提供了支持;对象库将不同类型的测试对象在同一个库中管理;根据识别技术的不同,用不同的颜色、图标来标识被测试对象;能够统一管理混合应用的测试对象;
b)搜索功能:
对象树的上方的搜索框内,用户可以输入文本,搜索时文本会用输入字串匹配测试对象的名称和属性值来过滤测试对象;当输入文本时,符合匹配条件的子节点连同它们的父对象都会显示在过滤结果中,父节点的显示是为了保存对象树的结构;其中符合条件的对象会高亮显示;
c)组对象:
为管理测试对象,本对象库引入了“组对象”的概念;组对象是一个虚拟节点,用来将对象分组,便于对象的管理;例如在一个窗体上有很多控件时,很多测试对象的父对象都是一个窗体对象;为将这个窗体上的控件分组管理,可在对象库中窗体对象下面创建几个组对象,然后将这些测试对象拖拽到对应的组对象中;组对象的引入方便了编辑、查找,管理,例如可在某个组对象上执行批量验证,验证下面所有测试对象,或删除组对象可以批量删除下面的子对象;在做控件识别时,这些测试对象的父对象仍旧是窗体对象,这时候组对象是透明的,所以组对象的引入不影响自动化脚本的运行。
实施例一、如图3所示,图中左边显示测试对象的树状结构,其中:
当搜索框A为空时,C显示对象库的所有测试对象;当A中输入文本时,C是过滤后符合条件的对象树;B是对象树的根节点,在Windows应用中多为窗体的测试对象,一个对象库可以有多个根节点;
B在这里也刚好是选中的测试对象,当某个对象选中时,图中右边半部分显示这个测试对象的相关内容,其中D是这个测试对象的名称、类型;E是这个控件截图的缩略图;F是这个控件的属性、操作、截屏等信息,这里用标签控件来显示这些信息;
在F的“识别属性”标签页中,属性分类为“标识属性”和“其它属性”,用户可以添加、编辑这些属性,或将某个属性在“标识属性”和“其它属性”间转换;
图中左边的对象树中某个对象上点右键,会出现如图4a所示的上下文菜单,这些菜单项可对测试对象做系列操作;
图4中间是标签控件切换到“控件操作”后的界面,列表中显示了一系列测试对象的方法和属性:
b按钮是生成模型代码加载代码,点击后会将加载这个对象库文件的代码复制到剪贴板中;f是某个选中的方法,这里选中的是“Click”方法,这时,再点击按钮c会将“Click”的调用代码复制到剪贴板中;当勾选e复选框“描述编程”时,生成的是不依赖模型的代码,即所有测试对象的属性会硬编码在代码中;g是测试对象的属性,可以获得测试对象对应控件的实际属性,如是否被禁用(Enabled)、高度(Height)、窗口句柄(HWnd)等;d是测试某方法或属性的按钮,例如当VScroll被选中时,点击d按钮会显示h面板,上面是对应方法的参数输入框,当输入参数并点击执行时,会对该测试对象对应控件做相应的执行,这里VScroll会将控件的滚动条滚动相应的值;
批量添加控件界面图如图5所示,为了示例,这里是选择计算器应用中的控件,界面上:
i是控件列表所在的层次关系,用面包屑控件方式显示,这里根节点是“Window:计算器”的控件,它的子节点是另一个同样名称和类型的控件,所以也显示“Window:计算器”,第三级节点是Group控件,它没有显示名,所以缺省不作为推荐对象选中,再下面就是列表j,显示一组在Group下的按钮控件列表;j列表显示一组在同一层级的一组控件,并显示了它们的类型和名称,当选中时,k和l会分别显示这个对象的推荐属性和其它属性;m会显示这个对象对应控件的截图;图中i和j部分所有显示为链接(带下划线)的对象点击时会让界面转入以这个对象为父控件的方式显示,这时j会显示被点击控件下的子控件列表;当没有子控件时,点击不会起作用,界面会保持不变。
本发明描述了一种整合多种编辑功能的对象库管理器,它具有灵活、快速掌握、易于使用等特点,下面分别针对各个功能特点描述这些改进点带来的有益效果:1.侦测对象后智能判断和推荐添加的测试对象及属性:
在多数情况下对象库智能判断推荐的属性能够满足用户的需要,免去了用户自己选取对象属性的疑惑和易错性;对于某些特殊的被测应用,用户可以根据需要调整这些对象和属性的选取,有充分的灵活性;
2.批量添加时特别的控件树结构导航界面和添加方式:能够方便快速的批量添加对象;
3.对象编辑时的一些便利的添加方法,如快速合并对象树节点去除冗余,添加index属性、调整对象的识别属性和非识别属性等:完善了编辑功能,满足了管理对象和更新对象的各类需求;
4.对象的批量验证及调用API自动化验证:快速验证对象库的正确性,满足了敏捷开发中快速频繁发布应用的需要,避免了因对象库未更新造成的脚本运行错误问题;
5.生成代码时的多种生成方式及多语言代码的自动生成,对方法或属性的直接测试:多种的生成代码方式,能够在生成代码时验证代码调用的正确性,并能为多种语言生成代码;
6.通过组对象来分组管理测试对象等功能,快速搜索编辑功能等:分组管理进一步增强了测试对象管理的功能,满足较复杂界面的大量控件的管理的需要,同样快速搜索也降低了复杂应用管理的难度;
将上述对象库结合的测试代码开发工具,能够在设计时就显著降低脚本出错的可能性,无需在运行时再修正相关的语法错误,提高了开发者的生产率。
本发明基于Windows系统的Coded UI界面自动化技术的测试对象库管理工具,但同样可以适用类似的树状控件识别方式的自动化测试技术,例如Android的UIAutomation技术;本发明的一个实现是Windows桌面自动化测试工具软件,但是本发明同样可适用于其它操作系统如Linux、Mac OS等,或在其它更多的平台实现、如网站应用、平板应用等。
上述实施例仅仅是为清楚地说明本发明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无需也无法对所有的实施方式予以穷举,而由此所引申出的显而易见的变化或变动仍处于本发明的保护范围之中。
Claims (5)
1.一种自动化测试对象库的系统,包括测试对象库管理器,其特征在于:所述的测试对象库管理器与对象库文件双向连接,测试对象库管理器与被测应用连接并形成闭环,测试对象库管理器与用户代码连接;
被测应用为界面控件,界面控件包括窗体控件、按钮控件、文本框控件、列表控件;
测试对象库管理器包括对象模型管理器、控件侦测器,控件侦测器依次与测试对象生成器、对象批量添加模块、对象库模型连接;
对象模型管理器分三路输出,第一路与对象属性编辑器连接,第二路与对象库模型连接,第三路通过代码生成器与用户代码连接,代码生成器被对象模型管理器调用,将某个测试对象生成代码片段,插到用户的脚本中;
对象库模型分三路输出,第一路通过控件识别器与被测应用连接,第二路通过对象批量验证模块与控件识别器连接,第三路通过序列化模块与对象库文件双向连接。
2.一种自动化测试对象库的方法,包括自动化测试对象库的工作方法、自动化测试对象库的模块内部交互方法,其特征在于:自动化测试对象库的工作方法包括以下操作步骤:
A)、用户新建一个对象库,用于存储某个被测应用上的测试对象;
B)、用户选择“侦测控件”逐一添加测试对象或“批量侦测控件”界面批量添加控件方式中的任意一种;
C)、修改推荐的测试对象属性和推荐的对象,即添加测试对象时,用户对推荐的测试对象和推荐的测试对象属性做修改,然后再添加到测试对象库;
D)、将上一步的测试对象添加到对象库;
E)、编辑测试对象库,
对已经在对象库的测试对象做系列编辑修改,包括但不限于a.编辑对象识别属性;b.从控件更新测试对象;c.合并重复的测试对象;d.创建组对象管理测试对象;
F)、对已在对象库中的测试对象做验证或高亮方式中的任意一种;
G)、将某个对象生成代码,插入到用户的测试脚本编辑器中;
H)、完成;
自动化测试对象库的模块内部交互方法包括以下操作步骤:
A)、控件侦测器接受用户点击后,侦测到被测应用的被点击控件及其它的相邻控件、多级父控件;
B)、测试对象生成器根据生成控件对应的测试对象,输出到对象批量添加模块;
C)、测试对象被对象批量添加模块添加到对象库模型中;
D)、对象模型管理器提供对象库模型的操作界面和实际操作,对象模型管理器对对象库模型实现更新;同时对象模型管理器通过调用对象属性编辑器,实现对单个测试对象的修改;
E)、做测试对象验证的时候,控件识别器会从对象库模型中读取测试对象,然后对被测应用上的对应控件做识别;
F)、序列化模块将整个对象库模型序列化成文件保存;
G)、代码生成器被对象模型管理器调用,将某个测试对象生成代码片段,插到用户的脚本中;
H)、完成。
3.根据权利要求2所述的一种自动化测试对象库的方法,其特征在于:所述的自动化测试对象库的工作方法的步骤B)及F)中,当用户选择“侦测控件”逐一添加测试对象,对已在对象库中的测试对象做单个对象的验证。
4.根据权利要求2所述的一种自动化测试对象库的方法,其特征在于:所述的自动化测试对象库的工作方法的步骤B)及F)中,当用户选择“批量侦测控件”界面批量添加控件,对已在对象库中的测试对象做单个对象的验证或批量验证方式中的任意一种。
5.根据权利要求2所述的一种自动化测试对象库的方法,其特征在于:所述的自动化测试对象库的模块内部交互方法的步骤E)中,做测试对象验证的时候,对象批量验证模块会针对对象库模型的一批对象,逐一调用控件识别器做识别。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810422189.1A CN109840197A (zh) | 2018-05-04 | 2018-05-04 | 一种自动化测试对象库的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810422189.1A CN109840197A (zh) | 2018-05-04 | 2018-05-04 | 一种自动化测试对象库的系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109840197A true CN109840197A (zh) | 2019-06-04 |
Family
ID=66882912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810422189.1A Pending CN109840197A (zh) | 2018-05-04 | 2018-05-04 | 一种自动化测试对象库的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109840197A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596721A (zh) * | 2020-12-14 | 2021-04-02 | 中国航发控制系统研究所 | 一种安全关键软件建模语言安全子集的管理方法 |
CN113238969A (zh) * | 2021-06-23 | 2021-08-10 | 中国农业银行股份有限公司 | 界面自动化测试方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150251A (zh) * | 2013-03-04 | 2013-06-12 | 浪潮电子信息产业股份有限公司 | 一种智能获取自动化测试对象的方法 |
CN104484269A (zh) * | 2014-11-27 | 2015-04-01 | 北京广利核系统工程有限公司 | 一种自动生成测试脚本的方法 |
CN105512044A (zh) * | 2015-12-25 | 2016-04-20 | 北京奇虎科技有限公司 | 用于关键字驱动测试的对象库的更新方法及系统 |
CN106126257A (zh) * | 2016-06-30 | 2016-11-16 | 珠海金山网络游戏科技有限公司 | 一种界面生成的系统和方法 |
-
2018
- 2018-05-04 CN CN201810422189.1A patent/CN109840197A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150251A (zh) * | 2013-03-04 | 2013-06-12 | 浪潮电子信息产业股份有限公司 | 一种智能获取自动化测试对象的方法 |
CN104484269A (zh) * | 2014-11-27 | 2015-04-01 | 北京广利核系统工程有限公司 | 一种自动生成测试脚本的方法 |
CN105512044A (zh) * | 2015-12-25 | 2016-04-20 | 北京奇虎科技有限公司 | 用于关键字驱动测试的对象库的更新方法及系统 |
CN106126257A (zh) * | 2016-06-30 | 2016-11-16 | 珠海金山网络游戏科技有限公司 | 一种界面生成的系统和方法 |
Non-Patent Citations (4)
Title |
---|
AERCHI: "QTP对象库管理", 《HTTPS://WWW.ITDAAN.COM/BLOG/2010/01/05/6C4F858EBFB3.HTML》 * |
ALLDAYTEST: "AlldayTest产品使用—对象", 《HTTPS://WWW.CNBLOGS.COM/ADAYM/ARCHIVE/2010/06/24/1764598.HTML》 * |
张建涛等: "QTP在浮标数据接收软件测试中的应用", 《海洋技术学报》 * |
李玉 等: "基于QTP的企业级应用软件自动化测试方法", 《计算机系统应用》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596721A (zh) * | 2020-12-14 | 2021-04-02 | 中国航发控制系统研究所 | 一种安全关键软件建模语言安全子集的管理方法 |
CN112596721B (zh) * | 2020-12-14 | 2023-10-03 | 中国航发控制系统研究所 | 一种安全关键软件建模语言安全子集的管理方法 |
CN113238969A (zh) * | 2021-06-23 | 2021-08-10 | 中国农业银行股份有限公司 | 界面自动化测试方法、装置、设备及存储介质 |
CN113238969B (zh) * | 2021-06-23 | 2024-02-23 | 中国农业银行股份有限公司 | 界面自动化测试方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10223338B2 (en) | Visual designer for editing large schemaless XML file | |
CN104133772B (zh) | 一种自动生成测试数据的方法 | |
US20230244476A1 (en) | Systems and methods for code analysis heat map interfaces | |
US10740075B2 (en) | Systems and methods for code clustering analysis and transformation | |
US7506306B2 (en) | Graphical editor with incremental development | |
Sánchez Ramón et al. | Model-driven reverse engineering of legacy graphical user interfaces | |
CN107844297A (zh) | 一种数据可视化实现系统及方法 | |
CN103412853B (zh) | 一种针对文档转换器的测试用例自动生成方法 | |
US20120166480A1 (en) | Xpath-based selection assistance of gui elements during manual test script authoring for xml-based applications | |
US20060161881A1 (en) | Systems and methods for creating and providing templates in a single file | |
US20060161880A1 (en) | Systems and methods for creating and providing templates in a single file | |
CN105808770A (zh) | 文件管理的方法及装置 | |
US7631004B2 (en) | Systems and methods for creating a template from an existing file | |
Falkenthal et al. | Efficient pattern application: validating the concept of solution implementations in different domains | |
EP2105837B1 (en) | Test script transformation analyzer with change guide engine | |
CN109840197A (zh) | 一种自动化测试对象库的系统及方法 | |
CN109144871B (zh) | 一种自动化测试元素的识别方法及装置 | |
US10275462B2 (en) | Automatic translation of string collections | |
CN116627418B (zh) | 一种基于递归算法的多级表单界面可视化生成方法及装置 | |
CN116070053B (zh) | 用于信创体系的跨平台rpa浏览器数据采集方法及系统 | |
CN111221610B (zh) | 一种页面元素采集方法和装置 | |
EP3786810A1 (en) | Automatic generation of computing artifacts for data analysis | |
CN113986441A (zh) | 一种飞机地面站软件人机交互界面自动化测试方法 | |
CN117591438B (zh) | 一种ui组件原子化的自动化测试方法及相关装置 | |
US9563406B1 (en) | Graphical user interface replacement of function signatures |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190604 |
|
RJ01 | Rejection of invention patent application after publication |