CN100340997C - 一种应用程序的自动测试方法 - Google Patents
一种应用程序的自动测试方法 Download PDFInfo
- Publication number
- CN100340997C CN100340997C CNB2004100790425A CN200410079042A CN100340997C CN 100340997 C CN100340997 C CN 100340997C CN B2004100790425 A CNB2004100790425 A CN B2004100790425A CN 200410079042 A CN200410079042 A CN 200410079042A CN 100340997 C CN100340997 C CN 100340997C
- Authority
- CN
- China
- Prior art keywords
- test
- agent module
- case
- application program
- client
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种应用程序的自动测试方法,包括:A)根据被测应用程序的Windows窗口界面及控件,编写若干测试用例,每个测试用例设有一用例ID;包括若干测试步骤,每个测试步骤设有一步骤ID;B)在被测应用程序中嵌入一测试代理模块,用以完成测试用例中各测试步骤的执行;C)测试用户端加载全部测试用例,并向测试代理模块下发测试用例ID集合和执行测试命令;D)测试代理模块按照所接收的用例ID顺序,获取并执行相应测试用例的测试步骤,测试代理模块还可以通过一定的通讯机制请求测试用户端执行若干测试步骤,协同完成测试用例;一个测试用例执行完毕后,顺序执行下一个测试用例,实现应用程序的自动测试。
Description
技术领域
本发明涉及程序测试,尤指一种应用程序的自动测试方法。
背景技术
Windows平台应用程序的自动化测试技术,目前主要是通过hook进行消息捕捉,录制回放脚本的形式进行测试。但这种测试无法应对非标准的控件,对于BCG等界面库包含的种种非标控件,经常失灵。另外,难于对测试框架进行改造,加入自己的特殊接口,如进行数据检查等,需要用非常复杂的方法进行接口的设计和实现,工作量很大。
现有技术中通用的界面测试模式如图1所示,其仅仅能进行录制,回放,如果获取标准的测试结果与实测结果进行比较时,要检查基于特定接口(比如存取数据库)的内容,不得不编写专门的接口程序如DLL等,来外接测试程序进行接口,还需要测试程序能够支持该接口,非常繁琐。
另外,对于扩展后的Windows复杂控件,比如新型的.Net界面和自定义界面控件,这种传统的录制回放方法经常不能稳定的运行,并受到诸多限制,比如必须在前台运行等。
如果测试数据要求灵活的与外界数据相匹配,必须测试程序支持该接口,而有些测试程序无法满足多方面的这种要求。如果要自定义测试输出,报表等,一般也无法实现。只能遵从测试工具的实现功能,用户无法自己定制。
发明内容
本发明提供一种应用程序的自动测试方法,无需用户干预,自动完成应用程序的整个测试过程,并方便实现测试数据的比较,并可在后台执行。
本发明提供的应用程序的自动测试方法,包括下列步骤:
A)根据被测应用程序的窗口界面及控件,编写若干测试用例,每个测试用例设有一用例ID;
B)在被测应用程序中嵌入一测试代理模块,用以完成测试用例中各测试步骤的执行;
C)测试客户端加载全部测试用例,并向测试代理模块下发测试用例ID集合和执行测试命令;
D)测试代理模块按照所接收的用例ID顺序,获取并执行相应测试用例的测试步骤;
E)若该测试用例的所有测试步骤执行完毕,则判断是否还有未执行的测试用例,若是,则转至步骤D,否则,结束自动测试流程。
根据本发明的上述方法,所述测试用例的各测试步骤标识有步骤ID,测试代理模块在每一个测试步骤中判断是否需要测试客户端配合执行界面操作,若是,则发送测试用例步骤执行消息到测试客户端执行,测试客户端完成后返回继续消息和测试步骤ID,测试代理模块从该测试步骤继续往下执行;若否,则继续执行该测试用例的下一个步骤。
根据本发明的上述方法,所述应用程序为基于Windows窗口的应用程序。
根据本发明的上述方法,实现一个包含Windows窗口界面基本操作的基础类,所述测试测试客户端与所述测试代理模块通过该基础类实现界面操作的测试执行。
根据本发明的上述方法,所述测试代理模块和测试客户端在执行测试用例的过程中,使用所述基础类与被测应用程序实现界面操作的消息交互。
根据本发明的上述方法,若需要测试客户端配合测试代理模块执行界面操作时,通过两者之间的消息交互来实现测试同步协调。
根据本发明的上述方法,所述基础类封装以下的操作:
a查找当前有效的匹配某个标题的窗口;
b根据父窗口句柄以及子窗口的属性或者文本句柄查找某个窗口内的子窗口;
c点击按钮的操作,参数:句柄;
d根据文本的顺序号选择ComboBox某个项目的操作;
e在编辑框内输入一定的字符的操作;
f其它需要封装的界面操作。
根据本发明的上述方法,所述测试代理模块随被测应用程序启动一隐藏窗口,所述测试客户端查找该隐藏窗口句柄后下发测试用例ID集合给测试代理模块。
根据本发明的上述方法,所述测试代理模块获取测试结果并与预期结果比较,以此判断测试是否成功,并将测试结果写入一外部共享数据存储模块;所述测试客户端从该共享数据存储模块读取测试结果并处理。
根据本发明的上述方法,所述测试用例通过测试客户端编辑,并存储在所述共享数据存储模块中供以后加载。
本发明测试用例实现,只要一般掌握VC++的人员即可编程实现,整个测试过程全部自动化,实现上能大大提高测试效率,较大节约测试成本。另外,本发明方法对常用控件和非常用控件的都能实现测试。
附图说明
图1为现有技术中消息驱动的测试模型示意图。
图2为本发明测试方法所采用的测试框架示意图。
图3为本发明测试方法具体流程图。
具体实施方式
本发明测试方法所采用的测试框架示意图如图2所示。包括:
测试客户端:所述测试客户端包括测试用例导入界面,测试用例执行界面等等,用户可自己根据需要添加许多扩展功能。
共享数据存储模块:为外部自定义的数据文件数据库,用于保存测试用例,并存储测试结果。
测试代理模块:嵌入被测应用程序内部,具有一随被测程序启动的窗口(对用户在界面上不可见),该测试代理模块主要完成测试用例测试步骤的执行,测试步骤中无法自己完成的部分(因为有些操作会引起自锁,比如程序弹出对话框后,无法自己关闭此对话框),测试代理模块对测试客户端发出请求,接收到测试客户端完成请求事务后继续执行测试;该测试代理模块同时进行测试逻辑判断和输出测试结果等。
在具体实现中,还可实现一个基础类,包含Windows窗口界面的基本操作。这个类可以封装以下的操作:
a查找当前有效的匹配某个标题的窗口;
b根据父窗口句柄以及子窗口的属性或者文本句柄查找某个窗口内的子窗口;
c点击按钮的操作,参数:句柄;
d根据文本的顺序号选择ComboBox某个项目的操作;
e在编辑框内输入一定的字符的操作;
f其它需要在界面和控件上进行操作的方法。
这个类可以被测试客户端和测试代理模块共同使用。
所述测试客户端与所述测试代理模块通过该基础类实现界面操作的测试执行;所述测试代理模块在执行测试用例的过程中,使用所述基础类与被测应用程序实现界面操作的消息交互。所述交互消息可采用普通窗口消息,自定义消息和Windows拷贝消息等。
本发明测试方法具体流程如图3所示,包括如下步骤:
步骤11:在测试客户端启动自动测试流程;
步骤12:测试客户端读取预存在共享数据存储模块中的测试用例并加载;所述测试用例是根据被测应用程序的Windows窗口界面及控件来编写的,且每个测试用例设有一用例ID;每个测试用例还包括若干测试步骤,每个测试步骤设有一步骤ID;
步骤13:测试客户端根据文本查找窗口句柄,找到测试代理模块的隐藏窗口,向测试代理模块下发测试用例ID集合和测试执行命令;
步骤14:测试代理模块按照接收的测试用例ID,开始向自身投递开始测试程序的消息;
步骤15:测试代理模块根据测试用例ID集合顺序,获取下一个测试用例的测试步骤;
步骤16:测试代理模块执行测试用例的测试步骤,在步骤执行过程中,判断是否需要测试客户端配合执行界面操作,若是,执行步骤17,否则,完成当前步骤跳至步骤18;
步骤17:测试代理模块发送测试用例步骤执行消息到测试客户端执行,测试客户端完成后返回继续消息和当前的步骤ID;执行步骤18;
步骤18:测试代理模块判断当前测试用例的全部测试步骤是否执行完毕,若是,则执行步骤19,否则,跳至步骤16;
步骤19:测试代理模块判断全部测试用例是否执行完毕,若否,跳至步骤15,否则执行步骤20;
步骤20:结束整个自动测试流程。
根据本发明的上述步骤,若需要测试客户端配合测试代理模块执行界面操作时,通过两者之间的消息交互来实现测试同步协调。
测试完成后,所述测试代理模块获取测试结果并与预期结果比较,以此判断测试是否成功,并将测试结果写入一外部共享数据存储模块;所述测试客户端从该共享数据存储模块读取测试结果并处理。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
Claims (10)
1、一种应用程序的自动测试方法,包括下列步骤:
A)根据被测应用程序的窗口界面及控件,编写若干测试用例,每个测试用例设有一用例ID;
B)在被测应用程序中嵌入一测试代理模块,用以完成测试用例中各测试步骤的执行;
C)测试客户端加载全部测试用例,并向测试代理模块下发测试用例ID集合和执行测试命令;
D)测试代理模块按照所接收的用例ID顺序,获取并执行相应测试用例的测试步骤;
E)若该测试用例的所有测试步骤执行完毕,则判断是否还有未执行的测试用例,若是,则转至步骤D,否则,结束自动测试流程。
2、如权利要求1所述的方法,其特征在于:所述测试用例的各测试步骤标识有步骤ID,测试代理模块在每一个测试步骤中判断是否需要测试客户端配合执行界面操作,若是,则发送测试用例步骤执行消息到测试客户端执行,测试客户端完成后返回继续消息和测试步骤ID,测试代理模块从该测试步骤继续往下执行;若否,则继续执行该测试用例的下一个步骤。
3、如权利要求2所述的方法,其特征在于:所述应用程序为基于Windows窗口的应用程序。
4、如权利要求3所述的方法,其特征在于:实现一个包含Windows窗口界面基本操作的基础类,所述测试客户端与所述测试代理模块通过该基础类实现界面操作的测试执行。
5、如权利要求4所述的方法,其特征在于:所述测试代理模块和测试客户端在执行测试用例的过程中,使用所述基础类与被测应用程序实现界面操作的消息交互。
6、如权利要求5所述的方法,其特征在于:若需要测试客户端配合测试代理模块执行界面操作时,通过两者之间的消息交互来实现测试同步协调。
7、如权利要求4或5所述的方法,其特征在于:所述基础类封装以下的操作:
a查找当前有效的匹配某个标题的窗口;
b根据父窗口句柄以及子窗口的属性或者文本句柄查找某个窗口内的子窗口;
c点击按钮的操作,参数:句柄;
d根据文本的顺序号选择ComboBox某个项目的操作;
e在编辑框内输入一定的字符的操作;
f其它需要封装的界面操作。
8、如权利要求1所述的方法,其特征在于:所述测试代理模块随被测应用程序启动一隐藏窗口,所述测试客户端查找该隐藏窗口句柄后下发测试用例ID集合给测试代理模块。
9、如权利要求1所述的方法,其特征在于:所述测试代理模块获取测试结果并与预期结果比较,以此判断测试是否成功,并将测试结果写入一外部共享数据存储模块;所述测试客户端从该共享数据存储模块读取测试结果并处理。
10、如权利要求9所述的方法,其特征在于:所述测试用例通过测试客户端编辑,并存储在所述共享数据存储模块中供以后加载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100790425A CN100340997C (zh) | 2004-09-04 | 2004-09-04 | 一种应用程序的自动测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100790425A CN100340997C (zh) | 2004-09-04 | 2004-09-04 | 一种应用程序的自动测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1744056A CN1744056A (zh) | 2006-03-08 |
CN100340997C true CN100340997C (zh) | 2007-10-03 |
Family
ID=36139440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100790425A Expired - Fee Related CN100340997C (zh) | 2004-09-04 | 2004-09-04 | 一种应用程序的自动测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100340997C (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101098200B (zh) * | 2006-06-27 | 2014-02-19 | 中兴通讯股份有限公司 | 一种实现可定制测试流程的方法 |
CN102207856B (zh) * | 2010-03-29 | 2014-08-27 | 日电(中国)有限公司 | 进程内组件对象的创建方法和系统 |
CN102467442B (zh) * | 2010-11-02 | 2015-04-29 | 腾讯科技(深圳)有限公司 | 一种软件测试的方法、系统和设备 |
CN102541728A (zh) * | 2010-12-14 | 2012-07-04 | 北京新媒传信科技有限公司 | 扩展自动化测试工具识别控件的方法 |
CN102736013B (zh) * | 2011-04-12 | 2015-08-05 | 安凯(广州)微电子技术有限公司 | 一种SoC芯片的空闲状态测试方法、系统及测试装置 |
CN102938800B (zh) * | 2012-11-07 | 2015-09-02 | 大唐移动通信设备有限公司 | 一种无线通信质量自动测试系统以及方法 |
CN104008043B (zh) * | 2013-02-21 | 2017-08-22 | 腾讯科技(深圳)有限公司 | 跨终端测试方法、待测试端及测试端 |
CN103605092B (zh) * | 2013-10-23 | 2016-08-24 | 上海华力微电子有限公司 | Wat测试系统及测试方法 |
CN103616984B (zh) * | 2013-11-25 | 2017-12-29 | 联想(北京)有限公司 | 信息处理方法和电子设备 |
CN104834586B (zh) * | 2014-02-10 | 2018-11-20 | 腾讯科技(深圳)有限公司 | 安卓界面自动化测试方法、装置及系统 |
CN103853663B (zh) * | 2014-03-25 | 2016-08-31 | 北京金山网络科技有限公司 | 应用程序测试方法及系统 |
CN104820638A (zh) * | 2015-04-17 | 2015-08-05 | 中国电子科技集团公司第四十一研究所 | 一种嵌入式的整机自动测试方法 |
CN104809062B (zh) * | 2015-04-22 | 2017-12-01 | 北京京东尚科信息技术有限公司 | 一种人工智能应答系统的测试方法及系统 |
CN105095069B (zh) * | 2015-06-19 | 2018-06-08 | 北京京东尚科信息技术有限公司 | 一种人工智能应答系统测试方法及系统 |
CN105138450A (zh) * | 2015-07-31 | 2015-12-09 | 北京金山安全软件有限公司 | 软件稳定性测试方法及装置 |
CN106028367B (zh) * | 2016-06-23 | 2020-06-02 | 惠州Tcl移动通信有限公司 | 一种基于CMWrun测试平台的自动测试方法及系统 |
CN106407105B (zh) * | 2016-08-26 | 2019-02-01 | 上海合福信息科技有限公司 | 一种测试设计书生成方法 |
CN107357725B (zh) * | 2017-06-29 | 2018-09-04 | 腾讯科技(深圳)有限公司 | 应用测试方法及装置 |
CN109032870A (zh) * | 2018-08-03 | 2018-12-18 | 百度在线网络技术(北京)有限公司 | 用于测试设备的方法和装置 |
CN112256554B (zh) * | 2019-07-22 | 2023-06-16 | 腾讯科技(深圳)有限公司 | 一种基于场景测试用例进行测试的方法及设备 |
CN110674030A (zh) * | 2019-08-27 | 2020-01-10 | 北京金堤科技有限公司 | 应用测试方法和装置、计算机可读存储介质、电子设备 |
CN115048293A (zh) * | 2022-06-07 | 2022-09-13 | 中国电力科学研究院有限公司 | 一种嵌入式操作系统电能表应用程序的测试方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1286431A (zh) * | 1999-11-30 | 2001-03-07 | 深圳市中兴通讯股份有限公司 | 嵌入式软件辅助调试方法 |
US20030126517A1 (en) * | 2001-07-27 | 2003-07-03 | Accordsqa | Automated software testing and validation system |
CN1115628C (zh) * | 1999-09-30 | 2003-07-23 | 深圳市中兴通讯股份有限公司 | 一种软件模拟测试方法 |
CN1487446A (zh) * | 2003-06-24 | 2004-04-07 | 深圳市华磊网络技术有限公司 | 服务器端应用为浏览器客户端提供用户界面的方法 |
CN1503136A (zh) * | 2002-11-21 | 2004-06-09 | 深圳市中兴通讯股份有限公司 | 一种嵌入式软件测试方法 |
CN1519725A (zh) * | 2003-01-20 | 2004-08-11 | 英业达股份有限公司 | 物件的可视化测试方法 |
-
2004
- 2004-09-04 CN CNB2004100790425A patent/CN100340997C/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1115628C (zh) * | 1999-09-30 | 2003-07-23 | 深圳市中兴通讯股份有限公司 | 一种软件模拟测试方法 |
CN1286431A (zh) * | 1999-11-30 | 2001-03-07 | 深圳市中兴通讯股份有限公司 | 嵌入式软件辅助调试方法 |
US20030126517A1 (en) * | 2001-07-27 | 2003-07-03 | Accordsqa | Automated software testing and validation system |
CN1503136A (zh) * | 2002-11-21 | 2004-06-09 | 深圳市中兴通讯股份有限公司 | 一种嵌入式软件测试方法 |
CN1519725A (zh) * | 2003-01-20 | 2004-08-11 | 英业达股份有限公司 | 物件的可视化测试方法 |
CN1487446A (zh) * | 2003-06-24 | 2004-04-07 | 深圳市华磊网络技术有限公司 | 服务器端应用为浏览器客户端提供用户界面的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1744056A (zh) | 2006-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100340997C (zh) | 一种应用程序的自动测试方法 | |
CN1845120A (zh) | 一种恶意代码自动分析系统及方法 | |
CN101330412B (zh) | 一种基于拓扑发现的自动化测试方法及系统 | |
CN1877544A (zh) | 关键字驱动的自动化测试系统及方法 | |
CN1747472A (zh) | 基于ccp协议的嵌入式通用标定装置及方法 | |
CN1746844A (zh) | 一种跨操作系统平台的机群系统监控和管理方法 | |
CN1920793A (zh) | 在不同的语言环境下实现测试脚本回放的装置和方法 | |
CN1212569C (zh) | 多线程自动测试方法 | |
CN100346315C (zh) | 基于脚本的三维建模软件自动测试方法 | |
CN101055542A (zh) | 一种交叉集成开发环境中的符号调试方法及系统 | |
CN114398694A (zh) | 一种基于Dynamo程序实现建筑信息模型快速创建的方法 | |
CN101030211A (zh) | 用于从测试数据中导出丢失数据对象的方法和系统 | |
CN1564489A (zh) | 一种通信系统有限状态机的测试方法 | |
CN112328231B (zh) | python字典和结构体间的快速转换方法 | |
CN117156172A (zh) | 视频切片上报方法、系统、存储介质及计算机 | |
CN1949173A (zh) | 一种软件的安装方法及其装置 | |
CN1818885A (zh) | 运行日志获取方法 | |
CN1805582A (zh) | 一种使用集成测试工具进行测试的方法 | |
CN1269034C (zh) | 一种嵌入式系统中可执行文件的压缩及其加载方法 | |
CN1152303C (zh) | 在仿真器上实现对操作路径自动记录和回放的方法 | |
CN1369802A (zh) | 记录并自动恢复流程状态的方法 | |
CN1848093A (zh) | 基本输入输出系统中高级配置和电源接口模块的调试方法 | |
CN1521994A (zh) | 实现智能业务自动测试的方法 | |
CN1684043A (zh) | 计算机文件的实时监控系统和方法 | |
CN1797335A (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 |
Granted publication date: 20071003 Termination date: 20140904 |
|
EXPY | Termination of patent right or utility model |