CN103577316A - 脚本自动修复的方法和装置 - Google Patents

脚本自动修复的方法和装置 Download PDF

Info

Publication number
CN103577316A
CN103577316A CN201210270593.4A CN201210270593A CN103577316A CN 103577316 A CN103577316 A CN 103577316A CN 201210270593 A CN201210270593 A CN 201210270593A CN 103577316 A CN103577316 A CN 103577316A
Authority
CN
China
Prior art keywords
miss
response
script
objects
change type
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
Application number
CN201210270593.4A
Other languages
English (en)
Other versions
CN103577316B (zh
Inventor
张晓丹
高雪峰
关承恩
邹海波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qindarui Co.
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN201210270593.4A priority Critical patent/CN103577316B/zh
Priority to US13/934,278 priority patent/US9430356B2/en
Publication of CN103577316A publication Critical patent/CN103577316A/zh
Application granted granted Critical
Publication of CN103577316B publication Critical patent/CN103577316B/zh
Priority to US15/191,633 priority patent/US9892017B2/en
Priority to US15/815,167 priority patent/US10621066B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Processing Or Creating Images (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种脚本自动修复的方法和装置。其中,所述方法包括:在已运行脚本的一个或多个对象中确定未命中对象;确定所述未命中对象的改变类型;以及基于所述改变类型,自动修复所述脚本。通过该方法,可以在脚本运行期间测试失败时,自动确定导致脚本失败的原因、并基于该原因对脚本进行自动修复,从而使得脚本继续运行而不会阻塞后续的测试步骤,由此获得快速高效地进行测试的效果。

Description

脚本自动修复的方法和装置
技术领域
本发明涉及脚本测试领域,更具体地,涉及一种在脚本测试失败时自动进行修复的方法和装置。
背景技术
随着计算机技术及自动化技术的日新月异的发展,通过脚本来进行自动化测试是当前较为流行的测试方式。通常,测试对象映射通常总是与自动测试工具中的脚本相关联。当测试者通过对象查找器(object finder)捕获对象时,所选择的对象以及其层次结构(包括其兄弟对象)可以被保存在测试对象映射中。由于脚本的测试周期一般较长,而脚本中的对象在测试期间很可能会改变(例如研发人员改动脚本),这将导致一些对象不再能被识别出来(未命中)。因此,以下情况经常发生:即测试者长时间运行脚本,但发现大多数的脚本运行失败仅仅是由于无法再识别出个别对象。失败的对象识别总是会阻塞所有剩余的步骤。
现有技术中对上述问题的解决方法常见的有以下三种:即通过让研发人员在每次改动脚本时告知测试人员;或者在测试失败时通过诸如惠普公司提供的QTP之类的工具手动捕获进行比较,以获知失败的原因;以及手动调试脚本。非常明显,这些解决方法既费时又费力,大大降低了测试效率。
发明内容
为解决上述问题,根据本发明的一个方面,提出了一种脚本自动修复的方法,包括:在已运行脚本的一个或多个对象中确定未命中对象;确定所述未命中对象的改变类型;以及基于所述改变类型,自动修复所述脚本。
根据本发明的另一方面,提出了一种脚本自动修复的装置,包括:对象确定装置,被配置为在已运行脚本的一个或多个对象中确定未命中对象的装置;改变类型确定装置,被配置为确定所述未命中对象的改变类型的装置;以及脚本修复装置,被配置为基于所述改变类型,自动修复所述脚本的装置。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1图示了根据本发明实施方式的、用于脚本自动修复的方法100的流程图;
图2图示了根据本发明优选实施方式的、用于确定未命中对象的改变类型的方法200的流程图;
图3-图6图示了根据本发明优选实施方式的、基于未命中对象的改变类型自动修复测试脚本的方法300-600的流程图;
图7图示了根据本发明优选实施方式的、测试脚本发生改变的一个具体示例700;
图8图示了根据本发明实施方式的、用于脚本自动修复的装置800的总体框图。
图9图示了适于用来实现本发明实施方式的示例性计算机系统900的示意性框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。
以下将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程
现在参看图1,图1图示了根据本发明实施方式的、用于脚本自动修复的方法100的流程图。如图1所示,方法100开始之后,在步骤S102处,例如响应于测试失败,在已执行脚本的一个或多个对象中确定未命中对象。这里所指的未命中对象是在脚本运行过程中按照之前的方式不再能识别的对象。导致对象不能识别的原因可以有多种,诸如除了包括由于对象的识别属性(对象的一个或多个属性中用于识别出对象的属性)被更改、对象的类更改、对象在脚本的对象层次结构中所处的层次被更改等而导致的不能识别该对象,还包括对象本身并未被更改,但由于增加了若干与该对象完全相同的对象所导致的按照之前的方式不能唯一识别该对象等。
接下来,方法100前进到步骤S104,确定未命中的对象的改变类型。根据前述内容,对象的改变类型包括例如但不限于识别属性改变、类改变、层次改变以及无改变等。
最后,方法100前进到步骤S106,基于所述改变类型,自动修复所述脚本,从而使得脚本可以继续运行而不会阻塞后续内容。至此,方法100结束。
为了更为清晰地阐述本发明,以下结合图7中所示的具体示例,通过图2-图6详细描述方法100的各个实现步骤的具体实施。应当注意的是,所描述的具体实施仅为优选的,并不旨在限制本发明所要求保护的范围,在不脱离本发明原理和精神的情况下,本领域技术人员完全可以采用其它等效方式来实施方法100的上述各个步骤。
图2图示了根据本发明优选实施方式的、用于确定未命中对象的改变类型的方法200的流程图。根据本发明的一个实施方式,如图2所示,方法200开始之后,首先前进到步骤S202,确定包含未命中的对象在内的新的层次结构相比于包括未命中对象在内的原始层次结构在高度上是否改变。这里所称的“原始层次结构”和“新的层次结构”分别指代未命中对象在发生改变之前和发生改变之后与已运行脚本的一个或多个对象所构成的层次结构。本领域技术人员应理解,“新的层次结构”例如可以通过依据(诸如研发人员)改变后的程序或脚本来获得。比如在改变后的程序或脚本中获得未命中对象的各级父对象以及一个或多个子对象,从而获得“新的层次结构”。举例而言,例如参照图7所示的示例700,其中701为脚本发生改变之前,已运行脚本中的多个对象层次结构中的一个对象层次结构(即原始层次结构)。为简洁起见,假设在该层次结构中从上至下的对象依次为a0-a3,相应的类分别为browser,frame,table以及button型,假设未命中的对象为a2(其类为table),可能存在的更改方式包括:无改变(702)、识别属性改变(703)、类改变(704)、以及层次改变(705)等。本领域技术人员应当理解,以上仅为出于清楚起见的简化示例,在实际的脚本中,对象的个数及其相应所述的类的数目将远远大于上述示例中的数目。
要注意的是,由于在已运行的脚本中,包含未命中对象在内的层次结构可能有多个,该确定未命中对象是否改变及其改变类型需要针对每一个该层次结构分别进行。此外,在数据结构层面,实现该确定的手段有多种,其中典型的包括通过堆栈来实现。本领域技术人员应知,通过其它的数据结构也完全可以实现该确定过程。
返回参照图2,在本发明的可选实施方式中,响应于确定所述新的层次结构的高度发生改变(步骤S202,是),方法200前进到S204,将未命中对象的改变类型标记为层次改变。参照图7,在确定包含a2的层次结构的高度从原先的4层(原始层次结构:a0-a1-a2-a3)变为3层(新的层次结构:a0-a2-a3)时(705),将对象table的改变类型确定为层次改变。
在本发明的可选实施方式中,响应于确定所述新的层次结构的高度未发生改变(步骤S202,否),方法200前进到步骤S206,进一步确定所述新的层次结构中最低层次的对象是否发生改变。响应于确定所述最低层次的对象发生改变(步骤S206,是),方法200前进到步骤S208,进一步确定所述最低层次的对象的类是否发生改变,响应于确定所述最低层次的对象的类发生改变(步骤S208,是),方法200前进到S210,将未命中对象的改变类型标记为类改变。在图7的示例中,例如对象a2的类从table被更改为list,则相应的该对象的字对象类型也发生相应改变。此时,在判断对象更改类型的过程中,由于包括a2在内的层次结构的高度依然为4,因此需要确定层次结构中最低层次的对象是否发生改变,由于最低层次的对象已由原先的a3变为了a3’,在进一步确定a3’的类已由a3的button变为text,因此可以将对象的改变类型确定为类改变。返回参照图2,在本发明的可选实施方式中,响应于确定所述最低层次的对象的类未改变(步骤S208,否),方法200前进到S212,将未命中对象的改变类型标记为识别属性改变。仍以图7为例,参照703,a2的先前识别属性例如为其名称,而该名称随后被更改为a2’。因此,在确定对象的更改类型时,在确定包括a2在内的层次结构的高度依然为4、且确定最低层次的对象a3并未发生改变的情况下,可以将对象a2的改变类型确定为识别属性改变。继续返回参照图2,在本发明的可选实施方式中,响应于确定所述最低层次的对象未改变(步骤S206,否),方法200前进到步骤S214,从所述最低层次的对象的父对象开始,沿所述新的层次结构向上逐一确定各个对象是否发生改变,以及,响应于确定至少一个对象发生改变(步骤S214,是),方法200前进到S204,将未命中对象的改变类型标记为层次改变。结合图7中的示例可以看到,另一种典型的层次改变的情形为如706所示,虽然a2所在的层次结构的高度依然为4,但a2实际上已不处于原先的层次结构中,也即其层次结构发生了改变。在这种情况下,判断方式为在确定最低层次的对象a3未改变的情况下,逐一上溯a3的各层父对象,确定其是否发生改变,在确定a3的第2层父对象已由原先的a1变为a1’时,可以将对象a2的改变类型确定为层次改变。返回参照图2,在本发明的可选实施方式中,在比较过所有前述父对象后,响应于确定所有对象均未改变(步骤S214,否),方法200前进到S216,将未命中对象的改变类型标记为无改变。在这种情况下,通常为对象本身并未改变,但新增加了例如与之具有相同识别属性(例如同名)的一个或多个其它对象,这时,根据原有的识别属性无法唯一识别出对象,例如图7中的702,其中存在多个a2。至此,方法200结束。
应当注意的是,如前文所述,由于包含未命中的对象在内的层次结构可能有多个,因此针对每个层次结构所返回的对象的改变类型可能有多个,从而最终返回的结果例如为所返回的所述多个改变类型的统计值。在一个优选实施方式中,可以将统计值最高的改变类型作为最终的改变类型。在另一优选实施方式中,除了单纯考虑统计值之外,还可以综合考虑其它因素,诸如研发人员的修改习惯、返回测试结果等,以确定最终的未命中对象的改变类型。
图3图示了根据本发明实施方式的、在确定对象的改变类型为无改变时,自动修复测试脚本的方法300的流程图。如图3所示,响应于确定所述未命中对象的改变类型为无改变(S216),从未命中对象的父对象的多个子对象中获取与未命中对象具有相同的类和识别属性的多个对象(步骤S302),需要注意的是,在本发明通篇中,术语“子对象”包括直接子对象和/或间接子对象。接着进行如下的“执行同一动作-比较”过程:也即,使所有对象执行同一动作(步骤S304),以确定所获得的下一对象)与使未命中对象在发生改变之前执行同一动作所应获得的下一对象是否相同;将获得相同下一对象的对象(步骤S306,是)确定为未命中对象(步骤S308),并继续脚本的运行(步骤S310);根据本发明的可选实施方式,在不存在获得相同下一对象的对象时(步骤S306,否),在脚本中诸如通过注释掉之类的方式跳过所述下一对象的相关内容不执行(步骤S312),并将所述下一对象执行所获得的下一对象作为新的所获得下一对象(步骤S314),返回重复执行步骤S304,直至找到未命中对象。举例而言,在图7中的无改变(702)类型下,例如可以通过让多个a2执行同一动作,以确定所获得的下一对象是否为原先的a3,如果获得的下一对象为原先的a3,可以确定该a2为目标a2,从而继续脚本的运行。如果所有的a2执行同一动作之后均不能获得预期的a3,一种典型的原因是a3本身出错,这时可以通过例如将a3相关的内容跳过(例如注释掉),并将a3的下一对象作为a2的下一对象(图7未示出),重新进行一轮新的“执行同一动作-比较”过程。
图4图示了根据本发明实施方式的、在确定未命中对象的改变类型为识别属性改变时,自动修复测试脚本的方法400的流程图。如图4所示,方法400包括响应于确定未命中对象的改变类型为识别属性改变(S212),前进到步骤S402,获取未命中对象的父对象的一个或多个子对象(步骤S402)。并在所述一个或多个子对象中仅存在唯一一个与未命中对象具有相同的类及不同的识别属性的对象时(步骤S404,是),如果其它对象未发生改变,则将所述唯一一个对象确定为未命中对象(步骤S406),继续脚本运行(步骤S422)。结合图7的示例,例如参照703,在a1仅有唯一一个子对象a2’,且a2’与原先的a2具有相同的类,仅识别属性(例如名称)不同,则将a2’确定为未命中对象,让a2’完成a2的相关工作,继续脚本的运行。
在本发明的优选实施方式中,方法400进一步包括响应于所述一个或多个子对象中存在多个与未命中对象具有相同的类以及不同的识别属性的对象(步骤S404,否),依次将各个对象的一个或多个属性指定为新的识别属性(步骤S408),直至根据新的识别属性识别出一个或多个可能的目标对象。其中,在唯一识别出一个对象时(步骤S410,是),将该唯一的对象确定为未命中对象,使其执行未命中对象在未命中之前的相关工作,并继续脚本的运行(步骤S422)。这是由于按照之前的识别属性已经不能识别出未命中对象,因此通过改变识别属性的方式尝试是否能够识别出未命中对象。本领域技术人员应理解,依次将各个对象的一个或多个属性指定为新的识别属性可以依据各种次序进行,包括但不限于依据各个属性对对象的区分度由高至低地进行指定。
根据本发明的实施方式,方法400进一步包括在根据新的识别属性识别出多个对象时(步骤S414,是),进行类似于图3的方法300中,步骤S304、S306、S312和S3l4所构成的“执行同一动作-比较”过程:即,使所有对象执行同一动作(步骤S416),以确定所获得的下一对象与使未命中对象在发生改变之前执行同一动作所应获得的下一对象是否相同;将获得相同下一对象的对象(步骤S418,是)确定为未命中对象(步骤S420),并继续脚本的运行(步骤S422);根据本发明的可选实施方式,在不存在获得相同下一对象的对象时(步骤S418,否),在脚本中诸如通过注释掉之类的方式跳过所述下一对象的相关内容不执行(步骤S424),并将所述下一对象执行所获得的下一对象作为新的所获得下一对象(步骤S426),返回执行步骤S416,直至找到获得相同下一对象的对象。
图5图示了根据本发明实施方式的、在确定对象的改变类型为类改变时,自动修复测试脚本的方法500的流程图。如图5所示,响应于确定所述未命中对象的改变类型为类改变(S210),获取所述未命中对象的父对象的一个或多个子对象(步骤S502);以及响应于所述一个或多个子对象中仅存在唯一一个与所述未命中对象具有不同的类的对象并且所述类可操作(步骤S504,是),如果其它对象未发生改变,则将所述唯一一个对象确定为所述未命中对象(步骤S506),使其执行对象在未命中之前的相关工作,并继续脚本运行(步骤S522)。结合图7的示例,参照704,由于a1仅存在一个与原先的a2(类为table)具有不同的类(list)并且该类可操作的对象a2,因此将该a2确定为目标对象,继续脚本运行。
在本发明的优选实施方式中,方法500进一步包括:在所述一个或多个子对象中存在多个与所述未命中对象具有不同的类的对象并且所述多个对象均可操作时(步骤S504,否),执行与图4中的方法400的步骤S408-S422类似的下列步骤。例如,依次将所述多个对象的一个或多个属性中的一个属性指定为新的识别属性(步骤S508),直至识别出一个或多个对象(步骤S510,是)。同样,本领域技术人员应理解,依次将各个对象的一个或多个属性指定为新的识别属性包括但不限于依据各个属性对对象的区分度由高至低地进行指定。接下来,在唯一识别出一个对象时(步骤S512,是),将其识别为所述未命中对象(步骤S514),使其执行对象在未命中之前的相关工作,并继续脚本运行(步骤S522);并且,响应于识别出多个对象(步骤S512,否),进行类似于图3的方法300中,步骤S304、S306、S312和S314所构成的“执行同一动作-比较”过程:即,使所述多个对象执行同一动作(步骤S516),以确定所获得的下一对象与所述未命中对象在发生改变之前执行所述同一动作所应获得的下一对象是否相同(步骤S518);将获得相同下一对象的对象确定为所述未命中对象(步骤S520),并继续脚本运行(步骤S522);根据本发明的可选实施方式,在不存在获得相同下一对象的对象时(步骤S518,否),在脚本中跳过所述下一对象的相关内容不执行(步骤S524),并且将执行所述下一对象所获得的进一步下一对象作为新的、所述未命中对象执行同一动作将所获得的下一对象(步骤S526),返回执行步骤S516,直至确定所述未命中对象。
图6图示了根据本发明实施方式的、在确定对象的改变类型为层次改变时,自动修复测试脚本的方法600的流程图。如图6所示,响应于确定所述未命中对象的改变类型为层次改变(S204),获取所述未命中对象的父对象(即未命中对象的第一级父对象)的一个或多个子对象(如前所述,其包括直接子对象和间接子对象)(步骤S602),并在所述一个或多个子对象中查找与所述未命中对象具有相同的类的对象。这是由于在层次改变的情况下,比较典型的情形是未命中对象仍在相同父对象下,但不在原先的层次结构中,因此首先在同一父对象下的所有对象中进行查找。在查找失败时(步骤S604,否),沿所述新的层次结构向上遍历每一级父对象各自的一个或多个子对象,即首先遍历所述未命中对象的父对象的父对象(即所述未命中对象的第二级父对象)的各个子对象,接着遍历所述未命中对象的第三级父对象的各个子对象,......,直至找到所述具有相同类的对象(步骤S608,是)或遍历失败(步骤S610,是)。仍然结合图7的具体示例。例如参照层次改变的改变类型705,在a2原先的父对象(a1)的子对象中无法找到a2本身,因此沿层次结构向上遍历,查找a2的第二级父对象a0的各个子对象,此时在a0的其中一个直接子对象中找到a2。706的查找过程与705类似,当在a2原先的父对象(a1)的子对象中无法找到a2本身时,沿层次结构向上遍历,开始查找a2的第二级父对象a0的各个子对象,直至在a0的其中一个间接子对象中找到a2。
在遍历失败时,在所述脚本中跳过与所述未命中对象相关的内容不执行(步骤S612),继续执行所述脚本的其它内容(步骤S622)。这是因为如果在遍历过后仍然没有找到未命中对象,那么最大的可能就是该未命中对象已经不再存在。因此通过跳过与其相关的内容不执行来继续脚本的执行。如前文所述,一种典型的跳过的方式为将该对象相关的内容注释掉。而在找到所述具有相同的类的一个或多个对象时(步骤S608,是),与参照图4的方法400的步骤S408-S422类似地进行以下过程:针对其中可操作的一个或多个对象,依次将所述一个或多个与所述未命中对象具有相同的类以及不同的识别属性的对象的一个或多个属性中的一个属性指定为新的识别属性(步骤S614),直至识别出一个或多个对象(步骤S616,是);其中,响应于唯一识别出一个对象(步骤S618,是),将其识别为所述未命中对象(步骤S620),使其执行对象在未命中之前的相关工作,并继续脚本运行(步骤S622)。并且其中,响应于识别出多个对象(步骤S618,否),进行类似于图3的方法300中,步骤S304、S306、S312和S314所构成的“执行同一动作-比较”过程:即,使所述一个或多个对象执行同一动作(步骤S624),以确定所获得的下一对象与所述未命中对象在发生改变之前执行所述同一动作所应获得的下一对象是否相同;以及将获得相同下一对象的对象(步骤S626,是)确定为所述未命中对象(步骤S628),并继续脚本运行(步骤S622);根据本发明的可选实施方式,在不存在获得相同下一对象的对象时(步骤S626,否),在脚本中跳过所述下一对象的相关内容不执行(步骤S630),并且将执行所述下一对象所获得的进一步下一对象作为新的、所述未命中对象执行同一动作将所获得的下一对象(步骤S632),返回执行步骤S624,直至确定所述未命中对象。
前文参照图3-图6所述的方法300-600描述的是在自动测试过程中,脚本运行失败并且判断其失败原因之后所进行的相应“自愈”操作,以保证脚本不会阻塞在导致其失败的地方,而是可以继续运行后续步骤。应当注意的是,各个“自愈”操作会在进行过程中被系统在不进行调试的情况下不断进行记录(例如记录到文件中),但并不会据此改写脚本。在优选的情况下,用户(例如测试人员)可以一次性将所有记录的“自愈”操作写入到脚本中,一起编译。在另一种优选的情况下,用户还可以根据实际情况(诸如脚本的运行情况、返回的测试结果等),例如选择其中的一部分操作来改写脚本或者完全不改写脚本。
图8图示了根据本发明实施方式的、用于脚本自动修复的装置800的框图。装置800包括:对象确定装置801,被配置为在已运行脚本的一个或多个对象中确定未命中对象;改变类型确定装置802,被配置为确定所述未命中对象的改变类型;以及脚本修复装置803,被配置为基于所述改变类型,自动修复所述脚本。
在本发明的优选实施方式中,改变类型确定装置802包括:层次高度确定装置,被配置为确定包括所述未命中对象在内的新的层次结构相比于包括所述未命中对象在内的原始层次结构在高度上是否改变,所述原始层次结构与所述新的层次结构分别为所述未命中对象在所述改变之前和所述改变之后与所述已运行脚本的一个或多个对象构成的层次结构;以及第一层次改变标记装置,被配置为响应于确定所述新的层次结构的高度发生改变,将所述未命中对象的改变类型标记为层次改变(图8中未示出)。
在本发明的优选实施方式中,改变类型确定装置802进一步包括:最低层次对象确定装置,被配置为响应于确定所述新的层次结构的高度未改变,确定所述新的层次结构中最低层次的对象是否改变;最低层次对象类确定装置,被配置为响应于确定所述最低层次的对象发生改变,进一步确定所述最低层次的对象的类是否发生改变;以及类改变标记装置,被配置为响应于确定所述最低层次的对象的类发生改变,将所述未命中对象的改变类型标记为类改变(图8中未示出)。
在本发明的优选实施方式中,改变类型确定装置802进一步包括:识别属性改变标记装置,被配置为响应于确定所述最低层次的对象的类未改变,将所述未命中对象的改变类型标记为识别属性改变(图8中未示出)。
在本发明的优选实施方式中,改变类型确定装置802进一步包括:对象改变确定装置,被配置为响应于确定所述最低层次的对象未改变,从所述最低层次的对象的父对象开始,沿所述新的层次结构向上逐一确定各个对象是否发生改变,以及第二层次改变标记装置,被配置为响应于确定至少一个对象发生改变,将所述未命中对象的改变类型标记为层次改变(图8中未示出)。
在本发明的优选实施方式中,改变类型确定装置802进一步包括:无改变标记装置,被配置为响应于确定所有对象均未改变,将所述未命中对象的改变类型标记为无改变。
在本发明的优选实施方式中,脚本修复装置803包括:第一获取装置,被配置为响应于确定所述未命中对象的改变类型为无改变,从所述未命中对象的父对象的多个子对象中获取与所述未命中对象具有相同的类和识别属性的多个对象;以及第一尝试-确定装置,被配置为使所述具有相同的类和识别属性的多个对象执行同一动作,将获得如下结果的对象确定为所述未命中对象,并继续脚本运行:所述结果与所述未命中对象执行所述同一动作所应获得的结果相同。
在本发明的优选实施方式中,脚本修复装置803包括:第二获取装置,被配置为响应于确定所述未命中对象的改变类型为识别属性改变,获取所述未命中对象的父对象的一个或多个子对象;以及第一唯一对象判定装置,被配置为响应于所述一个或多个子对象中仅存在唯一一个与所述未命中对象具有相同的类以及不同的识别属性的对象,如果其它对象未发生改变,则将所述唯一一个对象确定为所述未命中对象,并继续脚本运行。
在本发明的优选实施方式中,脚本修复装置803进一步包括:第一识别属性指定装置,被配置为响应于所述一个或多个子对象中存在多个与所述未命中对象具有相同的类以及不同的识别属性的对象,依次将所述多个与所述未命中对象具有相同的类以及不同的识别属性的对象的一个或多个属性中的一个属性指定为新的识别属性,直至根据所述新的识别属性识别出一个或多个对象;第二唯一对象判定装置,被配置为响应于唯一识别出一个对象,将其确定为所述未命中对象,并继续脚本运行;第二尝试-确定装置,被配置为响应于识别出多个对象,使所述识别出的多个对象执行同一动作,将获得如下结果的对象确定为所述未命中对象,并继续脚本运行:所述结果与所述未命中对象执行所述同一动作所应获得的结果相同。
在本发明的优选实施方式中,脚本修复装置803包括:第三获取装置,被配置为响应于确定所述对象的改变类型为类改变,获取所述未命中对象的父对象的一个或多个子对象;以及第三唯一对象判定装置,被配置为响应于所述一个或多个子对象中仅存在唯一一个与所述未命中对象具有不同的类的对象并且所述类可操作,如果其它对象未发生改变,则将所述唯一一个对象确定为所述未命中对象,并继续脚本运行。
在本发明的优选实施方式中,脚本修复装置803进一步包括:第二识别属性指定装置,被配置为响应于所述一个或多个子对象中存在多个与所述未命中对象具有不同的类的对象并且所述多个对象均可操作,依次将所述多个对象的一个或多个属性中的一个属性指定为新的识别属性,直至识别出一个或多个对象;第四唯一对象判定装置,被配置为响应于唯一识别出一个对象,将其识别为所述未命中对象,并继续脚本运行;第三尝试-确定装置,被配置为响应于识别出多个对象,使所述识别出的多个对象执行同一动作,将获得如下结果的对象确定为所述未命中对象,并继续脚本运行:所述结果与所述未命中对象执行所述同一动作所应获得的结果相同。
在本发明的优选实施方式中,依次将多个对象的一个或多个属性中的一个属性指定为新的识别属性为依照各个属性对对象的区别度由高到低的次序来依次指定。
在本发明的优选实施方式中,脚本修复装置803包括:第四获取装置,被配置为响应于确定所述对象的改变类型为层次改变,获取所述未命中对象的父对象的一个或多个子对象;同类对象确定装置,被配置为在所述一个或多个子对象中查找与所述未命中对象具有相同的类的对象;遍历装置,被配置为响应于查找失败,沿所述原始层次结构向上遍历每一级父对象的一个或多个子对象,直至找到所述具有相同类的对象或遍历失败;内容跳过装置,被配置为响应于遍历失败,在所述脚本中跳过与所述未命中对象相关的内容不执行,继续执行所述脚本的其它内容;第三识别属性指定装置,被配置为响应于找到所述具有相同的类的一个或多个对象,针对其中可操作的一个或多个对象,依次将所述一个或多个与所述未命中对象具有相同的类以及不同的识别属性的对象的一个或多个属性中的一个属性指定为新的识别属性,直至识别出一个或多个对象;第五唯一对象判定装置,被配置为响应于唯一识别出一个对象,将其识别为所述未命中对象,并继续脚本运行;第四尝试-确定装置,被配置为响应于识别出多个对象,使所述识别出的多个对象执行同一动作,将获得如下结果的对象确定为所述未命中对象,并继续脚本运行:所述结果与所述未命中对象执行所述同一动作所应获得的结果相同。
根据本发明的实施方式,通过在脚本运行期间测试失败时,自动确定导致脚本失败的原因、并基于该原因对脚本进行自动修复,可以使得脚本继续运行,而不会阻塞后续的测试步骤,从而能够快速高效地进行测试。
图9示出了适于用来实现本发明实施方式的示例性计算系统900的框图。如图9所示,计算机系统900可以包括:CPU(中央处理单元)901、RAM(随机存取存储器)902、ROM(只读存储器)903、系统总线904、硬盘控制器905、键盘控制器906、串行接口控制器907、并行接口控制器908、显示控制器909、硬盘910、键盘911、串行外部设备912、并行外部设备913和显示器914。在这些设备中,与系统总线904耦合的有CPU 901、RAM 902、ROM 903、硬盘控制器905、键盘控制器906、串行控制器907、并行控制器908和显示控制器909。硬盘910与硬盘控制器905耦合,键盘911与键盘控制器906耦合,串行外部设备912与串行接口控制器907耦合,并行外部设备913与并行接口控制器908耦合,以及显示器914与显示控制器909耦合。应当理解,图9所述的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (28)

1.一种脚本自动修复的方法,包括:
在已运行脚本的一个或多个对象中确定未命中对象;
确定所述未命中对象的改变类型;以及
基于所述改变类型,自动修复所述脚本。
2.根据权利要求1所述的方法,其中,确定所述未命中对象的改变类型包括:
确定包括所述未命中对象在内的新的层次结构相比于包括所述未命中对象在内的原始层次结构在高度上是否改变,所述原始层次结构与所述新的层次结构分别为所述未命中对象在所述改变之前和所述改变之后与所述已运行脚本的一个或多个对象构成的层次结构。
3.根据权利要求2所述的方法,其中,确定所述未命中对象的改变类型进一步包括:
响应于确定所述新的层次结构的高度发生改变,将所述未命中对象的改变类型标记为层次改变。
4.根据权利要求2或3所述的方法,其中,确定所述未命中对象的改变类型进一步包括:
响应于确定所述新的层次结构的高度未改变,确定所述新的层次结构中最低层次的对象是否改变;
响应于确定所述最低层次的对象发生改变,进一步确定所述最低层次的对象的类是否发生改变;以及
响应于确定所述最低层次的对象的类发生改变,将所述未命中对象的改变类型标记为类改变。
5.根据权利要求4所述的方法,其中,确定所述未命中对象的改变类型进一步包括:
响应于确定所述最低层次的对象的类未改变,将所述未命中对象的改变类型标记为识别属性改变。
6.根据权利要求4所述的方法,其中,确定所述未命中对象的改变类型进一步包括:
响应于确定所述最低层次的对象未改变,从所述最低层次的对象的父对象开始,沿所述新的层次结构向上逐一确定各个对象是否发生改变,以及
响应于确定至少一个对象发生改变,将所述未命中对象的改变类型标记为层次改变。
7.根据权利要求6所述的方法,其中,确定所述未命中对象的改变类型进一步包括:
响应于确定所有对象均未改变,将所述未命中对象的改变类型标记为无改变。
8.根据权利要求7所述的方法,其中,基于所述改变类型自动修复所述脚本包括:
响应于确定所述未命中对象的改变类型为无改变,从所述未命中对象的父对象的多个子对象中获取与所述未命中对象具有相同的类和识别属性的多个对象;以及
使所述具有相同的类和识别属性的多个对象执行同一动作,将获得如下结果的对象确定为所述未命中对象,并继续脚本运行:所述结果与所述未命中对象执行所述同一动作所应获得的结果相同。
9.根据权利要求5所述的方法,其中,基于所述改变类型自动修复所述脚本包括:
响应于确定所述未命中对象的改变类型为识别属性改变,获取所述未命中对象的父对象的一个或多个子对象;以及
响应于所述一个或多个子对象中仅存在唯一一个与所述未命中对象具有相同的类以及不同的识别属性的对象,如果其它对象未发生改变,则将所述唯一一个对象确定为所述未命中对象,并继续脚本运行。
10.根据权利要求9所述的方法,进一步包括:
响应于所述一个或多个子对象中存在多个与所述未命中对象具有相同的类以及不同的识别属性的对象,依次将所述多个与所述未命中对象具有相同的类以及不同的识别属性的对象的一个或多个属性中的一个属性指定为新的识别属性,直至根据所述新的识别属性识别出一个或多个对象;
其中,响应于唯一识别出一个对象,将其确定为所述未命中对象,并继续脚本运行;
其中,响应于识别出多个对象,使所述识别出的多个对象执行同一动作,将获得如下结果的对象确定为所述未命中对象,并继续脚本运行:所述结果与所述未命中对象执行所述同一动作所应获得的结果相同。
11.根据权利要求4所述的方法,其中,基于所述改变类型自动修复所述脚本包括:
响应于确定所述未命中对象的改变类型为类改变,获取所述未命中对象的父对象的一个或多个子对象;以及
响应于所述一个或多个子对象中仅存在唯一一个与所述未命中对象具有不同的类的对象并且所述类可操作,如果其它对象未发生改变,则将所述唯一一个对象确定为所述未命中对象,并继续脚本运行。
12.根据权利要求11所述的方法,进一步包括:
响应于所述一个或多个子对象中存在多个与所述未命中对象具有不同的类的对象并且所述多个对象均可操作,依次将所述多个对象的一个或多个属性中的一个属性指定为新的识别属性,直至识别出一个或多个对象;
其中,响应于唯一识别出一个对象,将其识别为所述未命中对象,并继续脚本运行;
其中,响应于识别出多个对象,使所述识别出的多个对象执行同一动作,将获得如下结果的对象确定为所述未命中对象,并继续脚本运行:所述结果与所述未命中对象执行所述同一动作所应获得的结果相同。
13.根据权利要求10或12所述的方法,其中,依次将多个对象的一个或多个属性中的一个属性指定为新的识别属性为依照各个属性对对象的区别度由高到低的次序来依次指定。
14.根据权利要求3或6所述的方法,其中,基于所述改变类型自动修复所述脚本包括:
响应于确定所述未命中对象的改变类型为层次改变,获取所述未命中对象的父对象的一个或多个子对象;
在所述一个或多个子对象中查找与所述未命中对象具有相同的类的对象;
响应于查找失败,沿所述新的层次结构向上依次遍历每一级父对象的一个或多个子对象,直至找到所述具有相同类的对象或遍历失败;
响应于遍历失败,在所述脚本中跳过与所述未命中对象相关的内容不执行,继续执行所述脚本的其它内容;
响应于找到所述具有相同的类的一个或多个对象,针对其中可操作的一个或多个对象,依次将所述一个或多个与所述未命中对象具有相同的类以及不同的识别属性的对象的一个或多个属性中的一个属性指定为新的识别属性,直至识别出一个或多个对象;
其中,响应于唯一识别出一个对象,将其识别为所述未命中对象,并继续脚本运行;
其中,响应于识别出多个对象,使所述识别出的多个对象执行同一动作,将获得如下结果的对象确定为所述未命中对象,并继续脚本运行:所述结果与所述未命中对象执行所述同一动作所应获得的结果相同。
15.一种脚本自动修复的装置,包括:
对象确定装置,被配置为在已运行脚本的一个或多个对象中确定未命中对象;
改变类型确定装置,被配置为确定所述未命中对象的改变类型;以及
脚本修复装置,被配置为基于所述改变类型,自动修复所述脚本。
16.根据权利要求15所述的装置,其中,所述改变类型确定装置包括:
层次高度确定装置,被配置为确定包括所述未命中对象在内的新的层次结构相比于包括所述未命中对象在内的原始层次结构在高度上是否改变,所述原始层次结构与所述新的层次结构分别为所述未命中对象在所述改变之前和所述改变之后与所述已运行脚本的一个或多个对象构成的层次结构。
17.根据权利要求16所述的装置,其中,所述改变类型确定装置进一步包括:
第一层次改变标记装置,被配置为响应于确定所述新的层次结构的高度发生改变,将所述未命中对象的改变类型标记为层次改变。
18.根据权利要求16或17所述的装置,其中,所述改变类型确定装置进一步包括:
最低层次对象确定装置,被配置为响应于确定所述新的层次结构的高度未改变,确定所述新的层次结构中最低层次的对象是否改变;
最低层次对象类确定装置,被配置为响应于确定所述最低层次的对象发生改变,进一步确定所述最低层次的对象的类是否发生改变;以及
类改变标记装置,被配置为响应于确定所述最低层次的对象的类发生改变,将所述未命中对象的改变类型标记为类改变。
19.根据权利要求18所述的装置,其中,所述改变类型确定装置进一步包括:
识别属性改变标记装置,被配置为响应于确定所述最低层次的对象的类未改变,将所述未命中对象的改变类型标记为识别属性改变。
20.根据权利要求18所述的装置,其中,所述改变类型确定装置进一步包括:
对象改变确定装置,被配置为响应于确定所述最低层次的对象未改变,从所述最低层次的对象的父对象开始,沿所述新的层次结构向上逐一确定各个对象是否发生改变,以及
第二层次改变标记装置,被配置为响应于确定至少一个对象发生改变,将所述未命中对象的改变类型标记为层次改变。
21.根据权利要求20所述的装置,其中,所述改变类型确定装置进一步包括:
无改变标记装置,被配置为响应于确定所有对象均未改变,将所述未命中对象的改变类型标记为无改变。
22.根据权利要求21所述的装置,其中,所述脚本修复装置包括:
第一获取装置,被配置为响应于确定所述未命中对象的改变类型为无改变,从所述未命中对象的父对象的多个子对象中获取与所述未命中对象具有相同的类和识别属性的多个对象;以及
第一尝试-确定装置,被配置为使所述具有相同的类和识别属性的多个对象执行同一动作,将获得如下结果的对象确定为所述未命中对象,并继续脚本运行:所述结果与所述未命中对象执行所述同一动作所应获得的结果相同。
23.根据权利要求19所述的装置,其中,所述脚本修复装置包括:
第二获取装置,被配置为响应于确定所述未命中对象的改变类型为识别属性改变,获取所述未命中对象的父对象的一个或多个子对象;以及
第一唯一对象判定装置,被配置为响应于所述一个或多个子对象中仅存在唯一一个与所述未命中对象具有相同的类以及不同的识别属性的对象,如果其它对象未发生改变,则将所述唯一一个对象确定为所述未命中对象,并继续脚本运行。
24.根据权利要求23所述的装置,进一步包括:
第一识别属性指定装置,被配置为响应于所述一个或多个子对象中存在多个与所述未命中对象具有相同的类以及不同的识别属性的对象,依次将所述多个与所述未命中对象具有相同的类以及不同的识别属性的对象的一个或多个属性中的一个属性指定为新的识别属性,直至根据所述新的识别属性识别出一个或多个对象;
第二唯一对象判定装置,被配置为响应于唯一识别出一个对象,将其确定为所述未命中对象,并继续脚本运行;
第二尝试-确定装置,被配置为响应于识别出多个对象,使所述识别出的多个对象执行同一动作,将获得如下结果的对象确定为所述未命中对象,并继续脚本运行:所述结果与所述未命中对象执行所述同一动作所应获得的结果相同。
25.根据权利要求18所述的装置,其中,所述脚本修复装置包括:
第三获取装置,被配置为响应于确定所述对象的改变类型为类改变,获取所述未命中对象的父对象的一个或多个子对象;以及
第三唯一对象判定装置,被配置为响应于所述一个或多个子对象中仅存在唯一一个与所述未命中对象具有不同的类的对象并且所述类可操作,如果其它对象未发生改变,则将所述唯一一个对象确定为所述未命中对象,并继续脚本运行。
26.根据权利要求25所述的装置,进一步包括:
第二识别属性指定装置,被配置为响应于所述一个或多个子对象中存在多个与所述未命中对象具有不同的类的对象并且所述多个对象均可操作,依次将所述多个对象的一个或多个属性中的一个属性指定为新的识别属性,直至识别出一个或多个对象;
第四唯一对象判定装置,被配置为响应于唯一识别出一个对象,将其识别为所述未命中对象,并继续脚本运行;
第三尝试-确定装置,被配置为响应于识别出多个对象,使所述识别出的多个对象执行同一动作,将获得如下结果的对象确定为所述未命中对象,并继续脚本运行:所述结果与所述未命中对象执行所述同一动作所应获得的结果相同。
27.根据权利要求24或26所述的装置,其中,依次将多个对象的一个或多个属性中的一个属性指定为新的识别属性为依照各个属性对对象的区别度由高到低的次序来依次指定。
28.根据权利要求17或20所述的装置,其中,所述脚本修复装置包括:
第四获取装置,被配置为响应于确定所述对象的改变类型为层次改变,获取所述未命中对象的父对象的一个或多个子对象;
同类对象确定装置,被配置为在所述一个或多个子对象中查找与所述未命中对象具有相同的类的对象;
遍历装置,被配置为响应于查找失败,沿所述新的层次结构向上遍历每一级父对象的一个或多个子对象,直至找到所述具有相同类的对象或遍历失败;
内容跳过装置,被配置为响应于遍历失败,在所述脚本中跳过与所述未命中对象相关的内容不执行,继续执行所述脚本的其它内容;
第三识别属性指定装置,被配置为响应于找到所述具有相同的类的一个或多个对象,针对其中可操作的一个或多个对象,依次将所述一个或多个与所述未命中对象具有相同的类以及不同的识别属性的对象的一个或多个属性中的一个属性指定为新的识别属性,直至识别出一个或多个对象;
第五唯一对象判定装置,被配置为响应于唯一识别出一个对象,将其识别为所述未命中对象,并继续脚本运行;
第四尝试-确定装置,被配置为响应于识别出多个对象,使所述识别出的多个对象执行同一动作,将获得如下结果的对象确定为所述未命中对象,并继续脚本运行:所述结果与所述未命中对象执行所述同一动作所应获得的结果相同。
CN201210270593.4A 2012-07-31 2012-07-31 脚本自动修复的方法和装置 Active CN103577316B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201210270593.4A CN103577316B (zh) 2012-07-31 2012-07-31 脚本自动修复的方法和装置
US13/934,278 US9430356B2 (en) 2012-07-31 2013-07-03 Automatic repairs of scripts
US15/191,633 US9892017B2 (en) 2012-07-31 2016-06-24 Automatic repair of scripts
US15/815,167 US10621066B2 (en) 2012-07-31 2017-11-16 Automatic repair of scripts

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210270593.4A CN103577316B (zh) 2012-07-31 2012-07-31 脚本自动修复的方法和装置

Publications (2)

Publication Number Publication Date
CN103577316A true CN103577316A (zh) 2014-02-12
CN103577316B CN103577316B (zh) 2016-02-10

Family

ID=50026833

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210270593.4A Active CN103577316B (zh) 2012-07-31 2012-07-31 脚本自动修复的方法和装置

Country Status (2)

Country Link
US (3) US9430356B2 (zh)
CN (1) CN103577316B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107229892A (zh) * 2016-03-24 2017-10-03 阿里巴巴集团控股有限公司 一种基于人脸识别产品的识别调整方法和设备
CN110096392A (zh) * 2018-01-29 2019-08-06 北京京东尚科信息技术有限公司 用于输出信息的方法和装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103577316B (zh) 2012-07-31 2016-02-10 国际商业机器公司 脚本自动修复的方法和装置
US10635407B2 (en) 2015-10-08 2020-04-28 Micro Focus Llc Identification of differences between scripts for testing applications
US10691655B2 (en) 2016-10-20 2020-06-23 Microsoft Technology Licensing, Llc Generating tables based upon data extracted from tree-structured documents
US10235192B2 (en) 2017-06-23 2019-03-19 Accenture Global Solutions Limited Self-learning robotic process automation
CN107451065A (zh) * 2017-08-18 2017-12-08 郑州云海信息技术有限公司 一种修复web自动化测试脚本的方法及系统
US11074063B2 (en) * 2019-09-10 2021-07-27 International Business Machines Corporation Automatic upgrade of robotic process automation using a computer

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101526916A (zh) * 2008-03-03 2009-09-09 阿里巴巴集团控股有限公司 基于页面对象流验证在回归测试中的应用方法及系统
US20090288070A1 (en) * 2008-05-13 2009-11-19 Ayal Cohen Maintenance For Automated Software Testing
CN102567201A (zh) * 2011-12-15 2012-07-11 南京大学 跨模型的图形用户界面测试脚本自动修复方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5983001A (en) 1995-08-30 1999-11-09 Sun Microsystems, Inc. Method and system for facilitating the automatic creation of test scripts
US6067639A (en) 1995-11-09 2000-05-23 Microsoft Corporation Method for integrating automated software testing with software development
US7917895B2 (en) 2001-07-27 2011-03-29 Smartesoft, Inc. Automated software testing and validation system
US7461340B1 (en) * 2003-07-31 2008-12-02 Microsoft Corporation Integrated decorative panels
GB2405499A (en) 2003-09-01 2005-03-02 Isis Innovation Information system development
US20050268285A1 (en) 2004-05-25 2005-12-01 International Business Machines Corporation Object oriented GUI test automation
EP2096536A3 (en) 2008-02-27 2010-09-01 Accenture Global Services GmbH Graphical user interface application comparator
US8151276B2 (en) * 2008-02-27 2012-04-03 Accenture Global Services Gmbh Test script transformation analyzer with change guide engine
WO2010144701A1 (en) * 2009-06-11 2010-12-16 Accenture Global Services Limited Assessment system for choosing maintenance approaches for gui-directed test scripts
US9189135B2 (en) * 2011-01-04 2015-11-17 International Business Machines Corporation Three-dimensional GUI object stores in automation test tools
US8554918B1 (en) * 2011-06-08 2013-10-08 Emc Corporation Data migration with load balancing and optimization
CN103577316B (zh) 2012-07-31 2016-02-10 国际商业机器公司 脚本自动修复的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101526916A (zh) * 2008-03-03 2009-09-09 阿里巴巴集团控股有限公司 基于页面对象流验证在回归测试中的应用方法及系统
US20090288070A1 (en) * 2008-05-13 2009-11-19 Ayal Cohen Maintenance For Automated Software Testing
CN102567201A (zh) * 2011-12-15 2012-07-11 南京大学 跨模型的图形用户界面测试脚本自动修复方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107229892A (zh) * 2016-03-24 2017-10-03 阿里巴巴集团控股有限公司 一种基于人脸识别产品的识别调整方法和设备
CN110096392A (zh) * 2018-01-29 2019-08-06 北京京东尚科信息技术有限公司 用于输出信息的方法和装置

Also Published As

Publication number Publication date
CN103577316B (zh) 2016-02-10
US20180074937A1 (en) 2018-03-15
US9430356B2 (en) 2016-08-30
US9892017B2 (en) 2018-02-13
US10621066B2 (en) 2020-04-14
US20160306732A1 (en) 2016-10-20
US20140040868A1 (en) 2014-02-06

Similar Documents

Publication Publication Date Title
CN103577316B (zh) 脚本自动修复的方法和装置
US20110271255A1 (en) Automatic identification of subroutines from test scripts
KR20210062695A (ko) 인터랙티브 플롯 구현 방법, 디바이스, 컴퓨터 장치 및 저장 매체
US20150370685A1 (en) Defect localization in software integration tests
CN109144882A (zh) 一种基于程序不变量的软件故障定位方法及装置
CN108345485A (zh) 用于界面视图的标识方法及装置
US9870309B2 (en) Variable tracking in program debugging
CN106326120B (zh) 一种应用软件的回归测试方法及装置、电子设备
US9600298B2 (en) Active and efficient monitoring of a graphical user interface
CN103164334A (zh) 检测web应用自动测试用例中的断裂点的系统和方法
US20120079452A1 (en) Provision of Code Base Modification Using Automatic Learning of Code Changes
CN105279089A (zh) 一种获取页面元素的方法及装置
US20160179904A1 (en) Ladder program retrieval device capable of retrieving ladder circuits based on specified signal operation conditions
CN103853654A (zh) 网页测试路径的选择方法和装置
CN111832028A (zh) 代码审计方法和装置、电子设备、及介质
CN110737573B (zh) 用户界面ui自动化测试的方法和装置
CN112783764B (zh) 应用程序的自动化测试方法及装置、存储介质、终端
CN113220564A (zh) 页面的自动化测试方法、装置、设备以及存储介质
CN110796129A (zh) 一种文本行区域检测方法及装置
JP6152034B2 (ja) ラベリング方法、ラベリング装置および欠陥検査装置
JP5075695B2 (ja) プロパティ記述のカバレッジ測定装置及びプログラム
CN113076257A (zh) 测试脚本录制方法、装置、介质及计算机设备
CN114116503A (zh) 一种测试方法、装置、电子设备及存储介质
CN109359042B (zh) 一种基于路径搜索算法的自动化测试方法
JP2016021163A (ja) テストケース生成プログラム、テストケース生成方法及びテストケース生成装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211103

Address after: USA New York

Patentee after: Qindarui Co.

Address before: Armank, New York, USA

Patentee before: International Business Machines Corp.

TR01 Transfer of patent right