一种基于Jmeter的接口自动化测试方法[发明专利]

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201811467349.0
(22)申请日 2018.12.03
(71)申请人 四川长虹电器股份有限公司
地址 621000 四川省绵阳市高新区绵兴东
路35号
(72)发明人 孙祥 
(74)专利代理机构 四川省成都市天策商标专利
事务所 51213
代理人 郭会
(51)Int.Cl.
G06F  11/36(2006.01)
(54)发明名称
一种基于Jmeter的接口自动化测试方法
(57)摘要
本发明公开了一种基于Jmeter的接口自动
化测试方法中,利用Jmeter测试软件工具,通过
添加线程组配置其并发数量、循环次数、线程启
动时间参数等来模拟普通用户发送请求对服务
器接口进行压力测试,然后通过配置csv数据文
件进行参数化设置,使其更准确无误的测试接
口,接下来通过编写beanshell脚本或者导入辅
助性jar包,最后再添加设置以及断言来
判断请求相应的结果是否是预期结果,从而完成
接口的自动化测试。本发明的方法可解决目前人
工在测试时配置请求数据的时候容易填写错误,
且查和修改错误的工作量比较大以及测试请
求不能并发、
测试数据不能变化的问题。权利要求书1页  说明书4页  附图1页CN 109597761 A 2019.04.09
C N  109597761
A
1.一种基于Jmeter的接口自动化测试方法,其特征在于,包括以下步骤:
A.根据接口参数规范,明确请求的类型;
B.在Jmeter测试工具的测试计划中添加线程组,并设置请求并发数量模拟用户数、设置循环次数、线程启动时间参数;
C.在所述线程组中添加http请求,配置协议类型、IP地址、端口号以及请求类型、路径;
D.设置csv数据文件进行参数化设置,然后编写beanshell脚本或导入辅助性jar包,以用于解析接口返回结果;
E.设置正则表达式提取器,用于动态数据关联,从而获取服务器相应的动态数据;
F.在线程组添加设置以及断言来判断请求相应的结果是否是预期结果。
2.根据权利要求1所述的一种基于Jmeter的接口自动化测试方法,其特征在于,所述步骤A具体为:明确get参数或post参数是否需要验证cookie、UA,若不需要验证则直接进入步骤B。
3.根据权利要求2所述的一种基于Jmeter的接口自动化测试方法,其特征在于,在所述步骤A中,若get参数或post参数需要验证cookie时,则需在Jmeter测试工具中添加HTTP  Cookie管理器,然后填写HTTP  Cookie管理器的参数,包括:用户名、密码、IP地址,并在完成参数填写后发送验证请求,并在通过验证后进入步骤B。
4.根据权利要求1所述的一种基于Jmeter的接口自动化测试方法,其特征在于,所述步骤B中还包括设置线程间的启动时间间隔。
5.根据权利要求1所述的一种基于Jmeter的接口自动化测试方法,其特征在于,在所述步骤F中,当所有断言信息均断言成功时,则该条接口用例执行成功;若断言信息中出现断言失败则判定用例执行失败,并上报异常信息。
权 利 要 求 书1/1页CN 109597761 A
一种基于Jmeter的接口自动化测试方法
技术领域
[0001]本发明涉及接口自动化测试技术领域,特别涉及一种基于Jmeter的接口自动化测试方法。
背景技术
[0002]随着移动互联网的普及,各种手机应用以及网页层出不穷。它们已经在我们的日常生活中扮演着无可替代的角,因此各类网络产品的性能是否达标是我们比较关心的。因此就需要对这些网络产品的接口进行系统化的测试。
[0003]Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以用于测试静态和动态资源,例如静态文件、Java小服务程序、CGI脚本、Java对象、数据库、FTP服务器等等。JMeter可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证程序返回了期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
[0004]现有的测试方法,在测试的过程中需要对测试参数进行配置,而配置的内容基本上包括请求数据:请求URL、请求方法、请求头、请求体等。在传统的测试方法中需要对测试请求一条一条的进行发送且发送数据不能变化。且测试人员在编写这些测试参数的时候往往会出现错误,比如多了一个符号或者符号不正确,输入参数有误等等。最后会花大量的时间来排查错误,这样就降低了测试效率。因此接
口的自动化测试以及Jmeter中线程属性的配置在实际的测试中尤为重要,可极大的减少测试时间从而提高测试效率。
发明内容
[0005]本发明的目的是克服上述背景技术中不足,提供一种基于Jmeter的接口自动化测试方法,可解决目前人工在测试时配置请求数据的时候容易填写错误,且查和修改错误的工作量比较大以及测试请求不能并发、测试数据不能变化的问题。
[0006]为了达到上述的技术效果,本发明采取以下技术方案:
[0007]一种基于Jmeter的接口自动化测试方法,包括以下步骤:
[0008]  A.根据接口参数规范,明确请求的类型;
[0009]  B.在Jmeter测试工具的测试计划中添加线程组,并设置请求并发数量模拟用户数、设置循环次数、线程启动时间参数;
[0010]  C.在所述线程组中添加http请求,配置协议类型、IP地址、端口号以及请求类型、路径;
[0011]  D.设置csv数据文件进行参数化设置,并然后编写beanshell脚本或导入辅助性jar包,以用于解析接口返回结果;
[0012]  E.设置正则表达式提取器,用于动态数据关联,从而获取服务器相应的动态数据;
[0013]  F.在线程组添加设置以及断言来判断请求相应的结果是否是预期结果;[0014]在本发明的基于Jmeter的接口自动化测试方法中,利用Jmeter测试软件工具,通过添加线程组配置其并发数量、循环次数、线程启动时间参数等来模拟普通用户发送请求对服务器接口进行压力测试,然后通过配置csv数据文件进行参数化设置,使其更准确无误的测试接口,接下来通过编写beanshell脚本或者导入辅助性jar包,可以调用自己的工具类,来完成Jmeter基本功能中无法实现的功能,从而使本发明的技术方案的测试范围更加广泛,最后再添加设置以及断言来判断请求相应的结果是否是预期结果,从而完成接口的自动化测试。
[0015]进一步地,所述步骤A具体为:所述步骤A具体为:明确get参数或post参数是否需要验证cookie、UA,若不需要验证则直接进入步骤B。
[0016]进一步地,在所述步骤A中,若get参数或post参数需要验证cookie时,则需在Jmeter测试工具中添加HTTP Cookie管理器,然后填写HTTP Cookie管理器的参数,包括:用户名、密码、IP地址,并在完成参数填写后发送验证请求,并在通过验证后进入步骤B。[0017]进一步地,所述步骤B中还包括设置
线程间的启动时间间隔。
[0018]进一步地,在所述步骤F中,当所有断言信息均断言成功时,则该条接口用例执行成功;若断言信息中出现断言失败则判定用例执行失败,并上报异常信息。
[0019]本发明与现有技术相比,具有以下的有益效果:
[0020]第一,本发明的基于Jmeter的接口自动化测试方法的这个歌测试过程不依赖于界面,如果服务器正常启动,传递参数明确就可以添加测试用例执行测试;
[0021]第二,本发明的基于Jmeter的接口自动化测试方法可利用添加Jmeter断言来验证代码中是否有需要得到的值,如果断言信息中出现断言失败则测试用例执行失败,且可上报异常信息,便于查看;
[0022]第三,本发明的基于Jmeter的接口自动化测试方法中通过设置线程组的线程属性可以更好更直观的模拟QPS(Query Per Second),从而达到压力测试的目的;
[0023]第四,本发明的基于Jmeter的接口自动化测试方法通过编写beanshell脚本或者导入辅助性jar包,利用beanShell调用自己的工具类,来完成jmeter基本功能中无法实现的功能,可以使得本发明的测试范围更加广泛;
[0024]第五,本发明的基于Jmeter的接口自动化测试方法中使用正则表达式提取器用于动态数据关联,以获取服务器相应的动态数据,且这些数据需要进行关联才能使得每一次请求都能成功得被服务器接受,这样就可以用变量名称代替获得的参数值,使得测试更加简便,提高测试效率。
附图说明
[0025]图1是本发明的基于Jmeter的接口自动化测试方法的示意图。
具体实施方式
[0026]下面结合本发明的实施例对本发明作进一步的阐述和说明。
[0027]实施例:
[0028]如图1所示,一种基于Jmeter的接口自动化测试方法,具体包括以下步骤:
[0029]第一步:了解接口参数规范,明确请求的类型。
[0030]明确get参数或者post参数是否需要验证cookie、UA等;具体判定get参数或者post参数是否需要验证的规则为:当请求的目标接口需要进行身份验证或者权限验证时,才需要验证cookie、UA等,否则,不需要验证;
[0031]若不需要验证则直接进入下一步,否则,在Jmeter中添加HTTP Cookie管理器(添加-配置元件-HTTP Cookie管理器),然后填写HTTP Cookie管理器的参数:输入名称(用户名)、输入值(密码)、输入域(IP地址),最后点击“启动”按钮向该输入域对应的IP地址发送验证请求,并在通过验证后进入下一步。
[0032]第二步:在Jmeter测试工具的测试计划中添加线程组,设置请求并发数量用来模拟用户数、设置循环次数、Ramp-Up period即线程间的启动时间间隔也就是线程在多少时间内启动、线程启动时间参数等,其中,当循环次数选择forever选项的话,请求会一直继续。
[0033]具体的,在本实施例中,接口测试工具Jmeter,主要用于接口自动化测试,Jmeter 中添加的线程组,主要用于模拟用户数量,从而达到压力测试的目的,
[0034]第三步:在线程组中添加http请求,配置协议类型、IP地址、端口号以及请求类型、路径等。
[0035]第四步:设置csv数据文件进行参数化设置,然后编写beanshell(JAVA源码解释器)脚本或者导入辅助性jar包,利用beanShell调用自己的工具类,来完成jmeter基本功能中无法实现的功能,例如本实施例中通过beanShell调用自己的工具类实现了密码的加解密功能。
[0036]具体实现方法如下:
[0037]  1.在eclipse中写好代码,然后把其打包成jar文件(在类上点击-Export-jar file)。
[0038]  2.把包放到Jmeter目录\apache-jmeter-2.13\lib\ext下。
[0039]  3.打开Jmeter,添加一个http sampler,在sampler下添加一个BeanShell Sampler。
[0040]  4.在BeanShell中的头文件中导入该jar包。
[0041]具体的,本实施例中在eclipse中写入的用于实现密码的加解密功能的核心代码如下:
[0042]com.pingan.ff.account.user.utils.*;
[0043]//加密
[0044]System.out.println("*****加密*****");
[0045]String password="123123";
[0046]String encode=Key(password);//调用工具类中的方法进行加密
[0047]System.out.println("Set my encode");
[0048]vars.put("encode",encode);//把值保存到jmeter变量encode中
[0049]String getEncode=("encode");
[0050]System.out.println("Get my encode:"+getEncode);

本文发布于:2024-09-20 12:30:44,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/797057.html

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

标签:测试   请求   参数   接口   设置
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议