前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过案例教你玩转JMeter

通过案例教你玩转JMeter

作者头像
顾翔
发布2021-06-24 18:14:36
7670
发布2021-06-24 18:14:36
举报
文章被收录于专栏:啄木鸟软件测试

1 搭建ebusiness场景

1.1录制

1,打开Window IE浏览器代理

2,启动ebusiness服务

3,打开JMeter,右键点击 Test Plan->Add->Threads(user)->Thread Group 添加一个线程组

4,Thread Group->Add->ConfigElement->Http request Default

5,如图设置

6,右键点击 Test Plan->Add->Non-test Elements->Http(s) Test ScriptRecorder 添加HTTP代理服务器

7,如下图进行修改

8,加上过滤

(?i).*\.(bmp|css|js|gif|ico|jpe?g|png|swf|woff|woff2)

9,点击start开始录制

10,录制完毕出现如下图所示

11,删除不需要的,修改一下名称

12. 把Simple Control换为LoopControl,

13,把编码改为utf-8

14,删除“HTTP(S) Test Script Recorder”。

15,删除“HTTP Header Manager”。

16,在头部加入“HTTP Header Manager”

17,在头部加入“HTTP Cookie Manager”

注意:一定必须为“标准(standard)”。

18,由于“登录验证界面”验证通过后自动进入“商品列表页面”,删除“商品列表页面”,然后调整一下“登录验证界面”。

19,关闭“HTTP Request Defaults”

20,加上“查看结果树”“Debug Sample”执行下脚本,进行验证。

Sample->Debug Sample

Listener->View Result Tree

运行

查看是403错误,没有权限。

1.2处理csrftoken

1.添加正则表达提取器:PostProcessors->Regular Expression Extractor

2. 添加cookies:Config Elements-> HTTP Cookies Manager

3. POST参数也是这样也用这个参数

4. 设置响应断言:Assertion->Response Assertion

5. 试运行

6. 设置BeanShell断言:Assertion-> BeanShell Assertion

代码语言:javascript
复制
response = prev.getResponseDataAsString();     
Failure = true;
if  (response.contains("电子商务系统")){
       Failure = false;
}else{
       FailureMessage="响应内容中没有找到电子商务系统";
}

1.3 多场景

1. 获得csrftoken

2.设置csrftoken

3. 建立两个Throughput Controller:Logic Controller->ThroughputController,分别为“查询商品”“查看商品详情”。用户分配分别为:

二者与“登录界面”“商品列表界面”处于同等位置。

5. 建立“查询商品”事务。

6,建立验证查询商品是否成功

通过验证是否进入到/search_name/目录下。

7. 建立“查看商品详情”事务。

通过${__Random(1,5,num)}随机查看编号为1、2、3、4、5的商品。

8. 加入验证

9. 设置线程为2

10.设置循环5次

11. 加入Summary Report

12. 运行

13.“查询商品”“查看商品详情”符合设置比例,是否符合预期的80%和20%。

1.4参数化

1.3.1使用cvs参数化

建立参数文件:user.dat

代码语言:javascript
复制
linda,knyzh158
cindy,123456
jerry,654321
susan,qwert
peter,zxcvb

加入参数化:Config Element->CSVData Set Config

  • user.dat为文件名。
  • UTF-8为编码格式。
  • username,password为获取后的参数。
  • ,为分割符号。

2.修改POST参数

3. 设置Loop Control循环次数为5

4. 试运行

并且通过Debug Sample查看参数是否正确。

  • username=peter
  • password=zxcvb

1.3.2 使用函数助手做参数化

1,点击

进入函数助手

2,选择random

产生从0-2之间的整数

3,建立type.txt

代码语言:javascript
复制
茶,测试,包

4,选择csvread函数

  • type.txt为参数文件
  • ${__Random(0,2,num)}为0,1,2随机之间任意一个随机数。

5,在查询商品页面进行参数化,

  • 查询参数为{__CVSRead(type.txt, {__Random(0,2,num)})}

6,试运行,通过Debug Sample查看参数是否正确。

