摘要
安卓系统自进入人们视野以来,因其开放性和稳定性备受手机厂商和智能硬件公司追捧,基于安卓系统的各种终端设备不断涌现。由于待测应用程序的复杂性和移动设备资源的有限性,以及各大安卓设备厂商对安卓系统进行了深度定制,使得安卓系统测试难度不断加大。安卓系统测试往往包含很多的重复性劳动,传统的人工测试方式需要大量的测试人员才能满足软件测试的需求。针对以上问题,Google公司开源了 Uiautomator框架,以期通过自动化程序解决安卓软件重复性测试问题,以节省测试人力。虽然安卓自动化测试框架在一定程度上提高了安卓软件的测试效率,但它并没有解决测试用例的筛选、潜在失败测试用例智能调度和大规模测试需求等问题。本文基于以上问题,提出了一种新的安卓手机性能自动化测试智能系统。
本文的主要工作包括:(1)通过分析传统测试技术的不足,提出一种新的安卓手机性能自动化测试智能系统;(2)通过网络爬虫获取垂直应用市场上的软件信息,根据软件评分、下载数、浏览数对流行应用排序,从流行应用中提取测试用例;(3)引入协同过滤推荐算法推荐潜在失败测试用例,通过调度器达到测试用例的智能化调度,提升漏洞的挖掘效率;(4)优化Hadoop下小文件存储和作业调度问题,提升测试日志的解析效率;(5)系统的验证与测试。
为了评估系统的可行性,本文搭建了测试平台,对市场上主流机型进行功能验证。实验结果表明,安卓手机性能自动化测试智能系统能够有效的挖掘安卓系统下的潜在漏洞,同时有效避免重复性的人工劳动;基于网络爬虫提取测试用例,保证了测试用例的科学性和优质性;通过引入协同过滤算法推荐潜在失败用例优先执行,提高了失败测试用例的挖掘效率;并提出一种适用测试场景的日志存储和解析引擎,大幅度提升了测试曰志解析效率。实验表明,本系统有效地提升了漏洞挖掘的准确性和效率,使单人多机大规模手机测试成为了可能,为后续手机测试研宄提供了重要的参考价值。
关键词:安卓 自动化测试 协同过滤 网络爬虫 日志存储
ABSTRACT
It has been sought after by many mobile phone manufacturers and smart hardware companies since the emergence of Android system because of its openness and stability. And many terminal equipments based on Android system continue to emerge. Due to the complexity of the application to be tested and the limited resources of mobile devices, meanwhile the major android equipment manufacturers have depth customization on Android, gradually increase the difficulty of testing. Android software testing often contains a lot of repetitive work, the traditional manual testing requires a large number of testers to meet the test requirements. To solve these problems, Google make Uiautomator framework known to public, in order to solve the problem of the Android software repeatability test by means of automated procedures, thereby saving testing manpower. Automated test framework improves the efficiency of the test in a certain extent. But it does not solve the test case selection, the potential failure of intelligent scheduling and use of large-scale mobile phone testing and other issues. Based on the above pain points, this paper presents an intelligent test system for Android mobile phone performance.
The contributions of this paper include: (1) This paper presents a new intelligent test system of Android mobile performance through analyzing the shortcomings of traditional testing technology based on the introduction of Android automatic test technology. (2) Based on the research and implementation of web crawler-based test case extraction technology: get the software information in the vertical application market through web crawler. Sort the popular application according to the software score, download number and the views. Then write test cases based on popular applications. (3) Introduce the collaborative filtering recommendation algorithm to rapidly mining the potential failure test cases. And improve the efficiency of vulnerabilities mining through the scheduling module to test the intelligent scheduling of cases. (4) Optimize hadoop for small file storage and job scheduling to improve the efficiency of test log analysis. (5) System validation and testing.
In order to evaluate the feasibility of the system, this paper builds a test platforai to verify the mainstream mobile phone function. The experimental results show that the intelligent system of Android mobile performance test can effectively exploit the potential vulnerabilities under the Android system, and avoid the repetitive manual labor effectively. Ensure the test case of scientific and quality based on the network crawler extract test cases. The proposed method can improve the efficiency of mining failure test cases by introducing collaborative filtering algorithm. In addition, a log storage and parsing engine for testing scenarios is proposed, which greatly improves the eiBficiency of test log analysis. The system effectively improves the accuracy and efficiency of vulnerabilities mining, and single-person multi-machine large-scale mobile phone testing has become possible. At the same time, it provides an important reference value for the follow-up mobile phone test research.
KEY WORDS: Android, Automated testing, Collaborative filtering, Web crawler, Log storag
随着移动互联网的发展,接入互联网的智能手机、平板电脑和可穿戴设备的数量也快速增长,同时运行在智能设备上的各种应用程序迎来爆发。安卓系统得益于其灵活的移植性、开放性和可扩展性被广泛应用于各类移动智能终端设备。普通用户对手机性能的要求逐渐提高,使得各种手机商也开始重视安卓设备的稳定性、易用性和可信赖性。
为了符合国内用户习惯,打开国内手机市场,国内各大手机厂商不惜花费巨大人力成本对安卓系统进行深度定制,例如小米公司的MIUI系统在原生系统的基础上添加了伪甚站识别功能并优化将电模式等功能;锤子科技的Smartisanos开创性地加入了OneStep、Big Bang等新特性,创造出信息处理的全新交互模式,并结合讯飞语音输入,优化文字输入、编辑和分享等功能,大幅提升了安卓手机的性能。安卓系统的开源特性给手机厂商带来诸多优势的同时,也增加了测试难度。近年来每天都有大量基于安卓系统的新产品上市,要保证这些产品的质量,加快产品的上线速度,必须依靠全面正规的测试。很多软件问题和系统问题可以在测试阶段被发现,开发者可以通过测试报告找到当前程序的不足之处,对程序加以改进,从而不断提高程序性能[1]。程序严谨的逻辑性决定了测试工作往往是重复的和低脑力的,并且又需要稳定准确的操作。在这种场景下,计算机的优势远大于人力。同时,传统的手工测试方式具有以下缺点:测试人员的代码能力较低是国内测试人员的一个通病,测试人员很难在代码层面做出测试。由于测试工作的枯燥性和重复性,测试人员长时间工作之后难免会出现各种疏忽,从而造成测试结果的不准确性。一些系统级相关的错误,往往通过压力测试才能发现,很难通过人工测试找到。基于以上问题,自动化测试技术在软件测试领域具有很大的应用前景和应用价值。
安卓手机自动化测试系统是由测试用例提取、测试管理系统、测试用例调度、日志存储和日志分析等模块组成。其中测试用例的提取是整个测试系统的基础,全面优质的测试用例有助于提高测试结果的准确性和全面性。传统的测试用例提取主要是依赖人工筛选,测试人员根据主流软件应用的特点和类别提取测试用例,人工筛选测试用例有很大的主观性和局限性,这种方式筛选的测试用例往往不能覆盖手机的大部分功能,造成一些潜在漏洞不能被及时挖掘,进而影响用户使用体验[2]。同时人工筛选的测试用例往往在功能点上是冗余的,会造成功能的重复测试,无形中增加了测试周期[3]。传统的测试系统一般是单人单机、单人一组机的模式,在这种模式下,一个测试人员只能负责少量的测试机型,由于系统功能的不完整,在测试过程中需要测试人员不停的检查测试状态,造成整个系统的测试效率比较低下。日志分析模块是测试系统的重要一环,失败用例的分析和潜在失败测试用例的相关性推荐[4][5]都需要测试日志作为支撑,然而测试日志一般是非结构化的文本,如何快速地在大量日志中提取出有价值的信息成为测试系统的性能瓶颈。
尽管传统的自动化技术受到广大手机厂商的重视和支持,但是多年来并没有在实际测试中得到大规模应用,究其原因就在于传统的自动化测试系统在测试效率和漏洞挖掘方面存在明显不足。在此背景下,本文在传统的测试平台基础上,针对测试用例提取、测试系统架构、日志存储和日志分析等技术进行了系统研宄,通过吸收传统测试技术的优秀思想,研宄一种新的安卓手机性能自动化测试智能系统,以期化解传统测试系统的缺陷和弱点。
安卓手机性能自动化测试智能系统:
测试用例控制图
手机状态和日志下载页面图
传统爬虫DNS解析性能与新型爬虫DNS解析性能对比
随着时间推移缓存命中数
a与MAE关系图
数据稀疏性与MAE关系
随着文件数据量增大作业分配时间占比变化
測试用例调度器架构图
測试用例执行器架构图
目录
第一章 绪论
1.1项目背景
1.2研宄现状
1.2.1国外研究现况
1.2.2国内研究现况
1.3主要工作
1.3.1研宄内容
1.3.2创新之处
1.3.3应用前景
1.4论文结构
第二章 安卓手机自动化测试智能系统相关技术介绍
2.1安卓系统介绍
2.2安卓系统的特点和优势
2.3安卓系统架构介绍
2.4安卓手机测试的价值
2.5现有的安卓手机自动化测试技术
2.6传统自动化测试系统的不足
2.7关键技术背景介绍
2.7.1网络爬虫介绍
2.7.2推荐算法介绍
2.7.3HDFS存储原理介绍
2.7.4MapReduce执行原理介绍
2.8本章小结
第三章 安卓手机性能自动化测试智能系统关键技术研究与设计
3.1基于网络爬虫的测试用例提取
3.1.1典型的测试用例介绍
3.1.2移动应用网络爬虫架构
3.1.3DNS解析模块优化
3.2潜在失败用例相关性推荐
3.2.1基于属性和奖惩因子的item-based协同过滤算法优化与实现
3.3基于HDFS和Hbase小型测试日志存储优化
3.3.1小文件导致的问题
3.3.2传统的小文件存储问题解决方案
3.3.3改进的小文件存储方案
3.4MapReduce作业执行过程优化
3.5本章小结
第四章 安卓手机性能自动化测试智能系统实现
4.1安卓手机性能自动化测试智能系统架构
4.2测试用例提取层设计与实现
4.2.1网页下载器设计与实现
4.2.2网页解析器实现
4.2.3URL去重模块实现
4.2.4信息存储模块实现
4.2.5测试用例划分和编写实现
4.3控制器实现
4.4测试用例调度器实现
4.5通信模块实现
4.6测试用例执行器实现
4.7日志存储和解析模块实现
4.7.1在Hadoop上解析日志
4.8数据存储模块实现
4.8.1数据表设计
4.8.2数据表操作
4.9用户输入层实现
4.10本章小节
第五章 系统搭建及验证测试
5.1系统环境与配置说明
5.2安卓手机性能自动化测试智能系统测试与验证
5.2.1新型爬虫DNS解析优化性能分析
5.2.2改进后的item-based协同过滤算法性能分析
5.2.3优化后的MapReduce处理作业调度性能分析
5.2.4测试系统稳定性测试
5.2.5漏洞反馈功能性测试
5.3本章小结
第六章 结束语
6.1论文总结
6.2下一步研究工作
参考文献
致谢
攻读硕士期间发表的论文
(如您需要查看本篇毕业设计全文,请您联系客服索取)