1 Star 0 Fork 249

wy3552128 / stressTestSystem

forked from smooth / stressTestSystem 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

项目说明

  • 本项目基于renren-fast Java开发平台开发,内核基于Jmeter-Api和Jmeter脚本实现在线性能压测。是在zyanycall/stressTestPlatform的开源项目基础上做了大量的改造,后续还会继续追加新功能。

具有如下特点

  • 友好的代码结构及注释,便于阅读及二次开发
  • 实现前后端分离,通过token进行数据交互,前端再也不用关注后端技术
  • 灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求
  • 页面交互使用Vue2.x,极大的提高了开发效率
  • 完善的代码生成机制,可在线生成entity、xml、dao、service、html、js、sql代码,减少70%以上的开发任务
  • 引入quartz定时任务,可动态完成任务的添加、修改、删除、暂停、恢复及日志查看等功能
  • 引入API模板,根据token作为登录令牌,极大的方便了APP接口开发
  • 引入Hibernate Validator校验框架,轻松实现后端校验
  • 引入云存储服务,已支持:七牛云、阿里云、腾讯云等
  • 引入swagger文档支持,方便编写API接口文档
  • 引入路由机制,刷新页面会停留在当前页
  • 引入最新版本Jmeter-Api,支持分布式压测,测试报告生成及在线查看下载。
  • 引入Echarts,支持在线观测性能压测结果。

项目结构

renren-fast
├─doc  项目SQL语句

│─lib  项目引用jar包

├─common 公共模块
│  ├─aspect 系统日志
│  ├─exception 异常处理
│  ├─validator 后台校验
│  └─xss XSS过滤

├─config 配置信息

├─modules 功能模块
│  ├─api API接口模块(APP调用)
│  ├─job 定时任务模块
│  ├─oss 文件服务模块
│  ├─sys 权限模块
│  └─test 测试模块

├─RenrenApplication 项目启动类

├──resources 
│  ├─mapper SQL对应的XML文件
│  ├─static 第三方库、插件等静态资源
│  └─views  项目静态页面

技术选型:

  • 核心框架:Spring Boot 1.5
  • 安全框架:Apache Shiro 1.3
  • 视图框架:Spring MVC 4.3
  • 持久层框架:MyBatis 3.3
  • 定时器:Quartz 2.3
  • 数据库连接池:Druid 1.0
  • 日志管理:SLF4J 1.7、Log4j
  • 页面交互:Vue2.x
  • 前端监控:ECharts 3.8
  • 压测内核:Apache JMeter 5.1.1
  • 远程执行命令:Ganymed build210
  • 批量上传组件:bootstrap-fileinput v4.5.2
  • JVM内部缓存:Guava 18.0

本地部署

  • 通过git下载源码
  • 创建数据库renren_fast,数据库编码为UTF-8
  • 执行doc/db.sql文件,初始化数据
  • 修改application-dev.yml,更新MySQL账号和密码 (或者application.yml配置h2,调用application-h2.yml配置,连接h2数据库)
  • 修改MySQL中sys_config表中Jmeter专属配置项,更新为本地地址
  • Eclipse、IDEA运行RenrenApplication.java,则可启动项目
  • 项目访问路径:http://localhost:8080/
  • 账号密码:admin/admin
  • Swagger路径:http://localhost:8080/swagger/index.html

jar部署

  • 修改application.yml,修改profiles,指定执行环境如线下环境pro
  • 修改application-pro.yml,更新线下环境的MySQL账号和密码
  • 通过maven命令打包jar包:mvn clean package -f pom.xml
  • 将target目录下,打包好的jar包通过java -jar renren-fast.jar 调用
  • 也可以将打好的jar包通过Dockerfile build到Docker镜像中
  • 项目访问路径,如:http://线下环境ip:8080/
  • 账号密码:admin/admin

tomcat部署

  • 修改application.yml,修改profiles,指定执行环境如线下环境pro
  • 修改application-pro.yml,更新线下环境的MySQL账号和密码
  • 通过maven命令打包war包:mvn clean package -f pom-war.xml
  • 将target目录下,打包好的war包保存到tomcat的webapps目录下
  • 通过tomcat的bin目录下的startup命令,启动tomcat
  • 访问tomcat路径,如:http://线下环境ip:8080
  • 账号密码:admin/admin

Docker部署

配置参数 性能测试配置(全在数据库保存配置参数:系统管理->参数管理)

  • Jmeter主节点路径,默认测试报告生成使用 jmeterHome: D:\software\apache-jmeter-4.0
  • 存放用例的总目录,里面会细分文件存放用例及用例文件,用例保存路径 casePath: D:\E\stressTestCases
  • Jmeter节点机需要在/etc/bashrc中配置JAVA_HOME,同时source /etc/bashrc生效
  • :如果配置了Jmeter脚本启动,则额外开启Jmeter进程运行测试用例脚本及分布式程序。 :分布式程序可以取消ssl校验(jmeter4及以上版本要求)。 :同时可以配置支持Jmeter+InfluxDB+Grafana的实时监控。 :支持自带的ECharts实时监控。
  • 如果没有配置Jmeter脚本启动,则使用web本身自带的Jmeter功能。
    :MASTER_JMETER_USE_SCRIPT_KEY 默认是false,即使用web程序进程来启动Jmeter-master程序。
  • 默认支持以进程方式生成测试报告,也支持以脚本方式生成测试报告 :MASTER_JMETER_GENERATE_REPORT_KEY 为true表示由进程生成测试报告,支持并发生成
  • SCRIPT_SCHEDULER_DURATION_KEY 为true 开启脚本限时执行,以免脚本忘记停止在后台一直压测
  • JMETER_THREADGROUP_SET_KEY 默认为false :JMETER_THREADGROUP_SET_KEY为true则开启线程组管理功能,导入脚本时会往线程组配置库中也导入一份

注意事项: 部署时请确保平台jmeter引擎版本、主节点版本、分布式节点版本保持一致(避免不同版本配置文件或生成的报告数据差异导致一些异常)
友情提示: 本平台支持script脚本命令压测和jmeter api压测两种模式,大家可以在配置中[系统管理->参数配置]中修改。

  • script命令压测模式:不支持ECharts实时监控,但支持配合grafana + influxdb实时监控,相当于是jmeter的non-gui模式;
  • jmeter api压测模式:支持ECharts实时监控,如果要多脚本分布式压测并监控,请在各节点替换专用的ApacheJMeter_core.jar包(不断更新,只要替换jmeter节点即可,主节点可不动),目前只提供jmeter5.1.1版的包:
    2020-09-18 解决第三方插件线程组在分布式压测后的html报告线程数错误 https://download.csdn.net/download/smooth00/12859317
    2020-07-27 解决TPS统计问题 https://download.csdn.net/download/smooth00/12665241
  • 如果想配合grafana + influxdb监控,需要注意后端监听器的配置,以免踩坑:https://smooth.blog.csdn.net/article/details/107558934
  • 各个节点的jmeter时间需要统一(否则影响监控报告和html报告数据),所以推荐使用docker版的jmeter,以便控制到分秒不差(时间统一配置Asia/Shanghai)

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

继承于zyanycall/stressTestPlatform的开源项目;基于renren-fast开发平台开发,内核基于Jmeter脚本和Jmeter-Api实现在线性能压测。Docker版部署方案 https://gitee.com/smooth00/stressTestSystemDocker 展开 收起
Java
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/zhuquehxb/stressTestSystem.git
git@gitee.com:zhuquehxb/stressTestSystem.git
zhuquehxb
stressTestSystem
stressTestSystem
master

搜索帮助

14c37bed 8189591 565d56ea 8189591