反骨仔

一个业余的 .NET Core 攻城狮

0%

22 JMeter 给网站做压力测试

本章介绍如何使用 Fiddler 抓包分析网站的登录过程,并且使用 JMeter 实现网站的自动登录,从而实现自动化测试以及性能测试。

22.1 案例介绍

本章介绍如何给网站做压力测试,使用的是一个叫 Mozy 的网站。

其登录页面是 https://secure.mozy.com/login ,用户名是 246460253l@qq.eom ,密码是 tanJαiao1234。

建议读者注册自己的账号来完成本次操作,注册网址是 https://secure.mozy.com/registration/ee。

性能测试的脚本其实就是自动化测试。

22.2 压力测试的目的

模拟 20 个用户同时登录 Mozy 网站进行操作,然后查看性能指标,比如响应时间和出错率。

22.3 抓包分析 Mazy 网站的登录过程

  1. 启动 Fiddler,打开浏览器,打开 https://secure.mozy.com/login,输入用户名 246460253 l @qq.eom 和密码 tankxiao 1234

Fiddler 能抓到很多包,找到那个有用户名和密码的包

image-20210113020434373

抓包可以看到,浏览器用 POST 方法发送了如下数据给服务器 :

1
authenticity _token司~K4Ig6s3j57plJ%2F5rWGCXDVFbr6时L1也uyklxbwDHU%3D&山em缸ne=2464602531%40qq.com&password=tankxiao1234

除 了用户名和密码外,还有一个 authenticity_token 。 这个 authenticity_token 是从哪里来的呢?(如果 authenticity_token 每次都变化,说明服务器会验证对其进行)

  1. 查找 authenticity_token 的来源。在 Fiddler 中,按快捷键【Ctrl+F】 来查找

查到的 Session 会用黄色的背景显示,我们得知这个 authenticity_token 是从 https://secure.mozy.com/login 这个页面的响应中来的

image-20210113020958743

image-20210113021007289

22.4 抓包分析

通过上面的抓包分析,我们可以总结出整个过程如下 。

  1. 发一个 GET 的 HTTP 请求到 https://secure.mozy.com/l。但是,在这个页面的 HTTP 响应中,用正则表达式提取到 authenticity_token 的值。
  2. 发一个 POST 的 HTTP 请求到 https://secure.mozy.com/login,Body 的数据包含 authenticity_token ,用户名和密码,从而实现了登录。
  3. 访问 https://secure.mozy.com/,可以看到己经是登录的状态。

22.5 实现 Mazy 登录

具体的操作步骤如下 。

  1. 启动 JMeter,新建一个线程组,添加 一个 Cookie 管理器 ,添加 一个“ 察看结果树”
  2. 在线程组下面新建一个 HTTP 请求,命名 为 loginPage

image-20210113021151329

  1. 保存脚本后运行,得到登录页面的 HTTP
  2. 使用 正则表达式工具 。 写一个获取 authenticity_token 的正则表达式 。正则表达式字符串是 authenticity_token ” type=”hidden” value="(*.?)”,
  3. 在 loginPage 这个 HTTP 请求下面添加一个正则表达式提取器,通过正则表达式提取器把 authenticity_token 的值提取出来,保存在变量 token 中。
  4. 在线程组下面新建一个 HTTP 请求,命名 为 login。

image-20210113021246074

image-20210113021256480

image-20210113021308365

  1. 在线程组下面新建一个 HTTP 请求,命名为 homePage。

image-20210113021327540

22.6 简单的压力测试

用 JMeter 很容易模拟压力测试。在线程组中,将线程数改为 5,代表同时有 5 个用户:循环次数是 10,代表每个用户循环 10 次。

image-20210113021358181

在线程组中添加一个聚合报告,然后运行脚本,就能看到性能测试的结果。

image-20210113021416434

我们通过聚合报告来分析性能测试的结果。

  1. Error% :本次测试中出现错误请求的数量。正常情况下应该是 0.00%。否则就是功能出现了问题。也就是当大量用户访问的时候,造成了功能失败的问题,这个问题很严重。
  2. Average :平均响应时间,单位是 rns。对于一个 HTTP 请求来说,响应时间应该在 200rns 之内,但是图中 login 的平均响应时间是 5 492rns ,说明性能非常差。

参考

《HTTP 抓包实战》