面向Web应用内存膨胀的测试脚本预测与增强技术研究

来源 :南京航空航天大学 | 被引量 : 0次 | 上传用户:sntatgh
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
近年来,Web应用发展迅速,广泛地应用于社会各个领域,同时也带来了越来越多的问题,其中一个重要问题是内存膨胀(Memory Bloat)。内存膨胀是Web应用等连续工作型软件中的一种常见缺陷。其表现通常是随着系统不断运行,内存消耗越来越大,进而影响系统性能,甚至导致宕机。人们已对Web应用以及其它一些应用中的内存膨胀问题进行了较多研究,然而,一般的测试方法缺乏导向性,在执行测试用例的过程中,首先测试的可能是不容易揭示内存膨胀缺陷的测试用例。一个用于内存膨胀问题检测的测试用例通常需要运行较长时间,因此,如果先执行不易发现缺陷的测试用例,可能浪费较多时间等测试资源,降低了缺陷发现效率。为解决Java Web应用上内存膨胀问题测试效率不高的问题,本文提出了一种面向Java Web应用内存膨胀的测试脚本预测排序方法,预测测试脚本引发内存膨胀的风险(即揭示缺陷的可能性),然后对测试脚本进行优先级排序,以优化测试执行顺序。同时提出一种面向内存膨胀的测试脚本优化与增强方法,通过优化和增强功能测试脚本生成一个能够更明显暴露内存膨胀缺陷的性能测试脚本。具体工作包括:(1)提出一种面向Web应用内存膨胀的测试脚本预测排序方法。对Web应用进行执行跟踪,收集内存膨胀风险特征数据来构建特征矩阵,基于特征矩阵,使用机器学习方法训练内存膨胀预测模型。依据预测模型对新的待执行测试脚本进行内存膨胀风险预测和排序,高风险脚本优先执行,加快Web应用程序内存膨胀测试的整体流程,提高内存膨胀缺陷发现效率。(2)提出一个面向Web应用内存膨胀的脚本优化与增强方法。通过去除测试脚本中与Web应用服务器端执行无关的测试语句来优化脚本结构,加速脚本执行速度。通过为脚本自动添加循环或并发操作,构造能够更明显暴露内存膨胀缺陷的性能测试测试脚本。(3)最后,本文实现了一个Web应用内存膨胀测试工具来支持测试脚本预测排序和优化与增强方法,并通过在若干真实Java Web应用程序上进行测试,检验了所提出方法的有效性。
其他文献
从上网获取信息、到主动分享信息,人们的生活与网络愈发紧密。在3G、4G时代,如何借助人的力量去获得更多信息,需要深度思考。智能手机的发展,又赋予人新的能力去做更多事情,
传统的LTE无线蜂窝网络以单层结构为主,只部署了宏基站。但是,仅仅包含宏小区的常规蜂窝系统不足以迎接未来移动宽带系统提出的挑战。未来将有更多的业务分布在室内和热点地
炉内受热面管壁温度的实时监测,对避免运行超温和保障高参数大容量机组安全有重要的意义。超临界电站锅炉高温受热面管壁温度较高,传统的测温手段如热电偶等,在复杂空间下布线困难,测点数量有限,安装不易。基于声表面波的无线无源测量技术,无需布线,体积较小,空间结构限制较小,可在传统测温手段无法安装的位置进行高温测量。因此,本文以电站锅炉高温受热面的测温方法为研究背景,开展了高温环境下的声表面波温度传感器的研
随着现代无线移动通信技术的快速发展,作为终端用户的我们也能够享受到多种多样形态各异的信息通信服务。但信息通信中的无线资源并不是取之不尽用之不竭,那么作为科研工作者
为了解决移动通信网络的快速发展,用户流量急剧增加给移动蜂窝网络带来的巨大挑战,进一步提高用户在室内和室外热点地区的网络质量,我国于 2012 年底率先提出了 LTE-Hi (Long
不可分解模是代数表示论和环模理论中十分重要的概念.自同态环为除环的模作为一类特殊的不可分解模,也一直被许多学者所关注.注意到,当K为代数闭域时,一些特殊的K-代数A上的
LTE (Long Term Evolution)是目前在世界上广泛应用的移动通信系统,为了满足日益增长的移动数据业务,LTE系统把目光投向了非授权频段。为了保证LTE与非授权频段上的Wi-Fi等其
随着信息技术的发展,Web应用已渗入到生活的各个领域,政府、公司、消费者等也越来越依赖互联网。因此,确保Web应用的可靠性也变得愈加关键。软件测试是评估并提高Web应用可靠
我国社会经济处于还在发展的阶段,人口日渐增长,致使一直在增加对土地的需求。目前供我国发展和利用的土地资源非常欠缺,农村居民点用地也一直没有统一的规划,导致农村地区土地浪费情况严重,大部分地区人均居民点用地严重超标,很多闲置地无法得到更好地利用。本文以略阳县农村居民点为案例对该地农村居民点集约利用等与土地利用率相关的方面进行研究,找出略阳县土地利用率低的原因并提出对策,可以缓解来自城乡用地矛盾所产生
随着网络管理应用场景的不断复杂化和用户功能需求的不断增加,传统网络管理系统的弊端越来越明显。这主要体现在如下三点:一是系统模块间的耦合性太强,执行模式过于单一,缺乏