首页 > 在线阅读 > 详情
ANDROID适配性自动化测试系统的分析与设计
《华东科技》     发布时间:2015-11-13 12:38:54.0    

随着我国经济的持续发展以及我国一些手机研发公司的崛起,尤其近年来中兴、华为、联想、酷派等公司的发展,加上新兴的小米、OPPO等手机设备公司,逐步参与手机研发体系,并期望在世界手机行业中占领自己一席之地。我国工信部4G牌照的发放,也使得我国手机行业迎来较快的发展。Android作为一款主流的智能设备的操作系统,凭借开源性、拓展性、可移植性等特点席卷全球。我国已经掌握了Android手机的基本设计与制造技术,形成了一定的研发能力,近年来华为、小米等公司投入巨大的研发资源,取得了一系列创新成果。如由本土公司自行设计、自行研发的一些手机,正在逐步打破苹果、三星等高端手机的垄断。

Android系统的广泛传播得益于其开源的特性,但这一特性同时也带来了一个比较严重的问题,就是设备的碎片化。和同类产品相比,运行苹果公司的iOS系统的设备截至目前不超过20种,而且所有的设备都是从软件到硬件高度统一的。而运行Android系统的设备却多达数千种,并且软件和硬件都经过深度定制,甚至同一厂商制造的设备都会有多达几十种不同的软硬件定制版本。对于Android应用的开发者而言,这样数量众多的软硬件环境,是一个巨大的挑战。而应对这种挑战的重要手段,就是规模化的适配性测试。适配性测试就是指使用同样的一批测试用例,针对同一个测试对象,运行在不同的软硬件平台上,收集和分析测试结果的测试方法。

与欧美等国家相比,我国的Android应用程序研发水平存在一些差距,其中差距最大的就是适配性测试技术。由于多种原因,测试,特别是自动化测试受成本和技术的约束,在我国受重视程度远远不及欧美一些国家。上海盛大创新院等公司近年来大力推广Android智能设备自动化测试,使得Android智能设备测试体系与技术含量等方面已经具有一定的基础。尤其是在Android智能设备适配性自动化测试取得一些成绩,为此,本文将针对Android设备适配性自动化测试进行理论研究与开发探索,力争在Android设备适配性测试关键技术上有所创新,主要是在设备自动化管理,和测试用例的撰写、执行等方面取得了经过验证的成果,达到了Android设备适配性测试技术领域的先进水平。


系统功能需求分析

本文以上海盛大研究院的Android适配性自动化测试的实际业务和项目为背景,对Android适配性自动化测试的业务需求以及系统功能进行分析与定义。

Android适配性自动化测试平台一般由双层Web Server系统、图片比对自动化测试系统和可录制编程的自动化测试系统组成,本文针对用户使用习惯和逻辑,归纳总结系统的最主要的五个业务进行重点讨论:用户登录功能需求、Lab Server的功能需求、Web Server的功能需求、录制编译脚本模块的功能需求、图片比对自动化测试模块其他相关业务也将进行简单分析。

从实现质量属性可分为可用性、易用性、可测试性战术,主要功能具有可扩展性、稳定性、可维护性和可操作性。

在Android适配性自动化测试系统中,定义的用户有测试工程师、测试经理两种身份。每个用户有自己的职责和范围,根据职责和范围可对Android适配性自动化测试系统的相关功能进行操作与管理。


测试工程师

测试工程师的用例图如图1所示。


测试经理

测试经理的用例图如图2所示。


 

用户通过浏览器输入IP地址,然后输入用户名和密码登录Lab Server,再由Lab Server通过Web Server登录到Agent Server上,进行配置Agent对应的Android设备,根据测试用例进行操作,然后记录测试结果,测试结束后进行退出当前的测试登录。

用户登录主要功能需求是测试能否正确识别用户输入用户名和密码能登录系统,输入任一错误的用户名和密码都不能登录系统。另一个功能需求是测试管理员能否增删查改等功能,对不同的用户设置不同的权限。用户登录功能需求的流程如图3所示。


