新民正规网站建设价格咨询,百度seo快速排名优化服务,东莞网页设计与制作教程,设计之家软件目录
前言
1、自动录制脚本
1.1、原理 1.2、JMeter脚本录制
2、JMeter直连数据库
2.1、直连数据库的作用
2.2、JMeter直连数据库的步骤
案例#xff1a;
3、JMeter的逻辑控制器
3.1、if控制器
案例#xff1a;
3.2、循环控制器
案例#xff1a;
3.3、ForEach控…目录
前言
1、自动录制脚本
1.1、原理 1.2、JMeter脚本录制
2、JMeter直连数据库
2.1、直连数据库的作用
2.2、JMeter直连数据库的步骤
案例
3、JMeter的逻辑控制器
3.1、if控制器
案例
3.2、循环控制器
案例
3.3、ForEach控制器
案例使用用户自定变量~
4、JMeter的定时器
4.1、同步定时器
案例
4.2、常数吞吐量定时器
案例
4.3、固定定时器
案例 前言 JMeter学习上http://t.csdnimg.cn/DOWpY JMeter学习中http://t.csdnimg.cn/sLJ99 1、自动录制脚本
1.1、原理 JMeter录制脚本在没有接口文档的旧项目中快速录制web页面产生的http接口请求帮助编写接口测试脚本。
JMeter录制脚本原理
正常请求过程 JMeter录制过程 1.2、JMeter脚本录制 步骤一添加http代理服务器并进行配置 加http代理服务器 配置代理服务器的参数 步骤二开启Windows操作系统的浏览器代理 步骤三启动代理服务器 然后去浏览器操作有的可能要在Chrome浏览器有的是IE你都试试看哪个能抓到
我这边是Chrome浏览器我浏览了我本机服务器下的一个博客系统的网页如下 我们这就是成功了~
我们可以看到上面有很多是css文件js文件我们不想获取这类的文件可以在http代理服务器的配置中做如下修改 包含就是匹配则抓取排除模式匹配则丢弃【不抓取】~ 2、JMeter直连数据库
2.1、直连数据库的作用
用作请求的参数化。例如登录时需要的用户名可以从数据库中查询获取用作结果断言。例如添加购物车下订单检查接口返回的订单号是否与数据库中生成的订单号一致清理垃圾数据。例如添加商品时添加商品编号不能重复重复时执行该脚本不能成功需要在下次执行前删除该商品数据取消添加准备测试数据。例如通过数据库来准备大量的几十万条的性能测试数据
2.2、JMeter直连数据库的步骤 我们先要准备一个MySQL驱动包我们在MySQL官网中下载即可下载jar的版本最好和你使用的MySQL的版本一致~下载后是得到一个压缩包你解压缩后里面就有一个jar包了~
步骤一添加MySQL驱动jar包
方式一在测试计划面板点击浏览..按钮将你的JDBC驱动添加进来 方式二将MySQL驱动jar包放入到lib/ext目录下重启JMeter 步骤二配置数据库连接信息
位置 参数介绍
Variable Name for created poolMySQL数据库连接池名称JDBC请求时要引用自己命名Database URLjdbc:mysql://localhost:3306/cnblog【协议 数据库IP 数据库端口 连接的数据库名例我这里协议是jdbc:mysql数据库IP是本机端口3306数据库名是cnblog】JDBC Driver classcom.mysql.jdbc.Driver【下拉框】Usernameroot【连接的数据库用户名如实填写】Password****【连接的数据库密码如实填写密码为空就不写】
如下 步骤三添加JDBC请求
位置 添加 参数介绍
Variable Name数据库连接池的名字就是上面你自己命名的那个名字Query Type自己选择是什么操作有增删改查~Query填写SQL语句末尾不要Variable names保存sql语句返回结果的变量名 案例 我刚才的JDBC连接配置的就是我本机数据库中的cnblog库所以我们就使用这个库这个库中有一张用户表我们现在来查查这张表有多少个用户吧~
步骤
添加一个线程组添加JDBC Connection Configuration添加JDBC request添加一个正则表达式取结果添加http请求添加查看结果树运行看结果 这个请求数据不对我们添加一个调试取样器来看看到底有没有值
重新运行看看 所以我们来修改一下请求中的变量 运行看结果 成功~ 3、JMeter的逻辑控制器
3.1、if控制器
作用if控制器用来控制指定的测试元素是否运行
位置 参数说明
Expression (must evaluate to true or false) 表达式值必须是true或false也就是说在右边文本框中输入的条件值必须是true 或 false默认情况下Interpret Condition as Variable Expression?默认勾选项将条件解释为变量表达式expression中不能直接填写条件表达式需要借助函数将条件表达式计算为true/false可以借助的函数有_jexl3和_groovy【选中这一项时表示判断变量值是否等于字符串true不区分大小写】【不选中直接输入我们需要判断的表达式即可判断表达式为真时执行if控制器下的请求例如“1!2”则一定会执行下面的http请求】Evaluate for all children?条件作用于每个子项执行每个子项都会判断一次条件。一般不勾选条件一般只判断一次即可
解释
上面有一个黄色感叹号就是提示你使用__jexl3 or __groovy 表达式以提高性能也就是默认的方式 jexl全称Jakarta Commons Jexl是一种表达式语言Java Expression Language解释器
举例1直接输入我们需要判断的表达式 举例2使用函数 案例 步骤
创建一个线程组创建一个用户定义的变量在这里添加一个变量名为title值为百度创建一个if控制器,和上面的步骤一样在函数中生成复制过来比较title值等不等于百度在if控制器下创建一个http请求【if为真请求可发送为假请求不发送】创建一个查看那结果树
目录结构 运行看结果 你可以尝试修改值不相等时请求就不会发送了~
3.2、循环控制器
位置 参数都是中文就不介绍了~ 案例 添加一个线程组添加一个循环控制器循环次数设置为3在上面这个循环控制器下面添加一个http请求添加一个表格查看结果树
目录结构 运行结果 3.3、ForEach控制器 作用一般和用户自定义变量或者正则表达式提取器一起使用读取返回结果中一系列相关的变量值。该控制器下的取样器都会被执行一次或多次每次读取不同的变量值。
位置 参数介绍
输入变量前缀要读取的输入变量的固定前缀Start index for loopexclusive开始循环字段不包含。要读取的输入变量后缀数字的最小值-1End index for loopinclusive结束循环字段包含。要读取的输入变量后缀数字的最大值输出变量名称读取输入变量的值后保存的新变量名用于后续http请求来引用~ 案例使用用户自定变量~ 步骤
添加一个线程组添加一个用户定义的变量添加foreach循环器在控制器下面添加一个http请求添加生成结果树
目录结构 运行结果
例如查看第5个请求 4、JMeter的定时器
4.1、同步定时器 同步定时器阻塞线程累计一定的请求当在规定时间内达到一定的线程数量这些线程会在同一个时间点一起释放瞬间产生很大的压力。
位置 参数介绍
Number of Simulated Users to Group by模拟用户的数量即指定同时释放的线程数数量。如果设置为0表示设置为线程组中的线程数量Timeout in milliseconds超时时间即超时多少毫秒后同时释放指定的线程数。如果设置为0表示该定时器将会等待线程数达到了设置的线程数才释放若没有达到设置的线程数会一直死等如果设置的值大于0那么如果超过设置的最大等待时间还没有达到设置的线程数Timer将不再等待释放已到达的线程。默认为0. 案例 步骤
添加一个线程组线程数设置为20添加一个http请求添加同步定时器模拟用户数量设置为5超时为100添加一个表格查看结果树
目录 运行结果 前五个为一组几乎是同一时间发送的请求~
4.2、常数吞吐量定时器
作用可以让线程以一个目标吞吐量去运行
位置 参数说明
Target throughput in samples per minute目标吞吐量每分钟的样本量。每分钟的吞吐量Calculate Throughput based on基于什么计算吞吐量this thread only只有此线程。控制每个线程的吞吐量选择这种模式时总的吞吐量为设置的target Throughput上面设置的每分钟的吞吐量 乘以该线程的数量all active threads所有活动线程。设置的target Throughput 将分配在每个活跃线程上每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程all active threads in current thread group当前线程组中的所有活动线程。设置的target Throughput 将分配在当前线程组的每一个活跃线程上当测试计划中只有一个线程组时该选项和all active threads 选项的效果完全相同all active threads shared所有活动线程共享。与all active threads的选项基本相同。唯一区别是每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行all active threads in current thread group shared当前线程组中的所有活动线程共享。与all active threads in current thread group 基本相同唯一的区别是每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行 案例 步骤
添加一个线程组添加一个常数吞吐量定时器添加一个调试取样器添加一个聚合报告
目录结构 运行结果 3秒发送了33个请求~
4.3、固定定时器
作用在两个请求之间第一个请求发送之后等待一段时间再发送第二个请求。
位置 上面这里设置的延迟时间就是请求1发送后等300毫秒再发后面的请求~ 案例 步骤
添加一个线程组添加一个http请求1添加一个固定定时器时间设置为3000毫秒也就是3s添加http请求2添加一个表格查看结果树
目录结构 运行观察结果
相差3秒 好啦我们先这里咯下期见~