本帖最后由 舞出我人生 于 2019-2-16 17:30 编辑
JMeter压力测试(流程骨架/抢红包举例实战/多场景多线程组混合并发/HTTPS请求) 性能测试里面包含三个测试:基准测试、负载测试、压力测试。 基准测试就是用一个虚拟用户(UV)进行一个对被测系统/对象的操作 负载测试就是慢慢不断地加UV 压力测试就是长时间连续运行系统给系统性能造成的影响,一直到测出问题为止
一、JMeter进行HTTP协议接口的压力测试
1.添加线程组
填写并发信息
2.添加HTTP请求
填写HTTP请求信息
3.设置监听器
4.测试执行
1.)点击【保存】按钮(),保存测试脚本,格式为:*.jmx; 2.)点击【启动】按钮(),执行测试脚本;
5.测试结果解析 1.)查看结果树:可以查看测试结果、请求信息、响应信息; 2)查看聚合报告:可以查看测试的请求数、响应时间和成功率
二、JMeter测试抢红包示例
(1)概述 此处记录使用JMeter对抢红包业务进行压力测试的过程,涉及的内容包括: 1.抢红包业务压力测试需求分析;
2.创建JMeter测试计划,根据业务执行逻辑设计测试脚本; 3.设置检查点; 4.回放脚本,根据业务逻辑判断检查点设置是否有效; 5.脚本参数化; 6.虚拟批量用户执行抢红包业务; 7.测试结果分析;
(2)测试需求分析
1.验证批量用户抢红包时的响应时间是否满足300ms以内; 2.验证相同红包每个用户只能抢1次; 3.每个红包最多只能被抢9次; 4.用户抢红包的业务: 1)使用手机访问红包,请求验证码;(参数包含手机号码和验证码) 2)(验证码下发成功),使用手机抢红包;(参数包含手机号码和验证码)
5.测试手机号码和测试红包有限;
(3)创建测试计划、设计测试脚本
步骤如下: 1.新建测试计划,右击测试计划-->【添加】-->【Threads(Users)】-->【线程组】,创建名为“抢红包测试”的线程组; 2.右击“抢红包测试”线程组-->【添加】-->【Sampler】-->【HTTP请求】,添加名为“请求验证码”的HTTP请求; 1)填写“请求验证码”的HTTP请求信息;
2)为“请求验证码”请求【查看结果树】,监听测试结果;
3.右击“抢红包测试”线程组-->【添加】-->【Sampler】-->【HTTP请求】,添加名为“抢红包”的HTTP请求; 1)填写“抢红包”的HTTP请求信息;
2)为“抢红包”请求添加【查看结果树】,监听测试结果;
4.右击“抢红包测试”线程组-->【添加】-->【监听器】-->【查看结果树】,看测试结果、请求信息、响应信息; 5.右击“抢红包测试”线程组-->【添加】-->【监听器】-->【聚合报告】,查看测试的请求数、响应时间和成功率等信息; 6.按上述步骤创建测试脚本,效果如下:
(4)设置检查点 步骤如下: 1.使用一组正确的测试数据,验证请求验证码、抢红包成功的提示信息: 1)请求验证码成功的提示信息为“短信验证码下发成功!”
2)请求验证码成功后,抢红包成功的提示信息为“成功”
2.设置检查点
1)右击“请求验证码”请求-->【添加】-->【断言】-->【响应断言】; 2)点击【添加】按钮,编辑断言信息,该例中检查响应数据是否包含“短信验证码下发成功!”
3)右击“抢红包”请求-->【添加】-->【断言】-->【响应断言】; 4)点击【添加】按钮,编辑断言信息,该例中检查响应数据是否包含“成功”;
(5)验证检查点是否生效
1..使用失效数据模拟用户请求,确认检查点是否生效; 1.)使用失效数据请求验证码时,测试失败,因没有检查到指定信息;
2.)使用失效数据抢红包时,测试失败,因没有检查到指定信息;
2.使用正确信息请求时,测试通过; (6)脚本参数化 步骤如下: 1.右击“抢红包测试”线程组-->【添加】-->【配置元件】-->【CSV Data Set Config】; 2.编辑【CSV Data Set Config】信息,如下图:
3.修改“请求验证码”和“抢红包”请求中需要参数化的参数值,和步骤2中定义的变量属性一致;
4.参数文件示例:()
(7)虚拟批量用户执行抢红包业务 前置条件: 1.检查点生效、测试脚本调试成功; 2.测试参数化的测试数据准备完成; 步骤: 1.设置测试计划循环次数;
2.点击启动按钮(),开始执行测试
(8)测试结果分析 1.查看结果树:测试结果与实际结果一致,成功118次,失败7次(调试脚本时已使用的信息,为失效信息)
2.查看聚合报告:
三、多线程组并发测试(多场景混合并发)
如果测试需求出现如下场景,该如何使用JMeter实现压力测试呢?即JMeter如何实现多线程组并发测试,也就是Loadrunner中的混合场景测试时,该如何设置并发数? 测试需求如下:对业务A、业务B、业务C、业务D、业务E,5个业务按并发比例要求进行100个用户并发的压力测试;
JMeter是可以实现上述需求的,测试方案如下: 1.创建一个测试计划; 2.在该计划下添加5个线程组,分别是对业务A、业务B、业务C、业务D、业务E; 3.分别设置线程组业务A、业务B、业务C、业务D、业务E的线程数为:40、10、20、25、5(总并发量为100,按并发比例设置并发用户数)
3.在该计划下添加测试结果监控;
4.设置执行时间,开始执行测试,测试时可以看到并发数为5个业务并发量的总和,,如下图:
四、Jmeter发送https请求的基础压测操作 现在越来越多的服务器都是使用https的请求,所以直接还是使用http以前的那一套肯定是不行了。有较多的服务器请求需要证书,才能进行访问,比如阿里云的ip定位服务,就是需要信息头证书。服务端验证了信息头中的值正确了才会放行response,并同时回调信息。这样可以最大的保证服务的安全和价值性。 废话不多说,直接开始。 第一步:右键添加线程组,
第二步:线程组下右键添加Sampler---HTTP请求 (前提是你需要压测的是https协议的)必须在协议栏中手动输入https(大小写都可),一般都是get,请求方法视自己需要选择。在Parameters中输入字段标识和值。 如果只是普通的HTTP协议,可以不填,但是如果是HTTPS协议,那么需要在协议处添加https,端口号的位置也需要填写上 443 ,其他部分都是按照正常的方式填写!再叮嘱一句端口一般情况下一定是443!
第三步:添加http信息头管理器。 在头管理器中添加授权方给的key输入到值列表中,注意如果是复制过来的一定要注意 空格~~~ 同时我们要把头管理器放到http请求的序列之前(不要问为什么,因为jmeter是严格按照序列来执行请求的。)
第四步:右击添加查看结果树、聚合报告等,然后保存执行就可以了
|