PDF下载
Android应用软件自动化测试技术初探

杨柳

武汉东湖学院,湖北省武汉市,430000

摘要: 智能手机App应用已经影响到生活的方方面面,给人们带来方便,如果软件存在缺陷,不但会流失用户,甚至会对开发软件的企业造成经济损失。为了避免出现严重缺陷,应该更加重视软件测试,规范流程,在每一个测试阶段中不断探索更加高效、更加完善的技术,更好的保证产品质量。
关键词: Android应用;软件;软件测试
DOI:10.12721/ccn.2022.157049
基金资助:
文章地址:

一、前言

与计算机桌面软件不同,Andoid系统上的软件不仅要满足功能方面的要求,其对性能方便的要求更高,包括cpu、内存、电量、流量等。除此之外由于华为、小米等生产商对系统进行了定制化,屏幕、分辨率等参数各有不同,碎片化越来越严重,所以Android系统上软件对适配性要求更高。本文针对以上特殊要求,基于Android系统上App软件的特点,研究了在APP测试流程中用到的相关技术,为产品质量提供更为可靠地保障。

二、Android系统APP测试流程

APP测试流程按阶段可以分为单元测试、集成测试、确认测试、系统测试与验收测试。单元测试是对软件程序最小可测单元进行验证与检查,在Androidapp开发代码中,可以理解为对独立方法的测试,是白盒测试。集成测试是在单元测试的基础上,完成各子模块的集成,重点测试接口访问或者异步请求是否正确。确认测试主要是产品设计人员参与检查是否满足设计要求。系统测试是将被测APP与手机硬件、数据库、前/后端甚至是其他APP结合起来,在实际环境下进行一系列测试。验收测试阶段完成测试报告,需求方按照《产品需求说明书》的要求检查产品是否符合预期。

三、Android系统App测试特点

Android系统的特性直接影响Android系统App测试重点,Android系统的特点主要在于以下几个方面

(一)开源特性

开源特性给Android系统注入了强大的活力与生命力,允许任何移动设备制造商加入Android联盟,开发者可以访问核心应用程序使用的API,显著的开源性使它拥有更多更有活力的开发者。

(二)硬件多样性

开源特性为Android吸引了众多生产者和开发者,也造就了Android系统的碎片化,众多厂家推出的终端五花八门、功能各有千秋,所以开发者更要关注软件的兼容性。Andoid系统是专为移动设备而生的,不仅有手机、平板、智能手环等可穿戴设备,甚至应用到智能电视等家庭娱乐设备、辅助驾驶等车载设备。因此An-droid系统软件除了传统计算机软件的功能要求外,更要关注与其自身特有设备的交互,如以下特点:设备屏幕:移动设备的多种分辨率和尺寸;丰富多样的交互:触摸屏触控动作多样化,如多点触控、点击、滑动、拖拽、捏合等;设备内置设备:蓝牙、GPS、摄像头、麦克风、网络设备、各类传感器等;性能要求:受自身cpu、内存、硬盘等硬件设备的限制,APP性能要求更高;网络限制:网络切换wifi、3G、4G及后续5G,弱网等;

四、Android系统APP测试重点

针对以上Android系统及各类设备的特点,在进行Android系统App测试时应对测试流程做针对性调整,测试流程如下:安装与卸载,要真机调试;升级测试,在线升级,跨版本升级等;功能测试,包括单元测试、集成测试,更关心用户操作体验,界面布局,操作习惯,各模块调用是否流畅等;自动化测试,包括UI测试、自动化回归测试;稳定性测试,进行Monkey压力测试、弱网测试等;性能测试,cpu占用率、内存占用率、FPS测试、电量、流量消耗量测试;后台接口的性能测试等;兼容性测试,要关注手机操作系统版本的不同、分辨率不同等、不同网络类型切换;安全测试,关注用户的登录信息存储是否安全,位置信息是否正确、是否有信息泄露风险等;回归测试,要考虑新旧版本兼容,未改动模块功能是否会被新添加的模块影响;验收测试,主要是产品需求方按照产品需求说明书等文档的要求验收产品是否符合要求。

