在公司做压力测试也挺长时间了,每次测试前环境数据准备都需要话费较长时间,所以一直在考虑能不能将整个过程实现自动化进行,于是就抽空写了一个自动化脚本,当然这个脚本目前功能十分简陋,代码也不完善,很有很多需要改的地方,后续再优化。文中如有错误或者不妥之处,还望指教。

一、设计思路

1、初始化数据库(导入用户,清除数据等)

2、初始化缓存(使用了redis缓存优化系统)

3、执行压力测试

二、目录结构


目录解读:

  • apache-jmeter-3.0  为jmeter程序目录

  • asserts.log      断言日志

  • auto_jmeter.sh    脚本文件(启动这个项目就是执行它)

  • jmeter.log      jmeter启动日志

三、代码如下(按照惯例,所有涉及公司的代码都有修改)

#!/bin/bash
set -e
LC_ALL=C
LANG=C
unset TZ
file_path="./"
host="192.168.0.32"
username="test"
password="test.123"
dbname="test"
jmeter_path="./apache-jmeter-3.0/bin/jmeter.sh"
jmx_path="./apache-jmeter-3.0/jmxs/termplan_dq.jmx"
jtl_path="./apache-jmeter-3.0/jtls/`date +%Y%m%d-%H%M`.jtl"
sql_path="./sqlFiles/"
#now=`date +date +%Y%m%d-%H%M`###############33######
####数据库初始化
###############33######
function init_data(){echo "===========开始初始化相关数据============="mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e"DELETE FROM t_user WHERE id > 50000;DELETE FROM t_person WHERE id > 50000;SELECT count(*) AS '压测前预约总数' FROM t_test_table;"cd ${sql_path}sql_name=`ls`for file_name in ${sql_name[@]}doif [ -f "$file_name" ];then#command="source $file_name"mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e "source ${file_name}"elseecho -e "\033[31;31m SQL文件不存在!!!\033[0m"fidonecd ..mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e"SELECT count(*) AS '新增用户数' FROM t_user WHERE id > 50000;"echo "==========已完成初始化相关数据============"
}
###############33######
####缓存初始化
###############33######
function init_cache(){echo "=============开始初始化缓存==============="echo "==============初始化(kiwi)================"curl "http://127.0.0.1:10000/test/test.action"echo -e "\n==========初始化冻结缓存(kiwi)============"curl "http://127.0.0.1:10000/test/test/zen.action"echo -e "\n============已完成初始化缓存=============="
}
###############33######
####执行jmeter脚本
###############33######
function auto_jmeter(){sh ${jmeter_path} -n -t ${jmx_path} -l ${jtl_path}
}
###############33######
####查询数据(数据太多无作用,因为缓存到数据库需要很长时间)
###############33######
function select_data(){echo "============开始查询相关数据=============="mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e"select count(*) as '压测后预约总数'  from t_test_table;quit"echo "============相关数据查询完毕=============="echo -e "\033[36;36m============压力测试执行完毕==============\033[0m"
}
#######################
#######################
init_data
init_cache
auto_jmeter
sleep 10
select_data

四、执行结果如下图

五、遗留的问题

1、jmeter压力上不去,尽管加了1000个线程,但实际并发20左右,这个在之前发的文档里面有数据呈现。

2、支持输出html报告,需要实现,压测报告更加直观。如何输出正确的测试报告非常重要。

等等

上述问题解决会继续更新

【注】欢迎探讨,欢迎转载,但转载请注明出处。(2017-06-30)
欢迎扫描关注我的公众号,欢迎投稿,一起探讨技术、人生,谢谢。

