admin管理员组

文章数量:1533025

2023年12月13日发(作者:)

Android手机自动化测试

一.手机自动化测试的原理

PC上一个控制端(测试工具)与手机上的一个agent端,通过串口、USB或者无线方式将PC与手机终端相连,然后应用测试工具向手机发送请求或者命令,手机收到命令或者请求后,交给agent端解析,然后agent将这些解析的命令下发给手机的各个功能模块所能识别的命令,调用那些功能模块模拟操作。完成这些操作后,手机会返回一些信息,agent可以抓取这些信息,然后传回给PC端,这样就完成了一个完整的手机自动化测试。关键点在于agent,有的公司是向自己的手机终端的软件功能模块中植入测试程序响应代码,有的公司可以利用MMI_Command的方式来控制手机终端;原理就是给手机提供一个响应的接口。

而对于PC控制端,这个测试脚本用各种编程语言都可以,看如何定义,而有的自动化测试设计成录制的机制,说通俗点,就是记录手工操作的键盘信息或者LCD的操作信息(LCD需要用到智能识别机制)

二.Android手机自动化测试简介

目前手机自动化测试技术大体可分为白盒测试和黑盒测试两种。

白盒测试:在手机自动化测试领域,白盒测试包括两种类型,第一种是传统软件测试理论中所指的白盒测试,即依赖被测对象的源代码具体实现的测试方式。在手机软件开发过程中所做的单元测试即属于此类型。第二种则是结合手机软件自身特点,对传统概念做了一些延伸。它指的是通过解析、控制和校验手机GUI控件元素对手机进行测试的方式。这种方式不必一定依赖于被测对象的源代码,但对于被测对象的GUI实现有较强的关联性。这种类型的白盒测试一般用于验证应用程序功能和界面显示正确性的功能测试。如果测试框架足够好,也可用来做自动化的性能测试、压力测试等。Android在SDK中集成了JUnit框架。第二种类型的白盒测试实现起来要比第一种类型复杂,因为它不仅要做到对界面组成元素的解析、识别、调用和比对,更要做到对被测应用所在进程做诸如发送触屏事件、发送按键事件这样的操作控制。Android从发布伊始就提供的JUnit和Instrumentation。白盒测试具有测试效率高、测试运行稳定性好、不易受UI改动影响等优点,但测试脚本往往采用编程语言(Android的白盒测试脚本使用java语言开发)、脚本开发技术门槛高,同时会受到操作系统本身特性的限制,跨进程测试实现困难(在Android上,如在编辑彩信时跳转到文件管理器里挑选附件,后续测试脚本是无法执行的,因为文件管理器和彩信不在同一个进程中)。

黑盒测试:相对于白盒测试而言,黑盒测试指的是通过外部指令驱动手机并通过外部方式进行测试结果校验的测试方式,即不考虑系统本身提供的自动化测试能力,所有的测试行为均在系统外部进行。比较典型的自动化黑盒测试方案是:通过手机操作系统对外提供的接口向手机发送触屏、按键等指令控制手机执行各种操作,同时将特定操作步骤执行后的手机当前屏幕显示做截图,再将截图数据通过图像对比或OCR的方式进行结果校验。Android上有Adb工具,monkey工具,monkeyrunner工具等。黑盒测试方式不受操作系统内部特性的限制(如可以避免跨进程操作的限制),对手机操作系统本身是否具备高级的自动化测试能力也没有很高的要求;测试脚本可以采用描述性语言,而且可以提供简单易用的图形化操作界面,降低了使用门槛,有利于自动化测试在测试团队中的大范围推广。但由于使用图像对比或OCR的方式做结果校验,测试脚本受UI变动的影响较大,脚本维护成本会比较高;在执行效率、不同规格的手机适配便利性方面也不如白盒测试方式。

由于白盒测试和黑盒测试各有利弊,一般来说,在实际测试项目中,两种测试方式会配合使用、各取所长。

三.当前比较常见的集中测试工具介绍

1. 基于坐标点触屏:monkeyrunner,北京播思自研工具

monkeyrunner是由Google开发、用于android系统的自动化测试工具,由android系统自带,存在于android sdk中,Monkeyrunner提供了一个API,用此API写出的程序可以在Android代码之外控制Android设备和模拟器,Monkeyrunnerd主要设计目的是用于测试功能/框架水平上的应用程序和设备,或运行单元测试套件,Monkeyrunner通过运行python脚本,来执行脚本中预先定义好的一系列操作事件,如:安装卸载某个应用、进入任一模块、点坐标、按键、编辑文本、截图对比等.由于monkeyrunner是一个API工具包,可以基于Python模块和程序开发一整套系统,以此来控制Android设备。

2. 基于随机流的单元测试:CTS,monkey

CTS一般做整机兼容性测试,当电子产品开发出来,定制了自己的Android系统后,必须要通过最新的CTS检测,以保证标准的android application能运行在该平台下。

