jmeter实现自动进线
使用jmeter实现自动进线
可通过jmeter自身代理或者Charles
来获取主流程的事件,一般都是RESTFUL,一些CSS静态资源可以不考虑。
一个DTO类型的参数无法直接作为参数,在转码后再插入需要每次变更的ID后成功
%7B%22consultId%22%3A0%2C%22serverIp%22%3A%22192.168.224.108%22%2C%22consultCode%22%3A%22console_code_module_959%22%2C%22openId%22%3A%22${DTO}%22%2C%22source%22%3A%2230%22%2C%22userType%22%3A%2210%22%2C%22cityId%22%3A%221%22%2C%22userToken%22%3A%22%22%2C%22anonymous%22%3A%221%22%2C%22isForward%22%3A0%2C%22consultDescription%22%3A%22123%22%7D
直接使用会报解析错误
java.net.URISyntaxException: Illegal character in query at index 221: http://chat.51ping.com/user/chat_in?&user_token=&user_id=&user_type=user&city_id=1&from=app&consult_code=console_code_module_959&is_robot=0&is_anonymous=1&is_suggest=0&is_false=0&isForward=0&dialogId=3987&queueRequestDto={\"consultId\":0,\"serverIp\":\"192.168.224.108\",\"consultCode\":\"console_code_module_959\",\"openId\":\"9d8b344e-cb9d-46c8-8c1c-a9d04e0d1643\",\"source\":\"30\",\"userType\":\"10\",\"cityId\":\"1\",\"userToken\":\"\",\"anonymous\":\"1\",\"isForward\":0}&customerId=302525
at java.net.URI$Parser.fail(Unknown Source)
at java.net.URI$Parser.checkChars(Unknown Source)
at java.net.URI$Parser.parseHierarchical(Unknown Source)
at java.net.URI$Parser.parse(Unknown Source)
at java.net.URI.<init>(Unknown Source)
at java.net.URL.toURI(Unknown Source)
正则提取时要注意,返回结果中带\时,使用正则需要加\进行转义
上一个事件的响应为:
{"user_id":"","customerId":302504,"webSocketUrl":null,"from":"30","user_top_html":null,"kefu_top_html":null,"consult_category_detail":null,"welcomeMessage":"北京欢迎你","globalMessage":"北京欢迎你","code":0,"queueCount":0,"consultId":null,"staffId":null,"staffLogonServerIp":null,"serviceId":null,"onlineId":null,"userType":"user","robot":false,"product":null,"dialogId":3966,"robotDialogId":null,"manualDialogId":null,"queueRequestDto":"{\"consultId\":0,\"serverIp\":\"192.168.224.108\",\"consultCode\":\"console_code_module_959\",\"openId\":\"9d8b344e-cb9d-46c8-8c1c-a9d04e0d1643\",\"source\":\"30\",\"userType\":\"10\",\"cityId\":\"1\",\"userToken\":\"\",\"anonymous\":\"1\",\"isForward\":0}"}
若要提取 openId :\"openId\":\"9d8b344e-cb9d-46c8-8c1c-a9d04e0d1643\"
正则表达式应为 openId\\":\\"(.+?)\\"
jmeter正则表达式提取相关:
注释不多说,随便自己喜欢
Apply to:默认即可
要检查的字段:主体等选择,一般我们选择主体,即服务器返回给我们的页面主体信息
引用名称:即参数名称,这个自己定义,在后面时可用
正则表达式: 正则表达式中()括起来的部分就是要提取的。.代表任意字符,+代表出现任意次,后面加?。
模板:$1$代表只有一组数据
匹配数字:0代表随机取值,1代表全部取值,通常情况下填0,如果在LR中,取出的值是一个数组,还得处理一下,LR11版本用一个随机的函数就可以不用写大段的代码来处理数组
缺省值:如果参数没有取得到值,那默认给一个值让它取
运行结果
进线成功
也可以通过一些枚举值来模拟PC与APP,或者加循环/message/add来维持会话进行长时间的负载测试