shell编写一个简单的jmeter自动化压测脚本相关推荐

  1. shell 压测_【原】shell编写一个简单的jmeter自动化压测脚本

    在公司做压力测试也挺长时间了,每次测试前环境数据准备都需要话费较长时间,所以一直在考虑能不能将整个过程实现自动化进行,于是就抽空写了一个自动化脚本,当然这个脚本目前功能十分简陋,代码也不完善,很有很多 ...

  2. web版本 开源压测工具_开源了一个简单的http服务压测工具Alex,自带web ui,golang实现...

    Alex是基于vegeta library和boom封装的压力测试web UI.Vegeta提供稳定的qps压力源,boom提供稳定的并发数压力源. github地址 https://github.c ...

  3. python脚本编写_如何用Python包编写一个简单的脚本,表达你对父母的爱?

    全文共2800字,预计学习时长6分钟 在繁忙的工作生活中,我们经常忘记给所爱的人发WhatsApp.本教程将使用Python包Twilio编写一个简单的Python脚本来发送WhatsApp消息.我们 ...

  4. Linux环境使用命名空间编写一个简单的容器应用程序:namespace,container,cgroups

    目录 使用命名空间编写一个简单的容器应用程序 创建一个子进程– fork vs clone 具有clone(2)的命名空间 简单示例 - CLONE_NEWPID 隔离网络接口 - CLONE_NEW ...

  5. linux系统写一个脚本,编写一个简单的linuxshell脚本

    shell脚本和windows平台上的bat批处理是一样的,简化用户处理重复动作的操作,shell脚本由shell命令组成.下面是学习啦小编收集整理的编写一个简单的linuxshell脚本,希望对大家 ...

  6. linux实验三:基于mykernel 2.0编写一个简单的操作系统内核

    实验内容 按照https://github.com/mengning/mykernel的说明配置mykernel 2.0,熟悉Linux内核的编译:基于mykernel 2.0编写一个操作系统内核,参 ...

  7. 编写一个最简单的.php,学习猿地- 说明 如果我们要编写一个简单的PHP脚本,需要学习哪些...

    说明 如果我们要编写一个简单的 PHP 脚本,需要学习哪些基础知识呢? PHP 基础 PHP 脚本可放置于文档中的任何位置. 标准 的 PHP 脚本以 <?php 开头,以 ?> 结尾: ...

  8. java编写存钱_用Java编写一个简单的存款

    package desposit.money; public class DespositMoney { public static void main(String[] args) { Custom ...

  9. 用java编写一个简单计算器

    java 采用java编写一个简单计算器,使用awt和swing 代码如下: import java.awt.Color; import java.awt.Font; import java.awt. ...

最新文章

  1. laravel 是怎么做到运行 composer dump-autoload 不清空 classmap 映射关系的呢?
  2. innodb主键的长度为什么不能大于767字节
  3. exception is the version of xbean.jar correct
  4. 关于Servlet和异步Servlet
  5. HDU 2042:不容易系列之二
  6. 面向对象编程的两顶帽子
  7. 10.24 环境变量PATH,cp,mv,文档查看cat/more/less/head/tail
  8. 盛世zeepower远程距离隔空无线充投放商用 低频磁共振无线充电技术——充电有效距离 20-45mm
  9. (转载)高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENOB、分辨率、RMS、SFDR、THD、SINAD、dBFS、TWO-TONE IMD...
  10. 统计学专业词汇英文翻译中英对照总结汇总(贾俊平 统计学 第七版 )
  11. php获取当前进程的id
  12. Ubuntu20.04(标题栏实时显示网速,cpu以及内存使用率)
  13. java裂变_微信现金红包单一红包、裂变红包(Java版)
  14. 『实践』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分布式集群及基于HDFS的网盘实现...
  15. 显示器颜色校准_显示器校准:正确设置颜色的一般指南
  16. 通过全局钩子发送自定义消息,实现进程通信
  17. [数值计算-16]:最小二乘法的求解1 - 一元二次方程解析法求解
  18. 医学文献资料档案全文收集攻略
  19. 十进制转化为二进制代码及流程图
  20. 用java实现matlab的随机函数randsrc(m,n,[alphabet; prob])

热门文章

  1. 还记得月入1.9亿的《开心消消乐》吗?解锁中老年游戏产业掘金新姿势
  2. 用过的一些c++ xll开源库
  3. 激光尺如何测量:逆向工程
  4. 拯救者 R9000p 安装Ubuntu20.04时,无网卡驱动、无法调节亮度问题解决方案
  5. 淘宝,拼多多,京东,大爷大妈上网购物最喜欢用哪个平台?
  6. 小程序验证车牌号(含新能源车牌)
  7. 【ubuntu】vim安装python自动补全插件(2)
  8. 如何创建一个以chatgpt为基础的QQ群聊机器人的流程细节
  9. 中国石油大学《机械原理》第一次在线作业
  10. Android检测网络变化---断网弹窗提示