1.3.3通过MySQL参数化

1,mysql-connector-java-5.1.7-bin.jar放入%JMeter_HOME%\lib\ext\。然后重新启动JMeter。

2,Config Elements-> JDBCConnection Configuration

其中:

  • Search:为连接JDBC Request的参数;
  • jdbc:mysql://localhost:3306/sec中3306为mysql的端口号,sec为访问的数据库名。
  • root为登录名
  • 123456为密码,不明文显示。

3,Sample->JDBC Request

  • Search必须与JDBCConnection Configuration一致
  • name,password为查询参数的名称,通过Debug Sample可以看见:
代码语言:javascript
复制
name_#=5
name_1=cindy
name_2=linda
name_3=jerry
name_4=susan
name_5=peter
password_#=5
password_1=123456
password_2=knyzh158
password_3=654321
password_4=qwert
password_5=zxcvb
  • result为结果集,通过DebugSample可以看见:
代码语言:javascript
复制
result=[{name=cindy, password=123456}, {name=linda,password=knyzh158}, {name=jerry, password=654321}, {name=susan,password=qwert}, {name=peter, password=zxcvb}]

4,下面我们通过result来提取用户名和密码。

建立正则表达提取器

  • 从变量result中获取。
  • 获取完毕存入变量parm中。
  • 正则表达提取式为:{name=(.*?),password=(.*?)}。
  • 由于有两个变量,所以Template为:12
  • 随机取数,Match No.输入:0

5,在POST请求中修改参数。

username、password分别为{parm_g1}、{parm_g2}。

6,运行

到此位置接口设置的部分结束,开始与性能相关的部分。

1.5 性能相关的设置

1. 设置线程组

  • 50个在线用户,在5秒内加载完毕。测试持续600秒(10分钟),启动后5秒后开始执行。

2.设置无限循环

3. 在登录请求后加入同步集合点:Timer->Synchronizing Timer。

  • 并发用户为5
  • 4秒后,如果达不到并发条件,立即执行。

4. 同样在“查询商品”“查看商品详情”也加入同步集合点。

1.6 设置报表

1.6.1 Summary Report

Listener->Summary Report

1.6.2 Aggregate Report

Listener->Aggregate Report

1.6.3 Aggregate Graph

Listener->Aggregate Graph

Aggregate Graph比Aggregate Report多了个图显示

1.6.4 Response Time Graph

Listener->Response Time Graph

1.6.5 Graph Results

Listener->Graph Results

强烈要求在测试执行的时候不要打开报表,用命令行执行,然后产生执行报告后导入JMeter。

1.6 整体运行

1.6.1 仅运行登录

将“查询商品”“查看商品详情”吞吐量控制器设置为0%

查看Summary Repoer,仅有“登录页面”和“商品列表页面”

1.6.2 仅运行查询商品

“登录”并发设置为0

“查看商品详情”吞吐量控制器设置为0%。

1.6.3 仅运行查看商品详情

“登录”并发设置为0

“查询商品”吞吐量控制器设置为0%。

1.6.4 多场景运行

“查询商品”吞吐量控制器设置为80%。

“查看商品详情”吞吐量控制器设置为20%。

2 使用Http Put请求

1,打开Tomcat put请求,%TOMCAR_HONE%/conf/web.xml。

代码语言:javascript
复制
<servlet>
         <servlet-name>default</servlet-name>
         <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
             <param-name>debug</param-name>
             <param-value>0</param-value>
        </init-param>
              <init-param>
         <param-name>readonly</param-name>
         <param-value>false</param-value>
         </init-param>
        <init-param>
            <param-name>listings</param-name>
             <param-value>false</param-value>
        </init-param>
         <load-on-startup>1</load-on-startup>
    </servlet>

2,启动WEB服务器

3,启动JMeter。Sample->Httprequest

4,运行,查看结果树。

Listener->View Result Tree

Sample->Debug Sample

3 上传多个文件

1,config Element->CSV Data SetConfig

2,修改Http request

3,增加循环次数

4,运行,查看服务器端

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档