CN101751329B - 一种实现自动测试的方法和系统 - Google Patents
一种实现自动测试的方法和系统 Download PDFInfo
- Publication number
- CN101751329B CN101751329B CN2008102402545A CN200810240254A CN101751329B CN 101751329 B CN101751329 B CN 101751329B CN 2008102402545 A CN2008102402545 A CN 2008102402545A CN 200810240254 A CN200810240254 A CN 200810240254A CN 101751329 B CN101751329 B CN 101751329B
- Authority
- CN
- China
- Prior art keywords
- window
- action
- information
- control point
- preset
- 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
Landscapes
- User Interface Of Digital Computer (AREA)
Abstract
本发明涉及一种实现自动测试的方法和系统,其中所述方法包括:A、查找预设监控点对应的窗口;B、当查找到该窗口后,获取该窗口对应的指示信息;C、判断所述指示信息是否满足动作条件,如果是,则触发测试动作;否则,转步骤A。可以看出,采用本发明的方法和系统,能够在节省大量人力的基础上提高自动测试过程中的准确性;并且不会影响用户其他的正常操作和其他程序的正常运行;同时,采用本发明实施例的方法和系统不需要修改已有测试工具软件即可完成自动测试工作。
Description
技术领域
本发明涉及测试技术领域,尤其涉及一种实现自动测试的方法和系统。
背景技术
目前在不同终端投入使用前都需要进行各种复杂的测试工作,而对终端进行测试时往往需要同时操作很多软件,如终端拨号软件、跟踪调试软件、网络侧仪表软件等;并且,在测试工作中需要人为反复的进行操作,这样就会在软件操作方面投入大量的人力,同时由于测试中引入了人为的因素,也就很容易造成一些不必要的失误,给测试带来了一定的不利影响;此外,测试工作对于测试人员来说往往意味着反复执行相同的操作,而这样的工作状况会令测试人员进入非常机械的工作状态,从而不利于定位解决问题。因此有必要通过某种方式来通知各软件进行相应的动作,并可周而复始的进行操作,以此来简化操作流程,减少测试人员的机械性工作。
针对此问题,目前已有的相关实现方案是通过录入宏的方法来实现自动测试:测试人员先开启录入宏,进行不同的软件操作,然后关闭录入,以后再测试时只要点击运行宏,就可以模拟先前的操作进行测试。而这种宏录入的实现方法,主要是通过监听操作系统的鼠标、键盘的消息来实现的:当鼠标箭头在屏幕上移动时,操作系统会实时发出鼠标的位置信息告知目标程序,当用户点击左键、右键或用户敲击键盘时,也会有相应的消息,该消息发送给指定的窗口;其中,可以采用全局钩子技术得到该消息,以达到监控鼠标键盘操作的目的;监控程序通过钩子技术收到消息后,将其写入宏文件中,包括消息类型、消息参数等信息,然后在执行宏文件的时候,进行读取解析,并模拟操作系统给目标程序发送同样类型的消息。采用宏录入的方式经过上述过程即可实现自动测试工作。
但是,由于上述宏录入方式并不关心被测软件本身,因而其也具有明显的缺陷:首先,宏运行时要求被测终端的反应要与宏录入时完全一样才能正确使用该功能;比如宏录入时测试人员点击电话号码进行拨号测试,5秒钟后接通,通话5秒钟再挂断;但是真正使用该宏进行测试时,很可能由于网络侧或其他原因使得拨号后没有接通,但宏执行时过5秒即发挂断命令,因而这样流程就和预期有所不同了,并且还多发了一个挂断命令,这就很容易对后面继续操作造成影响。其次,测试时测试环境也要前后一致;比如拨号软件的位置要求完全一样,录入时软件最大化,执行时也要最大化,对应的软件菜单、工具条、按钮都要在同样的位置,这样才能保证宏执行时点击的位置是期望的按钮、菜单的位置。再次,在宏执行时用户不能进行其他操作,否则会发生不可预料的事情;比如用户在测试PC上先执行宏进行测试,同时自己编辑文本写测试日志,如果此时宏发送鼠标移动的消息,就会导致用户无法正常使用鼠标,如果宏发送点击鼠标左键的消息,被用户正在编辑的文本挡住了,该宏也不会再正确的执行下去。所以,虽然现有采用宏录入的方式可以部分的实现自动测试,但是受多种因素(如被测终端反应、测试环境、独立操作等)制约导致其准确率不高,并且会影响用户的正常操作。
发明内容
有鉴于此,本发明实施例提供一种实现自动测试的方法和系统,能够在节省大量人力的基础上提高自动测试过程中的准确性,且不会影响用户的其他正常操作。
为解决上述问题,本发明实施例提供的技术方案如下:
一种实现自动测试的方法,其特征在于,包括:
A、预设多个监控点,保存所述监控点的信息;
B、根据所述监控点的信息查找预设监控点对应的弹出窗口;
C、当查找到该弹出窗口后,获取该窗口对应的指示信息;
D、查找预设的动作列表,将所述动作列表中与动作指令对应的信息与所述指示信息进行匹配,如果匹配,则判断所述指示信息满足动作条件,触发测试动作;否则,转步骤B。
优选的,所述步骤B通过以下步骤实现:
根据所述预设监控点的信息确定所述窗口的标题栏;
调用窗口查找函数利用所述标题栏对当前开启的所有程序窗口进行查找。
优选的,所述窗口查找函数为Win32函数中的FindWindow函数或FindWindowEx函数。
优选的,所述步骤C通过以下步骤实现:
当查找到预设监控点对应的弹出窗口后,获取该窗口的窗口句柄;
利用所述窗口句柄通过调用函数得到所述窗口的类型信息;
针对不同的窗口类型通过调用函数获取不同的窗口指示信息。
优选的,所述窗口类型包括静态控件、列表控件、对话框、按钮、编辑框和组合框。
优选的,当所述窗口为静态控件时,调用Win32的GetWindowText函数得到该窗口的文字信息,调用GetWindowLong获取该窗口的显示状态。
当所述窗口为列表控件时,通过列表的消息处理函数得到最新一行的信息文字。
优选的,当所述预设监控点对应窗口类型为静态控件时,检查该静态控件的文字信息及显示状态在所述动作列表中是否有动作匹配,如果有,则满足动作条件;否则,不满足;
当所述预设监控点对应窗口类型为列表控件时,检查该列表控件的最新一行文字信息在所述动作列表中是否有动作匹配,如果有,则满足动作条件;否则,不满足。
优选的,所述步骤D通过以下步骤实现测试动作的触发:
根据窗口标题栏查找动作对象窗口;
查找到动作对象窗口后获取该动作对象窗口的窗口句柄;
利用所述动作对象窗口的窗口句柄向该动作对象窗口发送模拟动作指令。
优选的,当所述模拟动作命令为模拟鼠标动作指令时,在所述对象窗口模拟鼠标执行点击动作;
当所述模拟动作命令为模拟键盘动作指令时,在所述对象窗口模拟键盘执行输入动作。
一种实现自动测试的系统,包括:预设单元、查找单元、获取单元和触发单元;其中,所述预设单元用于预设多个监控点,保存所述监控点的信息;
所述查找单元用于根据所述监控点的信息查找预设监控点对应的弹出窗口;
所述获取单元用于当所述查找单元查找到所述窗口后,获取该窗口对应的指示信息;
所述触发单元用于查找预设的动作列表,将所述动作列表中与动作指令对应的信息与所述指示信息进行匹配,如果匹配,则判断所述获取单元获取的指示信息满足动作条件,触发测试动作;否则,通知所述查找单元继续查找。
优选的,所述查找单元包括:第一处理模块和第二处理模块;其中,
所述第一处理模块用于根据所述预设监控点的信息确定所述窗口的标题栏;
所述第二处理模块用于调用窗口查找函数利用所述标题栏对当前开启的所有程序窗口进行查找,并在查找到所述预设监控点对应的窗口后通知所述获取单元。
优选的,所述获取单元包括:句柄模块、类型模块和信息模块;其中,
所述句柄模块用于当所述查找单元查找到预设监控点对应的窗口后,获取该窗口的窗口句柄;
所述类型模块用于利用所述句柄模块获取的窗口句柄通过调用函数得到所述窗口的类型信息;
所述信息模块用于针对所述类型模块得到的不同的窗口类型通过调用函数获取不同的窗口指示信息。
优选的,所述触发单元包括判断模块和发送模块;其中,
所述发送模块用于根据窗口标题栏查找动作对象窗口,当查找到动作对象窗口后获取该动作对象窗口的窗口句柄,利用所述动作对象窗口的窗口句柄向该动作对象窗口发送模拟动作指令。
优选的,所述系统还包括执行单元,用于当所述模拟动作命令为模拟鼠标动作指令时,在所述对象窗口模拟鼠标执行点击动作;或者,当所述模拟动作命令为模拟键盘动作指令时,在所述对象窗口模拟键盘执行输入动作。
可以看出,采用本发明实施例的方法和系统,通过查找当前所有程序的窗口,当发现有某个程序的预设监控点弹出窗口后,根据该窗口相应的指示信息触发测试动作,因该方式更接近人为进行测试时进行的情形,因而能够在节省大量人力的基础上提高自动测试过程中的准确性;并且触发测试动作采用向指定窗口下发模拟动作命令来实现,因此不会影响用户其他的正常操作和其他程序的正常运行;同时,采用本发明实施例的方法和系统不需要修改已有测试工具软件即可完成自动测试工作。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例1的方法流程示意图;
图2是本发明实施例中获取窗口对应指示信息的流程示意图;
图3是本发明实施例中判断指示信息是否满足动作条件的流程示意图;
图4是本发明实施例中触发测试动作流程示意图;
图5是本发明实施例3的系统结构示意图。
具体实施方式
本发明实施例的基本思想在于通过查找当前所有程序的窗口,当发现有某个程序的预设监控点弹出窗口后,根据该窗口相应的指示信息触发测试动作,因该方式更接近人为进行测试时进行的情形,因而能够在节省大量人力的基础上提高自动测试过程中的准确性;并且触发测试动作采用向指定窗口下发模拟动作命令来实现,因此不会影响用户其他的正常操作和其他程序的正常运行。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述;显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了本发明实施例1的一种实现自动测试的方法,该方法包括:
步骤101:查找预设监控点对应的窗口;
具体的,本实施例中所述的预设监控点可以是不同程序的某个需要注意的信息点;比如网络侧仪表测试程序提示需要拨号,则该提示就是一个监控点;终端拨号程序的震铃提示也是个监控点;逻辑上所有值得测试人员关心的事件都是监控点,因而在进行测试工作前首先根据需要或者需要监控的程序特点预设若干个监控点,并将该监控点对应的信息与相执行的动作对应存储,例如以列表的形式存储,在此不再赘述。
在查找预设监控点对应的窗口时,首先根据预设监控点信息确定所述需要查找的窗口的标题栏,然后再调用窗口查找函数利用所述标题栏对当前开启的所有程序窗口进行查找;因windows系统中同时运行着很多程序,有着层层叠叠很多窗口,这些窗口的直观的区别就是标题栏不同,标题栏可以指示该窗口是什么窗口,因此可以通过该窗口的标题栏找到所述预设监控点对应的窗口;其中,在Window系统环境下,所述窗口查找函数主要是Win32函数中的FindWindow或FindWindowEx两个函数,当然对于其他系统环境,窗口查找函数也可以是其他的函数,本文不再赘述;例如,假设所述预设监控点为某程序通过弹出对话框提示执行何种动作,则根据该监控点确定所述需要查找的窗口的标题栏为“提示”,此时调用FindWindow或FindWindowEx函数对当前开启的所有程序窗口进行查找,当某一窗口的标题栏为“提示”时,则确定该窗口为所述预设监控点对应的窗口;
此外,还可以根据窗口的标题栏确定当前运行的程序,即根据窗口标题栏的字样,可以区分出终端拨号程序、网络侧仪表程序及跟踪程序,例如可以通过字符串比较的函数,如strcmp(szTitle,“拨号程序”)strcmp(szTitle,“仪表程序”)等判断区分当前的运行程序;
步骤102:当查找到该窗口后,获取该窗口对应的指示信息;
具体的,本实施例提出通过下述方式获取所述窗口对应的指示信息,但本领域技术人员了解,还可采用其他方式来获取某一窗口对应的指示信息,并不局限于此;如图2所示,
当查找到预设监控点对应的窗口后,在S201中,获取该窗口的窗口句柄;窗口句柄是windows内部的一种资源,一类内部的变量,它和显示的窗口一一对应,每一个外部可见的窗口都对应一个句柄,也即对应一个变量值;而后续对该窗口进行操作时都需要利用该句柄变量,即该句柄变量为后续可能操作的前提条件;在S202中,利用所述窗口句柄通过调用函数得到所述窗口的类型信息;例如,通过获取的监控点对应的窗口句柄,利用GetClassName函数得到窗口类型信息;目前在Windows系统中可通过该函数根据句柄得到className,另外还可调用GetClassName、GetNextDlgTabltem或GetNextDlgGroupltem函数确定匹配的子窗口;其中,所述的窗口类型包括多种形式,如windows自带的#32769(Desktop)桌面类型,#32770(Dialog)对话框,Button按钮,Edit编辑框,ComboBox组合框等;需要注意的是,在Windows系统中一个窗口下面有很多子窗体,而需要获取的窗口对应的指示信息,可能对应最深层次的某个窗体,所以上述所述的监控点需要细到能获取到信息对应的深层窗体;相应的,如果窗口类型是静态控件,则在S303中调用Win32的GetWindowText函数得到该静态控件的文字信息,调用GetWindowLong获取该控件的显示状态,即处于隐藏还是显示状态;如果窗口类型是列表控件,则在S304中则通过列表的消息处理函数得到最新的一行信息文字;
步骤103:判断所述指示信息是否满足动作条件,如果是,则触发测试动作;否则,转步骤101;
具体的,可通过下述方式实现判断步骤,但并不局限于此,如图3所示:在S301中,查找预设的动作列表;所述动作列表中记录了不同的指示信息和不同的动作命令之间的对应关系;将所述动作列表中与动作指令对应的信息与所述指示信息进行匹配,如果匹配,则确定该指示信息满足动作条件;否则,不满足;如在S302中,当所述预设监控点对应窗口类型为静态控件时,检查该静态控件的文字信息及显示状态在所述动作列表中是否有动作匹配,如果有,则满足动作条件;否则,不满足;在S303中,当所述预设监控点对应窗口类型为列表控件时,检查该列表控件的最新一行文字信息在所述动作列表中是否有动作匹配,如果有,则满足动作条件;否则,不满足;
在指示信息与动作指令匹配后,如图4所示,在S401中,根据窗口标题栏查找动作对象窗口;此查找方式与上述步骤101的查找方式类似,在此不再赘述;在S402中,查找到动作对象窗口后获取该窗口的窗口句柄;查找到所述窗口后即可获知其窗口句柄,具体可通过现有的win32函数功能实现,不再赘述;在S403中,利用所述窗口的窗口句柄向该窗口发送模拟动作指令;如上所述,对该窗口进行操作时需要利用句柄变量,即该句柄变量为各种可能操作的前提条件;如调用PostMessage函数下发BM_CLICK消息模拟鼠标点击状态,下发WM_KEYDOWN消息模拟键盘敲击状态,当然也可以采用其他封装方式下发模拟动作指令。
以上通过在Windows系统中的具体实现详细说明了单个模拟动作的处理过程,处理完动作后继续查找下个监控点,如此就可完成各个被测程序的动作衔接,满足自动测试的目的。
同时,本领域技术人员应该很容易了解,上述的各种实施方式仅以Windows系统为例,而对于其他系统环境在具体实施时还可以通过其他不同的方式实现,具体本文不再赘述。
下面结合具体的拨号软件测试方案来举例说明该本发明实施例的测试方法:执行该拨号软件后,首先弹出消息框,提示“开机”,该消息框就是监控点A,其对应的动作是执行模拟消息按下开机按钮;按下“开机”后接着弹出开机对话框,提示“Please switch on the UE!”,该消息框就是监控点B,其对应的动作是启动拨号软件;拨号程序启动后提示用户输入PIN码,该消息框就是监控点C,其对应的动作是模拟键盘输入“1234”,然后点击确认;拨号成功手机开机后,软件会继续执行直到弹出PDP激活命令,该消息框就是监控点D,其对应的动作是先执行模拟消息按下确定按钮,然后点击拨号软件的连接因特网按钮,至此整个软件测试流程完毕;
当采用本发明实施例的自动测试方法进行自动测试时如本发明实施例2:首先利用Spy++程序查找窗口功能得到监控点A对应的窗口,即先查找标题为“提示”的窗口,查找到该窗口后再获得该窗口里面的文字字样“Pleaseswitch on the UE!”和“关机按钮”,动作匹配后向关机窗口发送模拟动作消息,实现关机;具体,可通过下述代码完成查找窗口、得到文字信息和按钮、匹配后发模拟消息:
按下“开机”后对于监控点B的处理与上述对于监控点A的处理类似,在此不再赘述;当模拟执行所述监控点B的动作成功后,即拨号程序启动后,先查找“PIN码验证”窗口,找到后查找Edit类型的窗口,然后模拟键盘动作在该Edit类型的窗口输入“1234”,再向该Edit类型窗口发送模拟鼠标点击消息,以实现模拟鼠标点击“确认”;具体的,可通过如下代码完成:
当拨号成功手机开机后,利用Spy++程序查找窗口功能得到监控点D对应的PDP激活命令窗口,并采用类似监控点A的处理方式向该窗口发送模拟鼠标点击动作消息,点击该窗口的“确定”按钮;然后利用Spy++摸索“连接因特网”窗口句柄:先查找到顶级窗口标题栏信息,得知标题栏为“TD-SCDMA数据卡管理系统(THINKER)”,然后查找“连接因特网”按钮,在查找未果后从顶级窗口下逐个查看,当从窗口树中找到该按钮在一个对话框类下后,模拟鼠标点击动作向该对话框发送消息,实现点击“连接因特网”按钮动作,完成全部测试流程;具体的,从窗口树中查找“连接因特网”按钮可采用下面的代码进行动作:
通过上述四个监控点的处理即可达到自动测试的效果;此外,为了更方便现场测试的需要,可以将监控点信息保存起来,测试时先读取信息而后运行:先用Spy++程序得到监控点确定信息,然后将监控点界面右面源树上的节点拖动到左面目标树上,并进行配置;再点击应用开始自动测试过程,也可将信息保存为文件,以便下次打开运行;当再应用时可以直接打开文件,然后点击运行,启动监控点监控功能,完成自动测试流程。
可以看出,采用本发明实施例的方法,通过查找当前所有程序的窗口,当发现有某个程序的预设监控点弹出窗口后,根据该窗口相应的指示信息触发测试动作,因该方式更接近人为进行测试时进行的情形,因而能够在节省大量人力的基础上提高自动测试过程中的准确性;并且触发测试动作采用向指定窗口下发模拟动作命令来实现,因此不会影响用户其他的正常操作和其他程序的正常运行。
基于上述思想,本发明实施例3又提出了一种实现自动测试的系统,如图5所示,该系统500包括:查找单元501、获取单元502和触发单元503;其中,所述查找单元501用于查找预设监控点对应的窗口;
所述获取单元502用于当所述查找单元501查找到所述窗口后,获取该窗口对应的指示信息;
所述触发单元503用于判断所述获取单元502获取的指示信息是否满足动作条件,如果是,则触发测试动作;否则,通知所述查找单元501继续查找。
优选的,所述查找单元501包括:第一处理模块和第二处理模块;其中,所述第一处理模块用于根据所述预设监控点确定所述窗口的标题栏;所述第二处理模块用于调用窗口查找函数利用所述标题栏对当前开启的所有程序窗口进行查找,并在查找到所述预设监控点对应的窗口后通知所述获取单元。
此外,所述获取单元502包括:句柄模块、类型模块和信息模块;其中,所述句柄模块用于当所述查找单元查找到预设监控点对应的窗口后,获取该窗口的窗口句柄;所述类型模块用于利用所述句柄模块获取的窗口句柄通过调用函数得到所述窗口的类型信息;所述信息模块用于针对所述类型模块得到的不同的窗口类型通过调用函数获取不同的窗口指示信息。
除此之外,所述触发单元503包括判断模块和发送模块;其中,所述判断模块用于通过查找预设的动作列表,将所述动作列表中与动作指令对应的信息与所述获取单元获取的指示信息进行匹配,如果匹配,则确定该指示信息满足动作条件,通知所述发送模块;所述发送模块用于接收所述判断模块的通知,根据窗口标题栏查找动作对象窗口,当查找到动作对象窗口后获取该窗口的窗口句柄,利用所述窗口的窗口句柄向该窗口发送模拟动作指令。
需要注意的是,所述系统还可包括执行单元,用于当所述模拟动作命令为模拟鼠标动作指令时,在所述对象窗口模拟鼠标执行点击动作;或者,当所述模拟动作命令为模拟键盘动作指令时,在所述对象窗口模拟键盘执行输入动作。
本领域技术人员可以理解,可以使用许多不同的工艺和技术中的任意一种来表示信息、消息和信号。例如,上述说明中提到过的消息、信息都可以表示为电压、电流、电磁波、磁场或磁性粒子、光场或以上任意组合。
专业人员还可以进一步应能意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种实现自动测试的方法,其特征在于,包括:
A、预设多个监控点,保存所述监控点的信息;
B、根据所述监控点的信息查找预设监控点对应的弹出窗口;
C、当查找到该弹出窗口后,获取该窗口对应的指示信息;
D、查找预设的动作列表,将所述动作列表中与动作指令对应的信息与所述指示信息进行匹配,如果匹配,则判断所述指示信息满足动作条件,触发测试动作;否则,转步骤B。
2.根据权利要求1所述的方法,其特征在于,所述步骤B通过以下步骤实现:
根据所述预设监控点的信息确定所述窗口的标题栏;
调用窗口查找函数利用所述标题栏对当前开启的所有程序窗口进行查找。
3.根据权利要求2所述的方法,其特征在于:
所述窗口查找函数为Win32函数中的FindWindow函数或FindWindowEx函数。
4.根据权利要求1所述的方法,其特征在于,所述步骤C通过以下步骤实现:
当查找到预设监控点对应的弹出窗口后,获取该窗口的窗口句柄;
利用所述窗口句柄通过调用函数得到所述窗口的类型信息;
针对不同的窗口类型通过调用函数获取不同的窗口指示信息。
5.根据权利要求4所述的方法,其特征在于:
所述窗口类型包括静态控件、列表控件、对话框、按钮、编辑框和组合框。
6.根据权利要求4所述的方法,其特征在于:
当所述窗口为静态控件时,调用Win32的GetWindowText函数得到该窗口的文字信息,调用GetWindowLong获取该窗口的显示状态;
当所述窗口为列表控件时,通过列表的消息处理函数得到最新一行的信息文字。
7.根据权利要求1所述的方法,其特征在于:
当所述预设监控点对应窗口类型为静态控件时,检查该静态控件的文字信息及显示状态在所述动作列表中是否有动作匹配,如果有,则满足动作条件;否则,不满足;
当所述预设监控点对应窗口类型为列表控件时,检查该列表控件的最新一行文字信息在所述动作列表中是否有动作匹配,如果有,则满足动作条件;否则,不满足。
8.根据权利要求1所述的方法,其特征在于,所述步骤D通过以下步骤实现测试动作的触发:
根据窗口标题栏查找动作对象窗口;
查找到动作对象窗口后获取该动作对象窗口的窗口句柄;
利用所述动作对象窗口的窗口句柄向该动作对象窗口发送模拟动作指令。
9.根据权利要求8所述的方法,其特征在于:
当所述模拟动作命令为模拟鼠标动作指令时,在所述对象窗口模拟鼠标执行点击动作;
当所述模拟动作命令为模拟键盘动作指令时,在所述对象窗口模拟键盘执行输入动作。
10.一种实现自动测试的系统,其特征在于,包括:预设单元、查找单元、获取单元和触发单元;其中,
所述预设单元用于预设多个监控点,保存所述监控点的信息;
所述查找单元用于根据所述监控点的信息查找预设监控点对应的弹出窗口;
所述获取单元用于当所述查找单元查找到所述窗口后,获取该窗口对应的指示信息;
所述触发单元用于查找预设的动作列表,将所述动作列表中与动作指令对应的信息与所述指示信息进行匹配,如果匹配,则判断所述获取单元获取的指示信息满足动作条件,触发测试动作;否则,通知所述查找单元继续查找。
11.根据权利要求10所述的系统,其特征在于,所述查找单元包括:第一处理模块和第二处理模块;其中,
所述第一处理模块用于根据所述预设监控点的信息确定所述窗口的标题栏;
所述第二处理模块用于调用窗口查找函数利用所述标题栏对当前开启的所有程序窗口进行查找,并在查找到所述预设监控点对应的窗口后通知所述获取单元。
12.根据权利要求10所述的系统,其特征在于,所述获取单元包括:句柄模块、类型模块和信息模块;其中,
所述句柄模块用于当所述查找单元查找到预设监控点对应的窗口后,获取该窗口的窗口句柄;
所述类型模块用于利用所述句柄模块获取的窗口句柄通过调用函数得到所述窗口的类型信息;
所述信息模块用于针对所述类型模块得到的不同的窗口类型通过调用函数获取不同的窗口指示信息。
13.根据权利要求10所述的系统,其特征在于,所述触发单元包括判断模块和发送模块;其中,
所述发送模块用于根据窗口标题栏查找动作对象窗口,当查找到动作对象窗口后获取该动作对象窗口的窗口句柄,利用所述动作对象窗口的窗口句柄向该动作对象窗口发送模拟动作指令。
14.根据权利要求13所述的系统,其特征在于,所述系统还包括执行单元,用于当所述模拟动作命令为模拟鼠标动作指令时,在所述对象窗口模拟鼠标执行点击动作;或者,当所述模拟动作命令为模拟键盘动作指令时,在所述对象窗口模拟键盘执行输入动作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102402545A CN101751329B (zh) | 2008-12-18 | 2008-12-18 | 一种实现自动测试的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102402545A CN101751329B (zh) | 2008-12-18 | 2008-12-18 | 一种实现自动测试的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101751329A CN101751329A (zh) | 2010-06-23 |
CN101751329B true CN101751329B (zh) | 2012-01-25 |
Family
ID=42478336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102402545A Active CN101751329B (zh) | 2008-12-18 | 2008-12-18 | 一种实现自动测试的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101751329B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102200912B (zh) * | 2011-06-17 | 2013-09-18 | 飞天诚信科技股份有限公司 | 一种提高用户操作易用性的方法及系统 |
CN102664921B (zh) * | 2012-03-28 | 2016-04-20 | 北京奇虎科技有限公司 | 一种远程协助方法及系统 |
CN103593282B (zh) * | 2012-08-17 | 2018-03-27 | 深圳市共进电子股份有限公司 | 产品自动化测试实现方法和产品自动化测试辅助工具 |
CN103631702B (zh) * | 2012-08-20 | 2018-01-30 | 腾讯科技(深圳)有限公司 | 自动化随机按键测试方法及装置 |
CN103678094B (zh) * | 2012-08-31 | 2018-01-23 | 腾讯科技(深圳)有限公司 | 随机按键测试方法和装置 |
CN108563538A (zh) * | 2018-03-14 | 2018-09-21 | 广州视源电子科技股份有限公司 | 板卡测试方法、系统、可读存储介质及计算机设备 |
CN108711391B (zh) * | 2018-05-16 | 2021-07-06 | 奥克斯空调股份有限公司 | 一种显示面板测试系统、控制方法及空调器 |
CN109918000A (zh) * | 2019-03-12 | 2019-06-21 | 苏州乐模软件科技有限公司 | 电极图形化检测报告自动生成方法及生成系统 |
CN112835758A (zh) * | 2021-03-22 | 2021-05-25 | 四川酷比通信设备有限公司 | 一种测试软件的自启并自动运行的方法及终端设备 |
CN114896647B (zh) * | 2022-05-07 | 2023-05-26 | 青矩技术股份有限公司 | 一种注入式操作建模软件自动建模的方法和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851667A (zh) * | 2006-02-15 | 2006-10-25 | 华为技术有限公司 | 一种图形用户界面的测试方法和系统 |
US7222265B1 (en) * | 2001-07-02 | 2007-05-22 | Lesuer Brian J | Automated software testing |
CN101105768A (zh) * | 2007-07-26 | 2008-01-16 | 南京大学 | Windows平台下基于MSAA的GUI测试驱动方法 |
-
2008
- 2008-12-18 CN CN2008102402545A patent/CN101751329B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7222265B1 (en) * | 2001-07-02 | 2007-05-22 | Lesuer Brian J | Automated software testing |
CN1851667A (zh) * | 2006-02-15 | 2006-10-25 | 华为技术有限公司 | 一种图形用户界面的测试方法和系统 |
CN101105768A (zh) * | 2007-07-26 | 2008-01-16 | 南京大学 | Windows平台下基于MSAA的GUI测试驱动方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101751329A (zh) | 2010-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101751329B (zh) | 一种实现自动测试的方法和系统 | |
US7398469B2 (en) | Automated test system for testing an application running in a windows-based environment and related methods | |
US9280451B2 (en) | Testing device | |
CN105094783B (zh) | 安卓应用稳定性测试的方法及装置 | |
US7856580B2 (en) | Testing mobile wireless devices during device production | |
US7529990B2 (en) | Systems and methods for managing multi-device test sessions | |
US8677194B2 (en) | Method and system for site configurable error reporting | |
CN102053911A (zh) | 基于Android的自动化测试方法、系统及移动终端 | |
US20060200701A1 (en) | Kernel-mode in-flight recorder tracing mechanism | |
CN103984626A (zh) | 一种生成测试用例脚本的方法及装置 | |
CN109086606B (zh) | 一种程序漏洞挖掘方法、装置、终端及存储介质 | |
CN112463467B (zh) | 自动化的整合测试系统及其方法 | |
CN112732576B (zh) | 基于用户界面的自动化测试方法、装置及设备 | |
US7840948B2 (en) | Automation of keyboard accessibility testing | |
TWI476587B (zh) | 測試電子裝置之功能的測試方法以及測試裝置 | |
CN112199301A (zh) | 用户界面自动化测试方法、电子设备及存储介质 | |
CN115658529A (zh) | 用户页面的自动化测试方法以及相关设备 | |
CN112231206A (zh) | 应用程序测试的脚本编辑方法、计算机可读存储介质及测试平台 | |
CN112199284A (zh) | 程序自动化测试方法及其相应的装置、设备、介质 | |
CN112650670A (zh) | 应用测试方法、装置、系统、电子设备和存储介质 | |
CN111414309A (zh) | 应用程序的自动化测试方法、计算机设备和存储介质 | |
CN108984380A (zh) | 一种基于Linux系统的服务器测试方法、装置及介质 | |
CN110968517B (zh) | 自动测试方法、装置、平台和计算机可读存储介质 | |
US20180365132A1 (en) | Adaptive software testing | |
CN113986263A (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 |