CN102819492B - 一种基于Android的关键字驱动自动化测试框架 - Google Patents
一种基于Android的关键字驱动自动化测试框架 Download PDFInfo
- Publication number
- CN102819492B CN102819492B CN201210274374.3A CN201210274374A CN102819492B CN 102819492 B CN102819492 B CN 102819492B CN 201210274374 A CN201210274374 A CN 201210274374A CN 102819492 B CN102819492 B CN 102819492B
- Authority
- CN
- China
- Prior art keywords
- test
- data
- android
- keyword
- key word
- 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
Abstract
一种基于Android关键字驱动自动化测试框架,属于Android自动化测试领域。本发明的目的是实现从数据文件中直接导入测试用例进行测试,使测试数据与测试代码分离,降低测试数据与测试代码的耦合性。归纳出Android GUI测试的关键字,设计出与被测应用交互的关键字库,使得这些关键字可重用性高,实现了基于关键字驱动的Android GUI测试框架。本发明通过各模块的协调工作,克服了现有Android测试框架代码耦合性高,测试用例编写效率低下等缺点,使得测试用例的编写与测试代码的编写分离,提高了测试用例的编写效率。
Description
技术领域
本发明涉及一种针对Android的测试框架,具体来说,是涉及一种基于Android关键字驱动的测试框架。
背景技术
目前,全球主流的智能手机操作系统有Nokia公司研发的Symbian、Google公司研发的Android、Apple公司研发的iOS、Microsoft公司研发的Windows Mobile以及Research InMotion公司研发的Blackberry OS等。上述的智能手机操作系统根据自身源代码与内核对用户所定义的开放程度不同,可以将其分为两大类,分别为封闭型平台和开放型平台。其中,除了Google公司研发的Android操作系统外,其余都属于封闭型平台。虽然Symbian在2008年被Nokia全资收购后,开始从封闭型平台逐步转向研究开源的开放型平台,但迄今为止,基于开源Symbian手机操作系统的终端产品还未在市场上正式推出。
2007年末,Android凭借其开源、拓展性及可移植性强等特性迅速走红全球。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2012年2月数据表明,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%,Android Market的App数量已经超过450000个,每月的下载量到达十亿。
然而,与Android开发的飞速发展相比,其相对滞后的测试技术却更让人担忧。尽管目前国内外已经出现了多款软件自动化测试工具,然后这些类型的测试框架大都是针对Java或C++、C#开发人员而设计的,针对Android的自动化测试框架却相对较少。初始时只能使用JUint对Android应用进行最基本的单元测试,但是JUnit对Android还不能达到完全的支持,且相应的文档也较少。后来,Google Android SDK通过Activity Instrumentation框架,提供了自带的程序插装代码。然而,Instrumentation框架使用复杂,对用例编写人员素质要求较高,需要有一定的Java及Android编程基础,同时,编写测试用例将会耗去测试人员较多的时间,加大了软件测试的成本。除此之外,测试代码的耦合性较高,一旦被测应用程序经过修改或版本更新,测试代码也需要进行相应的修改,这样对项目管理极其不利。若每当发布一个版本就需要对相应的测试代码进行修改,将会极大地浪费测试资源,同时增加测试代码的维护风险。后来,随着Android测试技术的发展,逐渐出现针对Android的测试框架。目前主流的Android自动化测试框架包括:Activity Instrumentation、MonkeyRunner、Robotium、Robolectric、TMTS以及LessPainful。但这些框架仍然存在编写用例困难,测试代码耦合性高等问题。
发明内容
针对以上问题,本发明将选用在Robotium框架的基础上,设计基于Android的关键字驱动自动化测试框架。增强了自动化测试的可开发性和可维护性,把测试用例的设计与测试数据相结合,通过设计测试数据和关键字来实现测试用例的开发。
本发明的目的是实现从数据文件中直接导入测试用例进行测试,使测试数据与测试代码分离,降低测试数据与测试代码的耦合性。归纳出Android GUI测试的关键字,设计出与被测应用交互的关键字库,使得这些关键字可重用性高,实现了基于关键字驱动的Android GUI测试框架。通过以下技术手段实现:包括数据文件(测试配置数据、业务测试数据)、处理器模块(数据处理器、关键字处理器)、驱动模块、测试脚本模块、结果分析模块。
所述的数据文件中的测试配置数据文件,用于保存测试自动运行所需要的信息,是测试自动执行的核心。
所述的业务测试数据文件包含了测试执行过程中所需要的各种业务数据。如测试用例的编码、对应的操作及输入输出数据值等。可通过人工录入的方式或系统自动录制的方式来录入数据。控件对象数据是被测试的应用程序控件对象的集合,如Android应用上的一个按钮、一个列表、一个文本输入框甚至是一个自定义的控件。
所述的驱动模块通过读取测试配置数据文件中的配置和操作测试数据,来进一步调用测试脚本代码。
所述的处理器模块主要用于处理不同的数据文件。如从数据文件中读入数据,并根据下一级模块的需要,转换为相应的格式,以方便读取。
所述的驱动模块与测试脚本模块用于根据配置数据驱动测试代码的运行。
所述的结果分析模块使用改进后的TestRunner生成测试分析报告。
上述自动化测试框架的工作流程为:
一、从业务数据文件中读入测试人员编写的测试用例
二、读取测试用例中的控件值、输入输出值等信息
三、读取测试用例中所涉及的关键字,并根据关键字调用关键字库中的代码,执行相应的操作。
四、测试完成后,记录测试结果,并生成测试报告以及代码覆盖率报告。
与现有技术相比,本发明具有的有益效果为:
1)实现业务测试数据、关键字数据、测试代码的分离,降低数据、测试逻辑与测试代码的耦合性,达到了关键字驱动设计的目标。
2)设计业务测试数据文件的字段以及规格。测试数据使用Excel表格输入,使得没有自动化测试经验、甚至没有编程经验的的测试人员,也可以简易快速地进行自动化测试用例的开发。
3)针对Android GUI操作设计关键字库。关键字可重用性高,当测试步骤修改后,用户只需修改业务测试数据,无需修改底层关键字。
附图说明
图1为本发明的基于Android的关键字驱动自动化测试框架模块图;
图2为本发明的基于Android的关键字驱动自动化测试框架流程图;
图3为本发明的基于Android的关键字驱动自动化测试框架数据文件处理流程图;
图4为本发明的基于Android的关键字驱动自动化测试框架测试报告生成流程图。
具体实施方式
以下结合附图和实施例对本发明做进一步说明,但并不对本发明造成任何限制。
实施例一、
如图1所示,基于Android的关键字驱动自动化测试框架,主要分为5个模块:数据文件(包括测试配置数据、业务测试数据)、处理器模块(包括数据处理器、关键字处理器)、驱动模块、测试脚本模块、结果分析模块。
所述的数据文件中的测试配置数据文件,用于保存测试自动运行所需要的信息,是测试自动执行的核心。该文件包括应用程序运行的环境、被测应用路径、源数据文件的路径、测试结果保存路径等。
所述的业务测试数据文件包含了测试执行过程中所需要的各种业务数据。包括了测试步骤ID(ID)、当前Activity名称(ActitvityName)、被测View的ID(ViewID)、输入操作(InputAction)、输入数据(InputValue)、期望的输出操作(OutputAction)、期望的输出值(OutputValue)、该步骤执行标志位(Execute)、执行结果(ActualResult)、测试用例ID(Testcase)。可通过人工录入的方式或系统自动录制的方式来录入数据。控件对象数据是被测试的应用程序控件对象的集合,如Android应用上的一个按钮、一个列表、一个文本输入框甚至是一个自定义的控件。每个对象都是唯一的。由于Android应用在编译时会自动生成资源文件R.java,该文件统一管理工程中所有的资源并为其添加唯一的身份标识ID。我们可以把R.java理解成Android应用中的资源字典。本发明中便使用该文件中的ID来识别每一个应用程序的控件对象。
所述的驱动模块通过读取测试配置数据文件中的配置和操作测试数据,来进一步调用测试脚本代码。
所述的处理器模块主要用于处理不同的数据文件。如从数据文件中读入数据,并根据下一级模块的需要,转换为相应的格式,以方便读取。其中数据处理器为测试脚本代码提供数据。关键字处理器主要处理特定的操作关键字,包括控件操作(如点击、长按、拖动、跳转等)及验证操作(如验证是否正确跳转、验证输入是否正确等)。它是测试脚本代码的核心,决定了每一步的运行步骤,下一步该调用什么的操作等。每一个步骤都需要对应两个关键字数据,分别为输入操作及输出操作。关键字处理器则从控件处理模块中获取所需信息。关键字处理器通过调用一系列的控件对象,来实现关键字操作。如编辑文本框的操作EDITTEXT,包含了两种类型的控件操作,分别是文本框焦点的获取以及文本框的输入。
所述的驱动模块与测试脚本模块用于根据配置数据驱动测试代码的运行。
所述的结果分析模块使用改进后的TestRunner生成测试分析报告。本设计中以XML格式保存测试报告,以Html格式保存代码覆盖率的报告,并在持续集成引擎Hudson中以可视化的形式呈现。Eclipse中也可以提供测试结果查看,但是无法形成易读性高的报告。
如图2所示,上述自动化测试框架的工作流程为:
1)准备测试开始;
2)从业务数据文件中读入测试人员编写的测试用例;
3)读取测试用例中的控件值、输入输出值等信息
4)读取测试用例中所涉及的关键字,并根据关键字调用关键字库中的代码,执行相应的操作。
5)测试成功,记录测试报告,选择测试用例是否执行完毕,测试不成功,直接进入选择测试用例是否执行完毕。
6)选择测试完成,记录测试结果,并生成测试报告以及代码覆盖率报告。选择测试没成功完成,则返回步骤2)继续进行测试,直到选择测试完成为止。
如图3所示,上述数据文件处理流程图流程如下:
1)打开测试文件,如果成功将进入步骤2),不成功则抛出异常;
2)读取数据文件;
3)定位测试数据所在的表单;
4)定义Morkoookset相关参数;
5)定义用于保存字段信息的布组;
6)从文件中读取数据;
7)若数据为空,则抛出异常,数据不为空,进入下一步骤8);
8)测试步骤定义为Execute,则进入下一步骤9),如测试步骤不定义为Execute,则直接进入步骤10);
9)读取该测试步骤的数据;
10)选择是否到达文件末端,是则进入步骤11),否则继续进行步骤8);
11)选择文件读取结束。
本发明的基于Android的关键字驱动自动化测试框架测试报告生成流程图如图4所示:
1)开始测试,获取Text Rumnber;
2)成功建立测试报告则进行下一步,否则抛出异常;
3)有新的测试集则进入步骤4,没有新的测试集则新建测试节点;
4)记录测试节点,开始测试;
5)测试用例成功,则记录测试详情,测试用例失败则记录失败信息;
6)进行测试是否结束的选择,不结束则跳到步骤3)继续运行,同意结束则关闭文件,结束测试。
通过上述流程的执行,得到的有益效果为:
1)实现业务测试数据、关键字数据、测试代码的分离,降低数据、测试逻辑与测试代码的耦合性,达到了关键字驱动设计的目标。
2)设计业务测试数据文件的字段以及规格。测试数据使用Excel表格输入,使得没有自动化测试经验、甚至没有编程经验的的测试人员,也可以简易快速地进行自动化测试用例的开发。
3)针对Android GUI操作设计关键字库。关键字可重用性高,当测试步骤修改后,用户只需修改业务测试数据,无需修改底层关键字。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (7)
1.一种基于Android的关键字驱动自动化测试框架,其特征在于:它包括了数据文件、处理器模块、驱动模块、测试脚本模块、结果分析模块;
所述的数据文件包含了测试配置数据文件与业务测试数据文件;所述的测试配置数据文件,用于保存测试自动运行所需要的信息,是测试自动执行的核心,包含了应用程序运行的环境、被测应用路径、源数据文件的路径、测试结果保存路径;
所述的处理器模块包括数据处理器、关键字处理器,其中所述的数据处理器主要用于处理不同的数据文件,从数据文件中读入数据,并根据下一级模块的需要,转换为相应的格式,以方便读取,为测试脚本代码提供数据。
2.根据权利要求1所述的一种基于Android的关键字驱动自动化测试框架,其特征在于:所述的业务测试数据文件包含了测试执行过程中所需要的各种业务数据,包括了测试步骤ID、当前Activity名称、被测View的ID、输入操作、输入数据、期望的输出操作、期望的输出值、该步骤执行标志位、执行结果、测试用例ID。
3.根据权利要求1所述的一种基于Android的关键字驱动自动化测试框架,其特征在于:关键字处理器主要处理特定的操作关键字,包括控件操作及验证操作,决定每一步的运行步骤,下一步该调用什么的操作,每一个步骤都需要对应两个关键字数据,分别为输入操作及输出操作。
4.根据权利要求3所述的一种基于Android的关键字驱动自动化测试框架,其特征在于:所述的关键字处理器从控件处理模块中获取所需信息,关键字处理器通过调用一系列的控件对象,来实现关键字操作。
5.根据权利要求1所述的一种基于Android的关键字驱动自动化测试框架,其特征在于:所述的驱动模块通过读取测试配置数据文件中的配置和操作测试数据,来进一步调用测试脚本代码;其中所述的驱动模块与测试脚本模块用于根据配置数据驱动测试代码的运行。
6.根据权利要求1所述的一种基于Android的关键字驱动自动化测试框架,其特征在于:所述的结果分析模块使用TestRunner生成测试分析报告,以XML格式保存测试报告,以Html格式保存代码覆盖率的报告。
7.一种基于Android的关键字驱动自动化测试框架,其特征在于:自动化测试框架的工作流程为:
1)从业务数据文件中读入测试人员编写的测试用例;
2)读取测试用例中的包括控件值、输入输出值在内的信息;
3)读取测试用例中所涉及的关键字,并根据关键字调用关键字库中的代码,执行相应的操作;
4)测试完成后,记录测试结果,并生成测试报告以及代码覆盖率报告。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210274374.3A CN102819492B (zh) | 2012-08-02 | 2012-08-02 | 一种基于Android的关键字驱动自动化测试框架 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210274374.3A CN102819492B (zh) | 2012-08-02 | 2012-08-02 | 一种基于Android的关键字驱动自动化测试框架 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102819492A CN102819492A (zh) | 2012-12-12 |
CN102819492B true CN102819492B (zh) | 2015-03-04 |
Family
ID=47303614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210274374.3A Expired - Fee Related CN102819492B (zh) | 2012-08-02 | 2012-08-02 | 一种基于Android的关键字驱动自动化测试框架 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102819492B (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981958B (zh) * | 2012-12-19 | 2015-09-30 | 青岛海信传媒网络技术有限公司 | 软件测试方法和测试装置 |
CN103942142B (zh) * | 2014-03-31 | 2017-11-17 | 百度在线网络技术(北京)有限公司 | 应用程序业务的检测方法及装置 |
CN105320595A (zh) * | 2014-07-31 | 2016-02-10 | 腾讯科技(深圳)有限公司 | 一种应用测试方法和装置 |
CN105700896B (zh) * | 2014-11-24 | 2019-03-08 | 阿里巴巴集团控股有限公司 | 一种App的启动方法和设备 |
CN104536750B (zh) * | 2014-12-26 | 2018-10-30 | 北京奇虎科技有限公司 | 遍历窗口对象的方法及装置 |
CN104965790B (zh) * | 2015-07-17 | 2018-04-27 | 小米科技有限责任公司 | 基于关键字驱动的软件测试方法及系统 |
CN105068927A (zh) * | 2015-08-04 | 2015-11-18 | 株洲南车时代电气股份有限公司 | 基于关键字驱动的城轨传动控制单元自动化测试方法 |
CN105204992A (zh) * | 2015-08-28 | 2015-12-30 | 努比亚技术有限公司 | 测试脚本生成装置及方法 |
CN105260308A (zh) * | 2015-10-22 | 2016-01-20 | 南方科技大学 | 一种测试安卓Android终端的方法及装置 |
CN105446878B (zh) * | 2015-11-09 | 2018-03-09 | 上海爱数信息技术股份有限公司 | 一种持续的程序自动化测试方法 |
CN105373478B (zh) * | 2015-12-14 | 2018-06-08 | 广州华多网络科技有限公司 | 自动化测试方法和系统 |
CN105893243A (zh) * | 2015-12-14 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | 用于测试工具的测试框架及一种测试工具 |
CN105608012A (zh) * | 2016-03-10 | 2016-05-25 | 武汉斗鱼网络科技有限公司 | 一种自动化测试方法及系统 |
CN106201895B (zh) * | 2016-07-25 | 2018-10-23 | 东软集团股份有限公司 | 应用测试方法和装置 |
CN106844453B (zh) * | 2016-12-20 | 2020-09-08 | 江苏瀚远科技股份有限公司 | 一种电子文件格式转换方法 |
CN108874649B (zh) * | 2017-05-08 | 2021-08-17 | 中兴通讯股份有限公司 | 自动化测试脚本的生成方法、装置及其计算机设备 |
CN107391367B (zh) * | 2017-07-11 | 2020-12-01 | 千寻位置网络有限公司 | 形变监测监控系统的关键字驱动测试方法 |
CN107608880A (zh) * | 2017-08-24 | 2018-01-19 | 郑州云海信息技术有限公司 | 一种基于数据驱动用于虚拟化平台的自动化测试方法 |
CN107665171B (zh) * | 2017-10-11 | 2020-08-04 | 中国民生银行股份有限公司 | 自动回归测试方法及装置 |
CN108459959A (zh) * | 2017-12-29 | 2018-08-28 | 北京五八信息技术有限公司 | 用户界面自动化测试方法、装置、设备及存储介质 |
CN109144856A (zh) * | 2018-07-27 | 2019-01-04 | 北京皮尔布莱尼软件有限公司 | 一种ui自动化测试方法、计算设备及存储介质 |
CN109614313A (zh) * | 2018-10-25 | 2019-04-12 | 平安科技(深圳)有限公司 | 自动化测试方法、装置及计算机可读存储介质 |
CN109710539A (zh) * | 2019-01-17 | 2019-05-03 | 南京大学 | 一种基于字节码操作的安卓软件增强测试方法 |
CN109857663B (zh) * | 2019-01-26 | 2022-04-12 | 北京工业大学 | 关键字驱动与图像相似度结合的自动化测试平台 |
CN109885493A (zh) * | 2019-02-18 | 2019-06-14 | 南京邮电大学 | 一种基于Android平台和Java反射的自动化混合框架 |
US11003571B2 (en) * | 2019-04-05 | 2021-05-11 | Oracle International Corporation | Customizable enterprise automation test framework |
CN111338965A (zh) * | 2020-03-02 | 2020-06-26 | 五八有限公司 | 一种用例测试方法、装置、电子设备及存储介质 |
CN112187580B (zh) * | 2020-09-29 | 2022-08-12 | 苏州迈科网络安全技术股份有限公司 | 网关插件自动化测试框架及测试方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6421822B1 (en) * | 1998-12-28 | 2002-07-16 | International Business Machines Corporation | Graphical user interface for developing test cases using a test object library |
CN1877544A (zh) * | 2005-06-06 | 2006-12-13 | 华为技术有限公司 | 关键字驱动的自动化测试系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8561021B2 (en) * | 2010-02-08 | 2013-10-15 | Microsoft Corporation | Test code qualitative evaluation |
-
2012
- 2012-08-02 CN CN201210274374.3A patent/CN102819492B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6421822B1 (en) * | 1998-12-28 | 2002-07-16 | International Business Machines Corporation | Graphical user interface for developing test cases using a test object library |
CN1877544A (zh) * | 2005-06-06 | 2006-12-13 | 华为技术有限公司 | 关键字驱动的自动化测试系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102819492A (zh) | 2012-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102819492B (zh) | 一种基于Android的关键字驱动自动化测试框架 | |
CN109885488B (zh) | 用例表驱动的卫星轨道计算软件自动化测试方法及系统 | |
US10162612B2 (en) | Method and apparatus for inventory analysis | |
CN107273286B (zh) | 针对任务应用的场景自动化测试平台及方法 | |
CN105912473B (zh) | 基于bdd的移动app自动测试平台和测试方法 | |
CN101996131A (zh) | 基于xml封装关键字的gui自动测试方法及自动测试平台 | |
CN104679488A (zh) | 一种流程定制开发平台及流程定制开发方法 | |
US20080010535A1 (en) | Automated and configurable system for tests to be picked up and executed | |
CN104035873A (zh) | 测试代码生成方法及生成装置 | |
CN103605606B (zh) | 一种可自动转换的嵌入式软件测试用例批量执行方法 | |
CN103034486B (zh) | 移动终端操作系统基于全系统扩展调用图的自动优化方法 | |
US10496423B2 (en) | Method for opening up data and functions of terminal application based on reconstruction technology | |
CN104750606A (zh) | 一种基于反射的自动化测试方法 | |
US20210182055A1 (en) | Automatic source code refactoring | |
CN105279092A (zh) | 一种软件测试的方法及装置 | |
Benouda et al. | Automatic code generation within MDA approach for cross-platform mobiles apps | |
US20180032328A1 (en) | Method and apparatus of segment flow trace analysis | |
CN106529304B (zh) | 一种安卓应用并发漏洞检测系统 | |
CN104199770B (zh) | 一种手机音乐apk的自动化测试方法 | |
CN114185874A (zh) | 一种基于大数据的建模方法、装置、开发框架及设备 | |
CN109284222B (zh) | 软件单元、数据处理系统中的项目测试方法、装置及设备 | |
CN109885493A (zh) | 一种基于Android平台和Java反射的自动化混合框架 | |
CN111158665B (zh) | 代码生成方法及装置、电子设备和存储介质 | |
KR101368044B1 (ko) | 이클립스 플랫폼 기반 플러그인 모듈 | |
CN109491904B (zh) | 一种SparkSQL应用程序的自动化测试方法和装置 |
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: 20150304 Termination date: 20210802 |
|
CF01 | Termination of patent right due to non-payment of annual fee |