Lab Server的功能实现分析

用户通过浏览器输入IP地址,然后输入正确用户名和密码登录Lab Server,再由Lab Server通过Web Server登录到Agent Server上,进行配置Agent对应的Android设备,根据测试用例进行操作,然后记录测试结果,测试结束后进行退出当前的测试登录。

双层Web Server模式系统主要体现为用户通过网页登录到Lab Server之后,然后去选择对应连接的手机,同时通过Agent方式来访问对应的手机设备,而访问Agent对应的手机设备也是通过网页方式打开,这样做的目的就是可以通过网页登录增加手机的无限扩展,理论上只需要Server性能足够强大。

基于Lab server功能需求的过程如图4所示。



 Web Server功能实现分析

在双层Web Server模式系统,它采用了一系列的技术手段,实现了将触控手机屏幕和实体按键的操作转化为采用键盘和鼠标操作Web上的回显界面,并且这种操作是全双工的(Multiplex)。全双工的意思是,在Web界面上的操作会反馈到手机界面上,而手机上的界面变化也会反馈到Web界面上。这个功能的实现,依赖于在内层Web服务器上运行的一个守护进程,这个进程会做两件事,一是把Web上的Web键盘和鼠标事件,通过Python调用Robotium来转化成手机触控事件,这是从Web到手机;二是把手机屏幕不断截屏,发回内层Web服务器以供Web界面显示,这个守护进程和内层Web服务器是两个程序,但它们运行在同一个机器上,流程如图5所示。

录制编译脚本模块的功能实现分析

由于测试用列比较多,测试工程师手动测试耗费大量人力物力,系统要解决的核心问题,主要是适配性测试中的两个问题:设备管理问题,还有测试用例数量众多而且重复的问题。解决的手段就是自动化,这个自动化和传统意义上的自动化有所不同。传统意义上的自动化,仅仅指把手工执行的用例落实成脚本,然后用执行脚本来代替手工执行。而本系统的自动化,却是全方位的自动化。

脚本自动化录制传统意义上的自动化测试对测试人员的要求很高,核心是要求会写脚本,而本系统提供了脚本录制功能,用户可以执行一些操作,这些操作就会自动地被录制成脚本,还可以针对脚本中的任何指定部分,加上条件判断和循环。这样几点加在一起就解决了测试用例众多的问题,因为可以同时对N部设备执行同一批脚本,还可以随时查看结果,脚本本身还可以通过录制而不是手写实现。

安装和脚本运行自动化这个功能也是通过内层Web服务器提供给用户的,用户只要上传一个APK文件,这个文件就会被自动安装,并执行指定的一系列冒烟测试,如安装、启动、退出、升级和卸载等。只要上传一个python脚本,就可以执行这个脚本包含的任意内容,实现传统意义上的自动化测试功能。还可以指定运行脚本的时间点,这样就可以在夜间实现无人值守的自动化测试。我们首先要连接测试工程师已经打开调试模式的ANDROID设备或模拟器,然后运行一些脚本,例如在cmd窗口中执行命令:Monkeyrunner Monkeyrecoder.py,执行一定的代码后,将运行录制脚本的程序。我们还根据总结测试工程师常用的函数,写好之后,再次编译和嵌套录制脚本,这样就可以循环运行脚本,达到一些回归测试和压力测试的需求。流程如图6所示。


图片自动比对模块功能实现分析

在手机的自动化测试,对结果的判断是难点,最初级的办法无非是基于图像比对了,Monkeyrunner自身提供了一套图像比对的机制,加载一个正确结果的图片 MonkeyRunner.LoadImageFromfile(“filepath”)。然后用sameAs来比对,当然也可以用局部图像比对。得到局部图像的方法getSubImage。

Monkey和Monkeyruner是Android提供的两个自动化UI测试工具。它们的测试原理都通过编写脚本,模拟用户按键然后记录响应结果。它们最大的价值是可以做无人值守的自动化测试。具体流程如图7所示。


