CN111209194B - 发现内存泄漏bug的测试用例设计方法 - Google Patents
发现内存泄漏bug的测试用例设计方法 Download PDFInfo
- Publication number
- CN111209194B CN111209194B CN201911398181.7A CN201911398181A CN111209194B CN 111209194 B CN111209194 B CN 111209194B CN 201911398181 A CN201911398181 A CN 201911398181A CN 111209194 B CN111209194 B CN 111209194B
- Authority
- CN
- China
- Prior art keywords
- scene
- memory leakage
- test
- memory
- bug
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 60
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000013461 design Methods 0.000 title claims abstract description 20
- 230000002159 abnormal effect Effects 0.000 claims abstract description 7
- 238000004519 manufacturing process Methods 0.000 claims description 7
- 230000005856 abnormality Effects 0.000 claims description 4
- 238000011161 development Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 claims description 4
- 238000004088 simulation Methods 0.000 claims description 2
- 238000013024 troubleshooting Methods 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 abstract description 3
- 230000006872 improvement Effects 0.000 description 5
- 230000007547 defect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种发现内存泄漏bug的测试用例设计方法,包括以下步骤:1)、运用压力测试工具覆盖所测试系统的所有业务接口;2)、模拟场景;3)、执行压力测试。本发明旨在解决集群式架构的系统中,如何通过测试用例的设计和排列组合,尽可能的发现所测系统的内存泄漏bug。在高可用方案普遍应用于各大互联网系统的今天,本发明能最大的降低熔断机制对系统的负面影响,保证系统数据的全面性和准确性。在系统恢复后,能追捕到系统异常期间的交易,保证交易存量数据和增量数据准确且实时。
Description
技术领域
本发明涉及一种bug的测试用例设计方法,具体涉及一种发现内存泄漏bug的测试用例设计方法。
背景技术
内存泄漏(MemoryLeak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。
内存泄漏导致的程序bug,不仅是性能测试阶段要关注的内容,也是系统测试中要找出的问题所在。在系统测试阶段,显性的内存泄漏问题较容易发现,他在压力测试过程中,就能明显发现系统内存的显著升高。但是对所测试系统来说,有隐式的内存泄漏问题,较难发现,并非常规的压力测试就能测出。
内存泄漏问题,根据发生场景的不同,大致可以分为以下四类:
1、常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。
2、偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。
3、一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅且一块内存发生泄漏。比如,在类的构造函数中分配内存,在析构函数中却没有释放该内存,所以内存泄漏只会发生一次。
4、隐式内存泄漏。程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏,因为最终程序释放了所有申请的内存。但是对于一个服务器程序,需要运行几天,几周甚至几个月,不及时释放内存也可能导致最终耗尽系统的所有内存。所以,称这类内存泄漏为隐式内存泄漏。
因此,需要对现有技术进行改进。
发明内容
本发明要解决的技术问题是提供一种高效的发现内存泄漏bug的测试用例设计方法。
为解决上述技术问题,本发明提供一种发现内存泄漏bug的测试用例设计方法,包括以下步骤:
1)、运用压力测试工具覆盖所测试系统的所有业务接口;
2)、模拟场景;
3)、执行压力测试。
作为对本发明发现内存泄漏bug的测试用例设计方法的改进:
在步骤1中,测试工具为jmeter/loadrunner。
作为对本发明发现内存泄漏bug的测试用例设计方法的进一步改进:
步骤3压力测试中设置TPS,time,线程数。
作为对本发明发现内存泄漏bug的测试用例设计方法的进一步改进:
在步骤2中:使用边界值法和场景法模拟。
作为对本发明发现内存泄漏bug的测试用例设计方法的进一步改进:
边界值法包括:Tps设置数值覆盖最高峰值,压力测试时间为真实生产系统的时间;
场景法包括:通过修改数据库中的某个对应的表中的某个字段来仿造不同的交易场景,交易场景包括成功场景、失败场景、超时场景和高可用场景。
本发明发现内存泄漏bug的测试用例设计方法的技术优势为:
本发明旨在解决集群式架构的系统中,如何通过测试用例的设计和排列组合,尽可能的发现所测系统的内存泄漏bug。
在高可用方案普遍应用于各大互联网系统的今天,本发明能最大的降低熔断机制对系统的负面影响,保证系统数据的全面性和准确性。在系统恢复后,能追捕到系统异常期间的交易,保证交易存量数据和增量数据准确且实时。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细说明。
图1为本发明发现内存泄漏bug的测试用例设计方法的流程示意图。
具体实施方式
下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此。
实施例1、发现内存泄漏bug的测试用例设计方法,如图1所示;
一、本发明的使用场景为:
本发明适应于集群式架构的业务系统,所测试系统交易数据量大,并发数高;
二、本发明的系统架构说明:
所测试系统为集群式的系统,系统服务安装到多台主机上,并通过负载均衡组件,将交易通过一定的规则发送到不同的主机上。系统应用的数据库记录方式是传统关系型数据库+redis缓存;
测试用例八大要素:序号、用例标题、预置条件、优先级、测试输入、操作步骤、预期结果、实际结果。
优先级根据具体的测试情况,如果测试的过程中,公司对内存泄漏的问题重视并有具体的标准,那么优先级可以评为中或高,序号递增即可
三、测试用例设计:
3.1、测试工具:jmeter/loadrunner。运用压力测试工具覆盖所测试系统的所有业务接口,尽可能模拟真实的并发情况。
例如有业务功能设计到后续交易,原交易和后续交易的组合以及执行顺序要接近真实的业务场景。
3.2、针对发现内存泄漏的bug的场景,本发明可以使用边界值法和场景法:
3.2.1、边界值法:Tps设置数值覆盖最高峰值,压力测试时间,要尽可能接近真实生产系统的时间。
例如生产系统中,高并发量的交易时间集中在18:00-23:00,那测试环境压力测试时间不少于5小时。以此通过高压的方式来发现内存泄漏的代码漏洞。
3.2.2,场景法:本发明涉及的场景有成功场景,失败场景,超时场景,高可用场景。失败场景、超时场景和高可用场景均为异常场景。
通过这四种场景来提高代码覆盖率,充分遍历相应的每个代码。
例如:支付宝支付金钱的场景:分为支付成功,支付失败,支付时许久未提交密码或页面搁置时间过长导致超时,高可用(负责支付的那台服务器宕机,另一台服务器立马接替它的所有业务,相当与他的备选);这四种场景在数据库中,每个结果都会对应显示在数据库的某个表中的某个字段记录,比如(status字段:成功-1,失败-2,超时-3,高可用-4),通常一些异常情况在页面操作,可能复现不出来某种场景,比如失败场景,此时就可以通过修改数据库表里的字段来实现每种场景。
有些交易场景在真实测试中可能复现不出来,所以可以通过修改数据库中的某个对应的表中的某个字段来仿造不同的交易场景,一般该字段的名字可能是status,也可能是别的。
3.3、针对内存泄漏问题的测试用例设计如下:
用例标题:排查内存泄漏-成功/失败/超时/高可用场景;
预置条件:手工创造成功/失败/超时/高可用场景;
测试输入:1,TPS设置成最高值(按具体情况填写即可);
2,压力测试时间:300mins;
3,设置线程数(按具体情况填写即可);
操作步骤:1,修改数据库中的数据或后台缓存数据,制造异常;
2,执行压力测试,设置TPS,time,线程数;
预期结果:发现内存泄漏问题并定位,请开发解决;
实际结果:发现内存泄漏问题并定位,请开发解决;
高可用用例场景时注意点:压力测试时,要涉及到高可用场景中后台服务异常的情况。例如常见的集群式系统,有分发交易到不同后台主机的机制。此种情况下,制造其中某一台或多台后台主机服务异常,让业务流量发送到其他主机。或者分层式系统,制造下游业务系统后台服务异常。要结合所测试系统的架构,结合实际业务场景,涉及压力测试用例。
以上的测试用例设计,目的是为了让压力测试过程中尽可能覆盖到所有代码分支,以便于更好的发现不同的内存泄漏问题,保证系统的可用性。
最后,还需要注意的是,以上列举的仅是本发明的若干个具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。
Claims (1)
1.发现内存泄漏bug的测试用例设计方法,其特征在于:包括以下步骤:
1)、测试工具为jmeter/loadrunner,运用压力测试工具覆盖所测试系统的所有业务接口;从而模拟真实的并发情况;
2)、模拟场景:
针对发现内存泄漏的bug的场景,使用边界值法和场景法:
边界值法:Tps设置数值覆盖最高峰值,压力测试时间,接近真实生产系统的时间;以此通过高压的方式来发现内存泄漏的代码漏洞;
场景法:通过修改数据库中的某个对应的表中的某个字段来仿造不同的交易场景,涉及的场景有成功场景、失败场景、超时场景和高可用场景;失败场景、超时场景和高可用场景均为异常场景;
通过上述四种场景来提高代码覆盖率,充分遍历相应的每个代码;
3)、执行压力测试:
针对内存泄漏问题的测试用例设计如下:
用例标题:排查内存泄漏-成功/失败/超时/高可用场景;
预置条件:手工创造成功/失败/超时/高可用场景;
测试输入:1,TPS设置成最高值;
2,压力测试时间为真实生产系统的时间;
3,设置线程数;
操作步骤:1,修改数据库中的数据或后台缓存数据,制造异常;
2,执行压力测试,设置TPS,time,线程数;
预期结果:发现内存泄漏问题并定位,请开发解决;
实际结果:发现内存泄漏问题并定位,请开发解决;
高可用用例场景时注意点:压力测试时,要涉及到高可用场景中后台服务异常的情况;此种情况下,制造其中某一台或多台后台主机服务异常,让业务流量发送到其他主机;或者分层式系统,制造下游业务系统后台服务异常;要结合所测试系统的架构,结合实际业务场景,涉及压力测试用例;
以上的测试用例设计,目的是为了让压力测试过程中覆盖到所有代码分支,以便于更好的发现不同的内存泄漏问题,保证系统的可用性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911398181.7A CN111209194B (zh) | 2019-12-30 | 2019-12-30 | 发现内存泄漏bug的测试用例设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911398181.7A CN111209194B (zh) | 2019-12-30 | 2019-12-30 | 发现内存泄漏bug的测试用例设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111209194A CN111209194A (zh) | 2020-05-29 |
CN111209194B true CN111209194B (zh) | 2023-12-19 |
Family
ID=70784169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911398181.7A Active CN111209194B (zh) | 2019-12-30 | 2019-12-30 | 发现内存泄漏bug的测试用例设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111209194B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063376A (zh) * | 2011-02-16 | 2011-05-18 | 哈尔滨工程大学 | 一种测试用例选取方法 |
CN102799532A (zh) * | 2012-07-20 | 2012-11-28 | 上海斐讯数据通信技术有限公司 | 测试用例的设计方法及系统 |
CN104090839A (zh) * | 2014-07-02 | 2014-10-08 | 中国银行股份有限公司 | 异常场景模拟测试方法及装置 |
CN105808369A (zh) * | 2016-03-29 | 2016-07-27 | 北京系统工程研究所 | 一种基于符号执行的内存泄漏检测方法 |
CN106855841A (zh) * | 2015-12-09 | 2017-06-16 | 北京神州泰岳软件股份有限公司 | 一种系统内存分析方法和装置 |
CN107229559A (zh) * | 2016-03-23 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 针对业务系统的测试完整度的检测方法和装置 |
CN108647148A (zh) * | 2018-05-15 | 2018-10-12 | 深圳市同维通信技术有限公司 | 移动端应用程序的测试方法、装置、设备及存储介质 |
CN109344076A (zh) * | 2018-10-22 | 2019-02-15 | 浙江执御信息技术有限公司 | 一种基于JMeter和Jenkins的接口自动化测试方法及其装置 |
CN110309067A (zh) * | 2019-06-14 | 2019-10-08 | 吉旗(成都)科技有限公司 | 基于安卓系统的固定场景压力测试方法及装置 |
CN110618924A (zh) * | 2019-09-19 | 2019-12-27 | 浙江诺诺网络科技有限公司 | 一种web应用系统的链路压力测试方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8381197B2 (en) * | 2004-03-15 | 2013-02-19 | Ramco Systems Limited | Method and system for testing a software development activity |
-
2019
- 2019-12-30 CN CN201911398181.7A patent/CN111209194B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063376A (zh) * | 2011-02-16 | 2011-05-18 | 哈尔滨工程大学 | 一种测试用例选取方法 |
CN102799532A (zh) * | 2012-07-20 | 2012-11-28 | 上海斐讯数据通信技术有限公司 | 测试用例的设计方法及系统 |
CN104090839A (zh) * | 2014-07-02 | 2014-10-08 | 中国银行股份有限公司 | 异常场景模拟测试方法及装置 |
CN106855841A (zh) * | 2015-12-09 | 2017-06-16 | 北京神州泰岳软件股份有限公司 | 一种系统内存分析方法和装置 |
CN107229559A (zh) * | 2016-03-23 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 针对业务系统的测试完整度的检测方法和装置 |
CN105808369A (zh) * | 2016-03-29 | 2016-07-27 | 北京系统工程研究所 | 一种基于符号执行的内存泄漏检测方法 |
CN108647148A (zh) * | 2018-05-15 | 2018-10-12 | 深圳市同维通信技术有限公司 | 移动端应用程序的测试方法、装置、设备及存储介质 |
CN109344076A (zh) * | 2018-10-22 | 2019-02-15 | 浙江执御信息技术有限公司 | 一种基于JMeter和Jenkins的接口自动化测试方法及其装置 |
CN110309067A (zh) * | 2019-06-14 | 2019-10-08 | 吉旗(成都)科技有限公司 | 基于安卓系统的固定场景压力测试方法及装置 |
CN110618924A (zh) * | 2019-09-19 | 2019-12-27 | 浙江诺诺网络科技有限公司 | 一种web应用系统的链路压力测试方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111209194A (zh) | 2020-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109726093B (zh) | 用于执行测试用例的方法、设备和计算机程序产品 | |
US20070006037A1 (en) | Automated test case result analyzer | |
US9075911B2 (en) | System and method for usage pattern analysis and simulation | |
US20090187894A1 (en) | Method, apparatus or software for identifying dependencies between components for a given build of a componentised product | |
US10268572B2 (en) | Interactive software program repair | |
JP2015011372A (ja) | デバッグ支援システム、方法、プログラム及び記録媒体 | |
US20080172579A1 (en) | Test Device For Verifying A Batch Processing | |
US10558557B2 (en) | Computer system testing | |
US8762781B2 (en) | Method and apparatus useful in manufacturing test case operations | |
CN110399309B (zh) | 一种测试数据生成方法及装置 | |
CN111209194B (zh) | 发现内存泄漏bug的测试用例设计方法 | |
CN107644041A (zh) | 保单结算处理方法和装置 | |
JP2019160270A (ja) | 欠陥関数を検査する方法、装置、サーバ及びプログラム | |
CN111198920B (zh) | 一种基于数据库同步确定对比表快照的方法及装置 | |
US9507690B2 (en) | Method and device for analyzing an execution of a predetermined program flow on a physical computer system | |
CN115629920A (zh) | 数据请求的异常处理方法及其装置、计算机可读存储介质 | |
US8225284B2 (en) | Methods and systems for testing software development | |
CN110489208A (zh) | 虚拟机配置参数核查方法、系统、计算机设备和存储介质 | |
WO2021247074A1 (en) | Resumable instruction generation | |
CN113127324B (zh) | 测试报告自动化生成方法、装置、计算机设备及存储介质 | |
CN116846783A (zh) | 一种测试方法、装置、设备及介质 | |
CN117707926A (zh) | 云服务回归测试方法、系统、终端及存储介质 | |
CN116610415A (zh) | 自动化运维方法、装置、设备及存储介质 | |
CN106021089A (zh) | 一种补丁接口的测试方法及装置 | |
CN116701207A (zh) | 基于Scala的测试数据的生成方法、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |