Jmeter-websocket獲取信息,加入參數,傳入http請求

Jmeter-websocket獲取信息,加入參數,傳入http請求

測試計劃

  • 測試目的:
    直播搶答接口,測試接口併發性.
  • 測試分析
    進入直播間後,形成websocket長連接傳輸的協議, 此時教師端發起請求, 通過websocket協議傳遞queuename值, 學員端發起直播搶答接口,傳遞參數包含queuename值
  • 測試計劃
    • 1 用戶定義變量
    • 2用戶參數
    • 3創建線程組
      獲取queuename ,此處添加websocket sampler
      該線程組執行一次
    • 4創建線程組
      直播搶答接口,此處添加http request sampler
      該線程組按照實際併發需求配置
      在這裏插入圖片描述
      jmeter 沒有自帶的websocket sampler , 需要網上查找添加多個jar
      在這裏插入圖片描述

websocket 獲取消息並解壓
websocket 獲取消息後, jmeter 將獲取的消息加上了
[message 1]=回車 (這裏是真的坑)
下面纔是真正從服務端傳來的數據.所以在BeanShell PostProcessor 要對捕獲的數據進行處理.

import com.dongao.app.GetQueueName;

String responsedata = prev.getResponseDataAsString();
String finaldata=responsedata.split("1]")[1]; //攔截去掉[message 1]
log.info("--------------------------->finaldata="+finaldata.replaceFirst("\r|\n",""));//去掉第一個回車,這裏值得注意,一開始用錯了方法replaceAll,導致整個捕獲的消息都被去掉了回車,然後再調用jar包裏的方法,就會報 java.util.zip.DataFormatException: incorrect header check
String que=GetQueueName.getQueueName(finaldata.replaceFirst("\r|\n",""));
props.put("QueueName",que);

多線程組,beanshell的參數傳遞
同一線程組內,可用vars這個容器來傳遞參數
多線程組間,可以用props 這個容器來傳遞參數
(props實際的意義就是將變量定義爲jmeter的內部變量)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章