CN104572428A - 基于windows操作系统下的复杂控件测试方法 - Google Patents
基于windows操作系统下的复杂控件测试方法 Download PDFInfo
- Publication number
- CN104572428A CN104572428A CN201310483453.XA CN201310483453A CN104572428A CN 104572428 A CN104572428 A CN 104572428A CN 201310483453 A CN201310483453 A CN 201310483453A CN 104572428 A CN104572428 A CN 104572428A
- Authority
- CN
- China
- Prior art keywords
- module
- script
- recording
- operating system
- windows operating
- 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.)
- Pending
Links
Abstract
本发明公开了一种基于windows操作系统下的复杂控件测试方法,包括包括录制模块和回放模块,所述回放模块包括脚本及操作控件的类库和测试运行模块,本发明是通过反射角度实现脚本录制与回放,能对复杂控件以简洁高效地方式来标识进行描述和识别,避免以前自动化功能测试工具手工修改测试脚本,极大加重了测试工程师工作复杂性和工作量;其次使用了统一的脚本语言,避免不同环境,不同平台脚本语言生成不一致问题,最后本测试方法还能兼顾托管和非拖管开发平台,提高测试工作效率。
Description
技术领域
本发明涉及基于windows操作系统下的复杂控件测试方法。
背景技术
近年来,随着计算机的普及,软件系统已经深入到生活的各个方面,从普通的计算机软件,到银行或超市的终端系统,甚至到手机的软件系统。对软件质量的要求也在不断提高,但现实中软件系统的质量和稳定性却不尽人意,采用有效的软件测试是保证软件质量、提高软件可靠性的重要手段。现代化的软件大都是图形界面的,即处于windows环境下,图形界面使计算机系统变得容易使用,但这也给测试带来了极大的挑战。录制/回放是大多数现代GUI自动化测试工具采用的模式,但现有一些产品和测试工具局限性很强,只能使用于某种程序语言或者某种开发平台,目前流行的测试驱动工具局限平台框架,某些只能用于老的非托管程序,某些用于托管程序,且对复杂控件无法自动化识别,只能手工修改脚本进行测试。
发明内容
本发明的目的是解决上述存在的问题,提供能自动识别并录制功能测试脚本,同时对复杂非标准控件能够自动化进行录制和识别的一种基于windows操作系统下的复杂控件测试方法。
本发明的目的是以如下方式实现的:一种基于windows操作系统下的复杂控件测试方法,包括包括录制模块和回放模块,所述回放模块包括脚本及操作控件的类库和测试运行模块,具体操作如下:①录制模块要识别windows操作系统下应用程序的状态并捕获用户的行为,并记录用户操作应用程序时的有效动作,并生成测试脚本;
②录制模块输出脚本后,通过脚本及操作控件的类库提供的操作控件的函数,将脚本中的操作控件的函数依靠操作控件的类库,转化为以DLL的形式;
③所述测试运行模块将测试脚本组装成能够通过编译的代码,并具有屏幕状态捕捉的功能,以对比测试运行的结果与预期的结果;最后自动运行生成的测试脚本,执行功能测试。
上述的基于windows操作系统下的复杂控件测试方法,所述录制模块包括对非托管应用程序的录制模块和对托管应用程序的录制模块。
上述的基于windows操作系统下的复杂控件测试方法,所述步骤①中录制模块为对非托管应用程序的录制模块,具体为用来录制用户动作的依据有被测的GUI程序发出的WinEvents和监控到的鼠标键盘操作,所述录制模块可分程序状态捕获模块和动作分析模块,所述捕获程序状态模块截获GUI程序发出的事件和监控鼠标键盘的状态,它所产生的输出是鼠标键盘消息序列和事件序列,所述动作分析模块则接收程序状态捕获模块的输入,分析鼠标键盘消息序列和事件序列,确定用户做了何种操作并生成脚本。
上述的基于windows操作系统下的复杂控件测试方法,所述动作分析模块对标准控件由时间序列分析用户的操作,而对于非标准控件则根据鼠标键盘消息序列分析用户的操作。
上述的基于windows操作系统下的复杂控件测试方法,所述步骤①中录制模块为对托管应用程序的录制模块,具体为所述录制模块包括初始化模块和动作捕获模块,所述初始化模块负责做录制前的准备工作:将被测的程序集在录制模块所在的应用程序域中运行起来,所述动作捕获模块主要负责发现用户的操作并记录脚本。
上述的一种基于windows操作系统下的复杂控件测试方法,在每一个WinEvent发生的时候,事件回调函数中的参数hWnd表示本次事件是在哪个GUI窗口上发生的,根据这个句柄调用Win32函数GetClassName可得到GUI窗口的类,依据类名便可判断出这个GUI窗口是否是标准控件;然后分别调用不同的模块来分析用户的操作。
本发明的优点:1、本发明是通过反射角度实现脚本录制与回放,能对复杂控件以简洁高效地方式来标识进行描述和识别,避免以前自动化功能测试工具手工修改测试脚本,极大加重了测试工程师工作复杂性和工作量;其次使用了统一的脚本语言,避免不同环境,不同平台脚本语言生成不一致问题,最后本测试方法还能兼顾托管和非拖管开发平台,提高测试工作效率;
2、本发明研究的是各种桌面软件开发环境下复杂控件测试方法设计,实现对托管的和非托管的应用程序进行自动化测试。在实现录制回放模块的时候,使用内嵌于操作系统中的技术,使得工具具有相当的适应性。使用通用的计算机语言C#作为脚本语言,借助C#语言的功能,开发出功能强大的脚本。本发明使用具有不变性的属性来标识控件,哪怕控件的位置移动后,不用改动脚本仍然能定位到控件。这不但使得标识控件变得简单,并且能高效地查找定位控件。
3、本发明能对传统的Windows应用程序及.NET应用程序进行功能测试。在对传统的Windows应用程序进行录制/回放时,主要用到了Active Accessibility、Windows的消息机制和Windows钩子等技术,通过Active Accessibility中的WinEvens来记录用户的动作,对于非标准控件,则直接记录用户在非标准控件上进行的鼠标键盘操作。对于.NET应用程序,主要通过.NET的反射技术来实现录制和回放。本专利设计的测试方法能以简洁高效的方式来标识查找控件,以C#作为脚本语言,可以实现出功能强大的脚本。该方法还提供数据驱动的测试方式,即可以将测试数据和脚本分离,这样,同一个用例,可以用不同条件下的数据对应用程序进行测试。
附图说明
为了使本发明的内容更容易被清楚地理解,下面根据具体实施例并结合附图,对本发明作进一步详细的说明,其中
图1是本发明的架构结构示意图;
图2是本发明在录制非托管应用时的录制模块结构图;
图3是本发明在录制托管应用时的录制模块结构图;
图4是动作分析模块的流程图。
具体实施方式:
见图1至图4所示,一种基于windows操作系统下的复杂控件测试方法,包括录制模块包括录制模块和回放模块,所述回放模块包括脚本及操作控件的类库和测试运行模块,具体操作如下:①录制模块要识别windows操作系统下应用程序的状态并捕获用户的行为,并记录用户操作应用程序时的有效动作,并生成测试脚本;
②录制模块输出脚本后,通过脚本及操作控件的类库提供的操作控件的函数,将脚本中的操作控件的函数依靠操作控件的类库,转化为以DLL的形式;
③所述测试运行模块将测试脚本组装成能够通过编译的代码,并具有屏幕状态捕捉的功能,以对比测试运行的结果与预期的结果;最后自动运行生成的测试脚本,执行功能测试。
见图1所示,所述录制模块包括对非托管应用程序的录制模块和对托管应用程序的录制模块。
见图2所示,所述步骤①中录制模块为对非托管应用程序的录制模块,具体为用来录制用户动作的依据有被测的GUI程序发出的WinEvents和监控到的鼠标键盘操作,所述录制模块可分程序状态捕获模块和动作分析模块,所述捕获程序状态模块截获GUI程序发出的事件和监控鼠标键盘的状态,它所产生的输出是鼠标键盘消息序列和事件序列,所述动作分析模块则接收程序状态捕获模块的输入,分析鼠标键盘消息序列和事件序列,确定用户做了何种操作并生成脚本。所述动作分析模块对标准控件由时间序列分析用户的操作,而对于非标准控件则根据鼠标键盘消息序列分析用户的操作。
见图3所示,所述步骤①中录制模块为对托管应用程序的录制模块,具体为所述录制模块包括初始化模块和动作捕获模块,所述初始化模块负责做录制前的准备工作:将被测的程序集在录制模块所在的应用程序域中运行起来,所述动作捕获模块主要负责发现用户的操作并记录脚本。
见图4所示,在每一个WinEvent发生的时候,事件回调函数中的参数hWnd表示本次事件是在哪个GUI窗口上发生的,根据这个句柄调用Win32函数GetClassName可得到GUI窗口的类,依据类名便可判断出这个GUI窗口是否是标准控件;然后分别调用不同的模块来分析用户的操作。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种基于windows操作系统下的复杂控件测试方法,其特征在于:包括录制模块和回放模块,所述回放模块包括脚本及操作控件的类库和测试运行模块,具体操作如下:
①录制模块要识别windows操作系统下应用程序的状态并捕获用户的行为,并记录用户操作应用程序时的有效动作,并生成测试脚本;
②录制模块输出脚本后,通过脚本及操作控件的类库提供的操作控件的函数,将脚本中的操作控件的函数依靠操作控件的类库,转化为以DLL的形式;
③所述测试运行模块将测试脚本组装成能够通过编译的代码,并具有屏幕状态捕捉的功能,以对比测试运行的结果与预期的结果;最后自动运行生成的测试脚本,执行功能测试。
2.根据权利要求1所述的基于windows操作系统下的复杂控件测试方法,其特征在于:所述录制模块包括对非托管应用程序的录制模块和对托管应用程序的录制模块。
3.根据权利要求2所述的基于windows操作系统下的复杂控件测试方法,其特征在于:所述步骤①中录制模块为对非托管应用程序的录制模块,具体为用来录制用户动作的依据有被测的GUI程序发出的WinEvents和监控到的鼠标键盘操作,所述录制模块可分程序状态捕获模块和动作分析模块,所述捕获程序状态模块截获GUI程序发出的事件和监控鼠标键盘的状态,它所产生的输出是鼠标键盘消息序列和事件序列,所述动作分析模块则接收程序状态捕获模块的输入,分析鼠标键盘消息序列和事件序列,确定用户做了何种操作并生成脚本。
4.根据权利要求3所述的基于windows操作系统下的复杂控件测试方法,其特征在于:所述动作分析模块对标准控件由时间序列分析用户的操作,而对于非标准控件则根据鼠标键盘消息序列分析用户的操作。
5.根据权利要求2所述的基于windows操作系统下的复杂控件测试方法,其特征在于:所述步骤①中录制模块为对托管应用程序的录制模块,具体为所述录制模块包括初始化模块和动作捕获模块,所述初始化模块负责做录制前的准备工作:将被测的程序集在录制模块所在的应用程序域中运行起来,所述动作捕获模块主要负责发现用户的操作并记录脚本。
6.根据权利要求4或5所述的基于windows操作系统下的复杂控件测试方法,其特征在于:在每一个WinEvent发生的时候,事件回调函数中的参数hWnd表示本次事件是在哪个GUI窗口上发生的,根据这个句柄调用Win32函数GetClassName可得到GUI窗口的类,依据类名便可判断出这个GUI窗口是否是标准控件;然后分别调用不同的模块来分析用户的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310483453.XA CN104572428A (zh) | 2013-10-16 | 2013-10-16 | 基于windows操作系统下的复杂控件测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310483453.XA CN104572428A (zh) | 2013-10-16 | 2013-10-16 | 基于windows操作系统下的复杂控件测试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104572428A true CN104572428A (zh) | 2015-04-29 |
Family
ID=53088562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310483453.XA Pending CN104572428A (zh) | 2013-10-16 | 2013-10-16 | 基于windows操作系统下的复杂控件测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572428A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915243A (zh) * | 2015-06-30 | 2015-09-16 | 北京奇虎科技有限公司 | 键鼠脚本回放的方法及装置 |
CN105740154A (zh) * | 2016-03-03 | 2016-07-06 | 北京白鹭时代信息技术有限公司 | 一种网页游戏测试脚本生成方法及装置 |
CN106897225A (zh) * | 2017-02-27 | 2017-06-27 | 网易(杭州)网络有限公司 | 录制测试脚本的方法、装置及电子设备 |
CN109032947A (zh) * | 2018-07-27 | 2018-12-18 | 广州视源电子科技股份有限公司 | 用于操作系统的测试方法、装置、设备和存储介质 |
CN110554967A (zh) * | 2019-09-10 | 2019-12-10 | 浙江中控技术股份有限公司 | 一种非标准控件的测试方法及装置 |
CN111581091A (zh) * | 2020-04-30 | 2020-08-25 | 北京字节跳动网络技术有限公司 | 页面测试方法、装置、可读介质及电子设备 |
CN112612699A (zh) * | 2020-12-21 | 2021-04-06 | 上海金途信息科技有限公司 | 一种hid人机交互场景用例通用自动化测试设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620565A (zh) * | 2008-07-04 | 2010-01-06 | 福建升腾资讯有限公司 | 终端系统的功能自动化测试方法 |
CN101620564A (zh) * | 2008-06-30 | 2010-01-06 | 福建升腾资讯有限公司 | 终端系统的录制回放模式自动化测试方法 |
CN101853204A (zh) * | 2010-06-01 | 2010-10-06 | 华南理工大学 | 一种windows环境下的复杂控件测试系统 |
CN101957793A (zh) * | 2010-09-03 | 2011-01-26 | 中国科学院软件研究所 | 一种面向Android及其衍生系统的软件操作录制回放方法 |
-
2013
- 2013-10-16 CN CN201310483453.XA patent/CN104572428A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620564A (zh) * | 2008-06-30 | 2010-01-06 | 福建升腾资讯有限公司 | 终端系统的录制回放模式自动化测试方法 |
CN101620565A (zh) * | 2008-07-04 | 2010-01-06 | 福建升腾资讯有限公司 | 终端系统的功能自动化测试方法 |
CN101853204A (zh) * | 2010-06-01 | 2010-10-06 | 华南理工大学 | 一种windows环境下的复杂控件测试系统 |
CN101957793A (zh) * | 2010-09-03 | 2011-01-26 | 中国科学院软件研究所 | 一种面向Android及其衍生系统的软件操作录制回放方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915243A (zh) * | 2015-06-30 | 2015-09-16 | 北京奇虎科技有限公司 | 键鼠脚本回放的方法及装置 |
CN104915243B (zh) * | 2015-06-30 | 2018-08-10 | 北京奇虎科技有限公司 | 键鼠脚本回放的方法及装置 |
CN105740154A (zh) * | 2016-03-03 | 2016-07-06 | 北京白鹭时代信息技术有限公司 | 一种网页游戏测试脚本生成方法及装置 |
CN106897225A (zh) * | 2017-02-27 | 2017-06-27 | 网易(杭州)网络有限公司 | 录制测试脚本的方法、装置及电子设备 |
CN109032947A (zh) * | 2018-07-27 | 2018-12-18 | 广州视源电子科技股份有限公司 | 用于操作系统的测试方法、装置、设备和存储介质 |
CN110554967A (zh) * | 2019-09-10 | 2019-12-10 | 浙江中控技术股份有限公司 | 一种非标准控件的测试方法及装置 |
CN110554967B (zh) * | 2019-09-10 | 2023-09-08 | 浙江中控技术股份有限公司 | 一种非标准控件的测试方法及装置 |
CN111581091A (zh) * | 2020-04-30 | 2020-08-25 | 北京字节跳动网络技术有限公司 | 页面测试方法、装置、可读介质及电子设备 |
CN111581091B (zh) * | 2020-04-30 | 2023-03-21 | 北京字节跳动网络技术有限公司 | 页面测试方法、装置、可读介质及电子设备 |
CN112612699A (zh) * | 2020-12-21 | 2021-04-06 | 上海金途信息科技有限公司 | 一种hid人机交互场景用例通用自动化测试设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572428A (zh) | 基于windows操作系统下的复杂控件测试方法 | |
US10574547B2 (en) | Anomaly detection and correction in wireless networks | |
CN107111544B (zh) | 生产诊断中的历史控制流可视化 | |
US8694967B2 (en) | User interface inventory | |
CN102141962B (zh) | 一种安全性分布式测试框架系统及其测试方法 | |
CN101853204A (zh) | 一种windows环境下的复杂控件测试系统 | |
CN106294071B (zh) | 一种软件崩溃信息收集方法及其系统 | |
CN103077111B (zh) | 一种持续集成失败用例的定位方法及系统 | |
CN101493793B (zh) | 一种atm测试方法及装置 | |
CN101060372A (zh) | 一种快速生成自动化测试脚本的方法及系统 | |
CN103268289B (zh) | 在移动终端上录制应用测试脚本的方法和系统 | |
CN105740139B (zh) | 一种基于虚拟环境的嵌入式软件调试方法 | |
CN104281520A (zh) | 跟踪和调试的方法、装置及系统 | |
CN102222035A (zh) | 基于符号执行技术的软件行为检测系统及检测方法 | |
CN109344071A (zh) | 自动生成LoadRunner性能测试脚本的方法 | |
CN104462943A (zh) | 业务系统中非侵入式性能监控装置和方法 | |
CN101751329A (zh) | 一种实现自动测试的方法和系统 | |
CN102045397A (zh) | Telnet登录嵌入式终端以进行调试的方法及设备 | |
CN103729293A (zh) | 一种基于uml活动图的gui测试方法 | |
CN105630664B (zh) | 一种反向调试方法、装置及调试器 | |
CN107844486B (zh) | 一种用于客户端的分析网页问题的方法和系统 | |
CN101706752B (zh) | 一种软件错误现场定位的方法及装置 | |
CN111382424A (zh) | 一种基于受控环境的移动应用敏感行为检测方法和系统 | |
CN108009086B (zh) | 基于用例分解和功能学习的系统自动化测试方法 | |
CN109240862A (zh) | 一种带外管理测试bmc稳定性的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150429 |
|
RJ01 | Rejection of invention patent application after publication |