JMeter 响应断言
JMeter 中有个元件叫做断言(Assertion),它的作用和 LoadRunner 中的检查点类似。用于检查测试中得到的响应数据是否符合预期,用以保证性能测试过程中的数据交互与预期一致。 JMeter 常用几种断言 Response Assertion(响应断言) Size Assertion(数据包字节大小断言) Duration Assertion(持续时间断言) Beanshell 断言(自由断言) JSON 断言 Response Assertion(响应断言)添加响应断言对 Web 请求的响应结果进行验证。 输入需要匹配的字符串此处对于访问 Baidu 首页,需要设置匹配的字符串为"百度一下,你就知道",表示返回的文本内容若包含有"百度一下,你就知道",则就算 Pass。 Response Assertion 配置参数 模块类型 选项名称 配置说明 Name Response Assertion 名称 Comments 注释 Apply to 断言应用的范围 Main sample...
结合 CMD 方式使用 JMeter
使用命令行方式运行Jmeter前言命令行方式支持在多个环境下使用,windosw的dos环境下,也可以在linux环境上执行。 怎么用**执行路径:**执行命令前要检查当前目录是否是%JMeter_Home%\bin目录;如果 JMeter 脚本不在当前目录,需要指定完整的路径;如果要把执行的结果保存在其他地方也要指定完整的路径。命令中不指定测试计划与测试结果的路径时,默认都是在该目录下。 命令:jmeter -n -t <testplan filename> -l <listener filename> 示例测试计划与结果,都在%JMeter_Home%\bin目录1jmeter -n -t test1.jmx -l result.jtl 指定日志路径的1jmeter -n -t test1.jmx -l report\01-result.csv -j report\01-log.log 默认分布式执行1jmeter -n -t test1.jmx -r -l report\01-result.csv -j report\01-log.log ...
JMeter 模拟浏览器行为发送请求(Web 页面端压力测试)
背景在做性能测试的时候,有时候我们希望测试用户访问一个 Web 页面的加载时间,使用 JMeter 压测的话,需模拟浏览器的行为,加载整个页面的内容,包含一些 JS、CSS、PNG 图片资源等文件的加载。 参考 https://blog.csdn.net/meitingbee/article/details/53924469 https://blog.csdn.net/qq_27371025/article/details/117945423 https://www.jianshu.com/p/c5370860b142
把 JMeter 结果数据写入到指定文件
背景在日常的功能测试或者性能测试的时候,需要把结果中指定的数据保存到指定的文件,进行使用。 示例围绕 Beanshell 来实现这个功能。 下面从两个方面来实现保存接口返回指定的数据从数据库用 SQL 语句取数据,保存结果到指定文件中保存接口返回指定的数据接口:登录 需求:提取 token 值 新建 HTTP 请求 请求返回的结果,这里直接用 JSON 显示: 新建 JSON 提取器 调试,看有没有获取到值添加 debug sampler 运行,查看 debug sampler 响应数据里面 token 有没有取到值 添加 Beanshell 取样器 代码1234567891011121314151617181920212223242526272829303132333435363738// 指定需要写入到 xxx 文件,若没有该文件会新建;若存在该文件,多次执行将以追加模式展示File file = new File("D:/xxx.txt");if (!file.exists()) { // 创建失败会抛出异常 throw new...
JMeter 线程组执行顺序设置
背景当前请求需要上一个请求响应的数据做参数的值传入到当前请求里,这种情况必须保证上一个请求先执行,才能保证当前请求可以得到参数的值。 操作此示例为将登录之后获取的 cookie 放置到全局变量中,供后续线程组使用。按此配置后,执行顺序会从上到下依次执行。 注:如果使用了不同的线程组可能会遇到非预期执行顺序的现象除了主线程组,还有两种特殊的线程组:setUp 线程组和 tearDown 线程组。它们与主线程组区别在于,setUp 线程在主线程执行前自动触发执行;而 tearDown 线程组在主线程结束后执行。 setUp 线程组可以用于测试准备,比如用它来创建测试用户等。 Teardown 线程组可以用于测试清理工作,比如删除测试用户等。
JMeter 连接 JDBC
数据库驱动包下载与安装示例:连接 MySQL 下载 Connectorhttps://dev.mysql.com/downloads/connector/j/ 安装下载完成后解压放到 JMeter 的 lib/ext 下 重启 JMeter JDBC 的连接配置添加配置元件 - JDBC Connection Configuration 参数详解 Variable Name for created pool:自己定义连接数据库的名称,需要记住,这里会在后续使用 JDBC Request 中用到 Database URL:数据库 URL,jdbc:mysql://主机 IP 或者机器名称:MySQL 监听的端口号/数据库名称,如:jdbc:mysql://localhost:3306/kyj。URL 后面的参数(可以不写)characterEncoding=utf8&useSSL=true&serverTimezone=UTC,设置时区和编码格式 JDBC Driver class:MySQL 新版使用 com.mysql.cj.jdbc.Drive...
JMeter 动态参数
使用 CSV 作为动态参数的输入添加->配置元件->CSV Data Set Config 添加动态参数。如下: CSV 文件的内容如下:这里随意写了几个。变量名列表。对应参数文件每列的变量名,类似 Excel 文件的文件头,起到标示作用,同时也是后续引用的标识符,建议采用有意义的英文标示。例如:loginToken 可以被用变量名来引用:${loginToken}。多个变量名之间必须用分隔符分隔。如果该项为空,则文件首行会被读取并解析为列名。 12345loginToken111222233334444 JMeter 中配置如下: 参数解释 名称(Name):脚本中显示的该元件的描述性名称,必须填写。 注释(Comments):对该元件的说明信息。(非必填写) 文件名(Filename):待读取文件的名称。可以写入绝对路径,也可以写入相对路径(相对于 bin 目录或者脚本文件所在目录),如果直接写文件名,则该文件一定要放在 bin 目录中。对于分布式测试,主机和远程机中相应目录下应该有相同的 CSV 文件,必须填写。(建议填写相对路径,...
JMeter 使用逻辑控制器
JMeter 包含了如下多种控制器 使用方式将请求包含在控制器内部。 样例当选中红框时,可以使用 Groovy 执行 Beanshell 脚本。 Groovy(官方建议使用方式) JavaScript 脚本方式(不勾选红框)
记一次项目压测
结合项目说下压测/调优项目压测,CPU 占用比较大,除了测试服务器本身的性能影响外,还存在项目本身的问题。这是服务器的配置: 4 core, 8G, 磁盘 50g,作为一个高峰期并发不到 1000 的项目,总的来说这个配置还能用。然后并发刚到 30,就这样了: 最下面两条的是两台服务器内存。粉色的是项目所在服务器的 CPU,蓝色是 DB CPU,项目占用 CPU 飙的太狠,所以展开调查。 压测调优步骤压测,将 ramp up 时间弄得稍微长一点。项目是 Docker 服务,JDK 版本 1.8。 docker exec -it id bash:进入容器。需要进入容器操作 jstack 命令 jps -l:查看 Java 服务 PID,当然容器内部就一个服务包和 OpenJDK jstack -l pid >> /opt/xxx.txt:将堆栈信息打出来 通过 jstat -gcutil pid 查看 M 的值,即 MetaSpace 区使用率 通过 jstat -gc pid 2s(间隔时间) 3(持续次数) 命令查看 MU/MC 即 ...
