jmeter总结

  1. 添加jdbc驱动后执行sql报时区错误:

报错:Cannot create PoolableConnectionFactory (FATAL: invalid value for parameter "TimeZone": "Asia/Shanghai")

jmeter总结_第1张图片

 

jmeter总结_第2张图片

 

原因:数据库中缺少timezone文件,导致时区问题

首先查找数据库时间和时区:

            select now();--2019-10-11 07:46:18.489796+00

show time zone;--GMT

                   再次查找服务器时间和时区:

                 

                   两者时间相差8个小时,因此报错。

解决措施:

设置jmeter全局配置jmeter.bat中:set JVM_ARGS=-Duser.timezone="GMT+08"

 

 

 

 

 

 

 

 

 

  1. 设置缓存:
    1. 单个缓存数据:http cookie manager设置缓存,通过缓存跳过验证直接登陆:

首先要获取到登陆时候的cookie:利用浏览器的开发者模式

jmeter总结_第3张图片

然后,把存储中cookie的名称、域名、路径、值全部填写到http cookie manager中,这样就为脚本添加了一条cookie:

jmeter总结_第4张图片

再将登录的http request中的参数全部删掉,即可:

jmeter总结_第5张图片

参考:

https://blog.csdn.net/maybe_frank/article/details/80783504

 

 

 

 

    1. 多个缓存数据:http 缓存管理器:

设置多个缓存,脚本在执行过程中就会自己添加缓存至设定的数字

jmeter总结_第6张图片

    1. 自动添加缓存:

打开bin目录下的properties:

jmeter总结_第7张图片

设置:CookieManager.save.cookies=true,并将前面的注释“#”去掉

然后,添加http cookie manager

jmeter总结_第8张图片

不勾选清除cookie

jmeter总结_第9张图片

这样会自行保存每次执行的缓存信息。

 

 

 

 

 

 

  1. 设置集合点:

jmeter总结_第10张图片

脚本样例:

jmeter总结_第11张图片

(1)Number  of Simulated Users to Group by:按组分组的模拟用户数。即为当用户总数达到1000时,一起去执行脚本的操作。若线程总数为10000,那么就会分10批进行

(2)timeout in milliseconds:Timout的意思是等待请求多久后,不管线程数有没有到达设置的并发数量都开始运行测试。如果设置为0,Timer将会等待线程数达到了"Number of Simultaneous Users to Group"中设置的值,也就是1000才释放。如果设置了数字2,即使没有达到1000,只要到了时间就执行脚本。

 

  1. cookiesessioncache区别

cookie:是保存客户端的一组数据,主要用来保存用户的个人信息,主要存放浏览器请求服务器时的请求信息,这些信息是非敏感信息。主要用于当用户访问您的系统时,应用程序可以检索以前存储的信息。

  1. Cookie对象的Expires属性设置为MinValue,表示永不过期
  2. Cookie存储的数据量受限制,大多数的浏览器约束为4KB左右
  3.  特性:
      1. 存储在客户端的磁盘上;
      2. 是与用户相关的数据;
      3. 在一定的时间内持久化存储;
      4. 可以跨浏览器共享数据;
      5. 数据需要被序列化;
      6. 会发生客户端与服务器端数据传输;

如:浏览器中的历史记录:

jmeter总结_第12张图片

session:

                  保存在服务器中。

参考:

https://www.cnblogs.com/supersnowyao/p/8544747.html

https://www.cnblogs.com/danyuzhu11/p/10419949.html

https://www.cnblogs.com/uestc2007/p/10683372.html

 

  1. 线程组中对应的字段名词解释:

jmeter总结_第13张图片

Numbers of threads表示模拟多少个用户来进行测试;线程数代表多少个进程,也就是代表多少个用户;

Ramp-up period(in seconds)表示多长时间把所有的Thread启完,也就是说隔xx这个时间就启动一个thread;0代表同时并发;

