问题分析
智能移动终端,其定义为:具有独立的操作系统,像个人电脑一样支持用户自行安装软件、游戏等第三方服务商提供的程序,并通过此类程序不断对手机的功能进行扩充,同时可通过移动通讯网络来实现无线网络接入。其组成要件有:操作系统,设备驱动、中间件、可用接口及Application等。
简单来说,智能终端需要处理三个方面的问题:
需要一个系统对本地的各类资源实现有效的管理并提供扩展运用的接口;
需要为终端接入大网提供高效、稳定的方法;
需要对用户资源(用户文件,资料,应用,第三方设备等)进行管理。
Figure-1: Smart-phone Infrastructure
Figure-1描述了智能终端的软件服务结构,移动终端Application基于其目的可调用系统到其他应用的可用接口从而横跨整个结构的各个层面,因此在对其需求和行为分析时,应从各个层面去考虑其功能、安全等应用特性。
解决方案
我们评估一个Application时,需要根据其本身的特点及具体应用所涉及的层面(如是否涉及直接调用底层驱动、是否直接调用系统Kennel组件等)及用户实际使用场景即Application用户体验、系统平面支撑、应用跨度三个方面衡量测试的全面性,从用户和系统实现来权衡测试的重点和制定具体的测试策略和测试方法。
Figure-2: Standpoint for software testing
因此我们在对智能终端Application进行测试时除了按GB/T 16260《软件产品评价-质量特性及其使用指南》所规定了软件产品的六个质量特性进行评估外,还需要考虑如下几个问题:
分析功能点所涉及的内在、外在及非直接相关的需求
分析功能点所涉及的测试类型的覆盖(如边界、等价、负面、异常、场景、关联等测试类型)
分析功能点所涉及的用户实际体验效果(想用户所想),并结合相关标准设定实施检测标准
分析Application的整体安全特性
通过如下类型的测试含盖智能终端应用程序测试的各方面。
Install/Uninstall/Update测试
验证Application是否能正确安装、卸载及更新状况,以及操作过程和操作前后对系统资源的使用情况(Footprint)。如:
检测软件是否能正确安装卸载;
安装卸载过程是否方便;
位置和文件夹是否合理;组件是否正确注册或删除;
安装过程中出现中断(来电)或进程重启(显示变向)等异常情况下,安装是否正确,卸载时组件是否正确卸载;
评估安装/卸载Application及操作前后,CPU、Memory、Storage等系统资源的使用情况。
功能测试
根据软件说明或用户需求验证Application的各个功能实现,采用如下方法实现并评估功能测试过程:
采用时间、地点、对象、行为和背景五元素或业务分析等方法分析、提炼Application的用户使用场景,对比说明或需求,整理出内在、外在及非功能直接相关的需求,构建测试点,并明确测试标准(若用户需求中无明确标准遵循,则需要参考行业或相关国际标准或规则)。
根据被测功能点的特性列举出相应类型的测试用例对其进行覆盖,如:涉及输入的地方需要考虑等价、边界、负面、异常或非法、场景回滚、关联测试等测试类型对其进行覆盖。常用的测试方法有等价类,边界值,场景法,错误猜测法等。
在测试实现的各个阶段跟踪测试实现与需求输入的覆盖情况,及时修正业务或需求理解错误。
Figure-3: Process of Software Testing
界面测试
测试用户界面(如菜单、对话框、窗口和其它可视控件)布局、风格是否满足客户要求,文字是否正确,页面是否美观,文字,图片组合是否完美,操作是否友好等。
UI 测试的目标是确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏览功能。确保用户界面符合公司或行业的标准。包括用户友好性、人性化、易操作性测试。
中断测试
针对智能终端应用的服务等级划分方式及实时特性所提出的测试方法,如:交互测试(Application在前/后台运行状态时与来电、文件下载、音乐收听等关键运用的交互情况);及跌落试验、shuffle测试等
兼容测试
主要测试内部和外部兼容性
与本地各类主流运用是否兼容
检验在各种网络连接下(WiFi、GSM、GPS、CDMA等),Application的数据和运用是否正确。
与各种设备是否兼容(若有跨系统支持则需要检验是否在各系统下,各种行为是否一致)。
用户体验测试
以主观的普通消费者的角度去感知产品或服务的舒适、有用、易用、友好亲切程度。通过不同个体、独立空间和非经验的统计复用方式去有效评价产品的体验特性,提出修改意见提升产品的潜在客户满意度。
性能测试
评估Application的时间和空间特性
极限测试:在各种边界压力情况下(如电池、存储、网速等),验证Application是否能正确响应。
响应能力测试:测试Application中的各类操作是否满足用户响应时间要求
压力测试:反复/长期操作下,系统资源是否占用异常;
性能评估:评估典型用户应用场景下,系统资源的使用情况。
Benchmark测试: 与竞争产品的Benchmarking, 产品演变对比测试等。
安全测试
手机终端系统和应用软件的开源特性及其广阔的市场前景,必然会激发难以计数的个人或组织的“创造性行为”以期达到其非法、恶意目的;粗心、不谨慎的数据存储或传输方式又为其大开方便之门。因此,安全测试显得尤为重要。
Figure-4: Transportation of Mobile Application Data
智能终端安全涉及到Figure-1所描述的各个系统层面及Figure-4所呈现的各个信息交互、存储接点,借鉴于网络传输和Web应用的安全测试经验,我们将智能终端Application安全测试大概划分为以下几类:
从数据的本地存储到数据的传输、处理以及远程访问等各个环节,基于相应的安全标准如PCI(Payment Card Industry)、OSSTMM(Open Source Security Test Methodology Manual)评估Application的安全特性。如采用开源的工具如Nikto等对Application进行穿透测试,以期发现安全问题;
借鉴在Web Application和网络安全测试的一些成功经验在智能终端Application测试中进行裁减或适配;检视Application的用户授权级别,数据泄漏,非法授权访问等;
基于OWASP(Open Web Application Security) Top 10所述的原则对Application的输入有效性校验、认证、授权、敏感数据存储、数据加密等方面进行检测,以期发现潜在的安全问题;
基于各种通信协议或相应的行业安全标准检视Application是否满足相应的要求.