08丨案例: 手把手教你编写最简单的性能脚本
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了编写最简单的性能脚本的操作步骤,包括HTTP和TCP脚本的编写方法,重点讲解了JMeter脚本的创建过程。文章强调了业务成功需要根据业务逻辑来判断,并提出了加入断言的必要性。通过对Spring Boot示例的服务端代码逻辑说明和JMeter脚本编写过程的详细解释,读者可以快速了解并掌握编写最简单性能脚本的方法。此外,文章还介绍了如何手工编写TCP脚本以及添加断言的重要性。同时,文章还涉及了解决TCP连接超时的问题以及编写LoadRunner脚本的方法。总体而言,本文通过详细的操作步骤和示例代码,为读者提供了编写最简单性能脚本的实用指南。文章强调了业务逻辑对脚本编写的重要性,并提出了加入断言的必要性。通过对JMeter脚本的创建过程和Spring Boot示例的服务端代码逻辑说明,读者可以快速了解并掌握编写最简单性能脚本的方法。同时,文章还介绍了手工编写TCP脚本以及添加断言的重要性,以及解决TCP连接超时问题和编写LoadRunner脚本的方法。整体而言,本文为读者提供了编写最简单性能脚本的实用指南。
《性能测试实战 30 讲》,新⼈⾸单¥59
全部留言(40)
- 最新
- 精选
- 善行通感谢高老师无私分享,在刚开始学习性能测试的时候,一直不理解做脚本为什么要这样做,也报名参加过培训机构,也许培训机构的老师都不会,或者自己没有写过后端代码,更不会讲解后端怎么实现,还有调用关系,或者根本不想让学员知道,担心教会徒弟饿死师父。 就像老师说的:【自己写一些 demo,去了解一些逻辑,然后在排除问题的时候,就非常清楚了】 要是早早听到老师这样的课程,估计自己的水平能快速提高谢谢老师分析Jmeter调用后端简单逻辑【Jmeter-->controller--->interface--->service[业务实现层]-->Mappper-->DB】 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会很平稳,对实际压测结果意义不大。 如何使用断言呢? 理解:在请求结束后的响应增加断言。
作者回复: 理解的很深刻哦。
2020-01-01320 - 律飛1.HTTP 的 GET 和 POST 请求,在后端处理中有什么不同? 由于spring的RequestParam注解接收的参数是来自于requestHeader中,即请求头,也就是在url中,格式为xxx?username=123&password=456,而RequestBody注解接收的参数则是来自于requestBody中,即请求体中。 因此如果为get请求时,后台接收参数的注解应该为RequestParam,如果为post请求时,则后台接收参数的注解就是为RequestBody。 2.断言的作用是什么?如何使用断言呢? 断言指的就是服务器端有一个业务成功的标识,会传递给客户端,客户端判断是否正常接收到了这个标识的过程。 应该用有业务含义的判断标识。需要对业务进行分析,选取合适的判断标识。 善行通已经说得很好了,画蛇添足一下。
作者回复: 你也说的很好。
2020-01-0112 - 羊羊关于递增时间,文中提到“如果我们配置了 10 线程,这里配置为 1 秒,则是 10/1000=1 线程 /100ms”,是指压力机会每100ms发送一个请求么?是匀速发送请求?前面的文章中老师讲到“线性递增”,根据接口不同的响应时间,配置不同的递增幅度,对应到Jmeter是如何配置?
作者回复: 是100ms增加一个线程。增加的线程会持续运行。 jmeter配置递增很容易呀。只要线程数、ramp-up period、duration就行了。
2020-12-235 - [root@localhost ~]#高楼老师,你好,请问你用jmeter展示tps图标用的是什么插件?而我用网上下载的插件使用会大量报错最终导致jmeter卡死。错误内容是:Error o.a.j.t ListenerNotifier: Deteced problem in Listener Java.lang.NullPointer Exception: Null。请问这个该如何解决呢?多谢
作者回复: 不需要插件。那个是html结果报告。仔细看看jmeter的report命令吧。
2021-04-0222 - Geek_WHY高老师您好,麻烦打扰,我想问下您看我做的对不对: 对一种场景进行性能验证,验证系统在不同的硬件配置下,tps能达到多少。 我这边不确定是用阶梯性一点一点慢慢的加压,加压到一定的线程数,还是在一分钟内快速的加压到一定的线程数。 盼望回复,感谢~
作者回复: 慢慢加压,不用快。
2021-01-152 - 大QA高楼老师,请问压测环境要准备什么样的?测试环境和生产环境的服务器配置差异往往很大,在测试环境压测不一定能反应生产环境的问题。
作者回复: 这个话题太大。通常我只能建议接近生产,不然就得做大量的数据采集分析,然后建模。
2020-03-212 - 莫西 👫 小妞儿 👼 🎵高老师,添加断言的话,会影响性能测试结果么?比如会影响到响应时间么?
作者回复: 不会,都是压力工具里判断的。
2020-03-1022 - songyy思考题 - HTTP 的 GET 和 POST 请求,在后端处理中有什么不同? 其实后端处理,没有本质的不同。不同的是人们对于它的约定:GET的预期,是不进行数据修改;而POST,通常意味着创建新的数据。但实际上,后端也可以在GET的时候,进行数据修改 - 断言的作用是什么:断言可以用来判断,一个测试用例是否成功 如何使用断言呢:在收到返回结果后,对比结果是否和预期相符。就像写测试时候的断言(assertion)一样
作者回复: 理解的很对。
2020-01-132 - Geek_5860ac“如果我们配置了 100 线程,这里配置为 10 秒,那么就是 100/(10s*1000ms)=1 线程 /10ms”这个地方不明白,怎么算都是1线程/ 100ms啊,请老师指正
作者回复: 少了一个零。哈,马上让编辑小美女加上。
2020-01-102 - 月亮和六便士老师,我还有问题想问:前面的文章中提到过,1. 什么叫压力补偿,压力补偿的作用是什么? 2. 还有为什么要动态扩展? 比如内存不够了,我们不应该找到谁占用了内存吗? 3.每次测试前需要清理缓存吗?比如我跑一轮脚本 就需要把redis 缓存清一下吗 ?
作者回复: 1. 就是在场景执行的过程中,发现场景产生的压力和生产上比例不一致,或者有中间需要的增加的第三方压力。就需要在场景执行过程中再增加新的线程或者压力机。 2. 动态扩展是验证线上的能力。如果业务流量突增了。就需要动态扩展哇。 3. 看机制。如果不是预热类型的。 可以在每次跑之前清一下。
2020-01-022