首页 > 编程知识 正文

jmeter参数化的三种方法,jmeter参数化的作用

时间:2023-05-03 20:49:11 阅读:231938 作者:4897

        参数化,能打开这篇博客看的应该都懂。。。最早我能想到的就是对传的参数进行参数化,比如手机号,我传131开头的、133开头的、135开头的,如果不会参数化,就要写三个http请求,分别传这三种参数,学会了参数化,只写一个http请求就够了,当然还会加点jmeter的其它一些小东西。以我的理解,jmeter有四种参数化,我只用熟了两种,不过这两种应该是最好用的两种,今天就主要说说这两种,另外两种会大概提一下。(又回来修改一下,感觉jmeter既然有四种参数化,就有它的原因,今天又明白了其中一个存在的原因,虽然还觉得函数助手有点多此一举了,所以下面主要有三种参数化的方法)

        我学参数化时候用了“京东万象”的接口,那里提供很多接口可以供学习者使用,不用再因为学习接口测试而想办法抓包了。这里我主要用的是一个查询天气预报的接口,输入城市,就可以查这个城市的天气预报,下面是这个接口的信息。


        下面介绍第一种参数化方法:CSV Data Set Config

        这种方法需要写一个参数文件,放在电脑指定一个地方,


        这个东西在配置元件里,按着名字找就行了。

        名称:随意填写

        Filename:写参数文件放置的位置,应该也可以用相对路径,相对路径和绝对路径,根据个人喜好选择。这里可以看出我在F盘的jmeter目录下,有个city.txt的文件。文件内容如下:


        File encoding:这里应该是编码规则,先空着,如果编码不对可以试试utf-8。(这个接口我之前写了utf-8,运行结果有问题)

        Variable Names (comma-delimited):这里是参数的引用名,我在这写的city(如果这里看不懂,先往下看)。这里只参数化了其中一个参数,如果多个参数,参数名之间用英文的逗号隔开,如city,province。上面那个参数的文件里的参数值,就要写两列,之间用英文逗号隔开,如石家庄,河北。(应该是这样的,如有需要可以试试)。

        然后加一个http请求,具体怎么写不多说了,直接上图。


        和一般的http请求差不多,只是在传参数那里,看第二个传的参数。这里我为了省事,传的city这个参数,后面的参数值,就是引用上面CSV Data Set Config的Variable Names (comma-delimited),那里我写的city,这里格式就是这样:${city}。写到这里应该比较清楚了,用CSV Data Set Config调取文件,获取参数值,放到http请求里传出去。

        因为这里有四个参数,我要设置一下线程组。


        这里线程数设置为4,执行时候就自动获取参数,把文件里的4个参数都获取一遍,如果参数很多,可以使用这种参数啊化方法。就像我用过一次测试手机号段的,从100-199,一共100个号段,就是用的这种参数化。

        还有一种参数化,也是使用的外部文件,当参数值的,那个使用了一个函数助手,简单介绍一下。

        函数助手是在上面菜单栏里选项—>函数助手对话框。


        这里找到__CSVRead这个函数,函数参数这里可以看到两个参数,上面的就是参数文件的路径,和刚才一样,都在F盘那个目录;下面这个大概就是取第几列的意思,计算机都是从0开始计数,这里的0表示的是第一列。点击生成,生成的这个复制到http请求的city那个参数值那里就可以了,这里也要注意设置线程数。这个生成的字符串还是有规律的,看明白了也不用每次都打开函数助手生成,不过我还是喜欢用第一个那种参数化方法。

        第三种参数化方法:用户参数

        用户参数是在线程组,右键,添加,前置处理器里的,看一下用户参数内容,很简单。


        上面的名称和注释,内容随意。

        我这里名称还是用的city,后面的用户1、2、3、4,就是四个参数,一定要勾选“每次迭代更新一次”,不然执行了几次,都是取的一个城市,http请求还和第一种参数化写法一样,再附一张图。


        这个线程数也要记得改一下。这种参数化方法适用于参数少的情况。

        第四种:用户定义的变量

        这也是一种参数化方法,之前觉得有第一种和第三种就够了,因为用户定义的变量,并不能让一个参数有多个参数值可选,不明白为什么要有这个功能,直到今天突然领悟了,还要感谢项目中实践。之前测接口,有几百种情况,写了几百个HTTP请求,那会儿也没弄参数化,今天又发布了一版,而且IP地址变了,这下就得改几百个IP了,虽然只是简单的复制粘贴。改了几个突然想到了参数化,IP这里能不能参数化呢?如果能用哪种好?很快就想到了这个之前感觉很鸡肋的方法。下面就是这种参数化的使用方法,还是用的查询天气预报接口。(这期间把jmeter升成4.0了,只能截4.0的图了)


        点下面的添加,就可以添加一行,把url写进这里了。如果想参数化端口号,再添加一行,写端口号就可以了。引用url方法和其它参数引用方法一样了。


        IP那里被参数化了,可以执行。这么参数化下来,以后就不怕服务器IP再变了,如果变动,直接改一下用户定义的变量里面那个url的值就可以了。这种参数化方法适用于大量的HTTP请求里有相同的信息。(jmeter4.0可以设置成中文的,截图时候没设置)

        jmeter也可以连接数据库,从数据库中查询的数据可以当参数,但是这应该不算参数化,从数据库中找到很多数据,能真正当参数的只有一个,我还没实现每条数据当一次参数的方法,不知道有没有,如果有后续会写出来。

        上面介绍了参数化的用法,举得例子都是在http请求的Parameters里传参数,其实参数不止在这里用,同样http请求的Body Data里的参数也可以用参数化,看图。


        这是实际工作中用的参数化,我在尝试各种手机号段注册能不能成功。

        参数化也可以用在HTTP信息头管理器,断言也可以,就不附图了,我现在只用到了这几处,我想参数化还有其它地方的应用,不过用法都一样,就在实践中一点一点的琢磨了。

        参数化虽然好用,但是也不是越多越好,根据自己情况,判断哪里需要参数化。

        

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。