其他的功能实现分析

基站衰落自动化测试系统除了上述主要业务以外,还有重启基站业务、获取基站配置数据等业务。

测试UE在极端情况下,比如UE在运动旋转的支架上进行测试,测试能够忽略电源变化的状态图。

测试忽略电源变化,主要是实际测试工作的需要,不必比较,主要在图像比较的时候,剔除电源区域的比较。

第一步找到设备图片的电源的位置;

第二步进行图片比较时,找到设备图片的电源的位置,进行忽略此图片的变化。

区分游戏主、辅界面

在游戏界面我们设定了游戏主界面和辅界面之分,针对主界面判定之后,我们集中比对辅界面变化和操作,这样比对相应会更准确和更快,更能完成测试用例的操作。

第一步在游戏测试过程中,根据图片变化的幅度确定主、辅界面;

第二步确定游戏界面的主、辅界面之后,同时监控主辅界面,如主界面变化幅度不大,则会忽略主界面的比较,直接比较辅界面变化;

第三步直到主界面变化幅度过大,则重新比较主、辅界面,进入下一个比较流程。流程如图8所示:



 非功能性需求的功能实现分析

系统把手动操作变成脚本之后,需要进行一定的修改,编译通过之后才能运行,在实际运用过程中,由于测试工程师的自动化脚本水平参差不齐,导致脚步格式众多,即使同一个功能,不同的工程师编写风格也不一样,导致脚本不统一,运行效果也不一样。同时一些函数脚本写起来对于没有编程背景的人来说也是比较困难的。

本系统除了具备满足功能性需求时提供的特性之外,同时通过制定测试的操作规程,尽量减少干扰,来避免非正常脚本编写错误和脚本编写不统一的情况的发生。

由于适配性测试需要不同的手机或者平板等设备,同时不同的手机或者平板的生产厂商,系统版本也不相同,选择适配性自动化操作的业务也有所不同。随着适配性自动化业务的增长,还有会测试不同的手机或平板等设备,测试不同手机或平板等设备版本的功能。在适配性自动化测试的系统设计时,不仅要考虑使系统满足测试工程师自动执行用例的需求,更需要从易于扩展的思维来规划,根据不同的手机或平板的差异,在不需要更改平台的服务器的大的设备情况下,只需要增加被测试设备和增加外围系统配置,就可以达到横向扩展的目的。为不同手机设备的选择和同一手机不同的手机系统版本,降低上层系统和不同手机之间的操作的耦合程度。

基于适配性测试自动化测试系统是自己写脚本开发的,不需要多指令化界面,对于测试工程师来说只需要掌握界面操作,所以对于测试工程师来说,提供配置参数较少、容易操作的界面,针对其他用户,第一次配置好参数后,再次配置时,有数据记忆功能,符合测试工程师操作习惯,省去测试工程师的精力和时间,同时也减少测试工程师的操作失误的可能。

针对同一手机不同的系统版本,只需要参考自动化系统配置的手机系统的版本,就可以在界面上选择对应的系统版本,这样不需要更换手机设备就能测试多个手机软件系统。考虑到测试工程师操作测试任务繁重性,一般使用测试时间戳来记录测试时间,并记录测试log,增加便利性。同时对于测试结果,更多的让测试工程师用图形化界面来展示出来,一眼就看出测试结果和与历史测试结果进行比对。因此系统还需要在不增加系统开发工作量的前提下,需要满足测试工程师易用性的需要。

在增加大量的手机或平板等设备之后,需要大量的通信去调度,需要很多线程来完成多个任务的调度。在开发系统之前,需要充分考虑系统稳定性,如果多个手机或平台等设备线程增多等,会很耗费内存,这样会导致测试不准确,系统和手机或平板等设备之间进行通信,传输时间和传输效果需要考量,因此对通信过程的稳定性要求较高,需要防止通信指令传输失败,产生意外的后果。除此之外,图片比较也需要一定的稳定性,系统的稳定需求对系统设计来说也是很重要的一个方面。

