在系列三中,只是实现了最基本的http请求,现在将对http请求进行一些优化。

一、加入HTTP默认请求值元件

1.添加HTTP默认请求值元件

右击 线程组->添加->配置元件->HTTP默认请求值

  我们创建一个测试计划有很多个请求且都是发送到相同的server,每一个http请求都需要填写一遍协议、服务器名称或IP、端口、路径等,如果地址改了之后,又需要对每一个http请求进行修改,这很不方便。

这时,可以添加HTTP默认请求值,并且在HTTP默认请求值中配置一遍协议、服务器名称或IP、端口等,然后添加多个http请求且不设置协议、服务器名称或IP、端口等,这些http请求会默认使用HTTP默认请求值组件设置的值。

如果http请求中有配置,HTTP默认请求值中也有,则优先使用http请求中的配置。

jemeter 测试脚本 有时候跑一个 有时候只跑了两个_HTTP

 2.配置HTTP默认请求值元件

jemeter 测试脚本 有时候跑一个 有时候只跑了两个_HTTP_02

 3.清空登录接口的部分内容

jemeter 测试脚本 有时候跑一个 有时候只跑了两个_数据_03

 4.运行接口请求

接口请求成功,说明我们配置的HTTP默认请求值生效了。

jemeter 测试脚本 有时候跑一个 有时候只跑了两个_数据_04

 二、http请求加入响应断言元件

1.添加响应断言元件

如果http请求没有加入断言,在察看结果树中只能判断请求是否能通,而不能确定请求后响应的数据是否正确。这时可以添加响应断言来判断接口测试得到的接口返回值是否正确。

你要加哪个http请求的断言就右击该http请求 ->添加->断言->响应断言

jemeter 测试脚本 有时候跑一个 有时候只跑了两个_数据_05

 2.响应断言介绍

(1)Apply to

关于应用范围,我们大多数勾选“main sample only” 就足够了,因为我们一个请求,实质上只有一个请求。但是当我们发一个请求时,可以触发多个服务器请求,就有main sample  和 sub-sample之分了。

(2)测试字段

勾选“响应文本”,会在响应数据中进行校验。

(3)模式匹配规则

勾选“包括”,意味着只要响应数据中包含要校验的字段,请求就算成功。

(4)测试模式

即需要校验的数据值。点击添加按钮进行添加,校验的数据值可以在察看结果树中的响应数据中获取。

jemeter 测试脚本 有时候跑一个 有时候只跑了两个_服务器_06

 3.测试响应断言

在http请求中更改错误的测试参数进行接口请求。

jemeter 测试脚本 有时候跑一个 有时候只跑了两个_服务器_07

 在响应数据中没有找到我们在响应断言中配置的"code":0,所以请求失败。

jemeter 测试脚本 有时候跑一个 有时候只跑了两个_服务器_08

我们在改回正确的请求参数,再次请求。

在响应数据中,可以找到我们在响应断言中配置的"code":0,所以请求成功。

jemeter 测试脚本 有时候跑一个 有时候只跑了两个_数据_09

 三、加入HTTP Cookie管理器元件

在接口测试的应用场景中,一般对业务的操作都是基于用户登录情况下的操作。

这里我新增一个增加来文数据的接口,这个接口肯定必须是登录的情况,如果未在登录的情况下,一般会跳转到登录的页面。目前是在未登录的情况下,进行的增加来文数据接口请求,如下图所示:

jemeter 测试脚本 有时候跑一个 有时候只跑了两个_服务器_10

jemeter 测试脚本 有时候跑一个 有时候只跑了两个_数据_11

 请求的数据中没有cookies,遇到这样的问题,确实让人很郁闷的,思路大多数人都是知道的,就是登录成功后,获取登录成功后的Cookie的信息,然后在增加来文数据的接口时,在请求头中带上Cookie的信息,已证明用户是登录成功后的操作。

可是登录成功后,怎么获取登录成功后的Cookie信息呢?那么这时,就可以使用HTTPCookie的管理器来解决这个问题了。

1.Cookie管理器的特性:

(1)能够像web浏览器一样存储和发送cookies;

(2)若有一个HTTP请求和响应包含一个cookie,cookie管理器会自动存储该cookie,并能够通过cookie保持会话;

(3)JMeter的每个线程都有自己的"cookie存储区"。所以,如果你正在测试一个使用cookie来存储会话信息的网站,那么每个JMeter线程都有自己的会话。请注意,这种cookies不会在cookie管理器中展示出来,但可以在“查看结果树”中看到它们;

(4)JMeter会检查收到的cookies是否对URL有效。这意味着跨域的cookie不能被存储。如果你有窃听行为,或者想要存储跨域cookies,需要在jmeter.poperties中设置:“ CookieManager.check.cookies = false”;接收到的Cookies可以存储为JMeter的线程变量。如果要把 cookies保存为变量,需要设置:“ CookieManager.save.cookies =true“;

(5)默认情况下jmeter中的cookies在存储时名字前缀为"COOKIE_ ",这是为了避免因局部变量重名引起的异常情况。如果不想用这个前缀,需要定义属性“CookieManager.name.prefix = ”(一个或多个空格)。如果使用了前缀,则一个名称为TEST的cookie的值可以通过$ {COOKIE_TEST}获取 ;

(6)你可以手动添加一个cookie到cookie管理器。如果你这样做,这个cookie将被所有JMeter的线程共享。

(7)空值的cookies默认被忽略掉。这可以通过设置JMeter的属性进行更改:CookieManager.delete_null_cookies =false。请注意,这也适用手工定义的cookies-任何此类cookies在更新后会从cookie manager中移除;

(8)还需要注意的是cookie名称必须是唯一的-如果一个cookie的名称与已有cookie同名,它将取代原有的cookie。

注:如果在一个取样器作用域中有多个cookie管理器,目前没有办法去指定使用某一个。并且,一个cookie管理器中保存的cookie不能被其它的cookie管理器使用,所以要慎用多个cookie管理器

2.添加HTTP Cookie管理器元件

右击 线程组->添加->配置元件->HTTP Cookie管理器

jemeter 测试脚本 有时候跑一个 有时候只跑了两个_HTTP_12

3.接下来我们再次进行请求,cookie已经有数据了,请求也已经成功了。

jemeter 测试脚本 有时候跑一个 有时候只跑了两个_HTTP_13

 

jemeter 测试脚本 有时候跑一个 有时候只跑了两个_服务器_14