洛阳市住房和城乡建设局网站,东营住房和城乡建设官网,网站免费网站免费陪玩,公司宣传一般建的是网页还是网站5 参数化
5.1 自定义变量
线程组 -- 配置元件 -- 用户定义的变量 可以自定义变量#xff0c;通过 ${变量名} 使用
5.2 随机函数
随机数函数
# 生产六位数的随机数字
${__Random(100000,999999,)}
# 生成随机时间: 时间格式yyyy-MM-dd,开始时间,结束时间,设置时区…5 参数化
5.1 自定义变量
线程组 -- 配置元件 -- 用户定义的变量 可以自定义变量通过 ${变量名} 使用
5.2 随机函数
随机数函数
# 生产六位数的随机数字
${__Random(100000,999999,)}
# 生成随机时间: 时间格式yyyy-MM-dd,开始时间,结束时间,设置时区非必填
${__RandomDate(yyyy:MM:dd,2030:12:31,2099:12:21,,)}
# 生成随机字符串: 字符串长度,包含字符支持中文特殊字符
${__RandomString(6,asdfghjklqwertyuiopmnbvcxz,)}
# 获取时间戳
${__time(,time)}加密函数
# MD5加密 明文
${__MD5(123456,)}
# Base64加密 明文
${__base64Encode(123456,)}5.3 CSV参数化
添加配置元件–CSV数据文件配置
线程共享模式
所有线程所有线程共享一份文件当前线程组线程组内所有线程共享一份文件多个线程顺序读取文件当前线程每个线程都维护一份自己的文件多个线程都从文件第一行开始顺序读取
遇到文件结束符再次循环设置为True线程会再次循环从第一行读取数据设置为False则线程会读取文件结束符
遇到文件结束符停止线程设置为True读取文件结束符号时停止线程设置为False读取文件结束符时不停止线程
遇到文件结束符再次循环 遇到文件结束符停止线程True False一直循环读取数据直到线程的所有循环结束True True一直循环读取数据直到线程的所有循环结束Flase True读取到文件结束符就停止线程False False遇到文件结束符不停止线程线程一直读取文件结束符作为参数
线程共享模式需要配合多线程设置线程的数量大于1以及设置循环次数使用
多线程设置线程组的线程数为n将每个线程都会执行一遍线程组内的所有请求循环设置循环次数为n则每个线程都会循环执行所有请求n次
6 Cookie 鉴权
参考文档Apache JMeter - 用户手册组件参考
HTTP Cookie管理器实现Cookie自动关联的原理
第一步当Jmeter第一次请求服务器的时候如果服务器有通过响应头的Set-Cookie返回Cookie那么Http Cookie管理器会保存这些Cookie的值第二步当Jmeter第二次请求服务器的时候会自动将Cookie信息添加到请求中从而实现Cookie关联
实现Cookie鉴权 自动关联使用HTTP Cookie管理器对Cookie进行自动关联 手动关联使用正则提取器对Cookie进行提取之后在HTTP请求头管理器中设置Cookie请求头
7 断言
响应断言
响应码相等断言响应头响应体包含相等断言 JSON断言通过JSON Path定位响应中的字段并验证值是否符合预期进行断言 持续时间断言请求超过最大持续时间断言失败
8 跨线程–全局变量
通过正则提取器或JSON提取器提取的变量是局部变量作用域为所在的线程组。如果需要跨线程组使用变量需要进行下面操作。
跨线程实现变量引用
使用提取器将值保存为局部变量通过BeanShell后置处理器将获取的值存储为全局属性
# 保存局部变量为全局属性
${__setProperty(USERNAME,${username},)}
# 引用全局属性
${__P(USERNAME,)}通过引用全局属性的方法在其它线程组内使用全局属性
跨线程实现Cookie关联
配置JMeter全局配置文件 jmeter/bin/jmeter.properties CookieManager.save.cookies true
方便调试进行该配置后在调试取样器可以查看Cookie的值
提取Cookie保存为局部变量正则提取通过BeanShell后置处理器将获取的cookie的值存储为全局属性
// __setProperty 但是设置cookie为全局属性在部分版本5.1不会解析变量
// 会直接将${custom_cookie}作为字符串存储到属性中
// ${__setProperty(my_cookie,${custom_cookie},)};
// 通过嵌套groovy函数实现变量解析
${__groovy(props.put(my_cookie, vars.get(custom_cookie)),)}添加全局的HTTP Cookie管理器在全局Cookie管理器中添加Cookiecookie的值通过获取全局属性的方法__P方法获取同时设置Cookie生效的域名和请求路径
域Cookie生效的域名 / 服务器 路径为 / 表示所有请求都生效
9. Jmeter实现数据库MySQL操作
9.1 操作步骤
添加数据库驱动驱动版本和数据库版本要匹配 MySQL5.7 对应的驱动版本是 5.1添加配置元件在线程组下添加配置元件/JDBC Connection Configuration添加配置信息创建JDBC请求获取数据
9.2 配置信息配置
Max Number of Connections连接池最大连接数。 根据需求进行配置将最大连接数设置为并发用户数的1.2 - 1.5倍设置为0时表示连接池的最大连接数没有明确的限制连接池可能会根据实际需求动态地创建新的数据库连接不推荐使用 Max Wait获取连接失败等待连接释放的最大等待时间Time Between Eviction Runs检查并清理空闲连接的时间间隔Auto Commit自动提交 设置为True会在执行完SQL后自动提交事务设置为False需要手动进行事务的提交和回滚 Transaction Isolation事务隔离级别 default和连接数据库的隔离级别保持一致推荐 是否开启预编译 预编译简单理解数据库优化技术实现参数和模板分离。预编译步骤一模板编译数据库提前解析带有占位符的SQL生成执行计划并缓存预编译步骤二参数绑定执行时只需要传递参数值无需二次编译提升性能并且防注入
9.3 创建JDBC请求
参考文档Apache JMeter - 用户手册组件参考 执行的SQL语句类型
补充占位符替换和${}替换的区别重要
占位符是将SQL中的占位符替换为参数底层原理是对SQL进行预编译生成执行计划之后执行时对参数进行替换因此能有效的防止SQL注入的问题同时对于需要重复执行的SQL占位符替换无需反复编译效率比较高
$ 替换是将引用的字符串直接拼接到SQL语句中底层原理是将字符串直接拼接后编译因此存在SQL注入的安全问题。对于需要重复执行的SQL每次都要拼接后编译因此效率比较低
Select Statement普通查询SQL支持使用 ${变量名称} 进行参数化不支持 占位符Update Statement普通修改SQLinsert / update / delete支持使用 ${变量名称} 进行参数化不支持 占位符Prepared Select Statement预编译查询SQL支持 占位符不支持使用 ${变量名称} 进行参数化 可以使用${}进行参数化但是引用的变量是字符串需要手动添加引号较为麻烦不支持 Prepared Update Statement预编译修改SQL支持 占位符不支持使用 ${变量名称} 进行参数化Callable Statement调用存储过程支持使用 ${变量名称} 进行参数化支持 占位符
Commit提交当前连接的事务忽略SQL语句配合AutoCommit(false)使用。Rollback回滚当前连接的事务忽略SQL语句配合AutoCommit(false)使用。Autocommit(false)不提交事务。Autocommit(true)自动提交事务。
9.4 JDBC请求参数化
使用占位符方式进行参数化在parameter value使用${}引用变量给占位符赋值
用户自定义的变量随机函数CSV参数化
9.5 发送请求
发送请求 查看结果 在察看结果树 -- 请求 -- 请求体中查看实际执行的SQL语句 在察看结果树 -- 响应数据 – 响应体中查看查询结果 使用结果
添加调试取样器可以在取样器的响应体中查看查询的查询数据 ${result_username_#} 获取当前列数据有多少行
${result_username_N} 获取当前列数据的第N行N超过数据返回直接使用 ${result_username_N} 返回
10 Jmeter的命令行执行
-n 通过命令行执行jmeter脚本
-t 指定jmx文件的目录
-l 生成jtl报告(需要使用Jmeter的察看结果树观看)
-e 生成html报告
-o 指定html报告的存储路径(必须为空目录)生成jtl需要进行全局配置 -- 通常不使用而是使用生成html报告
全局配置:设置输出格式为xml,设置下面两个属性为true
jmeter.save.saveservice.output_formatxml
jmeter.save.saveservice.response_datatrue
jmeter.save.saveservice.samplerDatatrue# 生成jtl报告指令
jmeter -n -t test.jmx -l report.jtl生成html报告的全局配置设置输出格式为csv:
jmeter.save.saveservice.output_formatcsv
jmeter.save.saveservice.response_datatrue
jmeter.save.saveservice.samplerDatatrue# 生成html报告指令
jmeter -n -t csv.jmx -l result.jtl -e -o reports