系统架构设计与实现

系统的体系结构

Android适配性自动化测试系统的体系结构可分为如图9所示的四层。

系统的第一层为应用层,主要是用户通过浏览器输入IP地址,通过HTTP协议登录到Server上,进行测试相关操作。也可以在Server上浏览和查看测试结果。

第二层为Server层,主要接受到应用层的指令和操作,来进行响应和回应,这一层是系统的核心,主要用到的协议有HTTP,TCP,TELNET等协议。

第三层Agent层,此层主要是桥梁连接作用,把Server层的指令通过Agent代理传到具体制定的任一Android设备上,然后Android设备响应再通过Agent代理传到Server。

第四层就是Android设备连接层,主要通过USB连接器或者直接连接到测试工程师的电脑上进行测试的Android设备。此层主要的好处在于,在系统性能可以承受的许可下,扩展到许多个Android设备。

系统的软件架构
Android适配性自动化测试系统的软件系统包括Lab Server、Web Server、Agent Server、图片比对系统、自动化录制编译系统。Android适配性自动化测试系统的软件系统结构如图10所示。

Lab Server子系统,用户通过浏览器输入IP地址,然后输入正确用户名和密码登录Lab Server,再由Lab server通过Web Server登录到Agent Server上,进行配置Agent对应的Android设备,根据测试用例进行操作,然后记录测试结果,测试结束后退出当前的测试登录。

双层Web Server模式系统主要体现为用户通过网页登录到Lab Server之后,然后去选择对应连接的手机,同时通过Agent方式来访问对应的手机设备,而访问Agent对应的手机设备也是通过网页方式打开,这样做的目的就是通过网页登录可以增加手机的无限扩展,理论上只要Server性能足够强大。
Agent Server子系统,此系统主要是桥梁连接作用,把Server层的指令通过Agent代理传到具体制定的任一Android设备上,然后Android设备响应再通过Agent代理传到Server。

图片比对子系统功能主要采用了Monkeyrunner技术,利用Java Script与Python互相转换的功能来达到所设计的需求和功能,用户通过Web Server进行操作一个动作,Web把操作的一个动作转换成一个指令;转换成一个指令后,传给Executor,而传给Executor通过Agent server来控制设备UE;设备UE接到Executor传输的指令后,进行执行指令的操作,并把操作后的结果通过Agent传给Executor;操作后的结果通过Agent传给Executor之后,Executor通过截图软件,把设备UE的操作和响应结果的图片返回给Web Server;Web Server接到操作和响应结果的图片之后进行比对,然后进行下一个操作。

自动化编译子系统,主要分脚本录制器和自动编辑功能。测试工程师搭建测试环境;测试工程师手动操作,这个时候录制手动操作并记录代码;根据手动操作的测试用例,推荐匹配的函数,如重启多少次等;如果不使用推荐函数,则需要测试工程师手动完成编译,并生产测试用例;如使用推荐函数,可以自动编译,自动运行脚本,开始编译,编译通过之后并生产测试用例;脚本录制完成后,开始下一个录制脚本的测试用例。设定的测试用例录制完成。结束。等待自动化测试。

结论

本文对Android适配性自动化测试系统的功能需求进行了细致地分析,确定具体的功能方面的设计、开发与实现的要求与标准;之后对重点设计了Android适配性自动化测试系统的体系架构、软件架构进行了详细分析与设计。


 

联系我们
欢迎洽谈内容、广告等各项合作业务
投稿邮箱:hdkj_sh@163.com
投稿热线:021-53080015
服务热线:021-53082351

2021年11月刊

电子刊物订阅渠道

请扫描上方二维码

上海《华东科技》杂志社有限公司 版权所有 沪ICP备12026464号-1 沪公网安备 31010402008474号 电子营业执照