09丨关联和断言:一动一静,核心都是在取数据
高楼
该思维导图由 AI 生成,仅供参考
对每一个性能测试工具来说,关联和断言都是应该具备的基本功能。
但是有很多新手对关联的逻辑并不是十分理解,甚至有人觉得关联和参数化是一样的,因为它们用的都是动态的数据,并且关联过来的数据也可以用到参数化中,但不一样的点是,关联的数据后续脚本中会用到,参数化则不会。断言倒是比较容易理解,就是做判断。
那么到底该怎样理解关联和断言呢?下面我们通过两个例子来思考一下。
关联
现在做性能测试的,有很多都是单纯的接口级测试,这样一来,关联就用得更少了。因为接口级的测试是一发一收就结束了,不需要将数据保存下来再发送出去。
那么什么样的数据需要关联呢?满足如下条件的数据都是需要关联的:
数据是由服务器端生成的;
数据在每一次请求时都是动态变化的;
数据在后续的请求中需要再发送出去。
示意图如下:
其实我们可以把关联的功能理解为取服务端返回的某个值。在这样的前提之下,我们可以把它用在很多场景之下。
举个例子,我们常见的 Session ID 就是一个典型的需要关联的数据。它需要在交互过程中标识一个客户端身份,这个身份要在后续的交互中一直存在,否则服务端就不认识这个客户端了。
再比如,我们现在用微服务已经非常多了,在 Spring Boot 中有一个 spring-boot-starter-security,默认会提供一个基于 HTTP Basic 认证的安全防护策略。它在登录时会产生一个 CSRF(Cross-Site Request Forgery)值,这个值典型地处于动态变化中。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
关联和断言是性能测试工具中的基本功能,用于取数据和做判断。关联是从服务器返回的动态变化数据中取出数据,并在后续请求中使用,比如Session ID和CSRF值。断言则是判断服务端返回的数据是否正确,用于标识业务成功与否。关联和断言都是从服务器返回信息中取出数据,但关联取来的数据每次都会不同,而断言取出来的数据基本上都是一样的,除非出了错。关联和断言的逻辑是取数据和做判断,它们的特点分别是取出动态变化的数据和判断服务端返回的数据是否正确。文章通过例子详细解释了关联和断言的使用方法和逻辑,帮助读者更好地理解这两个功能的作用和实际应用。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能测试实战 30 讲》,新⼈⾸单¥59
《性能测试实战 30 讲》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(28)
- 最新
- 精选
- 律飛关联,有关有联,该数据一定是根据前面的业务获取的,是一个变化动态的,从服务器获得的,否则就可以在脚本中直接写好,变成一个参数了;同时该数据也一定是后面业务得以进行的必须输入,否则就没有存在的意义了;因此,关联数据起了一个承上启下的作用。取数据特点,从服务器返回信息中取数据,这个数据是动态的,且是后续业务必须的输入数据,需要继续使用的。 断言,美其名曰一言断分晓,明查是对是错矣。提取服务器返回的可判断业务成功的数据,对其进行判断,从而获知业务是否成功。取数据特点,也是从服务器返回信息中取数据,在业务成功时该数据是一样的,主要用于判断,判断结束后一般不会继续使用。
作者回复: 写的非常好。
2020-01-0315 - zuozewei思考题:联和断言的逻辑是什么吗?它们取数据的特点又是什么呢? 关联:取出前序调用返回结果中的某些动态值,传递给后续的调用。最常见的是唯一标识客户端的「Session ID」。 断言:又称检查点,断言是我们的预期,主要是保证脚本按照原本设计的路径执行。取的数据是服务端返回的,可标识业务成功与否的数据,并做判断。 请记住,测试一定要有断言。没有断言的测试,是没有意义的,就像你说自己是世界冠军,总得比个赛吧!
作者回复: 合理。
2020-01-058 - 奔跑的栗子关联和断言,都是获取特定数据;关联将获取到的数据更新到下一次使用中;断言预知被解除数据的数值,判断执行结果是否正常;
作者回复: 理解非常正确。
2020-01-033 - 小昭今日思考题: 你能说一下关联和断言的逻辑是什么吗? 关联的逻辑:数据由服务端生成且每次生成的数据是动态变化的,通过关联取到的数据在后续的请求中需要再次使用。 断言的逻辑:对服务端返回的,可标识业务成功与否的数据,将其取回来之后做判断。 补充:断言是根据需要来设计的,而设计断言的前提就是完全理解后端代码逻辑。(代码很重要,昨天老师也指示了,准备着手学起来) 它们取数据的特点又是什么呢? 都是从服务器返回的信息中取出数据,不同的是:关联取的数据,每次都不一样;而正常情况下断言每次取的数据基本上是一样的。 老师讲的循序渐进,简单易懂。
作者回复: 理解得很准确。加油!
2020-03-192 - 人心向善断言,也就是loadrunner里的检查点:对脚本执行结果进行成功失败判断 参数化,a可以模拟,b也可以,同样c也可以去模拟,只不过模拟对象不同,但最终结果是一样的(最大程度的模拟现实环境) 关联,客户端去向服务器请求数据,服务器返回数据的同时带有一个可变的值或不变的值,当通过脚本形式去访问时,如果你的脚本中在模拟客户端请求时没有带这个值去请求的话服务器端是不认的,因为你的请求没有服务器要的值(没有通过服务器的验证),自然数据也不会给你了,有点类似http里的三次握手🤝
作者回复: 正解。
2020-08-051 - 钱关联——动态的数据获取用于继续的使用 断言——判断业务逻辑是否OK
作者回复: 理解的非常对。
2020-05-241 - 燃客断言其实从测试人员的角度来解释,最简单直接的方式就是预期结果与实际结果做比较,判断是否一致,只是在这里,我们将其从人工方式转为了脚本去实现。 关联,最终体现在了业务上下游中的提取、传递、引用,个人认为可以解释为参数传递与引用,可以是接口与接口之间的、接口与前置条件之间的、后置处理器与断言之间的。 接口与接口之间:比如A接口的某个返回参数作为了后续接口的入参; 接口与前置条件之间:比如注册接口要保证注册号码的唯一性,我们在前置条件中做处理后,在入参中使用变量,或者直接使用相关的函数生成 后置处理器与断言之间:比如一个写入数据库动作的接口,我们在断言时候,可能需要在接口后置处理器中引入JDBC请求进行查询,然后再做如beanshell断言是否符合预期
作者回复: 理解全部正确。
2020-03-271 - 蔡森冉断言 判断对错,关联只管取用,不管对错。关联取数一定是返回值中某一个特定的变化的值,断言则是判断返回值中有没有某一个特定值,有就说明程序按预定设计执行了
作者回复: 理解正确!
2020-03-191 - 啊啊接口性能测试,若b接口需要关联a接口的返回数据,如token 。那么,a接口性能会影响到b接口的性能。 我一般是通过修改代码屏蔽掉这个参数的影响。但我不知道是否合适? 合适或者不合适,或者如果需要分情况考虑,可不可以请老师帮我理理。感谢
作者回复: 如果只是为了定位时间消耗在哪里,为了找问题可以这样。真实的场景中肯定不能这样做。
2020-03-1721 - songyy关联和断言的逻辑是什么吗? 它们取数据的特点又是什么呢? 关联: 在发出的请求之中,用到收到的请求的数据。通常取到的是header或者页面内容数据,用正则表达式比较合适。 断言: 判断请求是否成功的标志。可以用json parsing的方式获取数据。判断HTTP status code也是一种合理的断言方式(比如,一个post请求,在成功时断言201 created)
作者回复: 理解的很正确 。
2020-01-141
收起评论