基于 locust/boomer 为核心的简单 http 接口分布式性能测试工具

如题所述

第1个回答  2024-04-20
打造一款高效且易用的分布式Http接口性能测试工具,凭借Python的locust和Go语言的boomer精髓。我们的目标是打造一个直观的界面,让Master(Python)作为控制中枢,向Worker(Go)分发接口描述,实现无侵入式的测试执行。大师级功能包括自动发现Worker、事务管理、分布式测试器操控,甚至支持参数保存和测试结果下载。我们的核心模块亮点在于自定义Boomer服务,以及对关闭信号的严谨处理,无论是系统信号、Master指令还是意外断开,都能从容应对。

首先,我们对Boomer进行了深度定制,着重强化了信号处理能力。第二步,我们构建了gRPC/etcd服务框架,具体步骤如下:首先,架设HTTP监听器并启用gRPC服务,接着在etcd中注册并保持客户端连接。同时,我们设置了中断信号监听器,一旦接收到信号,便从etcd中注销相关服务。最后,启动gRPC服务,确保HTTP监听器始终在线。

为了确保Master与Worker之间的高效通信,我们定义了清晰的protobuf接口:BoomerCallService,包含InitBommer(接收InitBommerRequest,其中包含SaveParamAction、AssertAction和HttpRequest等关键信息)和EndBommer(接收EndBommerRequest,无额外数据)两个方法,以及BoomerCallResponse,用于返回状态和消息。通过protoc编译,生成Go和Python的兼容代码:
```bash
protoc --go_out=plugins=grpc:. *.proto
protoc --python_out=. --grpc_python_out=. -I. *.proto
```
改造的第三步,我们在Master端Python端引入了etcd3的创新心跳检测机制。由于watch方法的性能瓶颈,我们选择每5秒进行一次心跳检测。Master界面进一步扩展,不仅管理压测机,还设有复杂事务管理页面,利用layui、iframe和flask模板构建。令人欣喜的是,locust-hazard项目已切换到Go的模块管理。此外,关注公众号【清风酔】,即可免费获取200G的软件测试学习资源,涵盖面试题、测试视频等丰富内容,助您提升测试技能。
相似回答