背景 当我们使用Locust做性能压测的时候,压测的过程和展示如下:
在上一篇文章中我提到了使用xunit风格的方式编写测试用例,实际上是用go语言实现自动化测试,这段时间有了更多的实践,因此在这篇文章中对整个实现做一下梳理。
Grpc接口?
写博客也有一段时间了,逐渐形成了自己的习惯和工具栈,今天分享出来,供有需要的朋友参考参考。条条大路通罗马,找到适合自己的,然后坚持下去!
前段时间,我主导推动组里实现了一套基于Locust+boomer的通用的压测平台,主要目的是满足我们组内的各种压测场景,比如grpc、websocket、webrtc、http等协议的压测场景。正好我们公司的技术栈以go为主,我们可以轻松地使用go编写脚本,通过公司的部署平台编译打包后横向扩缩施压集群,可以说解决了各种压测需求。但是我们发现,尽管自己编写脚本非常自由,但是对不了解平台、不了解Go的同学来说,使用成本是比较大的,尤其是首次接触,因此我开始思考如何简化脚本的编写和部署。
我所在的业务对protobuf的应用比较普遍,无论在websocket长连接的数据帧亦或是通用http请求过程中都喜欢使用protobuf进行序列化,这算是一种私有协议吧。虽然在私密性和性能上有一定的提升,但是测试的时候就非常难受了,所以我的目标很简单,就是能够自动将这些pb序列化的数据反序列化成人可以阅读的文本,比如JSON格式。
最近在做一个新的测试平台,使用了最近比较火的开源框架—— gin-vue-admin, 对于一个admin框架来说,这个真的做的挺好的了,支持简单的crud代码自动生成,拖动的方式创建前端页面。另外还拥有jwt鉴权,动态路由,动态菜单,casbin鉴权等功能,对快速搭建一个web平台非常方便。
本文我们将讨论对开源压测工具进行二次开发,从而构建一个压测平台时,我们应该考虑哪些特性。
GoLang 已经变得越来越流行,一个主要原因是它提供给开发者能够非常简单和轻量便能实现并发的机制—— goroutines 和 channels 。其实,在很长一段时间内,应用程序获得并发的一个主要方式还是通过线程。为了能够理解Go的goroutines并不是轻量级的线程,我们先要理解操作系统中的线程是如何工作的。
前言 上一篇文章讲了——推流SDK 的相关测试,接下来我介绍一下拉流端的测试内容,本文不包含点播相关测试。
本文讲解的eventHook基于Locust的1.x版本。