性能测试工具功能

  • 录制或编写脚本功能
  • 参数化功能
  • 关联功能
  • 场景功能
  • 报告生成功能

性能工具的脚本能力

录制

  1. 本地录制:通过截取并解析与服务器的交互协议包,生成脚本文件。比如说 LoadRunner 调起 IE 的时候,不用修改 IE 的代理设置,就可以直接抓取 HTTP 包,并通过自己的解析器解析成脚本。
  2. 代理录制:通过代理服务器设置,转发客户端和服务器的交互协议包,生成脚本文件。JMeter 中的脚本录制功能就是这样做的。

代理录制的逻辑:
image.png

  1. 我们在 IP 为 2.2.2.2 上的主机上,打开一个代理程序,开 81 端口,所有到 81 端口的都转发到 1.1.1.1 的 80 端口。
  2. 当 3.3.3.3 主机要访问 1.1.1.1 的的 80 端口,可以通过访问 2.2.2.2 的 81 端口进行转发。

注意: 客户机不一定要和代理服务器在同一台机器上

<用的少, 这部分略…>

关联与断言

关联的数据后续脚本中会用到,参数化则不会。断言倒是比较容易理解,就是做判断。

关联
常见的SessionID就是典型的需要关联的数据
image.png

断言
就是用来判断服务端返回的结果对不对
image.png


JMeter使用

创建线程组

image.png

  • Number of Threads(users): JMeter 中的线程数
  • Ramp-up Period(in seconds):递增时间,以秒为单位。指的就是上面配置的线程数将在多长时间内会全部递增完
  • Loop Count: 一个线程中脚本迭代的次数
  • Delay Thread creation until needed:JMeter默认启动时创建所有线程, 这里可以设置在需要时创建, 由于创建线程时会挤占压力机的CPU, 一般不选
  • Scheduler Configuration; If Loop Count is not -1 or Forever, duration will be min(Duration, Loop Count iteration duration), 举例如果Loop Count设置为100, 响应时间为0.1s, duration设置为100s, 那么100.1=10s<100s, jmeter在运行10s后会停止

创建HTTP Sampler

注意点:

  • Content type默认为text, 需要加个Header设置为JSON

image.png

  • 默认的charset=UTF-8, 不用特殊配置

关联

以下使用关联处理HTTP Basic认证产生的CSRF问题

  1. 添加Cookies Manage
  • Cookie Policy 一定要选择 compatibility,以兼容不同的 cookie 策略。

image.png

  1. 取动态值,在返回 CSRF 值的地方加一个正则表达式提取器来做关联

image.png

  1. 发送时的 CSRF 值替换成变量

image.png

补充:
上面是用的正则提取器,在 JMeter 中,还有其他的提取器, 比如说如果你返回的是 JSON 格式,就可以使用上图中的 JSON Extractor。
image.png

断言

示例
image.png

参数化

先做基准测试, 确定需要多少真实的数据, 比如TPS=100, 那么压测5分钟需要 100560=30000条真实数据

  1. 设置 CSV Data Set Config
  • Allow quoted data, 根据数据是否有引号设置为true或false
  • Recycle on EOF, EOF表示end of file参数文件用完了, jmeter提供了三个选项, true, false, 以及edit, edit表示在没有参数的时候回根据定义的内容来调用函数或者变量
  • Stop thread on EOF, 同上
  • Sharing mode, 指定参数的生效范围, 有四个选项All threads、Current thread group、Current thread、Edit, edit表示自定义

image.png

  1. 准备数据 ```shell

Java username,password test00001,test00001 test00002,test00002 test00003,test00003 test00004,test00004 test00005,test00005 test00006,test00006 test00007,test00007 ………………. test30000,test30000 ```

总结

  1. 分析业务场景;
  2. 罗列出需要参数化的数据及相对应的关系;
  3. 将参数化数据从数据库中取出或设计对应的生成规则;
  4. 合理地将参数化数据保存在不同的文件中;
  5. 在压力工具中设置相应的参数组合关系,以便实现模拟真实场景。

补充: HTTP协议

HTTP传输过程
image.png