jmeter接口测试详解
接口不仅只有正例,还有反例,使用的是CVS的参数化处理,正例和反例仅仅是因为参数不一样
如何接口做参数化处理?
在存放代码目前下新建一个CSV文件,使用N++打开,加上3个参数
将以上三个参数与值,写在CSV上面,使用豆号隔开,如下图,字段与值是一一对应的
在 jmeter的这个位置加一个配置元件如下图
CSV设置里面添加刚才写好的文件,设置好前五个内容即可,如下图
设置好之后,这个传参的值也要设置成变量的方式传入,这里是全局变量
业务的断言也需要使用变量的方式去取值如下图
因为写了四条用例,所以只会执行一次,只执行第一条,那么需要设置一具循环控制器,把接口放在循环控制器里面,设置为4次,如下图
执行结果是能看到第一个接口执行了4次如下图
需要必须带请求头的接口
比如百度搜索接口,就是一个必须带请求头的接口
在 fiddler上面抓包,复制所有请求头下来,因为不知哪个请求头是必须的,所以都复制下来
在添加一个配置元件叫,http信息头管理
把请求头粘过来,就能自动加上了如下图,具体哪个请求头是必须的,可以一个人删除请求一下看会不会报错
发送请求,在查看结果树里面可以看到请求成功的,可以去打开网页,查看元素对比一下里面的内容,几个关键字
在没有接口文档,或者不使用 fiddler的情况下,可使用 jmeter录制功能
添加一个配置元件》》非测试元件》》http代理服务
录制端口和录制的位置,需要设置一下,专门建立一个线程做为录制用,,如果8888端口在fiddler使用过了,会被占用,需要在fiddler上把他去掉,不然
在本机设置代理服务器,录完后,需要把这个本机设置还原不然什么网站都 用不了了
上面录制了一些不需要的内容可以在http代理服务 器设置过滤掉如下图
录制这么多怎么判断 哪个是自己想要的接口,可以根据请求数据,看下哪个数据是自己请求的
录制下来后可以直接做为接口测试去执行
jmeter 有很多功能都是限制死的,如果是在项目碰到了一些特殊规则时,比如自定义的加密规则,这种情况下jmter是做不到的,只能做到一些他本一来就有的设定好的一些加密规则,这个时候需要通过BeanShall,这就有两个需求,第一个如何和主键之间交换数据,第二个如何把数据给到主键
1、自定义一个变量,name = 'guohailan',然后可以在BeanShell取得这个变量
获取变量的值:vars.get获取的意思
vars.get('name')
获取之后,打印出来 log_info打印的意思 log_info(vars.get('name'))
打印结果:guohailan
设置一个变量 , name表示变量名, guohailan表示变量的值,vars.put('name','guohailan')
获取设置到的变量 log_info(vars.get('name'))
打印结果:guohailan
vars的使用必须在一个线程里面
2、 props变设置量,可全局使用,跨线程组
设置一个全局变量 props.put('name','guohailan')
获取全局变量的值:props.get('name')
3、获取前面一个取样器的返回信息
获取返回值的code码:prev.getReSponseCode()
获取反值的信息内容 :prev.getRsponseDataAsString()
4、 ctx上下文
获取上下文所有的变量: cts.getProperties()
********jmeter数据库连接与执行,设置好连接池内容
新建一个 JDBC,Requst请求,将SQL语句写在里面,可在结果树看到查询的结果
如果想要提取数据库查询的结果如何操作?
可以使用BeanShell提取,代码如下
例如,用名表,需要提取用户名和密码
vars.put("username"),vars.getObject("result").get(0).get("username")
意思是创建一个变量名为username,从 result对象中获取到表中的第1条,也就是下标为0,的表头为username的值,在使用的时候就可以直接使用name变量名获取到对应的值
vars.put("username"),vars.getObject("result").get(0).get("username")
result是怎么来的?看下图
jmeter写好接口脚本后,也可以打开CMD命令行去运行执行接口用例
打开命令行,执行jmeter的命令:如下
命令行参数:
-n -t -n非界面方式运行,
-t指定jmx位置 -l 指定生成结果的jtl格式, 生成的这种报告,查看起来比较麻烦,需要打开jmeter,新建线程组,添加查看结果树,往里面添加这个文件才能看到
-e 生成html报格式, -o 指定html报告所在的文件夹(这个目录必须是空的),在先目录下新建一个空的文件夹
使用jmter+Ant+Jenkins持续集成
第一步下载Ant,并解压,解压之后,把Ant目录下的bin目录配置在环境变量中,配置之后看下在cmd里面能不能看到版本,如果看到了说明配置成功了
第二步:Ants文件里面有一个 build文件,并将这个文件放在test.jmx ,jmeter接口脚本中的同一个文夹件中
第三步:配置全局文件,在bin目录下有一个 jmeter.prperties文件编辑,加入一行,如下图,这样全局变量就配置好了
第四步,在文件放在test.jmx ,jmeter接口脚本中文件夹中,下输入cmd 直接执行ant ,他就会执行我们所有的用例,并且生成报告,可以看到一次生成这些报告