前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[性能测试实战30讲」之问题问答整理八、九、十

[性能测试实战30讲」之问题问答整理八、九、十

作者头像
高楼Zee
发布2020-02-12 15:46:16
6570
发布2020-02-12 15:46:16
举报
文章被收录于专栏:7DGroup7DGroup

0

1

思考题

HTTP 的 GET 和 POST 请求,在后端处理中有什么不同?断言的作用是什么?如何使用断言呢?

读者A:

GET请求对于springboot框架来说是通@RequestMapping(method = RequestMethod.GET)中的@GetMapping来处理,这是框架定义好的接口,关键是get执行的业务操作是什么; POST请求也是springboot框架来说是通@RequestMapping(method = PostMapping.GET)中的@PostMapping处理数据; 一般来说get是获取数据数据会在url上显示,post是提交数据,提交数据不会显示到url上, 而且Get方法提交的数据大小长度并没有限制,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节;理论上讲,POST是没有大小限制的。HTTP协议规范也没有进行大小限制,起限制作用的是服务器的处理程序的处理能力【Tomcat默认2M】;对数据请求频繁,数据不敏感且数据量在普通浏览器最小限定的2k范围内,这样的情况使用GET。其他地方使用POST 断言的作用是什么? 理解断言是为了校验请求是否正确,只要增加合理的断言,才可以做性能测试,如果不加断言就不知道业务请求是否正确,再加没有断言TPS会很平稳,对实际压测结果意义不大。 如何使用断言呢? 理解:在请求结束后的响应增加断言。

作者回复: 理解的很深刻哦。

读者B:

幂等性相关的区别吧。 ## 什么是幂等性 一次和多次请求某一个资源应该具有同样的副作用(对资源变更带来连锁反应或影响):f(x) = f(f(x))。 ## 为什么要幂等性设计? 系统解耦后,系统间服务调用存在三种状态: * 成功 * 失败 * 超时(中间状态) 前面两种是明确的,超时是不知道什么状态,一般引起原因: * 请求没有到达服务方(网络延时或丢失) * 请求达到了服务方,服务方处理超时 * 请求到达了服务方并且处理完返回结果,但接收方没有收到 相关例子:订单创建、库存扣减、订单支付 ## 怎么做幂等性设计? * 下游(响应方)提供查询接口,上游(请求方)对于状态疑异订单进行查询 * 下游(响应方)系统幂等性设计:确保不会重复 * 全局ID:Twitter 的 Snowflake 算法/UUID * 存储冲突来解决(唯一约束) * 插入重复无效,`insert into … values … on DUPLICATE KEY UPDATE …` * 更新状态:`update table set status = “paid” where id = xxx and status = “unpaid”;` ## HTTP幂等性 - HTTP GET 方法用于获取资源,不应有副作用,所以是幂等的。 - HTTP POST 方法用于创建资源,所对应的 URI 并非创建的资源本身,而是去执行创建动作的操作者,有副作用,不满足幂等性。 - 只有 POST 需要特殊处理,其他都具有幂等性 - 前端生成 token,后端存(唯一约束) - PRG 模式

作者回复: 理解的非常正确。

读者C:

1. 什么叫压力补偿,压力补偿的作用是什么?2. 还有为什么要动态扩展?比如内存不够了,我们不应该找到谁占用了内存吗?3.每次测试前需要清理缓存吗?比如我跑一轮脚本 就需要把redis 缓存清一下吗 ?

作者回复: 1. 就是在场景执行的过程中,发现场景产生的压力和生产上比例不一致,或者有中间需要的增加的第三方压力。就需要在场景执行过程中再增加新的线程或者压力机。

2. 动态扩展是验证线上的能力。如果业务流量突增了。就需要动态扩展哇。

3. 看机制。如果不是预热类型的。可以在每次跑之前清一下。

读者D:

get请求,一般后端服务只是通过传过来的参数查询数据库,返回结果;post请求,一般后端服务会将请求所包含的内容更新到数据库,返回更新结果。 断言判断后端服务返回的请求是否为所期望的请求结果。涉及到业务逻辑的断言需要对响应内容进行检查,包括关键字检查、或者数据处理逻辑结果检查等。

作者回复: 理解的非常对。

0

2

思考题

你能说一下关联和断言的逻辑是什么吗?它们取数据的特点又是什么呢?

读者A:

思考题:联和断言的逻辑是什么吗?它们取数据的特点又是什么呢? 关联:取出前序调用返回结果中的某些动态值,传递给后续的调用。最常见的是唯一标识客户端的「Session ID」。 断言:又称检查点,断言是我们的预期,主要是保证脚本按照原本设计的路径执行。取的数据是服务端返回的,可标识业务成功与否的数据,并做判断。 请记住,测试一定要有断言。没有断言的测试,是没有意义的,就像你说自己是世界冠军,总得比个赛吧!

作者回复: 合理。

读者B:

关联:假设一个业务场景由多个请求构成,那么关联可以理解为前一个请求的输出作为后一个请求的输入。并且可以将关联的值参数化,例如Token,jobId等; 断言:一个请求从执行开始到结束之中,所经历每个步骤都可以“暂停”,那么暂停的这个动作可以理解为断言。通过断言你可以知道代码的运行逻辑,对应的输出是否合理,Debug的好帮手。

作者回复: 理解的很对。

读者C:

关联,有关有联,该数据一定是根据前面的业务获取的,是一个变化动态的,从服务器获得的,否则就可以在脚本中直接写好,变成一个参数了;同时该数据也一定是后面业务得以进行的必须输入,否则就没有存在的意义了;因此,关联数据起了一个承上启下的作用。取数据特点,从服务器返回信息中取数据,这个数据是动态的,且是后续业务必须的输入数据,需要继续使用的。

断言,美其名曰一言断分晓,明查是对是错矣。提取服务器返回的可判断业务成功的数据,对其进行判断,从而获知业务是否成功。取数据特点,也是从服务器返回信息中取数据,在业务成功时该数据是一样的,主要用于判断,判断结束后一般不会继续使用。

作者回复: 写的非常好。

10丨案例:在JMeter中如何设置参数化数据?

0

3

思考题

为什么参数化数据要符合生产环境的数据分布?

为什么参数化数据要关注组合逻辑关系,而不是随意设置组合?

读者A:

JMeter 的 CSV Data Set Config 功能用来从文件中读取数据行,并将它们拆分后存储到变量中。个人理解,Recycle on EOF的优先级高于Stop thread on EOF,也就是说,需要先判断Recycle on EOF,如果是Flase,直接在文件结束时就停止了线程,根本不考虑Stop thread on EOF参数值;如果是True,就要根据Stop thread on EOF参数值来确定线程是否停止运行。在明白组合逻辑关系后,可以更高效的设置参数、更准确的达到测试目的。 各种测试工具有各种测试功能,可能其中就会存在有关联的参数配置,这也需要我们特别关注。如果查阅资料还不能清晰认识,就按老师的做法,通过对不同组合进行实验,最终弄清楚组合关系,归纳总结出优先顺序,从而在平时测试中帮助我们快速有效地找到最优的组合。

作者回复: 我觉得你写的比我写的好

读者B:

1、罗列出需要参数化的数据及相对应的关系; 2、将参数化数据从数据库中取出或设计对应的生成规则; 3、合理地将参数化数据保存在不同的文件中; 4、在压力工具中设置相应的参数组合关系,以便模拟真实场景 之前做行测不太去理解: Recycle on EOF? :这里有三个选择,False、True 和 Edit。 Stop thread on EOF?:这里有三个选择,False、True 和 Edit。含义和上面一致。 Sharing mode : 这里有四个选择,All threads、Current thread group、Current thread、Edit。 这几个用户,经过老师这样一步一步分析,收获很大,谢谢老师分享 第一个问题:为什么参数化数据要符合生产环境的数据分布? 1、减少数据命中率; 2、减少缓存命中率; 3、符合性能压测价值,测试结果更真实; 第二个:为什么参数化数据要关注组合逻辑关系,而不是随意设置组合? 1、业务规则决定参数文件不能随便组合; 2、如果随意组合参数,会影响事务成功率;

作者回复: 有收获我就值得了

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 7DGroup 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 10丨案例:在JMeter中如何设置参数化数据?
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档