发现内存泄漏bug的测试用例设计方法[发明专利]

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201911398181.7
(22)申请日 2019.12.30
(71)申请人 杭州安恒信息技术股份有限公司
地址 310051 浙江省杭州市滨江区西兴街
道联慧街188号
(72)发明人 苏立莹 范渊 
(74)专利代理机构 杭州中成专利事务所有限公
司 33212
代理人 金祺 周世骏
(51)Int.Cl.
G06F  11/36(2006.01)
(54)发明名称
发现内存泄漏bug的测试用例设计方法
(57)摘要
本发明提供一种发现内存泄漏bug的测试用
例设计方法,包括以下步骤:1)、运用压力测试工
具覆盖所测试系统的所有业务接口;2)、模拟场
景;3)、执行压力测试。本发明旨在解决集式架
构的系统中,如何通过测试用例的设计和排列组
合,尽可能的发现所测系统的内存泄漏bug。在高
可用方案普遍应用于各大互联网系统的今天,本
发明能最大的降低熔断机制对系统的负面影响,
保证系统数据的全面性和准确性。在系统恢复
后,能追捕到系统异常期间的交易,保证交易存
量数据和增量数据准确且实时。权利要求书1页  说明书3页  附图1页CN 111209194 A 2020.05.29
C N  111209194
A
1.发现内存泄漏bug的测试用例设计方法,其特征在于:包括以下步骤:
1)、运用压力测试工具覆盖所测试系统的所有业务接口;
2)、模拟场景
3)、执行压力测试。
2.根据权利要求1所述的发现内存泄漏bug的测试用例设计方法,其特征在于:
在步骤1中,测试工具为jmeter/loadrunner。
3.根据权利要求2所述的发现内存泄漏bug的测试用例设计方法,其特征在于:
步骤3压力测试中设置TPS,time,线程数。
4.根据权利要求3所述的发现内存泄漏bug的测试用例设计方法,其特征在于:
在步骤2中:使用边界值法和场景法模拟。
5.根据权利要求4所述的发现内存泄漏bug的测试用例设计方法,其特征在于:
边界值法包括:Tps设置数值覆盖最高峰值,压力测试时间为真实生产系统的时间;场景法包括:通过修改数据库中的某个对应的表中的某个字段来仿造不同的交易场景,交易场景包括成功场景、失败场景、超时场景和高可用场景。
权 利 要 求 书1/1页CN 111209194 A
发现内存泄漏bug的测试用例设计方法
技术领域
[0001]本发明涉及一种bug的测试用例设计方法,具体涉及一种发现内存泄漏bug的测试用例设计方法。
背景技术
[0002]内存泄漏(MemoryLeak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。[0003]内存泄漏导致的程序bug,不仅是性能测试阶段要关注的内容,也是系统测试中要出的问题所在。在系统测试阶段,显性的内存泄漏问题较容易发现,他在压力测试过程中,就能明显发现系统内存的显著升高。但是对所测试系统来说,有隐式的内存泄漏问题,较难发现,并非常规的压力测试就能测出。
[0004]内存泄漏问题,根据发生场景的不同,大致可以分为以下四类:
[0005]1、常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。
[0006]2、偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。
[0007]3、一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅且一块内存发生泄漏。比如,在类的构造函数中分配内存,在析构函数中却没有释放该内存,所以内存泄漏只会发生一次。
[0008]4、隐式内存泄漏。程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏,因为最终程序释放了所有申请的内存。但是对于一个服务器程序,需要运行几天,几周甚至几个月,不及时释放内存也可能导致最终耗尽系统的所有内存。所以,称这类内存泄漏为隐式内存泄漏。
[0009]因此,需要对现有技术进行改进。
发明内容
[0010]本发明要解决的技术问题是提供一种高效的发现内存泄漏bug的测试用例设计方法。
[0011]为解决上述技术问题,本发明提供一种发现内存泄漏bug的测试用例设计方法,包括以下步骤:
[0012]1)、运用压力测试工具覆盖所测试系统的所有业务接口;
[0013]2)、模拟场景;
[0014]3)、执行压力测试。
[0015]作为对本发明发现内存泄漏bug的测试用例设计方法的改进:
[0016]在步骤1中,测试工具为jmeter/loadrunner。
[0017]作为对本发明发现内存泄漏bug的测试用例设计方法的进一步改进:
[0018]步骤3压力测试中设置TPS,time,线程数。
[0019]作为对本发明发现内存泄漏bug的测试用例设计方法的进一步改进:
[0020]在步骤2中:使用边界值法和场景法模拟。
[0021]作为对本发明发现内存泄漏bug的测试用例设计方法的进一步改进:
[0022]边界值法包括:Tps设置数值覆盖最高峰值,压力测试时间为真实生产系统的时间;
[0023]场景法包括:通过修改数据库中的某个对应的表中的某个字段来仿造不同的交易场景,交易场景包括成功场景、失败场景、超时场景和高可用场景。
[0024]本发明发现内存泄漏bug的测试用例设计方法的技术优势为:
[0025]本发明旨在解决集式架构的系统中,如何通过测试用例的设计和排列组合,尽可能的发现所测系统的内存泄漏bug。
[0026]在高可用方案普遍应用于各大互联网系统的今天,本发明能最大的降低熔断机制对系统的负面影响,保证系统数据的全面性和准确性。在系统恢复后,能追捕到系统异常期间的交易,保证交易存量数据和增量数据准确且实时。
附图说明
[0027]下面结合附图对本发明的具体实施方式作进一步详细说明。
[0028]图1为本发明发现内存泄漏bug的测试用例设计方法的流程示意图。
具体实施方式
[0029]下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此。
[0030]实施例1、发现内存泄漏bug的测试用例设计方法,如图1所示;
[0031]一、本发明的使用场景为:
[0032]本发明适应于集式架构的业务系统,所测试系统交易数据量大,并发数高;[0033]二、本发明的系统架构说明:
[0034]所测试系统为集式的系统,系统服务安装到多台主机上,并通过负载均衡组件,将交易通过一定的规则发送到不同的主机上。系统应用的数据库记录方式是传统关系型数据库+redis缓存;
[0035]测试用例八大要素:序号、用例标题、预置条件、优先级、测试输入、操作步骤、预期结果、实际结果。
[0036]优先级根据具体的测试情况,如果测试的过程中,公司对内存泄漏的问题重视并有具体的标准,那么优先级可以评为中或高,序号递增即可
[0037]三、测试用例设计:
[0038]  3.1、测试工具:jmeter/loadrunner。运用压力测试工具覆盖所测试系统的所有业务接口,尽可能模拟真实的并发情况。
[0039]例如有业务功能设计到后续交易,原交易和后续交易的组合以及执行顺序要接近真实的业务场景。
[0040]  3.2、针对发现内存泄漏的bug的场景,本发明可以使用边界值法和场景法:[0041]  3.2.1、边界值法:Tps设置数值覆盖最高峰值,压力测试时间,要尽可能接近真实生产系统的时间。
[0042]例如生产系统中,高并发量的交易时间集中在18:00-23:00,那测试环境压力测试时间不少于5小时。以此通过高压的方式来发现内存泄漏的代码漏洞。
[0043]  3.2.2,场景法:本发明涉及的场景有成功场景,失败场景,超时场景,高可用场景。失败场景、超时场景和高可用场景均为异常场景。
[0044]通过这四种场景来提高代码覆盖率,充分遍历相应的每个代码。
[0045]例如:支付宝支付金钱的场景:分为支付成功,支付失败,支付时许久未提交密码或页面搁置时间过长导致超时,高可用(负责支付的那台服务器宕机,另一台服务器立马接替它的所有业务,相当与他的备选);这四种场景在数据库中,每个结果都会对应显示在数据库的某个表中的某个字段记录,比如(st
atus字段:成功-1,失败-2,超时-3,高可用-4),通常一些异常情况在页面操作,可能复现不出来某种场景,比如失败场景,此时就可以通过修改数据库表里的字段来实现每种场景。
[0046]有些交易场景在真实测试中可能复现不出来,所以可以通过修改数据库中的某个对应的表中的某个字段来仿造不同的交易场景,一般该字段的名字可能是status,也可能是别的。
[0047]  3.3、针对内存泄漏问题的测试用例设计如下:
[0048]用例标题:排查内存泄漏-成功/失败/超时/高可用场景;
[0049]预置条件:手工创造成功/失败/超时/高可用场景;
[0050]测试输入:1,TPS设置成最高值(按具体情况填写即可);
[0051]2,压力测试时间:300mins;
[0052]3,设置线程数(按具体情况填写即可);
[0053]操作步骤:1,修改数据库中的数据或后台缓存数据,制造异常;
[0054]2,执行压力测试,设置TPS,time,线程数;
[0055]预期结果:发现内存泄漏问题并定位,请开发解决;
[0056]实际结果:发现内存泄漏问题并定位,请开发解决;
[0057]高可用用例场景时注意点:压力测试时,要涉及到高可用场景中后台服务异常的情况。例如常见的集式系统,有分发交易到不同后台主机的机制。此种情况下,制造其中某一台或多台后台主机服务异常,让业务流量发送到其他主机。或者分层式系统,制造下游业务系统后台服务异常。要结合所测试系统的架构,结合实际业务场景,涉及压力测试用例。
[0058]以上的测试用例设计,目的是为了让压力测试过程中尽可能覆盖到所有代码分支,以便于更好的发现不同的内存泄漏问题,保证系统的可用性。
[0059]最后,还需要注意的是,以上列举的仅是本发明的若干个具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。

本文发布于:2024-09-23 03:15:52,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/422069.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:内存   泄漏   场景   系统
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议