CN101369249B - 标识软件的gui部件的方法和装置 - Google Patents
标识软件的gui部件的方法和装置 Download PDFInfo
- Publication number
- CN101369249B CN101369249B CN2007101418556A CN200710141855A CN101369249B CN 101369249 B CN101369249 B CN 101369249B CN 2007101418556 A CN2007101418556 A CN 2007101418556A CN 200710141855 A CN200710141855 A CN 200710141855A CN 101369249 B CN101369249 B CN 101369249B
- Authority
- CN
- China
- Prior art keywords
- gui
- gui parts
- parts
- software
- window object
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/454—Multi-language systems; Localisation; Internationalisation
Abstract
本发明提供了一种用于标识软件的GUI部件的方法和装置,该方法包括以下步骤:在该软件的运行过程中,确定GUI窗口对象及其标识;确定该GUI窗口对象中的所有GUI部件或属于一相同类型的所有GUI部件;将该GUI窗口对象的显示区域划分为多个区域,以使得每一个所述GUI部件仅包含在一个区域中;为包含GUI部件的区域指定唯一标识;以所述GUI窗口对象的标识以及GUI部件所在的区域的标识、或者以所述GUI窗口对象的标识以及GUI部件所属的类型的标识和GUI部件所在的区域的标识来标识GUI部件,从而获得该GUI部件的标识属性。
Description
技术领域
本发明涉及计算机领域,具体涉及软件自动测试,更具体地,涉及一种用于标识软件的GUI部件(GUI widget)的方法和装置。
背景技术
如人们所知的,软件质量保证(QA),由于其在软件被交付给最终用户之前对于确保软件质量的贡献,因而是整个软件开发生命周期中的一个非常重要的部分。然而,软件质量保证的大部分工作却不得不以非常原始的方式来完成。很多QA工程师不得不手工地和一遍遍地在被测应用(AUT)的GUI部件(甚至基于文本的接口)上进行点击或输入。特别是在全球化测试环境中,QA工程师的工作量会随着被测应用的目标语言的增加而成倍增加。这正是对于开发测试自动化技术存在着巨大需求的原因。
然而,迄今为止,使用现有的测试自动化技术却很难实现全球化环境中的GUI测试自动化。全球化是当前软件行业的一个重要趋势,因为几乎所有的软件厂商都试图将其产品扩大到世界市场。在这种情况下,其产品将被本地化为不同的语言,以满足可能具有不同母语的用户的偏好。这对于QA工程师将带来挑战。他们必须验证软件在多种语言中的功能,以确保软件在其他语言版本中可以如在其初始语言版本(例如,英文版本)中一样地工作。使用现有的测试自动化技术,QA工程师可以在一种语言平台(例如,英文)上如所预期地开发测试资产(test asset),然而他们会发现这些测试脚本无法在基于另一种语言的平台上运行。这样,他们不得不在初始语言平台上自动运行测试脚本,而在其他语言平台上进行手工测试或重新生成测试脚本,尽管被测应用的不同语言版本具有相同的功能和相同的GUI部件布局,而只有由不同语言本地化造成的呈现上的差别。也就是说,在初始语言环境中生成的测试脚本无法在其他语言环境中重用,从而造成了在多种语言环境中分别生成和执行测试脚本的大量冗余工作,以及时间、资源和成本的浪费。
从根本上说,造成该问题的原因是传统的GUI测试自动化技术在GUI部件标识上的局限。
一方面,在GUI自动化技术中,常见的工作流程是首先通过记录或开发来生成诸如测试脚本(以Java或其他语言编写的)等测试资产,然后在最终环境中回放它们。在这两个阶段中,第一个阶段是更重要的,其主要任务是收集和存储关于测试哪些GUI部件及其相关逻辑(这些GUI部件和逻辑是必须回放的)的信息,以便“告知”运行时引擎哪些GUI部件需要在何处调用哪些逻辑例如单击、双击等。然而,尤其是由于GUI部件标识的问题,收集和存储关于测试哪些GUI部件及其相关逻辑并不容易。这是因为,不管使用哪种方法,必须为GUI部件定义和确定一组稳定的标识属性。
另一方面,在现有技术例如IBM的Rational Functional Tester、HPMercury的Quick Test Professional等中用来标识GUI部件的属性是语言敏感的,这使得测试脚本无法在全球化环境中工作。图1和图2为示出了这种情况的一个例子。其中,在图1所示的英文环境中,GUI控件“Button”(按钮)由语言敏感的属性“&Finish”所标识,而同一个GUI控件在图2所示的中文环境中由语言敏感的属性“完成(&F)”所标识,这将使得在英文环境中记录和开发的测试脚本无法在中文环境中重用,因为相同的GUI部件在不同的语言环境中将被标识为不同的东西。
因此,需要这种一种解决方案,该解决方案能够通过发现一种独立于语言的标识属性,来正确的、唯一地和稳定地在不同语言平台之间标识GUI部件。
发明内容
根据本发明的一个方面,提供了一种用于标识软件的GUI部件的方法,该方法包括以下步骤:在该软件的运行过程中,确定GUI窗口对象及其标识;确定该GUI窗口对象中的所有GUI部件或属于一相同类型的所有GUI部件;将该GUI窗口对象的显示区域划分为多个区域,以使得每一个所述GUI部件仅包含在一个区域中;为包含GUI部件的区域指定唯一标识;以所述GUI窗口对象的标识以及GUI部件所在的区域的标识、或者以所述GUI窗口对象的标识以及GUI部件所属的类型的标识和GUI部件所在的区域的标识来标识该GUI部件,作为该GUI部件的标识属性。
根据本发明的另一个方面,提供了一种软件自动测试方法,该方法包括以下步骤:在测试脚本的回放阶段,在该软件的第二版本的运行过程中,读取存储在所述测试脚本中的所述GUI部件的标识属性,其中,所述GUI部件的标识属性是使用上述方法对该软件的第一版本中的GUI部件进行标识而获得的;使用与用于获得所述测试脚本中的GUI部件标识属性相同的标识方法来获得该软件的第二版本中的GUI部件的标识属性;以及根据所述读取的GUI部件的标识属性和所述标识步骤所生成的所述软件的第二版本中的GUI部件的标识属性之间的匹配关系来针对所述软件的第二版本运行所述测试脚本。
根据本发明的又一个方面,提供了一种用于标识软件的GUI部件的装置,该装置包括:GUI窗口对象确定装置,用于在该软件的运行过程中确定GUI窗口对象及其标识;GUI部件确定装置,用于确定该GUI窗口对象中的所有GUI部件或属于一相同类型的所有GUI部件;区域划分装置,用于将该GUI窗口对象的显示区域划分为多个区域,以使得每一个所述GUI部件仅包含在一个区域中;区域标识指定装置,用于为包含GUI部件的区域指定唯一标识;GUI部件标识装置,用于以所述GUI窗口对象的标识以及GUI部件所在的区域的标识、或者以所述GUI窗口对象的标识以及GUI部件所属的类型的标识和GUI部件所在的区域的标识来标识GUI部件,从而获得该GUI部件的标识属性。
根据本发明的再一个方面,提供了一种软件自动测试系统,该系统包括:测试脚本回放装置,该测试脚本回放装置包括:读取装置,其用于读取存储在测试脚本中的GUI部件的标识属性,其中,所述GUI部件的标识属性是使用上述方法对该软件的第一版本中的GUI部件进行标识而获得的;上述用于标识软件的GUI部件的装置,其用于在该软件的第二版本的运行过程中,使用与用于获得所述测试脚本中的GUI部件标识属性相同的标识方法获得该软件中的GUI部件的标识属性;和脚本运行装置,用于根据所述读取的GUI部件的标识属性和所述获得的所述软件的第二版本中的GUI部件的标识属性之间的匹配关系来针对所述软件的第二版本运行所述测试脚本。
附图说明
所附权利要求中阐述了被认为是本发明的特点的新颖特征。但是,通过结合附图阅读下面对说明性实施例的详细说明将更好地理解发明本身以及其优选使用模式、另外的目标以及优点,在附图中:
图1示出了一示例应用的英文版本中的一GUI窗口及其中的以英文标识的GUI部件;
图2示出了所述示例应用的中文版本中的相应GUI窗口及其中的以中文标识的GUI部件;
图3例示了一GUI窗口对象的布局在不同语言版本中保持不变的情况;
图4示出了根据本发明的实施例的用于标识GUI部件的方法;
图5例示了使用本发明的方法划分一示例被测软件的窗口,从而形成该窗口中每一按钮的唯一标识;
图6例示了使用根据本发明的一实施例的划分GUI窗口对象的方法划分一示例被测软件的窗口、从而形成该窗口中每一按钮的唯一标识;
图7示出了使用根据本发明的实施例的用于标识GUI部件的方法的软件自动测试方法;
图8示出了根据本发明的实施例的用于标识软件的GUI部件的装置;
图9示出了根据本发明的实施例的软件自动测试系统。
具体实施方式
下面参照附图本发明的实施例。然而,应当理解的是,本发明并不限于所介绍的特定实施例。相反,可以考虑用下面的特征和元素的任意组合来实施和实践本发明,而无论它们是否涉及不同的实施例。因此,下面的方面、特征、实施例和优点仅作说明之用而不应被看作是所附权利要求的要素或限定,除非权利要求中明确提出。在此说明书内对特征、优点或类似语言的提及并不是暗示可使用本发明实现的所有或某些特征和优点在本发明的任何单个实施例内。相反,涉及特征和优点的语言应被理解为仅意谓着与实施例相联系地描述的特定特征、优点和特性被包含在本发明的至少一个实施例内。
本发明的基本思想在于定义一组语言独立的属性来标识GUI部件。在被测软件中,各种GUI部件,例如按钮、复选框、列表框、菜单、文本框、标签等等,均位于某GUI窗口对象或其一部分例如窗口中的选项卡之中。该顶层对象的布局,即其中的各GUI部件之间的相对位置,是稳定的,不会随着该顶层对象的大小的变化而变化。而且,在不同语言平台之间,该布局一般也不会变化。否则,同一软件的不同语言版本的用户将获得不同的用户体验,这在实际上将是一种缺陷,并且是不可行的。
基于上述事实,本发明将GUI窗口对象划分为多个区域,使得每一个GUI部件,或一个GUI部件的标志点(例如其左上角),仅包含在一个区域中,并用每个区域的唯一标识(例如其编号)来标识该区域内的唯一GUI部件。由于GUI窗口对象的布局在软件的不同语言版本之间是不变的,因此,每个GUI部件属于哪个区域,这在软件的不同语言版本之间也是不变的。这样,每个GUI部件所属于的区域的标识就成为了在不同语言版本之间标识该GUI部件的唯一的和稳定的标识。
图3例示了一GUI窗口对象的布局在不同语言版本中保持不变的情况。其中,该GUI窗口对象中包含四个GUI部件,即GUI Widget1、GUIWidget2、GUI Widget3、GUI Widget4。该四个GUI部件在英文版本和中文版本中的大小和位置略有差别,但它们在两种语言版本中的相对位置是一致的。因此,当使用本发明的方法将它们划分到窗口中的不同区域中、使得每一个GUI部件仅包含在一个区域中时,每个GUI部件属于哪个区域,这在两种语言版本中是不变的。例如,GUI Widget1属于编号为1的区域,GUI Widget2属于编号为2的区域,GUI Widget3属于编号为3的区域,GUI Widget4属于编号为4的区域。这样,就可以将编号1当作GUIWidget1的唯一和稳定的标识属性,将编号2当作GUI Widget2的唯一和稳定的标识属性,将编号3当作GUI Widget3的唯一和稳定的标识属性,以及将编号4当作GUI Widget4的唯一和稳定的标识属性。
下面参照图4具体描述根据本发明的实施例的用于标识软件的GUI部件的方法。
如图所示,过程开始后,在步骤401,确定GUI窗口对象及其标识。所述GUI窗口对象例如为被测软件的一GUI窗口,或一GUI窗口的一部分,例如一选项卡。可通过自动测试工具的场景(scenario)逻辑来确定GUI窗口对象及其唯一标识。
在步骤402,在所述GUI窗口对象中确定所有GUI部件或属于一相同类型的所有GUI部件。所述类型例如为GUI部件所属的类。例如在以Java语言编写的被测软件中,可通过GUI部件的.class属性来确定该GUI部件所属的类。所述类型也可以是GUI部件的其他某种稳定的类别属性。在本发明的另一实施例中,也可以直接确定所述GUI窗口对象中的所有GUI部件,而不是确定属于某一特定类别的所有GUI部件。可将该步骤中所确定的各GUI部件表示为Obji(i=1,...,n)。
在步骤403,将所述GUI窗口对象的显示区域划分为多个区域,以使得每一个GUI部件仅包含在一个区域中。存在多种不同的将GUI窗口对象的显示区域划分为多个区域、且每个GUI部件仅包含在一个区域中的方法。例如,可以所述GUI窗口对象显示区域的左下角为原点(0,0)建立一X-Y直角坐标系,并获得每个GUI部件的左上顶点(或其他顶点例如右上顶点等)的坐标,然后将GUI窗口对象的显示区域划分为多个区域,使得每一个GUI部件的左上顶点的坐标仅包含在一个区域中。再例如,可以所述GUI窗口对象显示区域的左上角为极点、以通过极点的右向水平线为极轴建立一极坐标系,并获得每个GUI部件的左上顶点(或其他顶点例如右上顶点等)的极坐标,然后将GUI窗口对象的显示区域划分为多个区域,使得每一个GUI部件的左上顶点的极坐标仅包含在一个区域中。
在如图3所示的采用直角坐标系的本发明的一个实施例中,对于在步骤402中确定的n个GUI部件中的每个GUI部件Obji(i=1,...,n),确定其左上顶点在所述直角坐标系中的坐标为(xi,yi)。从该n个GUI部件的n个横坐标xi(=1,..,n)中获得所有不同的横坐标,设共m个,记为xj(j=1,...,m,m≤n)。类似地,对于在步骤402中确定的n个GUI部件的n个纵坐标yi(=1,..,n)中获得所有不同的纵坐标,设共l个,记为yk(k=1,...,l,l≤n)。然后,在每对相邻的不同横坐标xj、xj+1(j=1,...,m-1,m≤n)之间,例如在坐标点((xj+xj+1)/2,0)(j=1,...,m-1,m≤n)处,划一条平行于Y轴的垂直线;并在每对相邻的不同纵坐标yk、yk+1(k=1,...,l-1,l≤n)之间,例如在(0,(yk+yk+1)/2)(k=1,...,l-1,l≤n)处,划一条平行于X轴的水平线。这样,就将该GUI窗口对象的显示区域划分为l×m网格,其中每一个GUI部件仅包含在该网格的一个格子中。
在如图5所示的采用极坐标系的本发明的另一个实施例中,对于在步骤402中确定的n个GUI部件中的每个GUI部件Obji(i=1,...,n),确定其左上顶点在所述极坐标系中的极坐标为(ρi,θi)(i=1,...,n),其中ρi表示GUI部件Obji的左上顶点距极点的距离,而θi表示GUI部件Obji的左上顶点和极点的连线与极轴之间的角度。从该n个GUI部件的n个极坐标矢径ρi(=1,..,n)中获得所有不同的矢径,设共m个,记为ρj(j=1,...,m,m≤n)。然后,在每对相邻的矢径ρj、ρj+1(j=1,...,m-1,m≤n)之间,例如在距极点(ρj+ρj+1)/2(j=1,...,m-1,m≤n)处,以极点为圆心划一条弧线,从而将所述GUI窗口对象的显示区域划分为m个扇形区域,每个扇形区域包含一个或多个GUI部件。
然后,对于每个包含多于一个GUI部件的扇形区域执行以下操作:设该扇形区域包含l个GUI部件Objk(k=1,...,l l≤n),其极坐标为(ρa,θk)(k=1,...,l,l≤n)(这l个GUI部件的左上顶点具有相同的极坐标矢径)。在每对相邻的极坐标矢角(θk,θk+1)(k=1,...,l-1,l≤n)之间,例如在矢角(θk+θk+1)/2处,划一条通过极点的直线,这样就把该扇形区域划分为l的更小的扇形区域,其中每一个更小的扇形区域包含一个GUI部件。通过上述过程,就把所述GUI窗口对象的显示区域划分为多个扇形区域或更小的扇形区域,其中每个扇形区域或更小的扇形区域仅包含一个GUI部件。
以上所述仅为将所述GUI窗口对象的显示区域划分为多个区域、以使得每一个GUI部件仅包含在一个区域中的方法的示例,而不是对该方法的限制,例如,所述直角坐标系的原点以及极坐标系的极点也可以采取其他位置,并且在划分时可以基于每个GUI部件的除其左上顶点之外的其他顶点或位置。此外,还可以采取其他的用来划分GUI窗口对象的显示区域的方法。
在步骤404,为包含GUI部件的多个区域中的每一个指定唯一标识。可以根据所述划分的区域的位置顺序地(例如,从上到下,从左到右)为每一个所划分的区域进行编号,并将该编号作为该区域的唯一标识。也可以任何其他方式为每一个所划分的区域或每一个包含一个GUI部件的所划分的区域指定唯一标识。
在步骤405,以所述GUI窗口对象的标识以及每个GUI部件所在的区域的标识、或者以所述GUI窗口对象的标识以及每个GUI部件所属的类型的标识和每个GUI部件所在的区域的标识来标识该GUI部件,从而获得每个GUI部件的标识属性。
在可选步骤406中,将所述标识步骤所获得的GUI部件的标识属性存储在包含所述GUI部件的测试脚本中。这样,每个GUI部件就获得了在软件的不同语言版本之间相同的、唯一的标识属性,所述标识属性包含该GUI部件所位于的、可由场景逻辑确定的唯一的GUI窗口对象的标识,以及该GUI部件所在的区域的标识例如其编号,或者包含该GUI部件所位于的GUI窗口对象的标识、该GUI部件所属的类型例如类或其他稳定的属性、以及该GUI部件所在的区域的标识例如其编号,从而便利了在不同语言平台上对同一软件的测试脚本的生成和回放,并因而便利了软件的测试。于是,过程结束。
以上描述了根据本发明的实施例的用于标识软件的GUI部件的方法,应指出的是,所描述的方法仅为示例,而不是对本发明的限制。本发明的用于标识软件的GUI部件的方法可具有更多、更少或不同的步骤,所描述的一些步骤可合并为单个步骤或划分为更细的步骤,且一些步骤之间的顺序可改变或可并行执行。
图6示出了使用根据本发明的一实施例的划分GUI窗口对象的方法划分一示例被测软件的窗口、从而形成该窗口中每一按钮的唯一标识的示例。
如图所示,该窗口包含5个按钮,“Browse”、“Back”、“Next”、“Finish”、“Cancel”。根据本发明的一个实施例中的划分方法,按照这5个按钮的左上顶点的横坐标和纵坐标将该窗口的显示区域划分为10个格子,从而使得每个按钮仅位于一个格子中,例如“Browse”按钮位于第5个格子中,“Back”按钮位于第6个格子中,“Next”按钮位于第7个格子中,“Finish”按钮位于第8个格子中,“Cancel”按钮位于第9个格子中。这样,就可以形成每个按钮的唯一的、语言独立的标识属性。例如,“Browse”按钮和“Next”按钮的唯一的标识属性分别如下:
“Browse”按钮
位置 | XXXGUI窗口对象(在被测软件中唯一的) |
.class | org.eclipse.swt.widgets.Button |
区域编号 | 5/10 |
“Next”按钮
位置 | XXXGUI窗口对象(在被测软件中唯一的) |
.class | org.eclipse.swt.widgets.Button |
区域编号 | 7/10 |
在本发明的另一个方面,还提供了如图7所示的使用上述根据本发明的实施例的用于标识GUI部件的方法的软件自动测试方法。该软件自动测试方法包括测试脚本的生成阶段和测试脚本的回放阶段。
在测试脚本的生成阶段,在过程开始后,在该软件的第一版本的运行过程中,使用根据本发明的实施例的用于标识GUI部件的方法400来标识该软件中的GUI部件,从而获得每个GUI部件的唯一的且在该软件的各版本中保持不变的标识。然后,在步骤701,生成包含所述标识作为所述GUI部件的标识属性的测试脚本。可采用本领域的技术人员所知的任何方法来生成测试脚本,例如通过记录测试人员与该被测软件的交互,或通过人工编写所述测试脚本,或通过两者的结合等。且所述生成的测试脚本可采用本领域技术人员所知的任何编程语言或格式来表示。然后过程结束。
在所述测试脚本的回放阶段,在过程开始后,在步骤702中,在该软件的第二版本(该第二版本可与所述第一版本相同或不同)的运行过程中,读取存储在所述测试脚本中的所述GUI部件的标识,其中存储在所述测试脚本中的所述GUI部件的标识是如上所述在所述测试脚本的生成阶段对该软件的第一版本生成和存储的。只要该软件的其他版本中的GUI部件的标识的产生方法和存储在所述测试脚本中的该软件的第一版本中的GUI部件的标识的产生方法相同,则该软件的其他版本中的GUI部件的标识将和存储在所述测试脚本中的该软件的第一版本中的GUI部件的标识相同。这样,所述测试脚本中的该软件的第一版本中的GUI部件的标识将适用于该软件的所有其他版本。于是,使用根据本发明的实施例的、与用于标识该软件的第一版本中的GUI部件以产生所述测试脚本相同的标识方法400来标识该软件的第二版本中的GUI部件,从而获得该软件的第二版本中的所述GUI部件的标识属性。然后,在步骤703中,根据在步骤702中所读取的GUI部件的标识属性和在所述标识步骤400所获得的该软件的第二版本中每个GUI部件的标识属性之间的匹配关系来运行测试脚本。也就是说,在所述测试脚本的回放过程中,对于在测试脚本中遇到的每一个GUI部件,从测试脚本中读取其标识属性,并在该被测软件的第二版本的运行过程中标识其GUI部件,从而获得该软件的第二版本中每个GUI部件的标识属性,然后针对被测软件的第二版本的运行过程中的具有相同标识属性的GUI部件执行测试脚本中具有该标识属性的GUI部件所具有的操作。所述读取测试脚本中的GUI部件的标识属性的步骤702和所述获得软件第二版本的GUI部件的标识属性的步骤可以任何顺序执行,或并行执行。此外,既可以首先读取测试脚本中每个GUI部件的标识属性,并在被测软件的第二版本的运行过程中生成该软件的第二版本中每个GUI部件的标识属性,从而找到它们之间的匹配关系;也可以在测试脚本的运行过程中,每当执行针对一GUI部件的操作时,读取该GUI部件的标识属性,并标识运行中的被测软件的GUI部件,找到被测软件中具有相匹配标识属性的GUI部件,从而可针对该GUI部件执行测试脚本中指定的操作。然后过程结束。
下面参照图8描述根据本发明的实施例的用于标识软件的GUI部件的装置800。如图所示,该装置800包括:GUI窗口对象确定装置801、GUI部件确定装置802、区域划分装置803、区域标识指定装置804、GUI部件标识装置805、以及可选的存储装置806。
其中,所述GUI窗口对象确定装置801用于在该软件的运行过程中确定GUI窗口对象及其标识。所述GUI窗口对象为包含若干GUI部件的GUI窗口或窗口的一部分例如选项卡等,其标识在该软件中唯一且在不同该软件的不同语言版本中保持不变。
所述GUI部件确定装置802用于确定所述GUI窗口对象中的所有GUI部件或属于一相同类型的所有GUI部件。所述类型例如为GUI部件所属的类,也可以是GUI部件的其他某种稳定的类别属性。
所述区域划分装置803用于将该GUI窗口对象的显示区域划分为多个区域,以使得每一个所述GUI部件仅包含在一个区域中。该区域划分装置803可以使用多种不同的方法将GUI窗口对象的显示区域划分为多个区域且使得每个GUI部件仅包含在一个区域中。
在本发明的一个实施例中,该区域划分装置803进一步包括坐标确定装置和划线装置,其中:所述坐标确定装置用于确定每个所述GUI部件的一顶点在所述GUI对象的显示区域中的横坐标和纵坐标,所述划线装置用于在所述GUI对象的显示区域中任何相邻的所述横坐标之间划一条垂直线,以及在所述GUI对象的显示区域中任何相邻的所述纵坐标之间划一条水平线,从而将所述GUI对象的显示区域划分为多个区域,其中每一个GUI部件仅包含在一个区域中。
在本发明的另一个实施例中,该区域划分装置803进一步包括距离确定装置、划弧线装置和划半径装置,其中所述距离确定装置用于确定每个所述GUI部件的一顶点距所述GUI对象的显示区域的一顶点的距离;所述划弧线装置用于以所述GUI对象的显示区域的所述顶点为圆心,以任何相邻的所述距离之间的一距离为半径划弧线,从而将所述GUI对象的显示区域划分为多个区域;所述划半径装置,用于在任何两个或更多个GUI部件被划分到同一区域中的情况下,在所述两个或更多个GUI部件的所述顶点与所述GUI对象的显示区域的所述顶点的连线之间划半径,以进一步将所述同一区域划分为多个区域,从而使得每一个GUI部件仅包含在一个划分的区域中。
所述区域标识指定装置804用于为包含GUI部件的多个区域中的每一个指定唯一标识。该唯一标识例如为该区域的编号。
所述GUI部件标识装置805用于以所述GUI窗口对象的标识以及每个GUI部件所在的区域的标识、或者以所述GUI窗口对象的标识以及每个GUI部件所属的类型的标识和每个GUI部件所在的区域的标识来标识该GUI部件,从而获得每个GUI部件的标识。
所述可选的存储装置806用于将所述获得的GUI部件的标识存储在包含所述GUI部件的测试脚本中,作为所述GUI部件的标识属性。
以上描述了根据本发明的实施例的用于标识软件的GUI部件的装置800,应指出的是,所描述的装置800仅为示例,而不是对本发明的限制。本发明的用于标识软件的GUI部件的装置可具有比所描述的更多、更少或不同的功能模块,所描述的一些功能模块可合并在一起,或进一步划分,或具有不同的连接关系和包含关系,所有这些变化均处于本发明的精神和范围之内。
在本发明的另一个方面,还提供了如图9所示的一种软件自动测试系统,该系统包括:测试脚本生成装置910,以及测试脚本回放装置920。
所述测试脚本生成装置910包括上述根据本发明的实施例的用于标识软件中的GUI部件的装置800,以及用于生成包含所述GUI部件的标识属性的测试脚本的装置911。
所述测试脚本回放装置920包括读取装置921、上述根据本发明的实施例的用于标识软件中的GUI部件的装置800,以及脚本运行装置922。
其中,在该软件的第一版本的运行过程中,所述测试脚本生成装置910中的根据本发明的实施例的用于标识软件的GUI部件的装置800标识该软件中的GUI部件,从而获得每个GUI部件的唯一的且在该软件的各版本中保持不变的标识属性。然后,所述用于生成包含所述GUI部件的标识属性的测试脚本的装置911通过记录测试人员与该被测软件的交互,或通过人工编写所述测试脚本,或通过两者的结合等,生成包含所述GUI部件的所述标识属性的测试脚本。生成的测试脚本可采用本领域技术人员所知的任何编程语言或格式来表示。所述用于生成包含所述GUI部件标识的测试脚本的装置911可以包括本领域技术人员所知的任何用于生成测试脚本的装置。
然后,在该软件的第二版本(该第二版本可与所述第一版本相同或不同)例如一不同语言版本的运行过程中,所述测试脚本回放装置920中的读取装置921读取存储在所述测试脚本中的所述GUI部件的标识属性,其中存储在所述测试脚本中的所述GUI部件的标识是如上所述在所述测试脚本的生成阶段对该软件的第一版本生成和存储的。与此同时,或在此之前或之后,所述测试脚本回放装置920中的根据本发明的实施例的用于标识软件的GUI部件的装置800使用与用于标识该软件的第一版本中的GUI部件以产生所述测试脚本相同的标识方法来标识该软件的第二版本中的GUI部件,从而获得该软件的第二版本中的所述GUI部件的标识属性。然后,所述脚本运行装置922根据由所述读取装置921所读取的GUI部件的标识属性和由所述用于标识软件的GUI部件的装置所获得的该软件的第二版本中的GUI部件的标识属性之间的匹配关系来运行测试脚本。也就是说,在所述测试脚本的回放过程中,对于在测试脚本中遇到的每一个GUI部件,从测试脚本中读取其标识属性,并在该被测软件的第二版本的运行过程中标识其GUI部件,从而获得该软件的第二版本中每个GUI部件的标识属性,然后针对该被测软件的第二版本中具有相同标识属性的GUI部件执行测试脚本中具有该标识属性的GUI部件所具有的操作。所述脚本运行装置922可以包括本领域的技术人员所知的任何脚本运行装置。
本发明可以硬件、软件、固件或结合的方式实现。本发明可以集中的方式在一个计算机系统中实现,或以分布方式实现,在这种分布方式中,不同的部件分布在若干互连的计算机系统中。适于执行本文中描述的各方法的任何计算机系统或其它装置都是合适的。一种典型的硬件和软件的组合可以是带有计算机程序的通用计算机系统,当该计算机程序被加载和执行时,控制该计算机系统而使其执行本文中描述的方法的各步骤,或构成根据本发明的实施例的各装置和系统中的各功能模块。
本发明也可体现在计算机程序产品中,该程序产品包含使能实现本文中描述的方法的所有特征,并且当其被加载到计算机系统中时,能够执行这些方法,或构成根据本发明的实施例的各装置和系统中的各功能模块。
尽管已参照优选实施例具体示出和说明了本发明,但是本领域内的那些技术人员可理解,可在形式和细节上对其进行各种改变而不会背离本发明的精神和范围。
Claims (15)
1.一种用于标识软件的GUI部件的方法,包括以下步骤:
在该软件的运行过程中,确定GUI窗口对象及其标识;
确定该GUI窗口对象中的所有GUI部件或属于一相同类型的所有GUI部件;
将该GUI窗口对象的显示区域划分为多个区域,以使得每一个所述GUI部件仅包含在一个区域中,每一个包含GUI部件的区域仅包含一个GUI部件;
为包含GUI部件的区域中指定唯一标识;
以所述GUI窗口对象的标识以及GUI部件所在的区域的标识、或者以所述GUI窗口对象的标识以及GUI部件所属的类型的标识和GUI部件所在的区域的标识来标识GUI部件,从而获得该GUI部件的标识属性。
2.根据权利要求1的方法,其中所述类型为GUI部件所属的类。
3.根据权利要求1的方法,其中所述划分步骤包括以下子步骤:
确定每个所述GUI部件的一顶点在所述GUI窗口对象的显示区域中的横坐标和纵坐标;
在所述GUI窗口对象的显示区域中任何相邻的所述横坐标之间划一条垂直线,以及在所述GUI窗口对象的显示区域中任何相邻的所述纵坐标之间划一条水平线,从而将所述GUI窗口对象的显示区域划分为多个区域,其中每一个GUI部件仅包含在一个区域中。
4.根据权利要求1的方法,其中所述划分步骤包括以下子步骤:
确定每个所述GUI部件的一顶点距所述GUI窗口对象的显示区域的一顶点的距离;
以所述GUI窗口对象的显示区域的所述顶点为圆心,以任何相邻的所述距离之间的一距离为半径划弧线,从而将所述GUI窗口对象的显示区域划分为多个区域;
如果有任何两个或更多个GUI部件被划分到同一区域中,则在所述两个或更多个GUI部件的每对相邻顶点的极坐标矢角之间,划一条通过所述GUI窗口对象的显示区域的所述顶点的直线,把该区域划分为更小的区域,从而使得每一个区域仅包含一个GUI部件。
5.根据权利要求1的方法,还包括以下步骤:将所述标识步骤所获得的GUI部件的标识属性存储在包含所述GUI部件的测试脚本中。
6.一种软件自动测试方法,该方法包括以下步骤:
在测试脚本的回放阶段,在该软件的第二版本的运行过程中,读取存储在所述测试脚本中的所述GUI部件的标识属性,其中,所述GUI部件的标识属性是使用根据权利要求1-5中任何一个的方法对该软件的第一版本中的GUI部件进行标识而获得的;
使用与用于获得所述测试脚本中的GUI部件标识属性相同的标识方法来获得该软件的第二版本中的GUI部件的标识属性;以及
根据所述读取的GUI部件的标识属性和所述获得步骤所生成的所述软件的第二版本中的GUI部件的标识属性之间的匹配关系来针对所述软件的第二版本运行所述测试脚本。
7.根据权利要求6的方法,该方法还包括测试脚本的生成阶段,并在该阶段中包括以下步骤:
根据权利要求1-5中任何一个的方法来获得该软件的第一版本中的GUI部件的标识属性;以及
生成包含所述GUI部件的所述标识属性的测试脚本。
8.根据权利要求6的方法,其中所述软件的第一版本和所述软件的第二版本为所述软件的不同语言版本。
9.一种用于标识软件的GUI部件的装置,包括:
GUI窗口对象确定装置,用于在该软件的运行过程中确定GUI窗口对象及其标识;
GUI部件确定装置,用于确定该GUI窗口对象中的所有GUI部件或属于一相同类型的所有GUI部件;
区域划分装置,用于将该GUI窗口对象的显示区域划分为多个区域,以使得每一个所述GUI部件仅包含在一个区域中,每一个包含GUI部件的区域仅包含一个GUI部件;
区域标识指定装置,用于为包含GUI部件的区域指定唯一标识;
GUI部件标识装置,用于以所述GUI窗口对象的标识以及GUI部件所在的区域的标识、或者以所述GUI窗口对象的标识以及GUI部件所属的类型的标识和GUI部件所在的区域的标识来标识GUI部件,从而获得该GUI部件的标识属性。
10.根据权利要求9的装置,其中所述类型为GUI部件所属的类。
11.根据权利要求9的装置,其中所述区域划分装置包括:
坐标确定装置,用于确定每个所述GUI部件的一顶点在所述GUI窗口对象的显示区域中的横坐标和纵坐标;
划线装置,用于在所述GUI窗口对象的显示区域中任何相邻的所述横坐标之间划一条垂直线,以及在所述GUI窗口对象的显示区域中任何相邻的所述纵坐标之间划一条水平线,从而将所述GUI窗口对象的显示区域划分为多个区域,其中每一个GUI部件仅包含在一个区域中。
12.根据权利要求9的装置,其中所述区域划分装置包括:
距离确定装置,用于确定每个所述GUI部件的一顶点距所述GUI窗口对象的显示区域的一顶点的距离;
划弧线装置,用于以所述GUI窗口对象的显示区域的所述顶点为圆心,以任何相邻的所述距离之间的一距离为半径划弧线,从而将所述GUI窗口对象的显示区域划分为多个区域;
划半径装置,用于在任何两个或更多个GUI部件被划分到同一区域中的情况下,在所述两个或更多个GUI部件的每对相邻顶点的极坐标矢角之间,划一条通过所述GUI窗口对象的显示区域的所述顶点的直线,把该区域划分为更小的区域,从而使得每一个区域仅包含一个GUI部件。
13.根据权利要求9的装置,还包括存储装置,用于将所述GUI部件标识装置所获得的GUI部件的标识属性存储在包含所述GUI部件的测试脚本中。
14.一种软件自动测试系统,包括:
测试脚本回放装置,该测试脚本回放装置包括:
读取装置,其用于读取存储在测试脚本中的GUI部件的标识属性,其中,所述GUI部件的标识属性是使用根据权利要求1-5中任何一个的方法对该软件的第一版本中的GUI部件进行标识而获得的;
根据权利要求9-13中任何一个的用于标识软件的GUI部件的装置,其用于在该软件的第二版本的运行过程中,使用与用于获得所述测试脚本中的GUI部件标识属性相同的标识方法获得该软件的第二版本中的GUI部件的标识属性;和
脚本运行装置,用于根据所述读取的GUI部件的标识属性和所述获得的所述软件的第二版本中的GUI部件的标识属性之间的匹配关系来针对所述软件的第二版本运行所述测试脚本。
15.根据权利要求14的系统,还包括:
测试脚本生成装置,该测试脚本生成装置包括:
根据权利要求9-13中任何一个的用于标识软件的GUI部件的装置,其用于在该软件的第一版本的运行过程中,获得GUI部件的标识属性;以及
用于生成包含所述GUI部件的所述标识属性的测试脚本的装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101418556A CN101369249B (zh) | 2007-08-14 | 2007-08-14 | 标识软件的gui部件的方法和装置 |
US12/191,713 US8312428B2 (en) | 2007-08-14 | 2008-08-14 | Method to recognize GUI object in globablized environment |
US13/407,724 US8621431B2 (en) | 2007-08-14 | 2012-02-28 | Method to recognize GUI object in globalized environment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101418556A CN101369249B (zh) | 2007-08-14 | 2007-08-14 | 标识软件的gui部件的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101369249A CN101369249A (zh) | 2009-02-18 |
CN101369249B true CN101369249B (zh) | 2011-08-17 |
Family
ID=40364000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101418556A Active CN101369249B (zh) | 2007-08-14 | 2007-08-14 | 标识软件的gui部件的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US8312428B2 (zh) |
CN (1) | CN101369249B (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090273597A1 (en) * | 2008-05-05 | 2009-11-05 | International Business Machines Corporation | User interface screen layout analysis using hierarchical geometric features |
US20110202855A1 (en) * | 2008-09-29 | 2011-08-18 | Teruya Ikegami | Gui evaluation system, gui evaluation method, and gui evaluation program |
WO2010035391A1 (ja) * | 2008-09-29 | 2010-04-01 | 日本電気株式会社 | Gui評価システム、gui評価方法およびgui評価プログラム |
US8005930B2 (en) * | 2009-06-03 | 2011-08-23 | Microsoft Corporation | Add-ins dynamically extending display targets and business-logic programming model |
US8336030B1 (en) | 2009-09-11 | 2012-12-18 | The Mathworks, Inc. | System and method for coding standard testing |
US8762873B2 (en) * | 2009-10-26 | 2014-06-24 | Hewlett-Packard Development Company, L.P. | Graphical user interface component identification |
US8850395B2 (en) * | 2009-12-03 | 2014-09-30 | International Business Machines Corporation | Managing graphical user interface (GUI) objects in a testing environment |
US8490056B2 (en) | 2010-04-28 | 2013-07-16 | International Business Machines Corporation | Automatic identification of subroutines from test scripts |
US8566792B2 (en) | 2010-05-07 | 2013-10-22 | Salesforce, Inc. | Validating visual components |
US9009669B2 (en) * | 2010-05-07 | 2015-04-14 | Salesforce.Com, Inc. | Visual user interface validator |
US8875103B2 (en) * | 2010-05-12 | 2014-10-28 | Ca, Inc. | Method of testing multiple language versions of a software system using one test script |
US20110283204A1 (en) * | 2010-05-12 | 2011-11-17 | Microsoft Corporation | Pasting Various Data into a Programming Environment |
US8386504B1 (en) | 2010-07-06 | 2013-02-26 | The Mathworks, Inc. | System and method for file differencing with importance ranking |
US9189135B2 (en) | 2011-01-04 | 2015-11-17 | International Business Machines Corporation | Three-dimensional GUI object stores in automation test tools |
US8892635B2 (en) | 2011-01-06 | 2014-11-18 | Oracle International Corporation | Techniques for detecting inactive browser windows |
US9015226B2 (en) | 2011-01-06 | 2015-04-21 | Oracle International Corporation | Techniques for detecting new browser windows |
US8819631B2 (en) * | 2011-01-13 | 2014-08-26 | Hewlett-Packard Development Company, L.P. | System and method for self dependent web automation |
US8924934B2 (en) * | 2011-02-04 | 2014-12-30 | Oracle International Corporation | Automated test tool interface |
US9424236B2 (en) | 2011-04-26 | 2016-08-23 | Oracle International Corporation | Filtered Stylesheets |
US9250872B2 (en) | 2011-10-19 | 2016-02-02 | Oracle International Corporation | Task flow interface in a popup region |
CN103713958B (zh) | 2012-09-28 | 2016-12-21 | 国际商业机器公司 | 在不同语言的机器间同步图形用户界面操作的方法和设备 |
US10691299B2 (en) | 2014-09-25 | 2020-06-23 | Oracle International Corporation | Display of hierarchical datasets using high-water mark scrolling |
US9767009B2 (en) * | 2014-11-10 | 2017-09-19 | International Business Machines Corporation | Adaptation of automated test scripts |
CN106484445A (zh) * | 2015-08-27 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 移动终端应用程序的页面展示方法和装置 |
US9600401B1 (en) | 2016-01-29 | 2017-03-21 | International Business Machines Corporation | Automated GUI testing |
US10180900B2 (en) | 2016-04-15 | 2019-01-15 | Red Hat Israel, Ltd. | Recordation of user interface events for script generation |
US10417116B2 (en) * | 2016-07-28 | 2019-09-17 | International Business Machines Corporation | System, method, and apparatus for crowd-sourced gathering of application execution events for automatic application testing and replay |
CN106294178A (zh) * | 2016-08-22 | 2017-01-04 | 北京奇虎科技有限公司 | 自动化测试方法和装置 |
CN108132818B (zh) * | 2016-11-30 | 2021-12-21 | 阿里巴巴集团控股有限公司 | 界面处理方法和执行该方法的电子装置 |
US10162741B2 (en) * | 2017-01-24 | 2018-12-25 | International Business Machines Corporation | Automatically correcting GUI automation using machine learning |
US10691664B1 (en) * | 2017-07-18 | 2020-06-23 | FullStory, Inc. | User interface structural clustering and analysis |
CN108008955B (zh) * | 2017-12-15 | 2021-01-01 | 北京小米移动软件有限公司 | 显示自定义控件信息的方法、装置 |
US11042390B2 (en) * | 2019-05-07 | 2021-06-22 | International Business Machines Corporation | Replaying operations on widgets in a graphical user interface |
CN112597040A (zh) * | 2020-12-28 | 2021-04-02 | 中国农业银行股份有限公司 | 一种界面自动化测试方法、装置及电子设备 |
CN113610939A (zh) * | 2021-07-28 | 2021-11-05 | Oppo广东移动通信有限公司 | Ui对象的定位方法、终端设备及计算机可读存储介质 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5600789A (en) * | 1992-11-19 | 1997-02-04 | Segue Software, Inc. | Automated GUI interface testing |
US5701444A (en) * | 1995-03-24 | 1997-12-23 | 3Dlabs Inc. Ltd. | Three-dimensional graphics subsystem with enhanced support for graphical user interface |
JP3508915B2 (ja) * | 1998-09-18 | 2004-03-22 | シャープ株式会社 | データ表示制御方法、データ表示制御装置、及びデータ表示制御プログラムを記録したコンピュータ読み取り可能な記録媒体 |
EP1098244A3 (en) * | 1999-11-02 | 2001-06-13 | CANAL + Société Anonyme | Graphical user interface |
US6907546B1 (en) * | 2000-03-27 | 2005-06-14 | Accenture Llp | Language-driven interface for an automated testing framework |
US20020029259A1 (en) * | 2000-07-26 | 2002-03-07 | Nec Corporation | Remote operation system and remote operation method thereof |
GB2366978A (en) * | 2000-09-15 | 2002-03-20 | Ibm | GUI comprising a rotatable 3D desktop |
CN1592881A (zh) * | 2001-09-13 | 2005-03-09 | 松下电器产业株式会社 | 图形用户接口组件焦点目的设置装置和焦点移动装置 |
WO2003065179A2 (en) * | 2002-02-01 | 2003-08-07 | John Fairweather | A system and method for mining data |
US7415698B2 (en) * | 2002-12-09 | 2008-08-19 | International Business Machines Corporation | Testing and debugging framework for application builders |
US7895536B2 (en) * | 2003-01-08 | 2011-02-22 | Autodesk, Inc. | Layer editor system for a pen-based computer |
US8046712B2 (en) * | 2004-06-29 | 2011-10-25 | Acd Systems International Inc. | Management of multiple window panels with a graphical user interface |
US7653896B2 (en) * | 2004-06-30 | 2010-01-26 | Microsoft Corporation | Smart UI recording and playback framework |
GB0502891D0 (en) * | 2005-02-12 | 2005-03-16 | Next Device Ltd | User interfaces |
US7810050B2 (en) * | 2005-03-28 | 2010-10-05 | Panasonic Corporation | User interface system |
US8079037B2 (en) * | 2005-10-11 | 2011-12-13 | Knoa Software, Inc. | Generic, multi-instance method and GUI detection system for tracking and monitoring computer applications |
US8875218B2 (en) * | 2005-12-29 | 2014-10-28 | Nextlabs, Inc. | Deploying policies and allowing off-line policy evaluations |
US20070162844A1 (en) * | 2006-01-12 | 2007-07-12 | Microsoft Corporation | Automatic layout of objects |
-
2007
- 2007-08-14 CN CN2007101418556A patent/CN101369249B/zh active Active
-
2008
- 2008-08-14 US US12/191,713 patent/US8312428B2/en not_active Expired - Fee Related
-
2012
- 2012-02-28 US US13/407,724 patent/US8621431B2/en active Active
Non-Patent Citations (1)
Title |
---|
JP特开2002-288008A 2002.10.04 |
Also Published As
Publication number | Publication date |
---|---|
CN101369249A (zh) | 2009-02-18 |
US20120159453A1 (en) | 2012-06-21 |
US8312428B2 (en) | 2012-11-13 |
US8621431B2 (en) | 2013-12-31 |
US20090049427A1 (en) | 2009-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101369249B (zh) | 标识软件的gui部件的方法和装置 | |
Leotta et al. | Visual vs. DOM-based web locators: An empirical study | |
Krüger et al. | Where is my feature and what is it about? a case study on recovering feature facets | |
US9424167B2 (en) | Automated testing of an application system | |
EP3129885B1 (en) | Software test automation system and method | |
CN107644286B (zh) | 工作流处理方法及装置 | |
US7926038B2 (en) | Method, system and computer program for testing a command line interface of a software product | |
US20080276224A1 (en) | Method and Apparatus for Completing Functional Testing | |
CN102567201B (zh) | 跨模型的图形用户界面测试脚本自动修复方法 | |
CN109189479B (zh) | 一种用于处理器指令集的并行自动化验证方法 | |
CN104407973A (zh) | 一种自动化单元测试的实现方法及装置 | |
CN110750459B (zh) | 基于白盒分析的测试用例自动生成和测试进程管理方法 | |
JP2011510418A (ja) | コンポーネント・モデル基盤の仮想ソフトウェア・プラットホームを生成する方法、これを利用してソフトウェア・プラットホーム・アーキテクチャを検証する方法及びその装置 | |
CN104657274B (zh) | 软件界面测试方法及装置 | |
US10209984B2 (en) | Identifying a defect density | |
US20070061641A1 (en) | Apparatus and method for generating test driver | |
CN107622017B (zh) | 一种通用自动化软件测试的解析方法 | |
JP2002099584A (ja) | 設計検証システム、設計検証方法および設計検証プログラムを格納したコンピュータ読取り可能な記録媒体 | |
CN113626326B (zh) | 一种基于图像识别的拖拽式的零代码前端自动化测试系统 | |
CN104809053A (zh) | 一种针对控件样式的测试方法和装置 | |
Aljawabrah et al. | Automated recovery and visualization of test-to-code traceability (TCT) links: An evaluation | |
JP2022118286A (ja) | 検出装置、テストシステム、検出方法、およびプログラム | |
Bernard et al. | Supporting efficient test automation using lightweight MBT | |
Goodenough et al. | Software quality assurance: Testing and validation | |
CN114756217B (zh) | 基于插件的脚本生成系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |