lmc-autotest BSF全链路压测工具
基于BSF基础框架构建全链路压测框架,从框架层面进行流量录制或浏览器自定义录制,从工具层面进行流量回放,进行性能压测,自动输出压测报告,自动进行全链路功能验收,从而提升测试效能,指导网站性能优化。 工具支持分布式部署,万级高并发压测,灵活定制化压测;支持调用链传递,支持压测染色!
项目结构
lmc-autotest
-- lmc-autotest-core #公共代码 (核心层)
-- lmc-autotest-dao #数据库操作 (数据层)
-- lmc-autotest-service #公共业务服务 (服务层)
-- lmc-autotest-task #压测任务节点 (任务层)
-- lmc-autotest-provider #压测管理站点 (网站及api层)
-- doc #项目资料 (文档资料)
-- README.md #项目文档 (说明文档)
项目编译
#外网开发人员使用, 注意bsf-core.jar和bsf-autotest.jar包,可能出现包引用错误
#请至gitee release中下载相应jar包。
cd lmc-autotest
mvn install
管理端和压测端,整体代码逻辑还是非常简单的,思路也容易理解!欢迎大家阅读源码进行修改~~~
bsf-autotest sdk源码 包含调用链传递和染色传递逻辑,代码不多,思路简单,可以自行定制。
设计文档
压测工具对比
| autotest | locust | Jmeter | LoadRunner | |
|---|---|---|---|---|
| 分布式压力 | 支持 | 支持 | 支持 | 支持 |
| 单机并发能力 | 高 | 高 | 低 | 低 |
| 并发机制 | 线程 | 协程 | 线程 | 线程 |
| 开发语言 | Java | python | Java | Java |
| 报告与分析 | 完善 | 简单图表 | 简单图表 | 完善 |
| 授权方式 | 开源 | 开源 | 开源 | 商业收费 |
| 测试脚本形式 | JavaScript | python | Gui | Java |
| 资源监控 | 支持 | 不支持 | 不支持(需下载插件) | 支持 |
安装文档
推荐: 支持云原生docker方式部署(也支持传统方式应用部署),k8s部署可最大化利用资源,可以在压测闲置的时候最大程度释放资源给其他云服务。秒级可扩缩容n个压测节点,2G内存即可实现万级并发压测!
使用文档
开发文档
实践笔记
- 小白快速上手压测
- 小白快速流量回放压测
- 自动化QPS核心和主要接口jenkins触发性能压测
- 自动化QPS核心和主要接口性能url压测
- 自动化QPS不同级别接口压测
- 自动化QPS不同开发人员接口压测
- 自动化QPS全链路接口压测
- 自动化QPS秒杀接口压测
- 自动化TPS秒杀场景压测
- k8s滚动升级验证
兼容性
建议使用chrome浏览器
技能要求
懂点es5 js语法即可,无需专精(任何一位前端都可以写;后端开发应该5分钟就能掌握语法,当然学起来也很easy;测试人员只能看资质和学习力了)。
进阶篇
- 暂不支持文件上传类的流量录制。
- 微服务的流量录制目前支持feign进行traceid传递,支持mybatis进行操作或仅查询两种访问类型识别。
- 期望通过sharding-jdbc支持影子表和影子库,未来还会在jdbc层面做影子表和影子库扩展能力。
更新记录
- 2022-10-17 增加时钟对齐,增加http连接池能力,固定时间心跳上报压测信息。
- 2022-11-01 增加用户权限,计划任务,attribute属性信息等。
- 2022-11-03 增加openapi及simple多语言sdk范例。
- 2022-11-04 增加高亮和智能提示。
- 2022-11-11 增加公共方法库。
- 2022-11-14 修复get无法请求的bug问题[重要]。
- 2022-11-25 首页登陆页改版。
by 车江毅
使用交流
工作微信,注明:全链路压测交流