一.关联
-
哪些数据需要关联
- 数据是由服务器端生成的
- 数据在每一次请求时都是动态变化的
- 数据在后续的请求中需要再发送出去
-
举个栗子, 常见的 Session ID 就是一个典型的需要关联的数据。它需要在交互过程中标识一个客户端身份,这个身份要在后续的交互中一直存在,否则服务端就不认识这个客户端了。Spring Boot 中有一个 spring-boot-starter-security,默认会提供一个基于 HTTP Basic 认证的安全防护策略。它在登录时会产生一个 CSRF(Cross-Site Request Forgery)值,这个值典型地处于动态变化中。
- 可以看到登录信息返回csrf,没有使用这个值的接口将会没有权限访问。
- 首先添加 Cookies Manage。JMeter 在处理 CSRF 时,需要添加一个 Cookies manager。如下:
- 这里的 Cookie Policy 一定要选择 compatibility,以兼容不同的 cookie 策略。
- 取动态值,在返回 CSRF 值的地方加一个正则表达式提取器来做关联。
- 这里的,就是要取出这个动态的变化值,保存到变量 csrfNumber 中去。
- 然后, 将发送时的 CSRF 值替换成变量,就可以正常访问其它接口了。
- 可以看到登录信息返回csrf,没有使用这个值的接口将会没有权限访问。
-
jmeter有多种提取器,使用什么样的提取器取决于业务的需要。
二.断言
- 断言就是判断服务端的返回是不是正确的,判断逻辑如下:
- 举个栗子,登录接口:
- 执行结果:
- 添加断言:
- 举个栗子,登录接口:
总结
-
关联和断言的前半部分是一样的,都是从服务器返回信息中取出数据。但不同的是,关联取来的数据每次都会不同;而断言取出来的数据基本上都是一样的,除非出了错。
-
对服务端生成的,并且每次生成都不一样的动态变化的数据,那么将其取回来之后,在后续的请求中使用,这种逻辑就是关联。
-
对服务端返回的,可标识业务成功与否的数据,将其取回来之后,做判断。这种逻辑就是断言。