Jmeter手动编写脚本详解(Jmeter 5.3 & jdk1.8.0_201)

思路

   压测时需要发送大量请求到服务器,从而对服务器造成压力,以进行性能测试。Jmeter的作用就是帮助我们模拟大量请求。

   所以需要我们回答的问题仅仅是:如何正确模拟请求?

   答案只有两步:

  1. 找到正确的请求;
  2. 照抄。

继续分析。

  1. 那么什么是正确的请求?
    我的理解是:服务器想要的请求,才是正确的请求,除此之外的说了都不算。而服务器作为计算机,它想要还是不想要,可太好判断了。(没有借机嘲讽人类的意思)
    根据 服务器返回给我们的响应信息 判断即可。

  2. 怎么照抄?
    略。

至此,我们要怎么做,已经比较明朗了:

   根据正确的响应信息确定正确的请求——然后抄。

执行步骤

以【进入B站搜索“saber”】为例。

步骤一:判断正确的响应信息

  • 怎么判断web请求的响应是否正确呢?
    怎么看呢怎么看呢?
    ——当然是能看到saber就是正确的啦~咳咳此处请忽略查询结果
    Jmeter手动编写脚本详解(Jmeter 5.3 & jdk1.8.0_201)
    这就够了吗?好像哪里不对。
    请求呢?我们要找的那么大一个请求呢?
    显然,这里需要能捕捉到 我们在web页面操作时所发出的请求 的工具,也就是抓包工具。常用的有:
  • F12开发者工具:以Chrome浏览器为例,依次 右键-检查-Network,就能看到被抓到的请求了。而页面上吾王熠熠生辉的脸无疑证实着这些请求是多么正确,多么值得信任。
    Jmeter手动编写脚本详解(Jmeter 5.3 & jdk1.8.0_201)
  • Fiddler:Windows系统常用的抓包工具
    Jmeter手动编写脚本详解(Jmeter 5.3 & jdk1.8.0_201)
    这里带锁是因为这个请求是https请求。
  • Charles:Mac系统常用的抓包工具,界面比较美观,收费。
    Jmeter手动编写脚本详解(Jmeter 5.3 & jdk1.8.0_201)
    当然,实际上判断请求是否正确,最终还是看响应回来的信息本身。毕竟我们虽然看到了saber,但是并不能确定是哪条请求返回了这个saber。只有找到那条返回了saber的请求,才能确定是我们要找的请求。

   小常识:这里点击【搜索】前先清空请求,可以保证 执行了搜索操作 的请求肯定包含在了新捕捉到的请求里面,从而有效缩小了我们的搜查范围。

步骤二:开启写轮眼模式

   最终确定了这条是我们要找的请求,是标准答案。
Jmeter手动编写脚本详解(Jmeter 5.3 & jdk1.8.0_201)
   现在我们要做的,就是在Jmeter中发送出和它完全相同的请求。
   首先在Jmeter中进行一些准备工作,就像我们搜索saber时需要我们操作一样,Jmeter发送请求也需要准备好虚拟的人:

   在【测试计划】添加线程组
Jmeter手动编写脚本详解(Jmeter 5.3 & jdk1.8.0_201)
   虚拟用户是用来发请求的,我们把发送请求的模板加上:

   在【线程组】添加HTTP请求
Jmeter手动编写脚本详解(Jmeter 5.3 & jdk1.8.0_201)
   接下来的思路很简单,发送请求需要什么,我们就从标准答案里找什么,然后拿过来填上。

  1. 请求需要url:
    Jmeter手动编写脚本详解(Jmeter 5.3 & jdk1.8.0_201)
    安排上:
    Jmeter手动编写脚本详解(Jmeter 5.3 & jdk1.8.0_201)
  2. 请求需要请求头:
    找到Request Headers,全部复制
    Jmeter手动编写脚本详解(Jmeter 5.3 & jdk1.8.0_201)

在Jmeter中找到专门存储请求头的元件,【HTTP 请求】—【添加】—【配置元件】—【HTTP 信息头管理器】,点击下方的 【从剪贴板添加】,一键粘贴:
Jmeter手动编写脚本详解(Jmeter 5.3 & jdk1.8.0_201)

  1. 请求需要请求体:
    get请求没有请求体。

调试

场景设置

结果监测