为什么需要进行自动化压力测试

手动逐步加压,需要人工改变并发数,还要等待。所有,我们完全可以制定好策略,让程序自动加压,自动等待,输出报告

实现思路

  • Jmeter脚本(.jmx文件)- 压测逻辑
  • Shell - 控制逻辑(Windows系统用Bat)
  • 并发数更改 - Linux三剑客
  • Jmeter静默运行 - 脱离UI限制,使其运行稳定

Jmeter脚本

UI页面调试通

Shell脚本

前期准备:Linux上JDK,Jmeter安装好,环境变量已配置好

脚本:

#!/bin/bash
jmx_template="APIStress"
suffix=".jmx"
jmx_template_filename=$jmx_template$suffix
os_type=$(uname)
c_path=$(dirname $0)
c_path=$(cd $c_path;pwd)
#强制杀死Jmeter进程
killJmeter()
{
        pid=$(ps -ef | grep jmeter | grep java | grep $jmx_filename | awk '{print $2}')
        echo "jmeter id list:$pid"
        if [ -z $pid ]
                then
                echo "no jmeter pid alive"
        else
                kill -s 9 $pid
        fi
}
thread_number_array=(3 5 10)
for i in ${thread_number_array[@]}
        do
        jmx_filename=$jmx_template$i$suffix
        jtl_filename="test_$i.jtl"
        rm -f $c_path/../jmeter_jmx/$jmx_filename $c_path/../jmeter_jtl/$jtl_filename
        cp $c_path/../jmeter_jmx/$jmx_template_filename $c_path/../jmeter_jmx/$jmx_filename
        echo "生成jmx压测脚本:$jmx_filename"
        if [ $os_type == "Linux" ]
                then
                        sed -i "s/thread_number/$i/g" $c_path/../jmeter_jmx/$jmx_filename
        else
                echo "当前$os_type系统未安装相应关机"
        fi
        nohup jmeter -n -t $c_path/../jmeter_jmx/$jmx_filename -l $c_path/../jmeter_jtl/$jtl_filename &
        sleep 60
        killJmeter
        rm -f $c_path/../jmeter_jmx/$jmx_filename
        done
echo "自动化压测结束"    

运行Shell脚本

查看报告

使用UI Jmeter查看报告

Jmeter系列(11)- 自动化压力测试逻辑思路及例子的更多相关文章

  1. Windows和Linux的Jmeter分布式集群压力测试

    Windows的Jmeter分布式集群压力测试 原文:https://blog.csdn.net/cyjs1988/article/details/80267475 在使用Jmeter进行性能测试时, ...

  2. 一个基于.NET平台的自动化/压力测试系统设计简述

    AutoTest系统设计概述 AutoTest是一个基于.NET平台实现的自动化/压力测试的系统,可独立运行于windows平台下,支持分布式部署,不需要其他配置或编译器的支持.(本质是一个基于协议的 ...

  3. 转:使用 JMeter 完成常用的压力测试

    使用 JMeter 完成常用的压力测试 就目前 Java EE 的平台下开发的软件来说,这种节点通常可能是:Web 服务器.数据库服务器和 JMS 服务器.它们都是请求主要发生的地点,请求频率较其它的 ...

  4. Android自动化压力测试图解教程——Monkey工具 (转)

    有时候我们需要对一个软件进行压力测试,检查该软件的性能.如果是人工进行测试的话,效率会低很多,而且会比较枯燥.这时,Android中的一个命令行工具Monkey就可以为我们减轻很多重复而又繁琐的工作. ...

  5. 【转】使用JMeter 完成常用的压力测试(二)

    使用JMeter 完成常用的压力测试 Login.jsp 和welcome.jsp.其中 login.jsp 负责生成 User 对象,并调用 User 的login.当 login 返回为 true ...

  6. Jmeter教程 简单的压力测试

    Jmeter教程 简单的压力测试:http://www.cnblogs.com/TankXiao/p/4059378.html

  7. Android自动化压力测试图解教程——Monkey工具

    [置顶] Android自动化压力测试图解教程--Monkey工具 标签: 测试androidprofiling工具测试工具文档 2012-04-01 10:16 38185人阅读 评论(10) 收藏 ...

  8. JMeter (3) —— JMeter录制脚本并压力测试用户登陆场景以CAS SSO为例(101 Tutorial)

    JMeter (3) -- JMeter录制脚本并压力测试用户登陆场景以CAS SSO为例(101 Tutorial) 主要内容 JMeter录制脚本并进行压力测试用户登陆场景,并以CAS SSO单点 ...

  9. 【转】使用JMeter 完成常用的压力测试(三)

    使用JMeter 完成常用的压力测试 发布时间: 2008-9-27 15:33    作者: 未知    来源: 网络转载 字体:  小  中  大  | 上一篇 下一篇 | 打印  | 我要投稿 ...

随机推荐

  1. jupyter notebook使用python虚拟环境

    jupyter指定环境启动 背景 系统环境中安装有jupyter及相关库,因项目需要,新建了一个torch相关的虚拟环境并安装了对应的内容, 此时,想通过系统中的jupyter启动一个可以应用虚拟环境 ...

  2. NOIP 模拟 9 考试总结

    T1 一道推规律的题,没想出来,暴力打得常数还太大了,挂了不少 题解 T2 这是一道二分题,很巧妙,但是对于想我一样懒得人,那个数据结构就水过去了 (裸的分块加强大的卡长和合适的块的大小可以卡过去) ...

  3. 你知道那些JVM性能调优

    设定堆内存大小 -Xms :堆初始空间大小 -Xmx : 堆内存最大限制. 设置新生代大小.新生代不宜太小,否则会有大量对象涌入老年代 -XX:NewSize : 新生代大小 -XX:NewRatio ...

  4. 分布式文件系统FastDFS搭建实操

    转载---------佳先森--- 一.什么是文件系统 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节 ...

  5. 深入浅出Mybatis系列(十)---延迟加载

    一.延迟加载 resultMap可以实现高级映射(使用association.collection实现一对一及一对多映射),association.collection具备延迟加载功能. 延迟加载:先 ...

  6. C语言判断两个值相等

    内置类型比较直接用==判断 字符串比较要用string.h里的函数strcmp(const char *str1,const char *str2)进行比较string.h里的函数strcmp(con ...

  7. 翻译Go Blog: 常量

    常量 Pob Pike 2014年8月24日 原文 介绍 Go是一门静态语言,它不允许不同数字类型间的操作.你不能将一个浮点数(float64)和一个整数(int)相加,也不能将一个32位整数(int ...

  8. Go并发控制--WaitGroup篇

    目录 1. 前言 2. 使用WaitGroup控制 2.1 使用场景 2.2 信号量 1.3 WaitGroup 数据结构 2.3.1 Add () 方法 2.3.2 Wait() 2.3.3 Don ...

  9. pgsql日期树数值类型指定与介绍

    http://www.postgres.cn/docs/9.3/datatype-net-types.html#DATATYPE-INET  文档有详细的pgsql介绍 使用案例: SELECT to ...

  10. indexedDB数据库完整创建流程

    1.打开数据库 使用 IndexedDB 的第一步是打开数据库,使用indexedDB.open()方法 var request = window.indexedDB.open(databaseNam ...