Monkey一般做压力测试,是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。一般使用adb调试工具,通过网络或者USB连接真实的设备或者仿真器,它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试,前提是我们必须知道手机或者模拟器里实际加载的所有应用程序包,然后针对这些应用程序包,发送用户事件,Monkey测试目的是验证软件的稳定性,目的可分为忽略异常测试(解决问题的测试)和不可忽略异常测试(验收测试)Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

3. 基于元素图形对比:Seetest(),I-Test

Seetest支持IOS,android,黑莓,windows phone的平台自动化测试,支持在模拟器或者真机上进行录制,支持在不同的平台上运行相同的用例。通过下载Seetest,连接设备,录制和运行测试即可,另这个工具是收费的。

I-Test只支持root后的手机,支持android2以上系统,其功能包括PC控制手机、录制脚本、运行脚本、日志输出、屏幕截图等。

4. 基于控件信息:Robutium+Junit4框架(开源),北京东舟软件有限公司的Smart-Robot,美国风河公司的wind test managerment

Robutium用于黑盒的自动化测试。可以在有源码(必须保证源码工程能编译成功生成APK)或者只有APK 的情况下对目标应用进行测试。Robotimu 提供了模仿用户操作行为的API,比如在某个控件上点击,输入Text等等,被测对象是APK的源代码,测试代码是基于源代码来编写的脚本,在run单元测试的过程中,首先安装被测对象的APK(有代码的情况下),然后安装测试代码的APK,这些都是通过操作UI界面的布局,控件等来执行的,报错的话都是通过抓一些控件或者算法来判断,但是Robotium目前的缺点也很明显,无法对WebView进行操作,这对大量使用WebView的淘宝Android客户端来说无疑是很大的限制,而且Robotium提供的API是面向过程的,测试代码的可扩展性差。

wind test managerment:从底层驱动,芯片的自动化,对硬解码,软解码自动化,包括上层的framework框架自动化,可以白盒自动化,也可以黑盒系统功能自动化,使得 Android设备的测试过程更加顺畅,自动化程度也显著提高。对于运营商、设备制造商、独立软件供应商和芯片供应商来说,采用Wind River Test

Management测试其Android设备,不仅可以缩短时间、降低成本、提高软件质量和稳定性,并且能确保设备符合Android兼容性测试套件的规范。不仅如此,Wind

River Test Management还可使数量庞大的Android异构测试环节自动化进行,测试结果将被归入统一数据库,从而使测试结果分析更快、更准确。

5. 腾讯BITA测试平台() : 腾讯云测试平台,支持测试应用和手游,可享受平台的整体定制服务,适配测试,兼容性测试,压力测试。用QQ登陆后,先选择覆盖率,测试机型,分辨率,android版本,然后上传测试的APK即可进行测试,测试完毕后,阅读生成的报告即可。

6. 腾讯GT:性能测试工具,最新release 版本是v2.0,发布日期是2013年11月29日,GT:,仅用GT应用即可完成如下针对被测应用的测试工作。

a.基础性能测试(CPU.、内存、网络流量、流畅度、帧率、电量等);

日志查看;

c.网络数据包抓包;

d.电流电流测试(目前只有google nexus4 支持输出正确的电流值);

ck控制;

f.快捷的网络切换;

还可以将GT SDK嵌入到被测应用中,从而使用GT的如下更高级的开发调试、测试能力。

a.在被测应用(AUI)中加入各种自定义“输入参数”,改变APP逻辑;

b.在被测应用(AUI)中加入各种自定义“输出参数”展示到GT;

c.在指定的AUI代码中插入GT的代码耗时API,统计代码调用耗时;

d.通过GT SDK把日志输出到GT;

7. 百度云,Itestin(),阿里巴巴TMTS

百度云测试包括深度性能测试,兼容性测试,深度遍历测试,功能回放测试,安全漏洞扫描,场地场景测试。

Itestin是全球最大的移动游戏,应用真机和用户云测试平台,Testin云测试所推出的业界领先的移动互联网真机云测试服务平台,主要产品包括RealTest™,

RealAuto™、RealMonitor™,为移动应用开发和服务提供商提供专业的基于真实终端,跨地区真实移动网络的移动应用开发测试、自动原型测试、自动适配测试和应用程序运行质量的监控服务。包括:安装卸载测试,运行稳定性测试,功能遍历测试,性能测试,智能UI适配测试。

8. 中兴通讯EasyTest3.0:基本上可以对80%以上用例实现自动化,有比较多的私有核心技术,比如远程监控,一套脚本控制abc三台机器三方通话,来回切换,不需要人工干预,智能设置断点,自动化下载版本,双台终端无线虚拟屏幕互相映射,脚本自动化分配样机等等。

9. NativeDriver,Selenlum,UIautomator

UIautomator是谷歌公司在2013年发布的android4.0版本支持的测试框架,无需源代码,可以在不同的APP间调度,可以对左右的操作进行自动化,但是无法根据控件ID操作,相对来说功能较为局限。

目前基本上所有的android手机自动化测试框架都由四种核心技术衍生而来:谷歌推崇的随机测试工具(典型例子monkey),基于点触流的自动化测试工具,基于元素识别的自动化测试框架,基于控件识别的测试工具。

本文标签: 测试手机脚本应用