本发明属于软件测试技术领域,尤其是软件测试中自动测试移动应用领域,用于一种基于混合云的可扩展的移动应用自动化测试技术。
技术背景
随着移动终端和移动应用(apk)的普及,开发者视角从桌面端移向了移动端。开发一个低出错率、低故障率的优质移动应用非常困难,由于每个移动应用的独特性和平台的不一致性以及安卓平台的碎片化。因此,移动应用开发者往往需要对移动应用进行大规模复杂的手动测试。这些手动测试包括不同终端设备型号、不同系统版本的兼容性测试,以及移动应用的稳定性测试和一些其他的功能性能测试。
小微企业在测试android应用,需要购买不同版本和不同机型的大量android手机,产生额外的花费,并且十分不方便管理。对于个人开发者和小型团队而言,收集全部的android版本是比较困难的一件事,而且也不便于管理。此外,即使可以收集到全部版本的android机型,在所有机型上逐步手动测试也是费时费力的一项工作。
尽管如今自动化测试工具如雨后春笋般地出现,但是普遍存在以下几个问题,测试工具通常收费;免费版的功能少之又少,覆盖不全;移动端全平台通用的测试工具基本不存在;代码开源的自动化测试工具较少。传统的自动化测试脚本也仅仅只能通过开发人员单独在移动应用上运行才能工作,没有合适的平台来管理这些自动化测试脚本。随之带来的问题就是如何在自动化测试平台上处理和展示这些来自脚本运行的数据。工业界的普遍做法是将错误日志(一般包括时间,错误发生位置)等信息直接堆砌在屏幕上,往往缺乏较直观的表示。对于开发人员,重复的数据反而加大了修复移动应用中错误和缺陷的工作量;对于测试人员,许多数据的显示又非常难以理解,无法促进进一步的测试和探测移动应用中的问题。
技术实现要素:
本发明要解决的问题是:当前移动应用在多机型测试的效率低以及开发人员的测试时间长的问题。
本发明的技术方案为:一种基于混合云的可扩展的移动应用自动化测试框架的构架方法,其特征是对于自动测试中的移动应用自动测试,依据多级服务器分发任务获取报告统计报告的流程,进行了自顶向下的多级服务器架构。基于混合云的框架融合了公有云和私有云,它突破了私有云的硬件限制,利用公有云的可能性,可以随时获取更高的计算能力。整个框架通过调度和管理中心进行连接,使得私有云可以通过任务发布的方式共享公有云的资源外,还能在空闲时接受别的云发布的任务来共享自己的资源。这样的框架使得待测移动应用可以同时在不同的机型环境下测试,以尽可能通过自动化测试提高多机型测试的效率与减少开发人员的测试时间。多级服务器的拓扑结构与功能划分为:主服务器只负责系统的业务交互,主服务器与子服务器一对多进行连接,并且可以通过云调度来进行服务注册和服务发现来实现可扩展性,子服务器负责具体的测试业务。根据该架构方法搭建的自动测试系统工作的步骤如下:
1)私有云主服务器接受任务请求,得到可安装的移动应用安装包,测试机型,测试手机数量和用户自定义测试脚本
2)主服务器和混合云调度管理中心进行通讯,将超出自己资源能力范围的任务发布道调度管理中心上。
3)任务调度管理中心根据当前注册到调度管理中心的混合云进行任务拆分和预处理,然后根据混合云选择策略和任务属性将任务分配给其他混合云。并将测试信息发送给混合云的主服务器
2)获得任务的混合云主服务器会根据配置参数(测试次数,测试时间,测试机型,测试类型等),选择进行测试的子服务器,并把移动应用安装包分发到各个子服务器
3)子服务器根据主服务器传来的参数(测试次数,测试时间,测试机型,测试类型等),把移动系统移动应用安装至连接在子服务器上的各移动系统手机设备上。
4)子服务器运行默认的移动应用自动测试脚本或用户自定义测试脚本。
5)子服务器为每个连接在子服务器上的移动系统手机自动生成一份测试报告(包括但不限于测试类型,测试时间,测试次数,系统崩溃次数,系统崩溃截图等),将所有生成的测试报告传回主服务器,主服务器会实时将测试数据发送给任务调度管理中心。
6)任务调度管理中心运行测试报告分析程序,根据测试手机型号,android手机型号等分类依据形成完整报告。
7)提交任务的私有云主服务器向任务调度管理中心获取完整的测试报告和数据。
2.根据权利要求1所描述的一种基于混合云的可扩展的移动应用自动化测试框架,其特征是利用了步骤4)中的默认自动测试程序,可以对待测的移动移动应用测试进行模拟各种手机操作行为来进行以界面深度遍历为目标的界面测试。测试中的模拟操作行为包括:点击,拖拽,双击,输入文字等。
3.根据权利要求1所描述的一种基于混合云的可扩展的移动应用自动化测试框架方法,其特征是主从服务器之间的拓扑结构,主服务器只负责系统的业务交互,子服务器负责具体的测试业务,提高了系统的性能、稳定性,可伸缩性和测试资源的使用率。
4.根据权利要求1所描述的一种基于混合云的可扩展的移动应用自动化测试框架方法,通过公有云和私有云之间的资源共享,提升了整个平台的资源利用率,解决了部分私有云资源不足的问题。
5.根据权利要求1所描述的一种基于混合云的可扩展的移动应用自动化测试框架方法,任务调度管理中心会根据实时的测试数据,依据用户选择的报告模板和规则进行数据整合,形成最终的测试报告。提高了测试数据和报告的精准性和丰富性,可以依据私有云的选择来生成不同的测试报告。
本发明的特点在于:1、使用多级服务器控制安装包的分发;2、使用自动测试程序代替人工手动测试;3、对多种机型可以同时进行测试并生成测试报告。将这3点结合,本发明可以自动进行移动移动应用的安装与卸载,待测移动应用可进行自动化随机测试,可以进行多个移动机型的压力测试,测试后生成的报告可以有效展示测试过程中触发移动应用中的缺陷的原因并记录了截图与操作日志以供参考;4、基于混合云的系统架构可以对子服务器的数量进行扩展,可以根据测试需求来进行云调度。5、基于混合云的系统框架可以通过公有云和私有云资源共享的方式,有效提高资源的利用率,解决私有云资源稀缺的问题。6、基于混合云的系统框架在任务调度管理中心可以对测试数据依据不同的模板和规则进行结果汇合,提高测试报告的精准性和多样性。
本发明的有益效果是:可以减少程序花费在手动测试上的精力,减少程序员花费在不同机型调配上的时间,使得程序员可以用更少的时间尽早得找到错误,节省了程序员寻找错误的时间成本。
附图说明
图1为本发明的混合云及任务调度管理中心示意图。
图2为本发明的公有云系统架构示意图。
图3任务调度管理中心任务分配算法流程图。
图4为本发明的实施流程图。
图5为本发明实施示例中,测试报告概览页面,包括了被测移动应用基本信息,测试手机的基本信息和测试过程中收集到的数据。
图6为本发明实施示例中,收集到的cpu,内存,fps和网络数据图表。
图7为本发明实施示例中,测试报告屏幕截图页面示例。
图8为本发明实施示例中,根据测试过程生成的应用界面树图像。
图9为本发明实施示例中,任务调度管理中心生成的结果汇总报告截图a
图10为本发明实施示例中,任务调度管理中心生成的结果汇总报告截图b
具体实施方式
本发明中涉及的几项关键的技术分别是:java技术,springmvc框架,移动端的appium测试框架,adb测试工具,zookeeper和thrift框架。接下来进行一些说明:
1、java
在本发明中,java主要用于主服务器上的业务逻辑的编写。步骤1)中的任务请求,步骤2)中的安装包分发与传输都是通过java来实现的。
2、springmvc框架
在本发明中,主服务器和子服务器的架构就是采用了springmvc框架,为服务器提供了一个灵活可拓展的框架。所有的路由与跳转功能都通过该框架来实行。
3、appium。
在本发明中,appium工具被用来在步骤4)中进行自动化的测试。
4、adb
在本发明中,adb工具被用来在步骤4)中协助自动化的测试,通过adb可以获取测试过程中真机的基本信息和应用的运行数据。
5、zookeeper
在本发明中,zookeeper用于总服务器和子服务器的服务注册,服务发现相关的实现。zookeeper是混合云架构可扩展性的关键。
6、thrift
在发明中,thrift框架提供了rpc接口给公有云访问,使得管理员能够在公有云节点上对私有云,资源,任务进行全局监控和管理。
使用示例
下面用一个具体的示例来说明本方法的步骤,并展示结果。
如图1,本发明提出了基于多级服务器的移动应用自动测试系统的架构方法,使得待测移动应用可以同时在不同的机型环境下测试,以尽可能通过自动化测试提高多机型测试的效率与减少开发人员的测试时间。
优播课是一款在线课程教学工具,其定位是o2o互动学习平台,学员在优播课应用注册并绑定自己的学号后,可以下载观看授课老师的学习资料。由于其拥有复杂的界面操作和丰富的功能,故选为测试应用。
多级服务器环境如下:
1、主服务器环境:操作系统ubuntu14.04。
2、子服务器环境:pc小电脑,操作系统ubuntu14.04。通过usb接口和移动手机数据线和移动手机相连。
实施步骤如下:
1)主服务器接受任务请求,得到可安装的移动应用安装包(fffoiof.apk)。
2)主服务器根据配置参数(测试手机数量,测试时间,测试机型,测试类型,用户自定义脚本等),将测试任务发布到混合云调度管理中心,根据调度算法选择执行该测试任务的混合云。
3)接收到测试任务的混合云主服务器,把移动应用安装包分发到各个子服务器。配置参数示例:(测试程序pacakgename为com.xdf.ucan,测试手机的数量为1,测试类型为用户自定义脚本测试,最大测试时间为10分钟)
3)子服务器根据主服务器传来的参数(测试次数,测试时间,测试机型,测试类型,用户自定义脚本等),把移动系统移动应用安装至连接在子服务器上的各移动系统手持设备上。
4)子服务器运行移动应用自动测试程序,由于此次测试类型为用户自定义脚本类型,所以运行用户自定义脚本来执行自动测试程序。
5)子服务器为每个连接在子服务器上的移动系统真机自动生成一份测试报告(包括但不限于测试类型,测试过程中cpu,内存,fps数据,系统日志,测试时间,测试次数,系统崩溃次数,系统崩溃截图等),将所有生成的测试报告传回主服务器。
6)主服务器将测试数据发送给任务调度管理中心,管理中心运行测试报告分析程序,形成单机报告(如说明附图图6,图7和图8)和整体报告(如说明附图的图9和图10)。测试报告显示了移动应用的基本信息,测试主机的操作系统,cpu,内存和fps,以及根据机型和系统版本号生成的统计信息。
通这个实施示例,我们在几分钟内得到了一个比较详尽的测试报告,并且可以通过调整参数进行更长时间的自动测试同时无需测试人员的参与,而如果完全依靠人工的话,这需要花费很大的时间成本和资源成本。由此可以看来,这种架构方法下的测试系统的确可以在一定程度上节省程序员寻找错误的时间成本。