栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

jmeter性能测试关注的指标(jmeter性能测试指标)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jmeter性能测试关注的指标(jmeter性能测试指标)

JMeter性能测试--进阶篇

一、简介二、准备测试接口三、需求四、jmeter使用

3.1、新增“线程组”,这里命名为flask应用3.2、在“flask应用”下面新增“HTTP请求”3.3、在“HTTP请求”下新增“JSON提取器”3.3、在“HTTP请求” 下新增 “BeanShell 后置处理程序”3.4、在“flask应用”下添加“察看结果树”3.4、在“flask应用”下添加“调试取样器”

一、简介

这篇文章,主要介绍在测试接口过程中,怎么从多层返回结果中提取指定字段,并存储到文件中,主要使用到“JSON提取器”、和“BeanShell 后置处理程序”。

二、准备测试接口

这里为方便记录,自己使用flask起了个服务,写了个http get接口;,然后使用jmeter对这个接口发请求,提取出想要的字段,进行下一步处理。

flask服务参考第2.5章节:【python】flask-Web 应用程序框架

三、需求

需求:取出请求返回体中data数组中所有的id和telephone写入text文件中留用。

{
    "code":"0",
    "data":[
        {
            "address":"u5317u4eacu5e02u6d77u6dc0u533a",
            "id":1,
            "password":"123456",
            "role":0,
            "sex":0,
            "telephone":"10086",
            "username":"u5c0fu660e"
        },
        {
            "address":"u5e7fu5ddeu5e02u5929u6cb3u533a",
            "id":2,
            "password":"abc",
            "role":1,
            "sex":0,
            "telephone":"10010",
            "username":"u674eu534e"
        },
        {
            "address":"u6df1u5733u5e02u5357u5c71u533a",
            "id":3,
            "password":"666666",
            "role":0,
            "sex":1,
            "telephone":"10000",
            "username":"u5927u767d"
        }
    ],
    "msg":"u64cdu4f5cu6210u529f"
}
四、jmeter使用

3.1、新增“线程组”,这里命名为flask应用

3.2、在“flask应用”下面新增“HTTP请求”

3.3、在“HTTP请求”下新增“JSON提取器”

Variable names:保存的变量名,后面使用${Variable names}引用

JSON Path expressions:调试通过的json path表达式

Match Numbers:匹配数字(0代表随机,1代表第一个,-1代表所有)

Default Values:找不到时默认值,一般设置为NOT FOUND

Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL”

怎么在BeanShell只用提取器中的变量?

执行后,从查看结果树中调试器结果可以看出来

JMeterVariables:
JMeterThread.last_sample_ok=true
JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@2575fa
START.HMS=105801
START.MS=1647658681441
START.YMD=20220319
TESTSTART.MS=1647675388832
__jm__flask应用__idx=0
__jmeter.U_T__=flask应用 1-1
__jmv_SAME_USER=true
id_1=1
id_2=2
id_3=3
id_ALL=1,2,3
id_matchNr=3

${id_1} 代表取id数组的第一个值;${id_2} 代表取id数组的第二个值;
同理继续下去:${id_n} n表示数组长度;${id_matchNr} 代表id数组长度;id_ALL 代表id数组元素使用逗号拼接后的值,一般在“BeanShell 后置处理程序”中使用vars.get(“id_ALL”)方式获取;

如果id需要传递到下一个请求中使用,一般搭配“foreach控制器”来遍历;
如果是遍历值后需要写入文件,可能需要搭配“BeanShell 后置处理程序”来遍历(参考下一章节);

3.3、在“HTTP请求” 下新增 “BeanShell 后置处理程序”

脚本如下

import java.util.Date;
import java.text.SimpleDateFormat;
import java.lang.*;
import java.util.Locale;
import java.text.DecimalFormat; 

import java.text.*;

SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");//设置日期格式
String date = df.format(new Date());// new Date()为获取当前系统时间

log.info("+++++++++++++++++++++++++++++++++++");
log.info("开始111");

//vars.get:获取 jmeter 

//定义保留两位小数(四舍五入),小数点前为4位数,不够则用0填充
String pattern = ".0000";
//应用格式化模式
DecimalFormat defaultFormat = new DecimalFormat();
defaultFormat.applyPattern(pattern);
//获取id数组的元素
System.out.println(${id_1});
System.out.println(${id_2});
System.out.println(vars.get("id_ALL"));
System.out.println(vars.get("id_" + 2));
//获取数组长度
int num = ${id_matchNr};
System.out.println(${id_matchNr});
System.out.println("===0444444444======");
String id_v;
String id_f;
//遍历数组元素
for(int i=1;i<=num;i++)
{
	System.out.println(vars.get("id_" + i));
	System.out.println(vars.get("role_" + i));
	id_v = vars.get("id_"+i).toString();
	System.out.println(id_v);
	d=Double.parseDouble(s);
	String result = defaultFormat.format(salary);
	System.out.println(result);
}

3.4、在“flask应用”下添加“察看结果树”

3.4、在“flask应用”下添加“调试取样器”

目的:用例查看Json提取器提取到的值

执行请求后,可以在“察看结果树”查看


相关博文:

【性能测试】JMeter性能测试(一)-入门篇.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/773040.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号