jmeter实现WEB接口自动化及压测组件介绍
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– 捕获:(?:exp)(.*)(?:exp) – 零宽断言:(?<=exp)(.*)(?=exp)
神器
• 模版-选择第几个模版的值,格式:$1$ $2$ 等 • 匹配数字(0:随机,-1:全部,N:第几个匹配项) • 缺省值-就是没匹配到任何东西的默认值
高级-请求参数的预处理
场景: 有时当我们取到一些参数时,不能直接使用, 需要进行一定的预处理,才能传给其他接口, 例如,密码的MD5处理等
jmeter实现WEB接口自动化及压测组件介绍
软件测试大本营
• jmeter简介 • jmeter接口测试
• Jmeter-接口自动化
– – – – – 逻辑控制器 接口间动态参数传递 接口参数预处理 参数化 数据库操作
• 利用Jmeter进行接口压测
– 性能参数 – Prefmon-性能指标收集 – 分布式
组件-HTTP请求
• HTTP sampler
– Web服务器信息(主机,端口) – HTTP请求
• 协议类型(http,https等) • 路径
– <scheme>://<user>:<psw>@<host>:<port>/<path>?<params>#<flag>
• 请求参数
– 可直接写在路径中 – 可填在表格中
• 参考文档
http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Cookie_Manager
组件- HTTP Cookie Manager(2)
• 2种管理方式
– 自动收集(修改jmeter配置)
• 自动存储:CookieManager.save.cookies=true • 跨域支持:CookieManager.check.cookies=false • 前缀:CookieManager.name.prefix= (默认COOKIE_)
JMETER简介
• 开源,免费
– Jmeter是apache组织的开源项目,免费
• java软件,支持二次开发
– 100%纯java,可运行于windows,linux,Mac OS – 支持二次开发,以jar包的形式添加扩展组件
• 轻量,直接解压运行,可进行接口功能、性能测试。 • 支持分布式运行进行压测
• JDBC request
– JDBC Connection Configuration-选用哪个连接进行查询
– Query Type-操作类型(select,update)
接口压测-指标收集
• PerfMon
Jmeter的插件,用来收集被压服务器的各种性能指标,例如: CPU, Memory, Swap, Disks I/O and Networks I/O …… 下载地址:
请求的录制
• 非配置元件-HTTP代理服务器
– 指定代理服务器的端口:port – 修改浏览器的代理,localhost,port – 请求的筛选
• 包含,排除模式。。。
高级-逻辑控制器
• 参考文档
http://jmeter.apache.org/usermanual/component_reference.html#logic_controllers
来自百度文库
>>demo
高级-接口间的参数传递
接口间的参数传递 • 正则表达式提取器
参考文档:
http://jmeter.apache.org/usermanual/component_reference.html#Regular Expression Extractor
– 参数说明
• 引用名称-匹配值在其他接口中引用的name,${name} • 正则表达式(注意特殊字符的转义)
• Perfmon可以收集的性能指标
• 详细的指标说明,参考如下文档
https://code.google.com/p/jmeter-plugins/wiki/PerfMonMetrics
• 其他参数可参考-聚合报告
分布式压测
作为一个纯 JAVA 的GUI应用,JMeter对于CPU和内存的消耗还是很惊 人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有 的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误。 这个时候我们就需要分布式,把并发的压力分散到压测agent上 • 设置方法
– 在压测agent上安装jmeter,进入bin目录,启动Jmeter-server.bat – 配置控制机
• 打开jmeter.properties ,编辑“remote_hosts=”选项,添加压测agent的ip 例如remote_hosts=10.24.144.31,多个用逗号隔开 • 部分启动和全部启动
高级-参数化
每个线程拥有独立的数据库连接!
http://jmeter.apache.org/usermanual/component_reference.html#JDBC Connection Configuration
• JDBC Connection Configuration
– Variable Name Bound to pool –标识对数据库的唯一连接 – Database Connection Configuration
• ${COOKIE_KEY}
组件-响应断言
• 对接口返回进行校验
– 断言对象
• 响应文本 • URL样本 • Reponse Headers
– 匹配模式
• • • • 包括 匹配(正则表达式) 相等 取反
组件-监听器
• 用于展示测试报告 • 常用监听器类型
– 查看结果树 – 表格查看结果 – 聚合报告 – Response Time Graph
这种方式收集到的cookie不会在manager中展示 – 手动设置
• 不建议手动填写,可以利用firefox,自动导入 • 具体导入方式可以参考如下博文
http://wangsheng14591.blog.163.com/blog/static/327797102012829101351887/
– Cookie的引用
https://code.google.com/p/jmeter-plugins/downloads/detail?name=JMeterPlugins-1.0.0.zip
• 安装方法:
– 解压zip包,将JMeterPlugins.jar放入jmeter的 \lib\ext,重启jmeter – 进入serveragent,启动Agent
• Linux:
>>./startAgent.sh --udp-port 0 --tcp-port port(agent起来之后所监听的端口) • Windows: 进入serverAgent目录,直接双击startAgent.bat,启动agent 注意:agent启动默认监听的端口是4444
接口压测
组件-HTTP Cookie Manager(1)
• 像浏览器一样存储和发送cookie,如果你要发送一个带 cookie的http请求,cookie manager会自动存储该请求的 cookies,并且后面如果发送同源站点的http请求时,都可 以用这个cookies • 对于计划唯一性
– 一个测试计划只能有一个cookie Manager
• 控制器
– Foreach 控制器
• • • • 输入变量前缀(注意自定义变量的index要从1开始) Start index :定义开始的索引位置(包括该位置) End index:定义结束的索引位置(不包含该位置) 输出变量名 name:可以在其他sampler中引用: ${name}
– If控制器 – Include 控制器—引入其他计划,用于计划组合 – 。。。还有很多,有兴趣的同学可以自己挖掘
高级-参数化
• Csv data set config 支持txt,csv格式的文件读取
– Filename-路径+文件名 – File encoding – Variable Names-引用变量名称,逗号隔开 – Recycle on EOF-循环读取 – Stop Thread on EOF-读取到文件末尾的时候 停止线程
组件-线程组
• Thread Group
– 一切测试计划的开始 – 所有的逻辑控制器和采样器都必须放在线程组之下(监听器除外) – 几个参数:
• • • • 线程数 Ramp—Up Period(初始值设定技巧) 循环次数 调度器
– (启动时间,结束时间)VS (持续时间,启动延迟)
线程组中的启动的每一个线程都会独立完整的执行测试计划, Jmeter就是利用这种多线程机制来模拟服务器应用的并发连接
神器
• 模版-选择第几个模版的值,格式:$1$ $2$ 等 • 匹配数字(0:随机,-1:全部,N:第几个匹配项) • 缺省值-就是没匹配到任何东西的默认值
高级-请求参数的预处理
场景: 有时当我们取到一些参数时,不能直接使用, 需要进行一定的预处理,才能传给其他接口, 例如,密码的MD5处理等
jmeter实现WEB接口自动化及压测组件介绍
软件测试大本营
• jmeter简介 • jmeter接口测试
• Jmeter-接口自动化
– – – – – 逻辑控制器 接口间动态参数传递 接口参数预处理 参数化 数据库操作
• 利用Jmeter进行接口压测
– 性能参数 – Prefmon-性能指标收集 – 分布式
组件-HTTP请求
• HTTP sampler
– Web服务器信息(主机,端口) – HTTP请求
• 协议类型(http,https等) • 路径
– <scheme>://<user>:<psw>@<host>:<port>/<path>?<params>#<flag>
• 请求参数
– 可直接写在路径中 – 可填在表格中
• 参考文档
http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Cookie_Manager
组件- HTTP Cookie Manager(2)
• 2种管理方式
– 自动收集(修改jmeter配置)
• 自动存储:CookieManager.save.cookies=true • 跨域支持:CookieManager.check.cookies=false • 前缀:CookieManager.name.prefix= (默认COOKIE_)
JMETER简介
• 开源,免费
– Jmeter是apache组织的开源项目,免费
• java软件,支持二次开发
– 100%纯java,可运行于windows,linux,Mac OS – 支持二次开发,以jar包的形式添加扩展组件
• 轻量,直接解压运行,可进行接口功能、性能测试。 • 支持分布式运行进行压测
• JDBC request
– JDBC Connection Configuration-选用哪个连接进行查询
– Query Type-操作类型(select,update)
接口压测-指标收集
• PerfMon
Jmeter的插件,用来收集被压服务器的各种性能指标,例如: CPU, Memory, Swap, Disks I/O and Networks I/O …… 下载地址:
请求的录制
• 非配置元件-HTTP代理服务器
– 指定代理服务器的端口:port – 修改浏览器的代理,localhost,port – 请求的筛选
• 包含,排除模式。。。
高级-逻辑控制器
• 参考文档
http://jmeter.apache.org/usermanual/component_reference.html#logic_controllers
来自百度文库
>>demo
高级-接口间的参数传递
接口间的参数传递 • 正则表达式提取器
参考文档:
http://jmeter.apache.org/usermanual/component_reference.html#Regular Expression Extractor
– 参数说明
• 引用名称-匹配值在其他接口中引用的name,${name} • 正则表达式(注意特殊字符的转义)
• Perfmon可以收集的性能指标
• 详细的指标说明,参考如下文档
https://code.google.com/p/jmeter-plugins/wiki/PerfMonMetrics
• 其他参数可参考-聚合报告
分布式压测
作为一个纯 JAVA 的GUI应用,JMeter对于CPU和内存的消耗还是很惊 人的,所以当需要模拟数以千计的并发用户时,使用单台机器模拟所有 的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误。 这个时候我们就需要分布式,把并发的压力分散到压测agent上 • 设置方法
– 在压测agent上安装jmeter,进入bin目录,启动Jmeter-server.bat – 配置控制机
• 打开jmeter.properties ,编辑“remote_hosts=”选项,添加压测agent的ip 例如remote_hosts=10.24.144.31,多个用逗号隔开 • 部分启动和全部启动
高级-参数化
每个线程拥有独立的数据库连接!
http://jmeter.apache.org/usermanual/component_reference.html#JDBC Connection Configuration
• JDBC Connection Configuration
– Variable Name Bound to pool –标识对数据库的唯一连接 – Database Connection Configuration
• ${COOKIE_KEY}
组件-响应断言
• 对接口返回进行校验
– 断言对象
• 响应文本 • URL样本 • Reponse Headers
– 匹配模式
• • • • 包括 匹配(正则表达式) 相等 取反
组件-监听器
• 用于展示测试报告 • 常用监听器类型
– 查看结果树 – 表格查看结果 – 聚合报告 – Response Time Graph
这种方式收集到的cookie不会在manager中展示 – 手动设置
• 不建议手动填写,可以利用firefox,自动导入 • 具体导入方式可以参考如下博文
http://wangsheng14591.blog.163.com/blog/static/327797102012829101351887/
– Cookie的引用
https://code.google.com/p/jmeter-plugins/downloads/detail?name=JMeterPlugins-1.0.0.zip
• 安装方法:
– 解压zip包,将JMeterPlugins.jar放入jmeter的 \lib\ext,重启jmeter – 进入serveragent,启动Agent
• Linux:
>>./startAgent.sh --udp-port 0 --tcp-port port(agent起来之后所监听的端口) • Windows: 进入serverAgent目录,直接双击startAgent.bat,启动agent 注意:agent启动默认监听的端口是4444
接口压测
组件-HTTP Cookie Manager(1)
• 像浏览器一样存储和发送cookie,如果你要发送一个带 cookie的http请求,cookie manager会自动存储该请求的 cookies,并且后面如果发送同源站点的http请求时,都可 以用这个cookies • 对于计划唯一性
– 一个测试计划只能有一个cookie Manager
• 控制器
– Foreach 控制器
• • • • 输入变量前缀(注意自定义变量的index要从1开始) Start index :定义开始的索引位置(包括该位置) End index:定义结束的索引位置(不包含该位置) 输出变量名 name:可以在其他sampler中引用: ${name}
– If控制器 – Include 控制器—引入其他计划,用于计划组合 – 。。。还有很多,有兴趣的同学可以自己挖掘
高级-参数化
• Csv data set config 支持txt,csv格式的文件读取
– Filename-路径+文件名 – File encoding – Variable Names-引用变量名称,逗号隔开 – Recycle on EOF-循环读取 – Stop Thread on EOF-读取到文件末尾的时候 停止线程
组件-线程组
• Thread Group
– 一切测试计划的开始 – 所有的逻辑控制器和采样器都必须放在线程组之下(监听器除外) – 几个参数:
• • • • 线程数 Ramp—Up Period(初始值设定技巧) 循环次数 调度器
– (启动时间,结束时间)VS (持续时间,启动延迟)
线程组中的启动的每一个线程都会独立完整的执行测试计划, Jmeter就是利用这种多线程机制来模拟服务器应用的并发连接