CN102521121B - 一种页面测试方法和页面测试装置 - Google Patents
一种页面测试方法和页面测试装置 Download PDFInfo
- Publication number
- CN102521121B CN102521121B CN201110367655.9A CN201110367655A CN102521121B CN 102521121 B CN102521121 B CN 102521121B CN 201110367655 A CN201110367655 A CN 201110367655A CN 102521121 B CN102521121 B CN 102521121B
- Authority
- CN
- China
- Prior art keywords
- page
- page elements
- test
- statement
- action
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明实施例提供了一种页面测试方法和页面测试装置,其中页面测试方法用于对页面进行测试,该方法包括读取用于指示页面元素和测试动作的测试语句;根据所述页面的源代码查找所述页面元素在所述页面上的位置;在所述位置执行所述测试动作;验证所述测试动作的执行结果以获得测试结果。本发明还提供了一种页面测试装置。本发明实施例无需使用动作函数,而是直接触发指定的测试动作,因此测试软件的开发复杂度和使用复杂度均得以降低。
Description
技术领域
本发明涉及页面测试技术,尤其涉及一种页面测试方法和页面测试装置。
背景技术
以动作字(Action Word,AW)为主要特点的第三代软件测试技术,因其使用方便,一经推出便取得了巨大的成功。
在这种软件测试技术中,测试软件厂商预先为在标准页面(例如基于超文本标记语言(HyperText Markup Language,HTML)编写的标准网页)上执行的每一种标准动作(例如“鼠标左键单击按钮”或者“鼠标左键单击下拉框”等)定义对应的动作函数。这种动作函数通过对应的动作名称(例如“鼠标左键单击按钮”或者“鼠标左键单击下拉框”等)进行标识,其作用并非用于触发对应的动作,而是用于触发动作执行后产生的直接结果,该直接结果可称为动作事件。测试软件中会维护一动作列表,其中列有通过各自动作名称标识的各种动作函数。
在测试过程中,这种测试软件首先提取待测试页面中的所有页面元素(例如“按钮”和“下拉框”等),生成对照表(MAP)。此后,测试人员便可通过在动作列表中选择动作名称和在对照表中选择页面元素的方式来生成对应的测试语句,以便对针对该页面元素进行的特定动作(即动作名称所对应的动作)进行测试。接下来,在加载待测试页面(目的是使页面处于工作状态以便对页面进行测试)后,测试软件读取测试语句,调用其中的动作名称所对应的动作函数,来触发对测试语句中的页面元素执行对应动作后导致的动作事件,获得最终的动作结果(该动作结果可通过页面的变化反映出来)并对其进行验证,得到最终的测试结果。如上文所述,执行动作函数的的作用并非用于触发对应的动作,而是触发动作执行后产生的直接结果。
如上文所述,在上述测试过程中,测试人员需要通过选择动作名称和页面元素的方式来生成对应的测试语句。例如,如果测试人员需要对“鼠标左键单击登录按钮”这一页面操作进行测试,则测试人员需要首先选择“鼠标左键单击按钮”这一动作名称,然后选择“登录按钮”这一页面元素,以生成对应的测试语句。又例如,如果测试人员需要对“鼠标左键单击性别下拉框”这一页面操作进行测试,则测试人员需要首先选择“鼠标左键单击下拉框”这一动作名称,然后选择“性别下拉框”这一页面元素,以生成对应的测试语句。不难发现,测试人员需要同时依据动作类型(例如“鼠标左键单击”)和待测试动作所面向的待测试页面元素的类型(例如,“登录按钮”的类型为“按钮”,“性别下拉框”的类型为“下拉框”)这两个参考条件,来选择对应的动作名称(例如,“鼠标左键单击按钮”或者“鼠标左键单击下拉框”)以确定对应的动作函数,而不能仅仅依据动作类型来选择对应的动作名称,这是因为针对不同类型的页面元素,即使动作类型相同,执行动作后触发的动作事件也很可能是不同的(例如鼠标左键单击“登录按钮”可能导致弹出登录结果界面,而鼠标左键单击“下拉框”可能导致列出可供选择的选项),因此需要根据页面元素的类型开发对应的动作函数。这种因页面元素类型不同而导致的动作函数上的差异,增大了测试软件的复杂度。一方面,即便对于同一类型的动作,测试软件厂商也需要根据动作所面向的页面元素的类型而编写多个不同的动作函数,因此增大了测试软件的开发复杂度。另一方面,在选择动作函数时,测试人员需要根据动作所面向的页面元素的类型在多个相似的动作函数中进一步选择所需的动作函数,增大了测试软件的使用复杂度。
发明内容
有鉴于此,实有必要提供一种页面测试方法,来降低现有测试软件的开发复杂度和使用复杂度。
同时,提供一种页面测试装置,来降低现有测试软件的开发复杂度和使用复杂度。
根据本发明实施例的一个方面,提供一种页面测试方法,用于对页面进行测试,所述方法包括:
读取用于指示页面元素和测试动作的测试语句;
根据所述页面的源代码查找所述页面元素在所述页面上的位置;
在所述位置执行所述测试动作;
验证所述测试动作的执行结果以获得测试结果。
根据本发明实施例的另一方面,提供一种页面测试装置,用于对页面进行测试,所述装置包括:
读取模块,用于读取用于指示页面元素和测试动作的测试语句;
查找模块,用于根据所述页面的源代码查找所述页面元素在所述页面上的位置;
执行模块,用于在所述位置执行所述测试动作;
验证模块,用于验证所述测试动作的执行结果以获得测试结果。
本发明实施例提供的技术方案读取用于指示页面元素和测试动作的测试语句,根据页面的源代码查找所述页面元素在所述页面上的位置,并在所述位置执行所述测试动作,再验证所述测试动作的执行结果以获得测试结果。由此可见,本发明实施例无需使用动作函数,而是直接触发指定的测试动作,因此测试软件的开发复杂度和使用复杂度均得以降低。
附图说明
图1是依据本发明一实施例的页面测试方法的示范性流程图;
图2是依据本发明一实施例的页面测试装置的示范性逻辑结构示意图;
图3是依据本发明一实施例的页面的示范性示意图。
具体实施方式
图1是依据本发明一实施例的页面测试方法100的示范性流程图。页面测试方法100用于对页面进行测试,其中,该页面可以是基于HTML编写的网页(Web Page),也可以是软件界面。
步骤102,读取用于指示页面元素和测试动作的测试语句。
步骤104,根据所述页面的源代码查找所述页面元素在所述页面上的位置。
步骤106,在所述位置执行所述测试动作。
步骤108,验证所述测试动作的执行结果以获得测试结果。
本发明实施例提供的技术方案读取用于指示页面元素和测试动作的测试语句,根据页面的源代码查找所述页面元素在所述页面上的位置,并在所述位置执行所述测试动作,再验证所述测试动作的执行结果以获得测试结果。由此可见,本发明实施例无需使用动作函数,而是直接触发指定的测试动作,因此测试软件的开发复杂度和使用复杂度均得以降低。此外,本发明实施例无需预先提取待测试页面中的所有页面元素以生成对照表。
下面就对上述方法100中的各个步骤进行详细描述。
在具体实现过程中,方法102中提及的测试语句可以是基于预设语句模板输入的基于自然语言的测试语句,其中,上述语句模板与动作关键词相对应,不同的动作关键词对应不同的语句模板。例如,对于“鼠标左键单击”这一动作关键词,对应的语句模板可采用如下格式:
鼠标左键单击+页面元素
其中+无需输入。而页面元素可以是例如但不限于“登录按钮”、“性别下拉框”等页面元素。又例如,对于“输入”这一动作关键词,对应的语句模板可采用如下格式:
在+页面元素+中+输入+动作值
其中+无需输入。区别于上述动作关键词“鼠标左键单击”,动作关键词“输入”所对应的语句模板中需要包含动作值,该动作值可以是任何需要输入的字符,例如数值、符号和字母等之中的至少一种组成的字符串等。不难发现,在基于语句模板输入的测试语句中,该测试语句所指示的测试动作即为该语句模板所对应的动作关键词所指示的动作。此外,在确定了测试语句中包含的动作关键词之后,即可根据该动作关键词对应的语句模板,解析出该测试语句所指示的页面元素和动作值(如果包含动作值的话)。在具体实现过程中,测试动作可包括例如但不限于鼠标左键单击、鼠标右键单击、鼠标左键双击、鼠标右键双击、鼠标悬停、键盘输入、滚轮滚动等各种动作。由此可见,相比现有技术中标识动作函数的动作名称,动作关键词仅为动作类型,而不包括动作所指向的页面元素的类型。
此外,上述语句模板中提到的页面元素可以通过页面元素的内容和类型共同来指示,也可以通过页面元素的属性(包含属性名称和属性值)来指示,或者同时通过页面元素的内容和类型以及页面元素的属性来指示,以便更为精确的指示页面元素。例如,对于“员工编号栏”这一页面元素来说,在测试语句中,该页面元素既可以通过该页面元素的内容和类型即文字“员工编号”和“栏”来指示,也可以通过该页面元素的属性名称例如id、name等及其对应的属性值来指示,或者同时通过文字“员工编号”和“栏”以及属性id或者name及其对应的属性值来指示。当测试语句同时包含页面元素的内容和类型以及属性名称及其属性值时,在测试语句中,语句模板中的该页面元素可采用如下格式:
页面元素的内容+页面元素的类型(页面元素的属性名称=属性值)
其中+无需输入。例如,对于页面上的“员工编号栏”这一页面元素即可写成员工编号栏(id=staff),其中,员工编号是该页面元素的内容,栏是该页面元素的类型,id是该页面元素的属性名称,staff是该页面元素的属性值。更为具体的,当在测试语句中使用页面元素的属性名称时,还可将该属性名称统一标识为一通用变量,例如通用变量X,该通用变量X既可以是id,也可以是name,还可以是其他属性名称。在这种情况下,该页面元素将通过该通用变量X的值来指示。例如,上述页面元素“员工编号栏”可写成X=staff,在这种情况下,该页面元素即为具有属性值为staff的页面元素,无论该属性值所属的属性的属性名称是何种属性名称。
如上文所述,在基于上述语句模板输入的基于自然语言的测试语句中,通过动作关键词来指示测试动作,而通过页面元素的内容和类型来指示页面元素,或者通过页面元素的属性名称及属性值来指示页面元素,又或者同时通过页面元素的内容和类型以及页面元素的属性名称及属性值来指示页面元素。为便于描述,可将测试语句中用于指示页面元素的信息简称为页面元素指示信息,通过上文描述不难理解,该页面元素指示信息包括下列信息之中的至少一种:
页面元素的内容和类型;
页面元素的属性名称及属性值。
即该页面元素指示信息可以包含页面元素的内容和类型,也可以包含页面元素的属性名称及属性值,还可以同时包含页面元素的内容和类型以及页面元素的属性及其属性值。
此外,在具体实现过程中,上述语句模板可采用正则表达式的方式来实现。例如,动作关键词“输入”所对应的正则表达式可以是:
在[″′“](?P<text>.*)[″′”][栏框]?([((](?P<X>[\w]*)=(?P<V>.*)[))])?
([[]((?P<index>[\d]+?)(?P<offset>([\+\-][\d]+)?))[]])?[栏框]?[内中]?输入[“″′](?P<value>.*)[”″′]
其中,上述text可代表页面元素的内容,栏框代表页面元素的类型为栏或者框,X代表通用变量,V代表通用变量的值,value为动作值。由此可见,在根据上述正则表达式输入的测试语句中,页面元素指示信息同时包含页面元素的内容和类型以及页面元素的属性名称及属性值。
由上文所述可知,如果获知测试语句对应的语句模板,即可从测试语句中解析得到该测试语句所指示的页面元素。由于语句模板与动作关键词相对应,因此如果获知测试语句中包含的动作关键词,即可获知测试语句对应的语句模板。在具体实现过程中,可维护一动作关键词列表,其中列有各种动作关键词。在这种情况下,方法100中的步骤102可具体包括:
读取所述测试语句;
基于动作关键词列表查找包含在所述测试语句中的动作关键词,其中,所述动作关键词用于指示所述测试动作;
根据所述动作关键词对应的语句模板从所述测试语句中提取所述页面元素,其中,从所述测试语句中提取所述页面元素又可具体解释为,提取所述页面元素的页面元素指示信息。
此外,方法100中的步骤102还可包括根据所述动作关键词对应的语句模板从所述测试语句中提取与所述测试动作相关联的动作值。
如上文所述,在方法100的步骤104中,本发明实施例根据所述页面的源代码查找所述页面元素在所述页面上的位置。具体来说,该位置在可视范围之内。在具体实现过程中,在对页面进行测试时,往往需要加载该页面,即将该页面的源代码加载到内存中。如此一来,便可根据加载到内存中的页面的源代码来查找所述页面元素在所述页面上的位置。由背景技术可知,现有技术需要加载页面两次。第一次加载页面的目的是提取页面中的所有页面元素以生成对照表,第二次加载页面的目的是使页面处于工作状态以便对其进行测试。与现有技术相比,本发明实施例无需预先提取页面中的所有页面元素以生成对照表,因此仅需加载一次页面即可。
在具体实现过程中,方法100的步骤104可具体包括使所述页面元素出现在可视范围内;根据所述页面的源代码查找所述页面元素在该页面元素所属窗口(window)对象中的位置;根据所述页面的源代码查找所述页面元素所属窗口对象在所述页面上的位置;根据所述页面的源代码查找影响所述窗口对象的显示位置的滚动条的当前滚动位置;依据所述页面元素在该页面元素所属窗口对象中的位置、所述页面元素所属窗口对象在所述页面上的位置和影响所述窗口对象的显示位置的滚动条的当前滚动位置确定所述页面元素在所述页面上的位置。在具体实现过程中,步骤104中的上述步骤可通过下列代码进行实现:
上述代码所描述的过程可大致描述为:使所述页面元素出现在可视范围内;对于待测试页面元素与该待测试页面元素所属窗口对象的主体(body)元素之间的各级元素(包括待测试页面元素),将该各级元素之中的每一级元素与该每一级元素的上级元素之间的偏移量进行累加,得到该待测试页面元素与所述主体元素之间的偏移量,作为所述页面元素在该页面元素所属窗口对象中的位置;获取待测试页面元素所属窗口对象的主体元素在所述页面上的位置,作为所述页面元素所属窗口对象在所述页面上的位置;根据所述页面元素在该页面元素所属窗口对象中的位置、所述页面元素所属窗口对象在所述页面上的位置和影响所述窗口对象的显示位置的滚动条的当前滚动位置,最后得到所述页面元素在所述页面上的位置。
上述代码的最后一部分代码用于保证测试窗口不会遮挡住待测试页面元素,以免产生无法对待测试页面元素执行测试动作的问题。有关测试窗口的内容将在下文进行详细描述。
此外,本领域的技术人员应当明白,还可采用其他方法来实现根据所述页面的源代码查找所述页面元素在该页面上的位置。
应注意,在具体实现过程中,测试语句中携带的页面元素指示信息可能无法用于唯一的定位待测试的页面元素的位置。例如,对于一些源代码编写不够规范的页面来说,可能出现不同页面元素的同一属性名称被分配相同的属性值。这样一来,如果页面元素指示信息仅仅包含属性名称和属性值时,将定位到多个位置,即查找到多个对应的页面元素。上述问题的一个解决办法是,除了包含待测试页面元素的页面元素指示信息之外,测试语句中还可包含另一页面元素的页面元素指示信息,其中,待测试页面元素的页面元素指示信息无法唯一定位待测试页面元素在页面上的位置,但另一页面元素的页面元素指示信息可以唯一定位另一页面元素在页面上的位置。在这种情况下,测试语句中还包含待测试页面元素与另一页面元素的位置关系信息,这样便可在根据另一页面元素的页面元素指示信息定位到该另一页面元素在页面上的位置时,根据待测试页面元素与另一页面元素的位置关系信息定位待测试页面元素在页面上的位置。此外,上述问题的另一解决办法可以是,在测试语句中增加一位置序号。在这种情况下,当根据待测试页面元素的页面元素指示信息查找到多个位置时,可根据一定的方向,例如所述页面的浏览方向,对所述多个位置进行排序。此后,再依照所述位置序号在排序后的多个位置中查找对应的位置,作为所述页面元素在所述页面上的位置。在一些情况下,对待测试页面上某一页面元素执行测试动作时引发的动作结果可能出现在另一页面上,因此需要在另一页面上进行验证。例如,在测试登录操作时,往往需要验证登录操作执行后弹出的登录结果页面上的登录结果,在这种情况下可能需要定位登录结果这一页面元素在登录结果页面上的位置,以便抓取登录结果。因此,在具体实现过程中,本发明实施例提供的技术方案还可同时加载彼此相关联的多个页面的源代码。在这种情况下,在定位测试语句所指示的页面元素时,需要在这些页面的源代码中首先定位该页面元素所在的页面,然后再定位该页面元素在所在页面上的位置,这是因为测试语句不会指示页面元素所在的页面。在加载多个页面的源代码的情况下,源代码数量较大,因此定位页面元素所在的页面以及该页面元素在所在页面上的位置将非常耗时。为解决这一问题,本发明实施例可优先根据前一测试语句所指示的页面元素的源代码,判断当前测试语句所指示页面元素是否出现在前一测试语句所指示的页面元素所在的页面上,这是因为前后两个测试语句各自指示的页面元素共同出现在同一页面上的可能性较大。另外,本发明实施例还根据已执行的测试语句,统计这些这些测试语句所指示的页面元素所在页面的命中次数,并根据命中次数的高低对这些页面进行排序。例如,在已执行的测试语句中,有三条测试语句所指示的页面元素出现在第一页面上,有两条测试语句所指示的页面元素出现在第二页面上,则该第一页面的命中次数为3,第二页面的命中次数为2。在这种情况下,在确定当前测试语句所指示页面元素所在的页面时,优先判断待测试页面元素是否出现在命中次数较高的页面上。
在具体实现过程中,步骤106可具体包括,首先根据在步骤104中获取的所述页面元素在所述页面上的位置,将指针移至所述位置,然后执行所述测试动作,例如执行“鼠标左键单击”、“输入”等动作。在具体实现过程中,当移动指针时,可能会触发不必要的onmouseover事件。具体来说,onmouseover事件是指指针移动至某一页面元素之上时触发的事件。在将指针移至待测试页面元素所在的位置的过程中,指针经过另一页面元素时可能触发onmouseover事件,该onmouseover事件很可能对测试过程产生不期望的影响。因此,在具体实现过程中,可首先将指针移至另一位置,然后再将指针从该另一位置移至待测试页面元素在所述页面上的位置,其中将指针移至另一位置以及将指针从另一位置移至待测试页面元素在所述页面上的位置的过程中,不会触发不必要的onmouseover事件。在具体操作过程中,可首先定位会触发onmouseover事件的页面元素在待测试页面上的位置,然后再规划指针移动路径,使得上述会触发onmouseover事件的页面元素不会出现在该移动路径上。该移动路径的典型例子可以是直角路径,即指针当前所在位置与另一位置之间的连线,与另一位置与待测试页面元素在页面上的位置之间的连线相交成直角。
在具体实现过程中,当所需执行的动作为输入(即根据动作关键词列表在测试语句中找到的动作关键词为“输入”)时,所述执行所述测试动作具体包括,复制所述动作值并将其粘贴至待测试页面元素在所述页面上的位置。采用这种复制粘贴的方法,可有效避免输入中文等非英文文字时遇到的输入法切换问题。由此可见,相比现有技术,本发明实施例仅需执行测试语句中的动作即可,而无需关心动作对象即页面元素的类型。
最后,在步骤108,验证所述测试动作的执行结果以获得测试结果。具体来说,在得到执行结果后,如果该执行结果与预期结果相同,则说明测试成功,即测试结果为测试成功;如果该执行结果与预期结果不同,则说明测试失败,即可测试结果为测试失败。
此外,在具体实现过程中,方法100还可包括,显示采用预设透明度的测试窗口,所述页面元素在所述页面上的位置处于所述测试窗口之外,所述测试窗口包含用于显示所述测试语句的第一子窗口和用于显示所述测试结果的第二子窗口,其中,在获得所述测试结果之前,所述测试语句呈现第一色彩;在获得所述测试结果之后,当所述测试结果为测试成功时,所述测试语句呈现第二色彩,所述测试结果呈现第三色彩;在获得所述测试结果之后,当所述测试结果为测试失败时,所述测试语句呈现第四色彩,所述测试结果呈现第五色彩,其中,第一色彩、第二色彩和第四色彩彼此各不相同,第三色彩不同于第五色彩。
其中,将测试窗口设置成具有一定的透明度,可以保证测试窗口不会完全遮挡待测试的页面。保证所述页面元素在所述页面上的位置处于所述测试窗口之外的目的在于,使得测试窗口不会遮挡待测试的页面元素,以免产生无法对待测试页面元素执行测试操作的问题。例如,假设测试语句指示需要鼠标左键单击待测试的页面元素,则如果待测试的页面元素被测试窗口遮挡,则无法点中待测试的页面元素,被点中的将是测试窗口。为使待测试页面元素不被测试窗口所遮挡,测试窗口的位置可以设计成可变的,也可以是固定的。当测试窗口的位置是可变的情况下,应保证测试窗口不会遮挡当前正在测试的页面元素,即如果测试窗口遮挡到即将执行的测试语句所指示的页面元素,则测试窗口应改变位置。当测试窗口的位置是固定的情况下,应保证测试窗口不会遮挡页面上的所有页面元素。在获得测试结果前后对测试语句标记不同的颜色,可用于区分哪些测试语句已经执行完毕,哪些尚未执行。而根据测试结果的不同来对执行完毕的测试语句标记不同的颜色,可用于区分哪些测试语句的最终测试结果为测试成功,哪些测试语句的最终测试结果为测试失败。根据测试结果的不同来对测试结果标记不同的颜色,可用于区分哪些测试结果没有问题,哪些测试结果有问题。通过标记不同的颜色,可帮助测试人员迅速定位测试失败的测试语句。此外,测试窗口中还可包括第三窗口,用于显示当前正在执行的测试语句。
在具体实现过程中,方法100还可包括,在无法识别所述测试语句时,输出运行异常提示信息。所述运行异常提示信息可以包含多个选项,例如其中的一个选项可以是,跳过该测试语句,执行下一条测试语句,同时标记该无法识别的测试语句。另一选项可以是,人工执行该测试语句,即由测试人员针对测试语句所指示的页面元素执行测试语句所指示的动作。此后,方法100还可包括,接收测试人员选择的选项,执行对应的操作。例如,当测试人员选择的选项是跳过该测试语句,执行下一条测试语句,同时标记该无法识别的测试语句时,将标记该无法识别的测试语句并针对下一条语句重新执行方法100。当然,方法100还可包括,在无法识别所述测试语句时,直接跳过该测试语句,执行下一条测试语句,同时标记该无法识别的测试语句。
本发明实施例还提供了一种页面测试装置,下面就结合图2对其进行详细描述。
图2是依据本发明一实施例的页面测试装置200的示范性逻辑结构示意图。装置200用于对页面进行测试,装置200具体包括读取模块202、查找模块204、执行模块206和验证模块208。
读取模块202用于读取用于指示页面元素和测试动作的测试语句;
查找模块204用于根据所述页面的源代码查找所述页面元素在所述页面上的位置;
执行模块206用于在所述位置执行所述测试动作;
验证模块208用于验证所述测试动作的执行结果以获得测试结果。
在具体实现过程中,查找模块204具体用于:
使所述页面元素出现在可视范围内,例如移动相关的滚动条,来使所述页面元素出现在可视范围内;
根据所述页面的源代码查找所述页面元素在该页面元素所属窗口对象中的位置;
根据所述页面的源代码查找所述页面元素所属窗口对象在所述页面上的位置;
根据所述页面的源代码查找影响所述窗口对象的显示位置的滚动条的当前滚动位置;
依据所述页面元素在该页面元素所属窗口对象中的位置、所述页面元素所属窗口对象在所述页面上的位置和影响所述窗口对象的显示位置的滚动条的当前滚动位置确定所述页面元素在所述页面上的位置。
如上文所述,所述测试语句中携带有用于指示所述页面元素的页面元素指示信息,所述查找模块204具体用于,根据所述页面元素指示信息查找所述页面元素在所述页面上的位置,其中,所述页面元素指示信息为页面元素的内容和类型,或者所述页面元素指示信息为页面元素的属性名称及属性值,或者所述页面元素指示信息同时包含页面元素的内容和类型以及页面元素的属性名称及属性值。
在具体实现过程中,所述读取模块202具体用于:
读取所述测试语句;
基于动作关键词列表查找包含在所述测试语句中的动作关键词,其中,所述动作关键词用于指示所述测试动作;
根据所述动作关键词对应的语句模板从所述测试语句中提取所述页面元素。
在具体实现过程中,所述读取模块202还用于:
根据所述动作关键词对应的语句模板从所述测试语句中提取与所述测试动作相关联的动作值。
在具体实现过程中,所述执行模块206具体用于,当找到的动作关键词为输入时,复制所述动作值并将其粘贴至所述位置。
在具体实现过程中,,所述装置200还可包括:
显示模块(图2中未示出),用于显示采用预设透明度的测试窗口,所述页面元素在所述页面上的位置处于所述测试窗口之外,所述测试窗口包含用于显示所述测试语句的第一子窗口和用于显示所述测试结果的第二子窗口,其中,在获得所述测试结果之前,所述测试语句呈现第一色彩;在获得所述测试结果之后,当所述测试结果为测试成功时,所述测试语句呈现第二色彩,所述测试结果呈现第三色彩;在获得所述测试结果之后,当所述测试结果为测试失败时,所述测试语句呈现第四色彩,所述测试结果呈现第五色彩,其中,第一色彩、第二色彩和第四色彩彼此各不相同,第三色彩不同于第五色彩。
应注意,在具体实现过程中,图2所示的装置200所执行的操作与图1所示的方法100相对应,因此装置200的其他相关操作可参考方法100,此处不再赘述。
图3是依据本发明一实施例的页面300的示范性示意图。如图3所示,页面300上展示有用户名输入栏、密码输入栏、登录按钮、性别下拉框、年龄输入栏预计测试窗口302。其中,测试窗口302进一步包括第一子窗口3022、第二子窗口3024和第三子窗口3026。如上文所述,第一子窗口3022用于显示测试语句,第二子窗口3024用于显示测试结果,第三子窗口3026用于显示当前正在执行的测试语句。
如图3所示,第一子窗口3022中列有鼠标左键单击登录按钮、鼠标左键单击性别下拉框和在年龄栏中输入36三条测试语句,其中鼠标左键单击登录按钮和鼠标左键单击性别下拉框均已执行完毕,第二子窗口3024中显示的测试结果分别为成功和失败。而在年龄栏中输入36在第三子窗口3026中也有显示,说明这一测试语句正在执行。如上文所述,在具体实现过程中,测试窗口302可采用预设透明度(图中未示出),第一子窗口中的测试语句可在不同情况下显示不同的色彩(图中未示出),第二子窗口中的测试结果也可在不同情况下显示不同色彩(图中未示出)。色彩的具体显示情况已在上文进行了清楚的描述,因此此处不再赘述。
本发明实施例还提供了一种页面测试装置,包括存储器和处理器,其中存储器中存储有用于执行方法100所需的计算机可读指令,处理器用于读取存储器中存储的计算机可读指令,以执行图1所示的方法100。
本发明实施例还提供了一种计算机可读介质,其中存储有用于执行图1所示方法100的计算机可读指令。
本领域普通技术人员可知,上述方法中的全部或部分步骤可以通过程序指令相关的硬件完成,该程序可以存储于一计算机可读存储介质中,该计算机可读存储介质如ROM、RAM和光盘等。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种页面测试方法,用于对页面进行测试,其特征在于,所述方法包括:
读取用于指示页面元素和测试动作的测试语句,所述测试语句是基于预设语句模板输入的基于自然语言的测试语句,根据所述测试语句对应的语句模板,从所述测试语句中解析得到所述测试语句所指示的页面元素;
根据所述页面的源代码查找所述页面元素在所述页面上的位置;
在所述位置执行所述测试动作;
验证所述测试动作的执行结果以获得测试结果。
2.如权利要求1所述的方法,其特征在于,所述根据所述页面的源代码查找所述页面元素在所述页面上的位置,具体包括:
使所述页面元素出现在可视范围内;
根据所述页面的源代码查找所述页面元素在该页面元素所属窗口对象中的位置;
根据所述页面的源代码查找所述页面元素所属窗口对象在所述页面上的位置;
根据所述页面的源代码查找影响所述窗口对象的显示位置的滚动条的当前滚动位置;
依据所述页面元素在该页面元素所属窗口对象中的位置、所述页面元素所属窗口对象在所述页面上的位置和影响所述窗口对象的显示位置的滚动条的当前滚动位置确定所述页面元素在所述页面上的位置。
3.如权利要求2所述的方法,其特征在于,所述测试语句中携带有用于指示所述页面元素的页面元素指示信息,所述查找所述页面元素在所述页面上的位置具体包括,根据所述页面元素指示信息查找所述页面元素在所述页面上的位置,其中,所述页面元素指示信息包含页面元素的内容和类型,或者所述页面元素指示信息包含页面元素的属性名称及属性值,或者所述页面元素指示信息同时包含页面元素的内容和类型以及页面元素的属性名称及属性值。
4.如权利要求3所述的方法,其特征在于,所述读取用于指示页面元素和测试动作的测试语句,根据所述测试语句对应的语句模板,从所述测试语句中解析得到所述测试语句所指示的页面元素具体包括:
读取所述测试语句;
基于动作关键词列表查找包含在所述测试语句中的动作关键词,其中,所述动作关键词用于指示所述测试动作;
根据所述动作关键词对应的语句模板从所述测试语句中提取所述页面元素。
5.如权利要求4所述的方法,其特征在于,所述读取用于指示页面元素和测试动作的测试语句还包括:
根据所述动作关键词对应的语句模板从所述测试语句中提取与所述测试动作相关联的动作值。
6.如权利要求5所述的方法,其特征在于,当找到的动作关键词为输入时,所述执行所述测试动作具体包括,复制所述动作值并将其粘贴至所述位置。
7.如权利要求6所述的方法,其特征在于,所述方法还包括,显示采用预设透明度的测试窗口,所述页面元素在所述页面上的位置处于所述测试窗口之外,所述测试窗口包含用于显示所述测试语句的第一子窗口和用于显示所述测试结果的第二子窗口,其中,在获得所述测试结果之前,所述测试语句呈现第一色彩;在获得所述测试结果之后,当所述测试结果为测试成功时,所述测试语句呈现第二色彩,所述测试结果呈现第三色彩;在获得所述测试结果之后,当所述测试结果为测试失败时,所述测试语句呈现第四色彩,所述测试结果呈现第五色彩,其中,第一色彩、第二色彩和第四色彩彼此各不相同,第三色彩不同于第五色彩。
8.一种页面测试装置,用于对页面进行测试,其特征在于,所述装置包括:
读取模块,用于读取用于指示页面元素和测试动作的测试语句,所述测试语句是基于预设语句模板输入的基于自然语言的测试语句,根据所述测试语句对应的语句模板,从所述测试语句中解析得到所述测试语句所指示的页面元素;
查找模块,用于根据所述页面的源代码查找所述页面元素在所述页面上的位置;
执行模块,用于在所述位置执行所述测试动作;
验证模块,用于验证所述测试动作的执行结果以获得测试结果。
9.如权利要求8所述的装置,其特征在于,所述查找模块具体用于:
使所述页面元素出现在可视范围内;
根据所述页面的源代码查找所述页面元素在该页面元素所属窗口对象中的位置;
根据所述页面的源代码查找所述页面元素所属窗口对象在所述页面上的位置;
根据所述页面的源代码查找影响所述窗口对象的显示位置的滚动条的当前滚动位置;
依据所述页面元素在该页面元素所属窗口对象中的位置、所述页面元素所属窗口对象在所述页面上的位置和影响所述窗口对象的显示位置的滚动条的当前滚动位置确定所述页面元素在所述页面上的位置。
10.如权利要求9所述的装置,其特征在于,所述测试语句中携带有用于指示所述页面元素的页面元素指示信息,所述查找模块具体用于,根据所述页面元素指示信息查找所述页面元素在所述页面上的位置,其中,所述页面元素指示信息包含页面元素的内容和类型,或者所述页面元素指示信息包含页面元素的属性名称及属性值,或者所述页面元素指示信息同时包含页面元素的内容和类型以及页面元素的属性名称及属性值。
11.如权利要求10所述的装置,其特征在于,所述读取模块具体用于:
读取所述测试语句;
基于动作关键词列表查找包含在所述测试语句中的动作关键词,其中,所述动作关键词用于指示所述测试动作;
根据所述动作关键词对应的语句模板从所述测试语句中提取所述页面元素。
12.如权利要求11所述的装置,其特征在于,所述读取模块还用于:
根据所述动作关键词对应的语句模板从所述测试语句中提取与所述测试动作相关联的动作值。
13.如权利要求12所述的装置,其特征在于,所述执行模块具体用于,当找到的动作关键词为输入时,复制所述动作值并将其粘贴至所述位置。
14.如权利要求13所述的装置,其特征在于,所述装置还包括:
显示模块,用于显示采用预设透明度的测试窗口,所述页面元素在所述页面上的位置处于所述测试窗口之外,所述测试窗口包含用于显示所述测试语句的第一子窗口和用于显示所述测试结果的第二子窗口,其中,在获得所述测试结果之前,所述测试语句呈现第一色彩;在获得所述测试结果之后,当所述测试结果为测试成功时,所述测试语句呈现第二色彩,所述测试结果呈现第三色彩;在获得所述测试结果之后,当所述测试结果为测试失败时,所述测试语句呈现第四色彩,所述测试结果呈现第五色彩,其中,第一色彩、第二色彩和第四色彩彼此各不相同,第三色彩不同于第五色彩。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110367655.9A CN102521121B (zh) | 2011-11-18 | 2011-11-18 | 一种页面测试方法和页面测试装置 |
PCT/CN2012/073646 WO2013071728A1 (zh) | 2011-11-18 | 2012-04-09 | 一种页面测试方法和页面测试装置 |
US14/279,616 US20140250426A1 (en) | 2011-11-18 | 2014-05-16 | Page testing method and page testing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110367655.9A CN102521121B (zh) | 2011-11-18 | 2011-11-18 | 一种页面测试方法和页面测试装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102521121A CN102521121A (zh) | 2012-06-27 |
CN102521121B true CN102521121B (zh) | 2015-04-08 |
Family
ID=46292052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110367655.9A Expired - Fee Related CN102521121B (zh) | 2011-11-18 | 2011-11-18 | 一种页面测试方法和页面测试装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20140250426A1 (zh) |
CN (1) | CN102521121B (zh) |
WO (1) | WO2013071728A1 (zh) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530222B (zh) * | 2012-07-04 | 2018-01-09 | 腾讯科技(深圳)有限公司 | 基于情感的软件测试方法及系统 |
CN103019937B (zh) * | 2012-12-13 | 2015-11-18 | 广东欧珀移动通信有限公司 | 一种人机交互界面遍历测试方法 |
CN103873318B (zh) * | 2012-12-18 | 2018-02-13 | 阿里巴巴集团控股有限公司 | 一种网站自动化测试方法及自动化测试系统 |
CN103914375B (zh) * | 2013-01-07 | 2019-04-26 | 百度国际科技(深圳)有限公司 | 一种自绘界面软件的测试方法和装置 |
CN103177096B (zh) * | 2013-03-15 | 2019-02-05 | 百度在线网络技术(北京)有限公司 | 基于文本属性的页面元素定位方法及设备 |
US9218267B1 (en) * | 2013-08-14 | 2015-12-22 | Amazon Technologies, Inc. | Page rendering feedback |
CN103631719A (zh) * | 2013-12-12 | 2014-03-12 | 用友软件股份有限公司 | 一种Web自动化测试方法和装置 |
US20160004783A1 (en) * | 2014-07-01 | 2016-01-07 | EveryMundo, LLC | Automated generation of web site entry pages |
CN105868096B (zh) * | 2015-01-22 | 2019-09-10 | 阿里巴巴集团控股有限公司 | 用于在浏览器中显示web页面测试结果的方法、装置及设备 |
CN105068918B (zh) * | 2015-06-03 | 2017-11-17 | 中国人民财产保险股份有限公司 | 一种页面测试方法及装置 |
CN106484609B (zh) * | 2015-09-01 | 2019-04-09 | 博雅网络游戏开发(深圳)有限公司 | 页面测试方法和装置 |
CN105320603B (zh) * | 2015-12-04 | 2018-04-06 | 上海斐讯数据通信技术有限公司 | 浏览器页面元素的定位系统和方法及其自动化测试方法 |
CN105373478B (zh) * | 2015-12-14 | 2018-06-08 | 广州华多网络科技有限公司 | 自动化测试方法和系统 |
CN105868100A (zh) * | 2015-12-22 | 2016-08-17 | 乐视网信息技术(北京)股份有限公司 | 基于Android系统的自动化测试方法及装置 |
CN105528297A (zh) * | 2016-01-29 | 2016-04-27 | 广州酷狗计算机科技有限公司 | 对web页面进行测试的方法及装置 |
CN105893250A (zh) * | 2016-03-28 | 2016-08-24 | 广州酷狗计算机科技有限公司 | 代码调试方法及装置 |
CN106897227A (zh) * | 2017-03-06 | 2017-06-27 | 环胜电子(深圳)有限公司 | 一种动态网页测试的对照显示方法及系统 |
CN107908639A (zh) * | 2017-09-26 | 2018-04-13 | 东软集团股份有限公司 | 页面对象查找方法及装置、存储介质、电子设备 |
CN109783343A (zh) * | 2017-11-13 | 2019-05-21 | 北京嘀嘀无限科技发展有限公司 | 控件测试方法、装置、客户端设备和计算机可读存储介质 |
CN108182143A (zh) * | 2017-11-29 | 2018-06-19 | 商派软件有限公司 | 一种页面对象自动化测试方法 |
CN108628741B (zh) * | 2018-04-10 | 2021-10-01 | 平安科技(深圳)有限公司 | 网页页面测试方法、装置、电子设备和介质 |
CN108920146A (zh) * | 2018-06-05 | 2018-11-30 | 广州衡昊数据科技有限公司 | 页面控制组件和可视化模拟操作系统 |
CN109189688B (zh) * | 2018-09-11 | 2022-06-03 | 北京奇艺世纪科技有限公司 | 一种测试用例脚本的生成方法、生成装置及电子设备 |
CN109446092A (zh) * | 2018-10-31 | 2019-03-08 | 北京微播视界科技有限公司 | 对用户界面ui元素进行标识的方法、装置及电子设备 |
CN109800161A (zh) * | 2018-12-28 | 2019-05-24 | 网宿科技股份有限公司 | 一种用户界面的控件测试方法、电子设备和可存储介质 |
CN111949510B (zh) * | 2019-05-17 | 2024-05-14 | 百度在线网络技术(北京)有限公司 | 测试处理方法、装置、电子设备及可读存储介质 |
CN110262963A (zh) * | 2019-05-21 | 2019-09-20 | 深圳壹账通智能科技有限公司 | 基于句柄的功能测试方法、装置及终端设备 |
CN110287108A (zh) * | 2019-05-31 | 2019-09-27 | 北京随信云链科技有限公司 | 一种页面测试方法、计算设备和存储介质 |
CN112702597A (zh) * | 2019-10-22 | 2021-04-23 | 北京奇艺世纪科技有限公司 | 一种测试方法、测试装置、电视终端及测试系统 |
CN110781091B (zh) * | 2019-10-31 | 2023-10-27 | 北京奇艺世纪科技有限公司 | 应用程序的测试方法、装置、电子设备及存储介质 |
CN111159014B (zh) * | 2019-12-13 | 2022-05-06 | 平安医疗健康管理股份有限公司 | 探索性测试的响应方法及装置、计算机设备、存储介质 |
CN113377603B (zh) * | 2020-03-10 | 2024-04-05 | 北京沃东天骏信息技术有限公司 | 监测页面的方法和装置 |
CN111581110B (zh) * | 2020-04-16 | 2023-08-15 | 贝壳技术有限公司 | 一种业务数据准确性检测方法、装置、系统及存储介质 |
CN111679974A (zh) * | 2020-05-26 | 2020-09-18 | 泰康保险集团股份有限公司 | 一种应用程序的测试方法及装置 |
US10970064B1 (en) | 2020-07-28 | 2021-04-06 | Bank Of America Corporation | Dynamically updating a software program to resolve errors |
CN112000575A (zh) * | 2020-08-21 | 2020-11-27 | 探探文化发展(北京)有限公司 | 一种应用的界面显示测试方法、系统、设备及存储介质 |
CN113032279A (zh) * | 2021-04-22 | 2021-06-25 | 东南大学 | 一种基于语义路径搜索的Web应用测试修复方法 |
CN113094286B (zh) * | 2021-05-11 | 2024-05-10 | 北京字节跳动网络技术有限公司 | 页面测试方法和装置、存储介质和电子设备 |
CN114817078B (zh) * | 2022-06-29 | 2022-11-29 | 荣耀终端有限公司 | 一种自动化测试的方法、装置及存储介质 |
CN116301456B (zh) * | 2023-02-21 | 2024-06-11 | 广东保伦电子股份有限公司 | Windows客户端登陆测试管理方法、装置及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100395724C (zh) * | 2006-02-15 | 2008-06-18 | 华为技术有限公司 | 一种图形用户界面的测试方法和系统 |
US20080270845A1 (en) * | 2007-04-26 | 2008-10-30 | Kristin Petersen | Methods and Apparatus That Enable a Viewer to Distinguish Different Test Data Entries and Test Data Items |
CN101118515B (zh) * | 2007-09-11 | 2010-06-23 | 腾讯科技(深圳)有限公司 | 一种表单的自动测试方法及装置 |
CN101377759B (zh) * | 2008-08-26 | 2010-06-09 | 中国工商银行股份有限公司 | 自动化界面测试系统 |
CN101763306A (zh) * | 2009-12-24 | 2010-06-30 | 深圳市金蝶移动互联技术有限公司 | 前端性能自动测试方法、测试装置和测试系统 |
-
2011
- 2011-11-18 CN CN201110367655.9A patent/CN102521121B/zh not_active Expired - Fee Related
-
2012
- 2012-04-09 WO PCT/CN2012/073646 patent/WO2013071728A1/zh active Application Filing
-
2014
- 2014-05-16 US US14/279,616 patent/US20140250426A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
WO2013071728A1 (zh) | 2013-05-23 |
CN102521121A (zh) | 2012-06-27 |
US20140250426A1 (en) | 2014-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102521121B (zh) | 一种页面测试方法和页面测试装置 | |
US10713149B2 (en) | Processing automation scripts of software | |
US10990511B2 (en) | Apparatus and application interface traversing method | |
CN109086204B (zh) | 节点关系树建立、页面标记和识别方法、装置和存储介质 | |
CN102804147A (zh) | 执行abap源代码的代码检查的代码检查执行系统 | |
CN102567565B (zh) | 一种电缆参数的处理方法和系统 | |
CN105335246B (zh) | 一种基于问答网站分析的程序崩溃缺陷自动修复方法 | |
CN110221959B (zh) | 应用程序的测试方法、设备以及计算机可读介质 | |
KR101873101B1 (ko) | 유사 텍스트를 포함한 웹 페이지 수집을 위한 포털 사이트 기반 웹 크롤링 방법 및 장치 | |
CN111813443A (zh) | 一种用JavaFX进行代码样例自动填充的方法和工具 | |
CN115061908A (zh) | 缺陷代码的定位方法、装置、存储介质及计算机设备 | |
CN103049504A (zh) | 基于源代码查询的半自动插桩方法 | |
CN111158973B (zh) | 一种web应用动态演化监测方法 | |
CN109032946B (zh) | 一种测试方法和装置、计算机可读存储介质 | |
CN106933735A (zh) | 测试用例更新方法及装置 | |
CN111859089B (zh) | 一种用于互联网信息的错词检测控制方法 | |
CN107402882B (zh) | Web页面测试方法和装置 | |
CN105204997B (zh) | 软件缺陷检测方法及装置 | |
CN114282093A (zh) | 搜索引擎性能评估方法、装置、设备和存储介质 | |
CN113515443A (zh) | 多国语言自动核对方法、装置、计算机设备及存储介质 | |
US9420052B2 (en) | Web navigation using web navigation pattern histories | |
CN109213490A (zh) | 一种程序处理方法、装置以及相关设备 | |
CN113268600B (zh) | 检索名称的错别字纠正方法、装置、电子设备和存储介质 | |
CN110795931A (zh) | 一种web网站页面语言的检测方法及终端 | |
CN114860582B (zh) | Web页面测试辅助方法及系统 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150408 Termination date: 20151118 |
|
EXPY | Termination of patent right or utility model |