CN101105768A - Windows平台下基于MSAA的GUI测试驱动方法 - Google Patents
Windows平台下基于MSAA的GUI测试驱动方法 Download PDFInfo
- Publication number
- CN101105768A CN101105768A CNA2007100253749A CN200710025374A CN101105768A CN 101105768 A CN101105768 A CN 101105768A CN A2007100253749 A CNA2007100253749 A CN A2007100253749A CN 200710025374 A CN200710025374 A CN 200710025374A CN 101105768 A CN101105768 A CN 101105768A
- Authority
- CN
- China
- Prior art keywords
- script
- window
- msaa
- environment
- windows
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000009471 action Effects 0.000 claims abstract description 10
- 230000000875 corresponding effect Effects 0.000 claims abstract description 10
- 230000008447 perception Effects 0.000 claims abstract description 7
- 230000008676 import Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 claims description 3
- 238000013521 GUI testing Methods 0.000 abstract 1
- 230000007613 environmental effect Effects 0.000 abstract 1
- 230000008569 process Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 239000012085 test solution Substances 0.000 description 1
Landscapes
- Digital Computer Display Output (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种Windows平台下基于MSAA的GUI测试驱动方法。其步骤是:由脚本解释器读取脚本文件至内存中;再根据测试脚本进行环境感知,脚本解释器通过环境感知器执行脚本中指定的感知要求,寻找符合要求的操作点,环境感知器使用Windows提供的MSAA接口,并按照脚本中指定条件搜索当前环境中的对象的IAccessible接口,当找到满足条件的窗口时,向脚本返回窗口句柄;如发现符合需求的操作点,由脚本解释器控制动作执行器产生相应的动作,动作执行器把输入焦点设定在特定窗口对象上,然后产生鼠标或键盘输入。本发明使程序对于***作对象有识别和判断能力,测试过程中减少了人工干预,提高了劳动生产率。
Description
一、技术领域
本发明涉及一种Windows平台下的GUI测试驱动方法,特别应用了基于MSAA的GUI操作技术,实现了一个自动化的GUI程序测试驱动***。
二、背景技术
随着计算机***人机接口越来越图形化,GUI(图形用户接口)的应用变得越来越广泛。但是,开发GUI交互程序一个重大的挑战是如何对GUI接口进行测试的问题。自动化的GUI测试要求测试驱动程序能够具备一定的判断能力,能够根据当前环境状况进行判断,选择应该执行的操作。
传统的GUI程序测试,要么通过雇用大量的测试员进行实际的操作,要么使用一些初级的GUI操作工具,盲目地产生输入流。传统测试驱动方法要么耗费大量的人力资源,要么抗干扰的能力很差,一有扰动就会导致进入不正确的状态,最终导致依然需要分配人员值守。
一个优秀的自动GUI测试解决方案,应该能够对于GUI的表现和事件有一定的反应能力,能够根据当前的状态进行判断,然后产生相应的输入。这种方案应该尽可能少地要求人工干预。
三、发明内容
本发明所要解决的技术问题是提供一种具有情景反应能力的GUI测试驱动***,其可以减少对具有GUI的软件的测试过程中的人工干预,自动完成测试用例。
本发明所述的基于MSAA的GUI测试驱动***,它包括测试脚本解释器、环境感知器和动作执行器。脚本解释器用于解释用户编写的测试用例脚本,控制环境感知器识别当前环境以及控制动作执行器产生输入。该程序执行的步骤如下:
d)读取测试驱动脚本:这个由测试人员根据具体的语言规范把抽象的测试用例编写成具体的测试脚本。脚本解释器读取脚本文件到内存中;
e)根据测试脚本进行环境感知:脚本解释器通过环境感知器执行脚本中指定的感知要求,寻找符合要求的操作点;
f)执行特定动作:如果发现符合需求的操作点,由脚本解释器控制动作执行器产生相应的动作。
在上述步骤b)中,环境感知器使用Windows提供的MSAA接口,并按照脚本中指定的条件搜索当前环境中的对象的IAccessible接口,当找到满足条件的窗口时,向脚本返回窗口句柄。
在步骤步骤c)中,动作执行器把输入焦点设定在特定的窗口对象上,然后调用Windows的API产生鼠标或键盘输入。
在编写测试脚本的时候,至少会用到下面的语句:
语句1观察环境
find topwnd″标题″|
childwnd″名字″″角色″″类″|
anywnd″名字″″角色″″类″|
topwnd表示最顶层的窗口,通常表示一个应用程序。只要一个标题参数;childwnd表示在当前窗口环境下,查找符合条件的子窗口的IAccessible,要三个参数;anywnd由于不好确定父窗口是谁,所以从桌面开始查找子窗口的IAccessible接口,要三个参数
语句2动作
do kbinput″字符串″|
(click|rclick|dbclick)xy
其中kbinput表示产生键盘输入,″字符串″是要输入的串。下面click表示产生鼠标左键单击操作,rclick表示产生鼠标右键单击操作,dbclick表示产生鼠标左键双击操作,最后xy表示点击操作的坐标这个坐标是基于上一个find命令找到的窗口的左上角。本发明通过脚本解释器控制执行流程,通过环境感知器获得符合条件的环境位置,通过动作执行器产生相应的输入。通过根据需要编写的测试脚本可以对加载到***上的程序进行自动化的操作。
本发明与现有的技术相比,其显著优点是:程序对于***作的对象有识别和判断能力。所以在测试的过程中只是需要很少的人工干预,大大提高了劳动生产率。
四、附图说明
图1显示了本发明的***结构。
图2-1,2-2,2-3分别显示了三个主要工作流程。
五、具体实施方式
1、运行环境:
(1)运行Windows***的PC机,它们作为程序运行的平台。
(2)在PC机器上安装本程序作为GUI测试驱动***。
(3)将被测试软件装载到该平台上。
(4)安装Microsoft的Inspect32辅助编写测试脚本。
(5)为测试过程编写测试脚本。
***结构如图1所示,它包括脚本解释器、环境感知器、动作执行器,所述脚本解释器解释由测试程序员编写的测试脚本程序,通过使用环境感知器的接口在运行环境中对象,当满足条件的对象出现的时候,脚本解释器又会使用动作执行器产生键盘或鼠标的输入。
2、场景:
图2-1,显示了本***的脚本解释器的工作流程。解释程序首先读入指定的测试驱动脚本,然后开始逐句解释脚本。如果当前的语句是一个感知环境的脚本语句(即寻找符合条件的窗口对象,并返回窗口对象的句柄),那么就调用环境感知器执行相应的判断。如果是一个执行动作语句(通常跟在一系列环境感知语句之后),那就调用脚本执行器执行相应的脚本产生输入动作。
在安装好的Windows和本***的PC机上装载要测试的应用程序。然后,为程序编写测试脚本。接着在控制台下输入黑体字部分运行
C:\>PCompiler脚本文件名
然后,脚本解释程序会执行测试脚本,寻找符合条件的窗口对象,然后产生相应的操作。
寻找符合条件的窗口对象的流程如图2-2所示。Windows的窗口***是以桌面为根组织成树状结构。寻找符合条件的窗口对象是从桌面开始搜索,获得当前窗口的IAccessible接口,通过这个IAccessible接口的方法得到窗口的名字(IAccessible::get_accName)、角色(IAccessible::get_accRole)、类(WindowFromAccessibleObject和GetObjectClass)等信息,信息符合判断条件,则返回当前窗口的句柄,否则递归搜索当前窗口的所有子窗口()IAccessible::get_accChild和IEnumVARIANT接口)进行判断,直到找到要找的窗口或者穷举完所有的窗口。
执行相应操作的流程如图2-3所示。首先判断这个语句要执行的是键盘输入还是鼠标输入。如果是键盘输入,读取输入字符串,逐个输入字符串所描述的所有按键事件。如果是鼠标输入,读取鼠标输入的类型(左键单击、右键单击、双击),然后输入相应的鼠标事件。
3、技术描述:
(1)MSAA:
窗口元素的识别使用了Microsoft Active Accessibility技术。这种技术通过对Windows平台下面的窗口程序暴露统一的COM接口。使得程序员可以通过此接口可以识别和操作Windows上的标准界面元素。
这里窗口有三个重要的属性:Name、Class、Role。Name表示窗口的名字,Class表示窗口在***中注册的类名,Role表示开发人员赋予窗口的角色。有了这三个属性以及窗口的父窗口信息,就能够唯一确定一个窗口。
(2)Windows消息机制
在产生动作上面,使用Windows的消息机制,在Windows的桌面环境下产生键盘或鼠标输入。这个过程是通过Windows的API SendInput实现。
Claims (4)
1.一种Windows平台下基于MSAA的GUI测试驱动方法,其特征是:它包括测试脚本解释器、环境感知器和动作执行器,脚本解释器用于解释用户编写的测试用例脚本,控制环境感知器识别当前环境以及控制动作执行器产生输入;其步骤如下:
a)由脚本解释器读取脚本文件至内存中;
b)根据测试脚本进行环境感知,脚本解释器通过环境感知器执行脚本中指定的感知要求,寻找符合要求的操作点;
c)如果发现符合需求的操作点,由脚本解释器控制动作执行器产生相应的动作。
2.根据权利要求1所述的Windows平台下基于MSAA的GUI测试驱动方法,其特征是:在步骤b)中,环境感知器使用Windows提供的MSAA接口,并按照脚本中指定的条件搜索当前环境中的对象的IAccessible接口,当找到满足条件的窗口时,向脚本返回窗口句柄。
3.根据权利要求1或2所述的Windows平台下基于MSAA的GUI测试驱动方法,其特征是:在步骤c)中,动作执行器把输入焦点设定在特定的窗口对象上,然后调用Windows的API产生鼠标或键盘输入。
4.根据权利要求1或2所述的Windows平台下基于MSAA的GUI测试驱动方法,其特征是:需要使用下面的语言机制:
语句1观察环境
find topwnd″标题″|
childwnd″名字″″角色″″类″|
anywnd″名字″″角色″″类″|
topwnd表示最顶层的窗口,通常表示一个应用程序。只要一个标题参数;childwnd表示在当前窗口环境下,查找符合条件的子窗口的IAccessible,要三个参数;anywnd由于不好确定父窗口是谁,所以从桌面开始查找子窗口的IAccessible接口,要三个参数
语句2动作
do kbinput″字符串″|
(click|rclick|dbclick)x y
其中kbinput表示产生键盘输入,″字符串″是要输入的串。下面click表示产生鼠标左键单击操作,rclick表示产生鼠标右键单击操作,dbclick表示产生鼠标左键双击操作,最后x y表示点击操作的坐标这个坐标是基于上一个find命令找到的窗口的左上角。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100253749A CN100472472C (zh) | 2007-07-26 | 2007-07-26 | Windows平台下基于MSAA的GUI测试驱动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100253749A CN100472472C (zh) | 2007-07-26 | 2007-07-26 | Windows平台下基于MSAA的GUI测试驱动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101105768A true CN101105768A (zh) | 2008-01-16 |
CN100472472C CN100472472C (zh) | 2009-03-25 |
Family
ID=38999672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100253749A Expired - Fee Related CN100472472C (zh) | 2007-07-26 | 2007-07-26 | Windows平台下基于MSAA的GUI测试驱动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100472472C (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751329B (zh) * | 2008-12-18 | 2012-01-25 | 大唐移动通信设备有限公司 | 一种实现自动测试的方法和*** |
CN103329108A (zh) * | 2011-02-14 | 2013-09-25 | 株式会社Ntt都科摩 | 测试装置 |
CN109542440A (zh) * | 2018-11-29 | 2019-03-29 | 金蝶软件(中国)有限公司 | 对窗口的操作方法和装置、计算机装置及可读存储介质 |
CN110287088A (zh) * | 2019-01-14 | 2019-09-27 | 南京大学 | 一种基于动态ui模型的自动化测试方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5943048A (en) * | 1997-11-19 | 1999-08-24 | Microsoft Corporation | Method and apparatus for testing a graphic control area |
CN100362479C (zh) * | 2005-12-09 | 2008-01-16 | 华为技术有限公司 | 基于自动化测试脚本对被测对象进行测试的方法和*** |
CN100395724C (zh) * | 2006-02-15 | 2008-06-18 | 华为技术有限公司 | 一种图形用户界面的测试方法和*** |
-
2007
- 2007-07-26 CN CNB2007100253749A patent/CN100472472C/zh not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751329B (zh) * | 2008-12-18 | 2012-01-25 | 大唐移动通信设备有限公司 | 一种实现自动测试的方法和*** |
CN103329108A (zh) * | 2011-02-14 | 2013-09-25 | 株式会社Ntt都科摩 | 测试装置 |
CN109542440A (zh) * | 2018-11-29 | 2019-03-29 | 金蝶软件(中国)有限公司 | 对窗口的操作方法和装置、计算机装置及可读存储介质 |
CN110287088A (zh) * | 2019-01-14 | 2019-09-27 | 南京大学 | 一种基于动态ui模型的自动化测试方法 |
CN110287088B (zh) * | 2019-01-14 | 2021-08-31 | 南京大学 | 一种基于动态ui模型的自动化测试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100472472C (zh) | 2009-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7017613B2 (ja) | 自動検出されるターゲットラベルに基づくロボティックプロセスオートメーションアクティビティのネーミング(名付け) | |
CN103441900B (zh) | 集中式跨平台自动化测试***及其控制方法 | |
US9465726B2 (en) | Abstract layer for automatic user interface testing | |
US9189254B2 (en) | Translating text to, merging, and optimizing graphical user interface tasks | |
US7076713B1 (en) | Test generator for converting a model of computer component object behavior and stimulus values to test script | |
CN113015956B (zh) | 用于机器人流程自动化的活动目标选择的***和方法 | |
US8875103B2 (en) | Method of testing multiple language versions of a software system using one test script | |
AU2016201389A1 (en) | Method and system for process automation in computing | |
CN100472472C (zh) | Windows平台下基于MSAA的GUI测试驱动方法 | |
Cheng et al. | Seeclick: Harnessing gui grounding for advanced visual gui agents | |
Swearngin et al. | Human performance regression testing | |
Feuerstack et al. | Automated usability evaluation during model-based interactive system development | |
CN111694738B (zh) | 一种sql测试脚本的生成方法 | |
KR101368044B1 (ko) | 이클립스 플랫폼 기반 플러그인 모듈 | |
Cheng et al. | YOLOv5‐MGC: GUI Element Identification for Mobile Applications Based on Improved YOLOv5 | |
Xue et al. | [Retracted] Visual Identification of Mobile App GUI Elements for Automated Robotic Testing | |
CN117215661A (zh) | 一种事件处理的方法、装置以及存储介质 | |
CN115269101A (zh) | 一种基于RPA实现Excel数据透视表拾取的方法 | |
Rose et al. | Modechart toolset user’s guide | |
CN106371818B (zh) | 一种用于处理用户级事件以编制应用程序的方法 | |
CN115390720A (zh) | 包括自动文档滚动的机器人过程自动化(rpa) | |
CN109669871B (zh) | 一种实现Oracle Form自动化测试的方法 | |
CN113703637A (zh) | 巡检任务代码化方法、装置、电子设备和计算机存储介质 | |
US10001977B1 (en) | System and method for identifying operations based on selected data | |
CN101819527B (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090325 Termination date: 20160726 |