zoukankan      html  css  js  c++  java
  • websocket协议性能测试(jmeter版)

    一、Websocket接口性能测试的场景

    场景1: 大量链接的创建和关闭——不断模拟大量用户对Websocket链接的创建、关闭过程。

    场景2: 长时间保持大量连接——创建大量链接,保持链接较长时间。

    场景3:大量推送消息——可以少量链接较长时间保持,不断触发消息推送

    二、测试工具

    JMeter

    下载插件及依赖包

    插件地址:https://bitbucket.org/pjtr/jmeter-websocket-samplers/downloads/?spm=a2c4g.11186623.2.23.363f59572g7WZB

    需要的依赖包:

    将下载的插件包、依赖包放到 JMeter的 libext 目录下,之后启动JMeter。

    三、测试步骤

    1、步骤一

    右键单击左侧导航树中的 Test Plan,选择 Add > Config Element,可看到新增的配件元件选项 WebSocket Binary Frame Filter、WebSocket Ping/Pong Frame Filter 和 WebSocket Text Frame Filter 。    查看插件是否安装成功

    右键单击左侧导航树中的 Test Plan,选择 Add > Assertions,可看到新增的断言选项 Binary Response Assertion。

    查看新增的断言选项

    右键单击左侧导航树中的 Test Plan,选择 Add > listener > View Results Tree,在编辑页面左下方的下拉列表中,可看到新增的选项 Binary。

    查看新增选项

    右键单击左侧导航树中的 Test Plan,选择 Add > Threads(Users) > Thread Group ,右键单击 Thread Group,选择 Add > Sampler,可看到以下新增的采样器选项,具体说明如

     
    Sampler 名称说明
    WebSocket Open Connection 建立一个 WebSocket 连接
    WebSocket Ping/Pong 控制帧,发送 ping 并接收 pong
    WebSocket request-response Sampler 发送和接收文本或二进制 WebSocket 帧
    WebSocket Single Write Sampler 发送文本或二进制 WebSocket 帧
    WebSocket Single Read Sampler 接收文本或二进制 WebSocket 帧
    WebSocket Close 关闭 Websocket 连接

    下一步,需要配置这些 Sampler。

    2、步骤二

    下面将演示如何在测试场景中添加并配置 Sampler。以下为简单示例,您可以根据业务需要进行调整。

    在 Jmeter 页面中,右键单击 Test Plan,选 Add > Thread (Users) > Thread Group,将一个线程组添加到测试计划中。

    在线程组中依次添加采样器(Sampler),并进行配置。右键单击 Thread Group,选择 Add > Sampler > WebSocket Open Connection。当前的 Sampler 将建立 WebSocket 连接。

    建立 websocket 链接
    说明 我们以 Gateway Echo 服务来创建脚本(wss://echo.websocket.org) 。这是一个 Echo 服务,因此发送到此服务的所有消息都将回显给客户端。

    相关的配置如下:

    配置项示例值说明
    协议 WS 协议可以是 WS 或 WSS(Secure WebSocket)。使用 WSS 进行加密连接。
    Server name or IP echo.websocket.org 域名或 IP
    Port 443 端口
    Path - 可为空
    Connection timeout(ms) 20000 建连的超时时间
    Read timeout(ms) 6000 等待服务器响应的超时时间

    右键单击 Thread Group,选择 Add > Sampler > WebSocket Ping/Pong。该 Sampler 用来测试 Ping/Pong 功能。

    设置 sampler

    相关配置如下:

    Pong(读)超时(ms):6000

    Pong(读)超时表示如果 JMeter 在 6 秒内没有收到 Pong 消息,则 Sampler 将失效。此 Sampler 会复用已有连接。

    右键单击 Thread Group,选择 Add > Sampler > WebSocket request-response Sampler。

    websocket结果树二进制视图4

    相关配置如下:

    配置项示例值说明
    Connection use existing connection 创建新的连接或复用已有连接。
    数据类型 文本 指定数据类型、请求数据和响应超时值。
    Request data PTS 请求数据,这里以文本为例
    Response(read)timeout(ms) 6000 响应超时时间

    右键单击 Thread Group,选择 Add > Sampler > WebSocket Single Write Sampler 。此请求是非阻塞的,只是将数据发送到服务端不需要等待响应。

    websocket结果树二进制视图5

    相关配置如下:

    配置项示例值说明
    Connection use existing connection 创建新的连接或复用已有连接
    数据类型 文本 指定数据类型、请求数据和响应超时值
    Request data PTS 请求数据,这里以文本为例
    Response(read)timeout(ms) 6000 响应超时时间

    右键单击 Thread Group,选择 Add > Sampler WebSocket Single Read Sampler。接收服务端的消息响应需要使用这个 Sampler。

    websocket结果树二进制视图6

    相关配置如下:

    配置项示例值说明
    Connection use existing connection 创建新的连接或复用已有连接
    数据类型 文本 指定数据类型、请求数据和响应超时值
    Response(read)timeout(ms) 6000 响应超时时间

    右键单击 Thread Group,选择 Add > Sampler WebSocket Close。接收服务端的消息响应需要使用这个 Sampler。

    websocket结果树二进制视图7

    相关配置如下:

    配置项示例值说明
    Close Status 二进制 关闭连接时定义的状态码,数据帧的头两个字节
    Response(read)timeout(ms) 6000 响应超时时间

    此采样器将关闭现有的 WebSocket 连接,由于是协商关闭,显示原因为 “1000:sampler requested close”。

    右键单击 Thread Group,选择 Add Listener View Results Tree,在线程组中添加监听器 View Results Tree。接收服务端的消息响应需要使用这个 Sampler。

    3、步骤三:运行脚本

    脚本编辑完成后,单击页面顶部的开始按钮,运行脚本。

    通过 View Results Tree 监听器查看脚本是否运行正常。在左侧导航树中,选择View Results Tree,检查所有 Sampler 是否都配置正确并符合预期。在该监听器中,如果 Sampler 前面有绿色对勾表示运行正常。

    如出现运行异常的 Sampler,请参见步骤二:创建脚本进行调试。

    部分示例结果如下:

    WebSocket request-response Sampler

    根据脚本配置,Request 信息如下:

    示例结果图1

    根据脚本配置,Binary 格式的 Response data 如下:

    示例结果图2

    WebSocket Single Read Sampler

    根据脚本配置,Text 格式的 Response data 如下:

    示例结果图3

    根据脚本配置,Binary 格式的 Response data 如下:

    示例结果图4

     

     

    转载:https://help.aliyun.com/document_detail/93627.html#section-rvj-q97-lii

  • 相关阅读:
    [转]CentOS 修改yum源为国内源
    著名的镜像网站
    [译]LRTHW练习五——更多的变量及输出打印
    CentOS足迹一
    LRTHW笔记二
    线程的创建和运行(未完待续)
    比较当前时间和给定时间大小
    单独管理image
    Java 修改页面排序条件
    Java 如何使用radio button保存值
  • 原文地址:https://www.cnblogs.com/wu-wu/p/14018754.html
Copyright © 2011-2022 走看看