一种测试Android应用控件的方法

文档序号:8502131阅读:236来源:国知局
一种测试Android应用控件的方法
【技术领域】
[0001]本发明涉及一种自动测试Android应用控件的方法,属于软件应用测试技术领域。
【背景技术】
[0002]Android 一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。
[0003]Android应用的发展相当迅速。截止2014年七月,在Google Play上已经有超过130万个可下载应用,并有着远超500亿次的下载量。Android系统的普及和应用如此突飞猛进的发展,由于Android应用发布周期短,无法得到充分的测试,造成了 Android软件的质量普遍不高。因此,对Android应用的自动化分析和测试技术变得越来越重要。
[0004]Android应用的控件是Android系统及软件的重要组成部分,他是应用和用户之间交互的接口。控件的稳定性和可靠性是把握用户的感受的关键。各个控件的显示效果以及他们之间的交互关系也是程序员最需要关注的内容之一。
[0005]Activity单元测试是快速检查Activity的状态和它与其他组件的交互的绝佳方法,这也是在与系统其余部分隔绝的环境下进行的。单元测试通常测试尽可能小的代码单元,可能是一个方法,类,或者一个控件,它不依赖于系统或网络资源。所以,单元测试不适合用来测试与系统有复杂的UI交互事件的代码。
[0006]目前,Google提供了一个Android测试框架,它是Android开发环境的一个重要部分,可以用来测试应用的各个方面,从单元测试到框架测试。它是基于JUNIT3,可以使用普通的junit而不用调用Android测试api来进行测试。它的junit扩展提供了针对组件的测试用例类,这些类提供了 mock对象和方法的辅助方法,进而控制组件生命周期。它的测试用例类包含在类似主程序包的测试包中,无需学习其他的技术和工具。并且,该框架有用于自动构建和运行测试的sdk,可以在eclipse adt中使用,其他ide中可以使用命令完成。它们可以读取源项目的信息自动完成测试类的创建。但是,创建测试类并不能直接对项目进行测试,还是需要测试人员一条一条人工编写测试用例,这也是一个非常乏味和痛苦的过程。
[0007]JUNIT框架还提供了自动事件流模拟工具monkeyrunner和monkey。这可以用来进行Ui测试,可以向设备发送事件流(键盘、touch、手势)对程序进行压力测试,其中monkeyrunner需要编写Python程序调用api发送事件流,monkey通过adb的命令行发送。Monkeyrunner和monkey虽然在一定程度上可以自动进行模拟操作,但是也需要人工进行事先的设计,而且编写Python程序也是一件费时费力的事情,需要测试人员对这种脚本语言非常熟悉。这两种工具最大的局限性是只能对程序进行压力测试,即使用指定或随机的顺序操作设备,并不能对程序以及内部控件进行有效性、健壮性测试。
[0008]Python,是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明。Python语法简洁而清晰,具有丰富和强大的类库。常被昵称为胶水语言,它能够把其他语言制作的各种模块很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型,然后对其中有特别要求的部分,用更适合的语言改写,比如一些对性能要求特别高的部分使用C++重写。

【发明内容】

[0009]为了对需要测试的控件进行有强度的测试,并使开发人员便于编写对于控件的测试用例,缩减整个开发时间和提升测试水平,本发明提供了一种测试Android应用控件的方法,其主要原理是,分析应用的控件及控件之间的关系,根据用户剖面,基于不同的控件的使用频率不一样,为每一种控件设置权重,根据事先指定好的权重,给予每一个控件不同的测试样本,最后根据测试样本使用脚本自动化生成单元测试用例。
[0010]本发明方法具体包括如下步骤:
[0011]步骤I)扫描并分析activity_main.xml文件,筛选出测试需要的element的属性,并将该属性的名称与值写入文件,继续扫描直到document的结尾;
[0012]步骤2)给应用的各个控件添加测试权重:读取步骤I)生成的文件的一行的第一个关键词,根据控件预先设置的使用频率等级在该行的末尾添加权重值;
[0013]步骤3)给每一个控件生成单元测试用例代码:读取步骤2)生成的文件,将一行中的所有关键词作为参数传递给单元测试用例代码生成函数,根据权重值指定测试次数,使用预先设置的不同的变量来产生单元测试用例;
[0014]步骤4)将步骤3)生成的文件添加进测试工程中。
[0015]进一步,步骤I)的流程具体为:
[0016]步骤1.1)逐行扫描 activity_main.xml 文件;
[0017]步骤1.2)判断当前element是否为需要检测的控件element ;
[0018]步骤1.2.1)判断为是,将该element的名称写入文件,继续扫描里面的内容;
[0019]步骤1.2.2)判断为否,直接跳转到所述element的结尾,扫描下一个element ;
[0020]步骤1.3)扫描所述element的属性,判断当前属性是不是测试需要的属性;
[0021]步骤1.3.1)判断为是,将该属性的名称与值写入文件,继续扫描下一行并判断下一行是不是所述element的结尾;
[0022]步骤1.3.2)判断为否,继续扫描下一行并判断下一行是不是所述element的结尾;
[0023]步骤1.4)如果已经扫描到所述element的结尾,在文件中插入一个换行符;
[0024]步骤1.5)判断是否已经到了 document的结尾;
[0025]步骤1.5.1)判断为是,进行下一步测试工作;
[0026]步骤1.5.2)判断为否,跳转到步骤1.1),继续分析。
[0027]进一步,步骤2)中添加测试权重的具体步骤为:
[0028]步骤2.1)逐行扫描步骤I)生成的文件;
[0029]步骤2.1.1)如果该行控件名称为常用控件,在末尾添加I ;
[0030]步骤2.1.2)如果该行控件名称为次常用控件,在末尾添加2 ;
[0031]步骤2.1.3)如果该行控件名称为不常用控件,在末尾添加3。
[0032]进一步,步骤3)中,单元测试用例代码生成函数根据不同的控件生成不同的测试用例代码;如果控件的权重为I或2或3,则函数会使用不同的变量生成3或2或I个对于同一个控件进行测试的测试用例代码,并将代码保存于以该应用名称命名的预先设置的模板class文件中。
[0033]本发明方法分析配置文件,找出所有控件的名称、ID等等信息,通过对不同的控件赋予不同的测试权重以平衡测试的速度和覆盖率,通过python语言将不同的需要测试的控件从模板转换为测试代码,最后再导入工程进行单元测试。对比现有技术,本发明使用语义分析的方法,将工程的配置文件中所有我们关心的控件的信息都保存下来,抽取控件信息迅速,准确;在生成测试用例代码之前,考虑用户剖面,在生成测试用例之前就制定好各个控件的使用频率,在频率高的控件上多增加测试用例数量,在使用频率低的控件上降低测试用例数量,以达到测试时间和测试能力的平衡;使用函数以及脚本将所获得的信息全部转换为我们需要的测试用例代码;本发明方
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1