Loop count表示一个thread发出多少次测试请求,对于我们的web应用来说,就是发出多少次http request;循环次数代表执行几次.

 

  1. 聚合报告中:

Label:请求类型,

Samples:表示这次测试一共发出了多少个请求;如果模拟10个用户,每个用户迭代10次,那么这里显示100

Average:平均响应时间---默认情况下是单个请求的平均响应时间;

Median:中位数,也就是50%用户的响应时间;

90% Line:90%用户的响应时间;

Min:最小响应时间;

Max:最大响应时间

(以上时间单位为ms)

Error:本次测试中出现错误的请求的数量/请求总数;

Thoughput:吞吐量---默认情况下表示每秒完成的请求数---服务器每单位时间处理的请求数;

Kb/sec:每秒钟请求的字节数(以流量做衡量的吞吐量)

 

 

 

 

 

 

 

  1. beanshell取样器:

可以通过写代码,来获取变量,一些函数可以通过“函数取助手对话框”获取

jmeter总结_第14张图片

     函数取助手对话框:选项---函数取助手对话框

jmeter总结_第15张图片

 

 

 

 

 

 

  1. jmeter如何在一个jdbc request执行多条sql语句:

DATABASE URL中添加:?allowMultiQueries=true

jmeter总结_第16张图片

Query Type选择:Callable Statement

jmeter总结_第17张图片

 

查询结果:

jmeter总结_第18张图片

 

  1. 如何用一个jdbc request中的某参数作为条件处理另一个jdbc request

参考:https://blog.csdn.net/yuansanmei104/article/details/96571638

样例:

jmeter总结_第19张图片

需要的文件:jdbc connection configration,jdbc request,http request等

 

首先:配置jdbc connection configration

jmeter总结_第20张图片

然后:添加第一个jdbc request:

jmeter总结_第21张图片

将查询出来的两个字段id,username分别作为参数tid,tusername

再给第一个jdbc request添加调试后置处理器:用来查看详细的sql获取的数据:

jmeter总结_第22张图片

再添加第二个jdbc request,通过传递参数${tid_1}查询出serial_number:

jmeter总结_第23张图片

     其中:

  1. 表tb_user中的id,与表tb_order中的user_id一致
  2. ${tid_1}为从调试后置处理器中取出的参数名
  3. tid_1,表示tid这一列的第一个数据

 

运行结果:

jmeter总结_第24张图片

jmeter总结_第25张图片

jmeter总结_第26张图片

备注:用户:a1571040310表中没有对应数据所以serial_number值为空。

  1. 账号密码流程都正确,为什么报错账号密码错误:

jmeter总结_第27张图片

分析步骤:

查看登录POST http request参数:密码、验证码是写死的,账号为参数,那么只有账号有问题:

jmeter总结_第28张图片

这个参数tusername的值是怎么出来的,是通过sql查出来的:

jmeter总结_第29张图片

我们又用sql放到数据库里面查询,发现可以查询出结果,说明值正确:

jmeter总结_第30张图片

 

那么最后原因就是传递的参数名有问题:

           jdbc request添加调试后置处理器,查看详细的数据

jmeter总结_第31张图片

           发现:传递的参数名并不是tusername而是tusername_1

更改:${tusername}${tusername_1},问题解决。

jmeter总结_第32张图片

 

  1. postgresql数据库如何获取json的特定键值:

jmeter总结_第33张图片

select (apply_info::json ->> 'name') as name,(apply_info::json ->> 'idNo') as idNo from tb_endorsement

jmeter总结_第34张图片

 

  1. 添加断言响应:

要注意填写的文本信息,要覆盖:返回正确的以及不正确的请求,虽然这个请求返回不正确的代码,但是确实是去校验过了,说明代码逻辑正确。

jmeter总结_第35张图片

 

添加断言结果

jmeter总结_第36张图片

 

参考:https://blog.csdn.net/weixin_43652535/article/details/94591803

你可能感兴趣的:(jmeter,职业深度)