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

一、设计思路

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[@]}

do

if [ -f "$file_name" ];then

#command="source $file_name"

mysql -h${host} --default-character-set=utf8 -u${username} -p${password} ${dbname} -e "source ${file_name}"

else

echo -e "\033[31;31m SQL文件不存在!!!\033[0m"

fi

done

cd ..

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报告,需要实现,压测报告更加直观。如何输出正确的测试报告非常重要。

等等

上述问题解决会继续更新

【注】欢迎探讨,欢迎转载,但转载请注明出处。

时间: 06-28

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

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

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

  2. python cs开发框架_用Python编写一个简单的CS架构后门的方法

    用Python编写一个简单的CS架构后门的方法 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  用Python编写一个简单的CS架构后门的方法.txt ] (友情 ...

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

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

  4. python编写登录_通过Python编写一个简单登录功能过程解析

    通过Python编写一个简单登录功能过程解析 需求: 写一个登录的程序, 1.最多登陆失败3次 2.登录成功,提示欢迎xx登录,今天的日期是xxx,程序结束 3.要检验输入是否为空,账号和密码不能为空 ...

  5. python hello world程序编写_用Python编写一个简单程序

    按照软件行业传统习惯,当你学习一种新的编程语言如Python时,首先编写一个"Hello World! "程序. 请执行以下步骤,以创造你的"Hello World!&q ...

  6. matlab z变换离散化_用C++编写一个简单的光栅化渲染器:3D篇

    3D光栅化与2D光栅化在图元绘制方面差别并不大,3D光栅化主要是多了很多坐标系(Local,world,View...),除此外遮挡算法和裁剪算法也会稍微复杂一些. 本篇文章的重点就主要集中在各种坐标 ...

  7. 用python写一个简单的爬虫_用Python编写一个简单的爬虫

    作者信息: Author : 黄志成(小黄) 博客地址: 博客 呐,这是一篇福利教程.为什么这么说呢.我们要爬取的内容是美图网站(嘿嘿,老司机都懂的) 废话不多说.开始今天的表演. 这个图集网站不要问 ...

  8. java 银行存取款_使用JAVA编写一个简单的银行存取款程序

    package com.lw.thread; /* 银行账户类Account(不能透支), 包含账号id(10~16位数字),密码password(6位数字),户主姓名name,余额balence * ...

  9. java体重指数计算器程序_用Java编写一个简单的计算器程序

    展开全部 import java.awt.*; import java.awt.event.*; public class CalcAppDemo extends Frame{ private Tex ...

最新文章

  1. Python底层实现KNN
  2. 从 java bean 的内省到 dbutils 的应用
  3. 二十七、事务隔离级别示例
  4. MySQL配置文件优化
  5. NUMA架构和Java
  6. python实训英文_GitHub - MiracleYoung/You-are-Pythonista: 汇聚【Python应用】【Python实训】【Python技术分享】等等...
  7. P1028 [NOIP2001 普及组] 数的计算 python
  8. SQL Server 连接查询(多表连接查询)
  9. CentOS7 yum 安装 maven
  10. ① 数据库介绍 及 关系型数据库的关系代数表达式
  11. h3c简单配置包括一些简单vlan原理
  12. php自动关机代码,win7定时关机命令是什么
  13. 不错的javascript极品日历
  14. 前端新手遇到的问题 ---含“ 文字贯穿线、@font-face、axios ”知识
  15. 微分中值定理定义及几何意义
  16. 百度网盘,到底限了谁的速?
  17. 创建Chinaskills20为GPO管理员;加入到企业管理、域控管理员组;
  18. 黑马JAVA P41 for循环案例3
  19. HTML 中的各种标记简介
  20. httpclient: 设置请求的超时时间,连接超时时间等

热门文章

  1. 聊聊阿里面试的三个层次!
  2. Laravel 上传图片及多张图片到七牛云
  3. 比特币如何达成共识 - 最长链的选择
  4. 4.5. Rspamd
  5. hdu 1280 前m大的数 哈希
  6. 网站安全编程 黑客入侵 脚本黑客 高级语法入侵 C/C++ C# PHP JSP 编程
  7. C#.NET 可以为不同的客户定制不同的登录窗体的设计思路参考【功能代码组件化,可以灵活选配】...
  8. Rocchio算法—文本分类
  9. Windows下visual studio code搭建golang开发环境
  10. Druid 配置_StatViewServlet配置