Android软件内存泄漏测试技术研究
发布时间:2017-07-01 15:11
本文关键词:Android软件内存泄漏测试技术研究,由笔耕文化传播整理发布。
【摘要】:随着移动设备的普及,越来越多的移动应用被开发。这些移动软件运行在内存有限的设备上,尽管Android系统中存在垃圾回收机制,但Android应用程序仍可能存在内存泄漏问题。内存泄漏问题会导致一些负面的用户体验,例如程序速度变慢,甚至崩溃等。目前,对Android应用内存泄漏问题的研究主要关注发现泄漏现象后如何找出泄漏原因,对于第一步如何发现泄漏现象,相关研究较为缺乏,缺少成熟有效的解决方案。软件测试技术是利用最多的故障发现技术,然而,传统的测试技术并不能直接用于内存泄漏现象的发现,使用这些技术可能会耗费大量的精力在检测泄漏无关的测试执行上,这大大降低了泄漏发现的效率。为了弥补现有技术的不足,本文对Android应用内存泄漏的发现技术进行了研究。首先,提出了一种基于内存泄漏预测模型的测试用例集优化、选择方法,找到集合中疑似存在内存泄漏的测试用例,优先测试,从而提高测试效率。此外,利用所提出的内存泄漏预测模型对应用的GUI事件操作进行评分,基于评分重组高风险的事件操作,生成易暴露泄漏的测试用例,从而构造面向泄漏检测的增强测试用例集。具体工作包括:(1)对存在内存泄漏的应用的代码进行了分析,提出了内存泄漏测试执行的代码级特征。将代码特征抽象为内存特征向量,从而为内存预测模型作出准备。(2)建立了一个内存泄漏预测模型,通过机器学习中的Ranking SVM算法,对已收集的内存特征向量进行打分、排序,以确定每一个测试用例是否可能导致内存泄漏。根据泄漏预测模型给出的评分和排序,提出了测试用例的选择排序算法,从而加速泄漏检测过程。(3)对Android软件的GUI进行分析,得到GUI事件-内存流程图,结合内存泄漏预测模型找出的具有内存泄漏风险的事件操作,生成能够消耗大量内存的测试用例,构造面向泄漏检测的增强测试用例集。最后,通过在若干开源的Android应用程序进行测试,检验了本文所提出的方法的有效性,表明这些方法能够帮助用户提高测试效率。
【关键词】:Android 内存泄漏 机器学习 测试用例选择 测试生成
【学位授予单位】:南京航空航天大学
【学位级别】:硕士
【学位授予年份】:2016
【分类号】:TP311.53;TP316
【目录】:
- 摘要4-5
- ABSTRACT5-10
- 第一章 绪论10-16
- 1.1 研究背景和意义10-11
- 1.2 国内外研究现状11-13
- 1.2.1 内存泄漏研究现状11-13
- 1.2.2 基于测试用例的选择和排序13
- 1.3 本文的主要工作13-14
- 1.4 本文的组织结构14-16
- 第二章 相关概念和工具介绍16-24
- 2.1 Android系统介绍16-18
- 2.2 插桩及插桩工具介绍18-19
- 2.3 内存泄漏概述19-20
- 2.4 Android内存管理机制20-23
- 2.4.1 Android的进程管理20
- 2.4.2 Android内存泄漏原因20-23
- 2.4.3 Android内存泄漏的一些表现23
- 2.5 本章小结23-24
- 第三章 基于内存泄漏预测模型的测试用例优先级框架24-42
- 3.1 测试用例优先级框架总体概述24-28
- 3.1.1 测试用例框架提出的意义24-26
- 3.1.2 具体步骤和输入输出数据26-28
- 3.2 Android程序具有内存泄漏风险的代码特征28-34
- 3.2.1 基于Java语言内存管理指令的使用导致内存泄漏29-31
- 3.2.2 基于系统资源的使用导致内存泄漏31-32
- 3.2.3 基于应用框架资源的使用导致内存泄漏32-33
- 3.2.4 内存特征向量概念定义33-34
- 3.2.5 内存泄漏风险代码特征分类的优点和不足34
- 3.3 内存泄漏预测模型34-38
- 3.3.1 内存泄漏预测模型的输入数据34-35
- 3.3.2 内存泄漏预测模型的构建35-36
- 3.3.3 利用Ranking SVM算法获得权重向量36-38
- 3.4 案例分析38-40
- 3.5 本章小结40-42
- 第四章 内存泄漏增强测试用例生成框架42-49
- 4.1 内存泄漏测试用例生成框架结构42-43
- 4.2 Android程序的测试用例筛选43-44
- 4.3 Android程序的测试用例生成44-46
- 4.3.1 GUI事件内存流程图44-45
- 4.3.2 基于深度优先搜索的测试用例选择45-46
- 4.4 案例分析46-48
- 4.5 本章小结48-49
- 第五章 系统实现与实验结果分析49-59
- 5.1 系统的设计与实现49-54
- 5.1.1 系统设计49-50
- 5.1.2 系统实现50-54
- 5.2 实验结果分析54-58
- 5.2.1 实验对象54-55
- 5.2.2 实验结果分析与讨论55-58
- 5.3 本章小结58-59
- 第六章总结与展望59-61
- 6.1 总结59
- 6.2 未来工作展望59-61
- 参考文献61-66
- 致谢66-67
- 攻读硕士学位期间完成的论文以及学术成果67
- 攻读硕士学位期间参加科研项目和获奖情况67
本文关键词:Android软件内存泄漏测试技术研究,,由笔耕文化传播整理发布。
本文编号:506394
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/506394.html