本发明涉及程序测试技术领域,尤其涉及一种基于android平台的自动化测试方法和系统。
背景技术:
随着科技的发展和社会的进步,智能手机逐步开始普及,移动智能生活已经开始改变人们的生活习惯。Android手机的系统开源,广大的程序爱好者都可以加入到这个Android程序开发的环境中来。作为正式的软件产品进入市场之前,需要测试人员进行精细的测试工作以保证软件质量,而Android操作系统更新也越来越快,从2008年9月发布Android1.1至今Android操作系统升级了无数版本,在操作系统升级的同时也需要对先前开发的软件是否能用在新版本的Android平台上进行验证测试。
目前android自动化测试都必须要进行脚本录制和迭代维护,既增加成本又增加时间,随着需求的改动和维护,脚本需要不断的维护,而且匹配性较差。
因此,如何使得脚本可以前后兼容多个版本,减少人力维护成本,提高效率和提高脚本通用性,成为本领域亟需解决的问题。
技术实现要素:
本发明的目的是提供一种基于android平台的自动化测试方法和系统,使得脚本可以前后兼容多个版本,减少人力维护成本提高效率和提高脚本通用性。
本发明的目的是通过以下技术方案来实现的:
一种基于android平台的自动化测试方法,包括:
获取待测试的项目,根据待测试的项目进行模组匹配;
根据匹配的模组进行功能测试的定位;
根据选择的测试类型,在版本综合库中选择对应的功能测试库;
运行与功能测试库相对应的脚本兼容体。
优选的,所述根据待测试的项目进行模组匹配的步骤进一步包括:
根据模组内容,依次确定android版本、android OS、OS类型和OS版本类库;
所述根据匹配的模组进行功能测试的定位步骤进一步包括:根据OS版本类库进行功能测试的定位。
优选的,所述功能测试库至少包括基础测试库、压力测试库和运行商测试库。
优选的,所述模组匹配的步骤中,将同一种功能的不同名称映射到同一模组下。
优选的,所述待测试的项目包括短信功能测试;所述根据待测试的项目进行模组匹配的步骤具体包括:根据短信功能匹配相应的短信功能模组;
所述根据匹配的模组进行功能测试的定位的步骤具体包括:根据短信功能模组进行功能测试的定位。
一种基于android平台的自动化测试系统,包括:
获取模块,用于获取待测试的项目,根据待测试的项目进行模组匹配;
定位模块,用于根据匹配的模组进行功能测试的定位;
选择模块,用于根据选择的测试类型,在版本综合库中选择对应的功能测试库;
运行模块,运行与功能测试库相对应的脚本兼容体。
优选的,所述获取模块进一步用于:根据模组内容,依次确定android版本、android OS、OS类型和OS版本类库;
所述定位模块进一步用于:根据OS版本类库进行功能测试的定位。
优选的,所述功能测试库至少包括基础测试库、压力测试库和运行商测试库。
优选的,所述获取模块进一步用于:将同一种功能的不同名称映射到同一模组下。
优选的,所述待测试的项目包括短信功能测试;所述获取模块具体用于:根据短信功能匹配相应的短信功能模组;
所述定位模块具体用于:根据短信功能模组进行功能测试的定位。
本发明的自动化测试方法由于包括:获取待测试的项目,根据待测试的项目进行模组匹配;根据匹配的模组进行功能测试的定位;根据选择的测试类型,在版本综合库中选择对应的功能测试库;运行与功能测试库相对应的脚本兼容体。这样就可以通过模组细分,在测试时根据所要测试的项目进行定位模组,选配测试类型,从而进行更加精准的测试,同时脚本库中的脚本编制根据功能设置,从而形成脚本兼容库,以扩展脚本的兼容性,提高脚本的适用范围。本发明可以建立在研发需求基础上,进行脚本编写和扩容,横向扩展兼容性,使得脚本可以前后兼容多个版本,减少人力维护成本提高效率和提高脚本通用性。
附图说明
图1是本发明实施例的自动化测试方法的流程图;
图2是本发明实施例的模组匹配与运行的示意图;
图3是本发明实施例的模组匹配与定位的流程图;
图4是本发明实施例的查找兼容脚本的流程图;
图5是现有技术中短信功能测试的流程图;
图6是本发明实施例的短信功能测试的流程图;
图7是本发明实施例的自动化测试统的示意图。
具体实施方式
虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。各项操作的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
计算机设备包括用户设备与网络设备。其中,用户设备或客户端包括但不限于电脑、智能手机、PDA等;网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算的由大量计算机或网络服务器构成的云。计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制,使用这些术语仅仅是为了将一个单元与另一个单元进行区分。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
下面结合附图和较佳的实施例对本发明作进一步说明。
实施例一
如图1所示,本实施例中公开一种基于android平台的自动化测试方法,包括:
S101、获取待测试的项目,根据待测试的项目进行模组匹配;
S102、根据匹配的模组进行功能测试的定位;
S103、根据选择的测试类型,在版本综合库中选择对应的功能测试库;
S104、运行与功能测试库相对应的脚本兼容体。
本发明的自动化测试方法由于包括:获取待测试的项目,根据待测试的项目进行模组匹配;根据匹配的模组进行功能测试的定位;根据选择的测试类型,在版本综合库中选择对应的功能测试库;运行与功能测试库相对应的脚本兼容体。这样就可以通过模组细分,在测试时根据所要测试的项目进行定位模组,选配测试类型,从而进行更加精准的测试,同时脚本库中的脚本编制根据功能设置,从而形成脚本兼容库,以扩展脚本的兼容性,提高脚本的适用范围。本发明可以建立在研发需求基础上,进行脚本编写和扩容,横向扩展兼容性,使得脚本可以前后兼容多个版本,减少人力维护成本提高效率和提高脚本通用性。
需要说明的是,本发明实施例中的安卓设备包括但不限于安装有Android系统的移动电话、移动电脑、平板电脑、个人数字助理(Personal Digital Assistant,PDA)、媒体播放器、智能电视、智能手表、智能眼镜、智能手环等用户设备。
本实施例中,需要在接收到安卓设备开始录制脚本命令时,开始录制脚本。安卓设备包括使用安卓操作系统的所有设备,当接收到安卓设备开始录制脚本的命令时,则获取待测安卓设备的Root权限和读写系统权限,然后开始录制脚本,其中开始录制脚本的命令可以是测试服务器发出的也可以是测试安卓设备自身发出的。
在实现本发明实施例前需要搭建好测试通讯系统,本发明实施例的自动化测试工具存放在Android SDK的tools目录下,该测试工具运行在PC机上并且可以运行jar包,测试工具通过在PC机上安装有android自带的ADB工具或是通过USB实现与外围设备对象连接,配置好socket通讯参数。测试工具在操作界面上通过swt/jface展示出来,在底层功能时通过shell命令实现,通过socket端口和地址将shell命令发送给外围被测设备。
本实施例中,需要对工具初始化步骤,来获取与当前PC机连接的设备对象,并读取linux层与android层的键值映射文件到对应的HashMap中。该步骤是实现基于android平台自动化测试的前置步骤,自动化测试工具需要与外界设备对象连接,所述的设备对象是Android操作系统的设备即可,包括但不限于智能手机、平板电脑和智能电视等。基于linux层的键值映射文件为qwerty.kl,该文件里包括操作设备对象的功能以及该功能所对应的键值,通过点击设备按键,系统根据该按键的键值就可以找到该按键对应的功能,譬如在android手机中,键值217是搜索键,其对应的按键功能是SEARCH,点击搜索键后,根据其键值217找到对应的按键功能SEARCH。所述基于android层的键值映射文件为keyEvent.java,该文件包含的是事件键码值,以16进制格式保存。将这两个键值映射文件的映射内容读取到对应的HashMap中以供后续键值映射查询。
根据其中一个示例,根据待测试的项目进行模组匹配的步骤进一步包括:
根据模组内容,依次确定android版本、android OS、OS类型和OS版本类库;
根据匹配的模组进行功能测试的定位步骤进一步包括:根据OS版本类库进行功能测试的定位。
采用这种方式,就可以在获取系统的android版本、android OS、OS类型和OS版本类库等信息后,准确找到相应的匹配模组,以及定位和找到对应的脚本。
根据其中另一个示例,所述功能测试库至少包括基础测试库、压力测试库和运行商测试库。
这样可以将测试分为几个大类,方便脚本库的对应和查找,也方便在匹配模组后进行定位,基础测试库可以包括如屏幕测试、声音测试、按键测试等,压力测试可以包括处理器温度测试、图像处理能力测试等,运行商测试可以包括信号强度测试、网络测试、射频信号测试等。
根据其中另一个示例,所述模组匹配的步骤中,将同一种功能的不同名称映射到同一模组下。在不同的系统版本中,对于同一功能可能使用不同的名称,例如对于短信功能,有可能使用“信息”或“MMS”等名称,那么这些都是代表短信功能名称,就需要映射到同一模组下,从而能够使脚本兼容性充分扩容,脚本兼容性强。
根据其中另一个示例,所述待测试的项目包括短信功能测试;所述根据待测试的项目进行模组匹配的步骤具体包括:根据短信功能匹配相应的短信功能模组;
所述根据匹配的模组进行功能测试的定位的步骤具体包括:根据短信功能模组进行功能测试的定位。这样就可以对短信类的功能进行测试,方便不同版本的系统下进行测试运行。
本实施例中,为更加清楚的解释和说明,下面结合图2至图6进一步描述。本实施例中由三大模块组成,如图2所示,包括模组匹配;模组群,包括模组1、模组2、模组3;及运行器。当然模组群还可以包括模组4、模组5,以及更多模组。本实施例中主要描述的是运行器的运行方法,运行器就是执行脚本,进行运行的。
模组匹配功能,它是一个综合判断体,可根据用户的设置进行分类。如图3所示,进行一个综合模组设定。
模组匹配数据中,设有,android版本、android OS、OS类型、OS版本类库。
系统根据模组内容,进行选择,首先经过确认android版本,其次是android OS,然后是OS类型,最后是OS版本类库。依次确认下来后,最后选择定位出哪个版本。
如图4所示,定位最终版本类库后,将调用这个类库的兼容脚本体。
在得到定位后,在版本库综合库中选择需要测试库类型,本实施例中包括“基础测试库”、“压力测试库”、“运行商测试库”。且每个测试库下面对应一个脚本兼容体。该脚本兼容体就负责所有的测试用例内容集合。
例如,如图5所示,一般的短信功能测试流程中,任何手机中,短信都是此流程设置,从新建--发送号码、发送内容--发送--退出。兼容脚本库就是建立在基本流程上的。
而如图6所示,是一个模拟的兼容体脚本库,发送短信的内容。在保证基本流程的执行过程中,加入匹配算法,增强兼容性。
其中,“短信|信息|MMS”表示在不同版本中,短信的叫法会有不同,“|”表示任意一个匹配即通过,这叫多种字符任一匹配法;
“新建|添加|+”表示添加新短信,有些版本中采用“新建”,有些采用“添加”有些则采用“+”;
“10086”、“开会了”为输入的号码和内容;
“附件|添加内容|1”,有的手机可以添加附件,有的没有,如果没有则选择等待1秒;
最后是发送和退出。
这样通过多种字符任一匹配法能够使脚本兼容性充分扩容,即使没有也可以等待1秒。在运行器中,即采用这种匹配方法,从而运行脚本。本方案首先通过模组细分,然后定位模组,选配测试类型的设计方案及相关流程。
如图7所示,根据本发明其中的一个示例,本实施例中公开一种基于android平台的自动化测试系统,包括:
获取模块201,用于获取待测试的项目,根据待测试的项目进行模组匹配;
定位模块202,用于根据匹配的模组进行功能测试的定位;
选择模块203,用于根据选择的测试类型,在版本综合库中选择对应的功能测试库;
运行模块204,运行与功能测试库相对应的脚本兼容体。
这样就可以通过模组细分,在测试时根据所要测试的项目进行定位模组,选配测试类型,从而进行更加精准的测试,同时脚本库中的脚本编制根据功能设置,从而形成脚本兼容库,以扩展脚本的兼容性,提高脚本的适用范围。本发明可以建立在研发需求基础上,进行脚本编写和扩容,横向扩展兼容性,使得脚本可以前后兼容多个版本,减少人力维护成本提高效率和提高脚本通用性。
根据其中一个示例,所述获取模块进一步用于:根据模组内容,依次确定android版本、android OS、OS类型和OS版本类库;
所述定位模块进一步用于:根据OS版本类库进行功能测试的定位。
采用这种方式,就可以在获取系统的android版本、android OS、OS类型和OS版本类库等信息后,准确找到相应的匹配模组,以及定位和找到对应的脚本。
根据其中另一个示例,所述功能测试库至少包括基础测试库、压力测试库和运行商测试库。
这样可以将测试分为几个大类,方便脚本库的对应和查找,也方便在匹配模组后进行定位,基础测试库可以包括如屏幕测试、声音测试、按键测试等,压力测试可以包括处理器温度测试、图像处理能力测试等,运行商测试可以包括信号强度测试、网络测试、射频信号测试等。
根据其中另一个示例,所述获取模块进一步用于:将同一种功能的不同名称映射到同一模组下。
在不同的系统版本中,对于同一功能可能使用不同的名称,例如对于短信功能,有可能使用“信息”或“MMS”等名称,那么这些都是代表短信功能名称,就需要映射到同一模组下,从而能够使脚本兼容性充分扩容,脚本兼容性强。
根据其中另一个示例,所述待测试的项目包括短信功能测试;所述获取模块具体用于:根据短信功能匹配相应的短信功能模组;
所述定位模块具体用于:根据短信功能模组进行功能测试的定位。
这样就可以对短信类的功能进行测试,方便不同版本的系统下进行测试运行。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。