以上测试流程中依据Android系统APP测试的特点,可分析得出APP测试的重点内容:功能是否满足预期;界面设计是否合理,用户体验优良;性能消耗适度,是否存在内存泄漏;能否兼容主流系统版本与机型;能否运行稳定,健壮性良好。

测试人员在每个测试阶段,可根据自身软件功能特点、技术要求、投入产出比等选择所要用到的技术手段,目前已经有很多成熟的技术供开发测试人员选用安装与卸载测试、升级测试:可以使用集成在AndroidSDK开发包中的ADB(调试桥),它是功能多样的命令行工具,如软件安装命令为adbinstallpath_to_apk;

功能测试极端中单元测试:可以选择MockIto框架,它是基于开源Java语言的单元测试框架JUnit4;还可以使用Robolectric提供的测试框架,它完全模拟AndroidSDK的jar文件,使测试可以运行于JVM之上。功能测试中集成测试:主要进行前端与后端联调,在单元测试的基础上,对于后端接口使用SpringTestCon-text框架,对于前端测试工具可使用免费的Android自动化测试工具Robotium,它提供模拟各种操作、查找、断言的通用API,但缺点也有很多,如不能解锁/锁定设备,并且没有录制回放功能,也不能截图。

自动化测试包括UI自动化测试和接口自动化测试两部分内容,UI自动化测试可以使用Uiautomator黑盒自动化测试框架,可进行APP界面的自动化测试。接口自动化测试可以使用Test-NG,其设计灵感参照Junit,但引入了很多新功能,使用更方便,例如支撑多线程、支撑依赖测试等。

稳定性测试用到命令行工具Monkey,向模拟器或设备发送一些随机的用户事件流(点击、手势等),对app进行压力测试,以检测APP的稳定性。稳定性测试技术有Appium、MonkeyRunner。

Appium是同时支持IOS和Android自动化测试框架,通过Web-Driver实现接口脚本运行。MonkeyRunner是Jython编写的,提供多个API,通过编写Python程序来模拟控制模拟器或设备中的APP,并可以通过截屏记录出现的问题。

性能测试主要针对APP运行时各种资源消耗量进行测试,如内存、CPU、界面流畅度(fps)、流量、GPU、电量等关键参数。主要工具分为两类,一类是APP开发工具中自带的如Eclipse自带的DDMS和MAT、androidstudio的Profile,其优点是可实时查看资源消耗走势,分析内存泄漏等,缺点是不能保存测试数据,不便于生产测试报告。另一类是互联网公司研发的,如网易Emmagee、科大讯飞的itest,可以保存数据,更直观的查看性能状况。

兼容性测试工具有CTS与各个云测试平台,CTS全称Compat-ibilityTestSuite,即兼容性测试用例集,可用来检测Android应用可兼容所以Android设备,且用户体验相似。云测试平台的出现主要解决Android系统碎片化严重的问题,主要平台有阿里云移动测试平台(MQC)、百度移动云测试中心(MTC)、腾讯质量开放平台(WeTest)等。理念基本是开发者在平台上传APK文件,服务端会自动部署环境进行测试,最终生成测试报告。因为云测试提高了测试效率和覆盖率,受到业内的重视。

安全测试中,测试框架Drozer应用比较广泛,它是一种交互式的安全测试工具,用户在自己的工作站上输入命令,Drozer会将命令发送到Android设备上的代理程序执行,提供了很多渗透测试Exploit供调用。

参考文献:

[1]徐芳.移动应用软件自动化测试技术初探[J].电子技术与软件工程,2015,(18):63-65.

[2]王彦.移动互联网软件测试技术研究与应用[J].现代信息科技,2019,3(03):8-9.

[3]喻晓,袁谦.移动应用测试重点与关键技术移动应用软件测试要点综述[J].信息化建设,2018,(08):54-57.