当前位置:首页 > 家装 > 装修报价 > 文章正文

自动化测试实战:分享一次机能测试中的内存泄漏案例(图)

编辑:[db:作者] 时间:2024-08-25 01:36:36

什么是内存泄露?

自动化测试实战:分享一次机能测试中的内存泄漏案例(图)

内存泄露(Memory Leak)是指程序中已动态分配的堆内存由于某种缘故原由程序未开释或无法开释,造成系统内存的摧残浪费蹂躏,导致程序运行速率减慢乃至系统崩溃等严重后果[1]。

由于内存泄露导致的毛病具有暗藏性、累积性的特点,技能职员常日不会直接不雅观察到干系缺点症状,而是通过系统性能表现逐渐降落或系统崩溃创造此类毛病。

若何创造内存泄露毛病?

疲倦测试是一样平常采取稠浊交易场景(待测交易按照一定比例),以一定的压力(常日不低于目标TPS)实行压力测试,验证稠浊场景永劫光实行情形下系统的性能表现。

疲倦测试能够验证稠浊场景下系统有无永劫光无端障稳定运行的能力,是否有内存泄露等性能问题。

一样平常推举测试实行时长不低于4小时(交易量大于日交易量)。

系统若存在内存泄露问题,常日会在疲倦测试的过程中创造此类毛病。

测试过程

测试背景

运用程序支配在PaaS上,PaaS资源为1个2C4G的pod;利用Oracle数据库,铺底数据500万,造数逻辑为一个客户ID对应5个不同的关联人ID,每个关联人ID下有10个产品。

每次发起参数为客户ID的查询要求时,将返回50条产品信息。

监控过程

疲倦测试时,4个并发用户的情形下,TPS先保持正常,运行40分钟旁边TPS逐渐低落、相应韶光上升,直到做事报错、涌现失落败的要求。

持续一段韶光后,相应韶光规复正常、TPS规复正常,这一征象周期反复涌现。

监控创造,TPS低落期间的CPU利用率一贯在2C附近,靠近100%利用;凌晨2:40旁边疲倦测试结束后,CPU利用率规复正常。

通过利用性能监控工具Dynatrace创造,ParOldGen用满后不回收,交易挂起量增多,相应韶光长。

天生HeapDump时,会被动实行GC,即内存回收,此时对合时光点的TPS上升,规复正常。
不该用上述方法,均匀1个小时会主动回收一次,然后循环往来来往。

再并未主动内存回收的一个小时内,相应韶光逐渐增大,TPS降落。

同时监控数据库做事器,创造数据库做事器的CPU和内存利用率并不高。
初步判断程序存在内存泄露问题,风险较大。

剖析并办理问题

通过阅读程序代码,创造SQL语句并不繁芜,只涉及到大略的where条件查询和group by分组。

但程序中涌现了与下面代码类似的逻辑:

由于for循环体中涌现了大量创建ArrayList工具的操作,导致大量内存被花费得不到开释。
修正代码逻辑如下:

通过将创建工具的过程放在for循环外,避免了内存的多次分配与过多占用,从而提升了运用程序的性能表现,办理了内存泄露的问题。

[1]王皓. 一种内存泄露检测技能的研究和实现[D].北京交通大学,2008.

文末福利——推举一个《Python自动化测试学习互换群》给大家:

请关注+私信回答:"头条" 就可以免费拿到软件测试学习资料,同时进入群学习互换~~

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除,如需转载请保留原文地址:http://www.baanla.com/lz/zxbj/64771.html

XML地图 | 自定链接

Copyright 2005-20203 www.baidu.com 版权所有 | 琼ICP备2023011765号-4 | 统计代码

声明:本站所有内容均只可用于学习参考,信息与图片素材来源于互联网,如内容侵权与违规,请与本站联系,将在三个工作日内处理,联系邮箱:123456789@qq.com