我们不应该仅仅局限于某一种工具,性能测试能使用的工具非常多,选择适合的就是最好的。笔者已经使用Loadrunner进行多年的项目性能测试实战经验,也算略有小成,任何性能测试(如压力测试、负载测试、疲劳强度测试等)都可以使用该工具。但我并不鼓励这样做,我们应该根据当前所处的情况,基于被测对象、时间及成本考虑,采用最合适的工具。闲话少谈,今天笔者要给大家分享的是用Jemeter来进行HTTP接口的压力测试。实际接口测试还可以使用Tsung、SoapUI等工具,但基于各方面考虑,最终采用了Jemeter。
Jemeter相对于Loadrunner来说,更轻,易于安装,如果对过程数据收集不多、测试场景不复杂的情况下,可以优先考虑。笔者的使用的工具版本为Apache JMeter3.0,如果你们使用的是其它版本,可以与该版本界面有一定出入。
下面就说说使用Jemeter进行HTTP接口压力测试的具体使用步骤:
1、首先添加一线程组(即用户组:一个线程模拟一个用户行为,如果要模拟多个用户,则通过设置多线程来实现)
2、因为是对HTTP接口进行压力测试,所以需要在线程组下添加一HTTP请求(通过鼠标右键->添加->Sampler->HTTP请求 完成)
3、紧接着就是对HTTP请求进行设置了,主要设置服务器名称或IP,端口号,连接、响应时间,所采用的协议,请求类型,内容编码,路径,最后设置请求内容。
注意,路径为URL除去如http://XXX.XX.X后的内容,如URL为http://www.51ste.com/share/index.php,则服务器名称或IP应该填写www.51ste.com,端口默认80,路径应该填写“/share/index.php”
4、因为这里的请求内容使用的是json字符串,所以需要在头部进行声明,否则请求就要报错。所以需要给HTTP请求添加一信息头(通过鼠标右键->添加->配置元件->HTTP信息头管理器 完成)
5、配置HTTP头信息,添加对应名称和值,这里添加“Content-Type”,值为“application/json;charset=utf-8”;如果头还需要添加其它信息,如id、token等,也应如此进行配置
6、到这一步看起来就可以了,但是我们执行时并不能看到执行结果。所以还应该为该请求添加一结果监听器“查看结果树”(通过鼠标右键->添加->监听器->查看结果树 完成)
按照上面步骤,可以依次添加“聚合报告”(总体线程执行结果统计),图形结果(总体线程执行结果统计图),“用表格察看结果”(每个线程执行的表格统计情况)等。
PS(如果在进行非接口测试,如页面测试过程中发现错误,可能是少了COOKIE信息,所以可以为线程组添加一个Cookie头,可以通过鼠标右键->配置元件->HTTP Cookie管理器 完成)
7、如果HTTP请求没有问题,那么我们要进行性能测试,那就需要设置一个断言(即Loadrunner中的检查点),即只要检查到指定的返回值(如返回结果包含字符“success”)则说明执行成功。添加断言通过右键请求->添加->断言->响应断言 完成。
设置响应断言:
OK,到了这里,我们的脚本工作完成的八九不离十了,但是我们做性能测试,为了使测试结果更加准确,同时避免单点限制等原因,还应该对请求的值进行参数化。
8、参数化,这里主要将通过CSV文件进行的参数化。
1)首先我们新建一个CSV文件,然后录入我们要参数化的信息。
我们也可以新建一个记事本,然后输入参数化的内容信息,多个参数值间以英文逗号隔开,回车换行如:
Username1,password1
Username2,password2
点击保存,然后把记事本的文件名改为test.csv,注意这里的csv是文件扩展名。
2)在HTTP请求新建一个CSV Data Set Config元件(通过鼠标右键->添加->配置元件->CSV Data Set Config 完成)
3)配置CSV Data Set Config元件,这里主要需要指明参数化取值文件路径(即前面我们新建的CSV文件),参数名(如上面CSV文件中主要有两个参数值,我们可以分别用username和passwd作为参数名,参数名类似程序中定义的变量名)
4)对要参数化的值进行参数化。即用 ${参数名} 来替换要参数化的值。
9、通过上面步骤,就完成了参数化脚本的设置。现在要执行,那么首先来配置线程组,主要包括线程数,启用时间,循环次数。我们可以尝试设置不同的线程数,重复次数,来进行接口的压力测试了。
10、最后我们就可以点击上面的绿色执行按钮来执行测试了。当然在执行过程中,为了后面更好的分析测试,可以借助其它工具(linux如nmon)对服务器的资源使用情况、网络情况,以及程序运行情况进行结果收集,最后对压力瓶颈进行准确的定位。
【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!
生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!
只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!