论文部分内容阅读
随着移动设备的普及,越来越多的移动应用被开发。这些移动软件运行在内存有限的设备上,尽管Android系统中存在垃圾回收机制,但Android应用程序仍可能存在内存泄漏问题。内存泄漏问题会导致一些负面的用户体验,例如程序速度变慢,甚至崩溃等。目前,对Android应用内存泄漏问题的研究主要关注发现泄漏现象后如何找出泄漏原因,对于第一步如何发现泄漏现象,相关研究较为缺乏,缺少成熟有效的解决方案。软件测试技术是利用最多的故障发现技术,然而,传统的测试技术并不能直接用于内存泄漏现象的发现,使用这些技术可能会耗费大量的精力在检测泄漏无关的测试执行上,这大大降低了泄漏发现的效率。为了弥补现有技术的不足,本文对Android应用内存泄漏的发现技术进行了研究。首先,提出了一种基于内存泄漏预测模型的测试用例集优化、选择方法,找到集合中疑似存在内存泄漏的测试用例,优先测试,从而提高测试效率。此外,利用所提出的内存泄漏预测模型对应用的GUI事件操作进行评分,基于评分重组高风险的事件操作,生成易暴露泄漏的测试用例,从而构造面向泄漏检测的增强测试用例集。具体工作包括:(1)对存在内存泄漏的应用的代码进行了分析,提出了内存泄漏测试执行的代码级特征。将代码特征抽象为内存特征向量,从而为内存预测模型作出准备。(2)建立了一个内存泄漏预测模型,通过机器学习中的Ranking SVM算法,对已收集的内存特征向量进行打分、排序,以确定每一个测试用例是否可能导致内存泄漏。根据泄漏预测模型给出的评分和排序,提出了测试用例的选择排序算法,从而加速泄漏检测过程。(3)对Android软件的GUI进行分析,得到GUI事件-内存流程图,结合内存泄漏预测模型找出的具有内存泄漏风险的事件操作,生成能够消耗大量内存的测试用例,构造面向泄漏检测的增强测试用例集。最后,通过在若干开源的Android应用程序进行测试,检验了本文所提出的方法的有效性,表明这些方法能够帮助用户提高测试效率。