性能测试之gatling详解
大家接触过形形色色的压力测试工具,例如lr,jmeter各有各的优点,那么最近在做接口测试中涉及到压力测试,小弟就看到一个好用的工具俗称“加特林”英文Gatling,就简单研究一番,今天为大家分享一下。
Gatling是一款基于Scala 开发的高性能服务器性能测试工具,它主要用于对服务器进行负载等测试,并分析和测量服务器的各种性能指标。目前仅支持http协议,可以用来测试web应用程序和RESTful服务
官网:https://gatling.io/
优点:
1.gatling和其他压力工具相比有个好处是放在同一内网环境下linux服务器上,这样避免其他压力使用办公机使用共有网络,网络情况对压力测试的影响。
2 生成比较详细的压力测试报告。
3 能够更灵活的编写压力脚本。
4 可以jenkins集合,将压力测试整合自动化持续集成中
上面都是干货,下面为大家直接实战,我是通过java+maven+scala搭建的一个环境以及Demo.
1.创建一个Maven项目
2、安装Scala插件
3、pom添加核心依赖包
io.gatling
gatling-app
$
io.gatling
gatling-recorder
$
io.gatling.highcharts
gatling-charts-highcharts
$
-----太多我就不一一贴出,有兴趣微信公众号或者qq群联系我。
4.下面就是Demo
/**
* Created by Administrator on 2017/12/10.
*/
importio.gatling.core.Predef._
importio.gatling.http.Predef._
classABTestextendsSimulation {
//1.主要实现模拟不同用户重复100次执行结果
objectSearch {
//val feeder = csv("D:\gatling-2.2.5\gatling-charts-highcharts-bundle-2.2.5\user-files\data\appdata.csv")
valsearch=repeat(100) {//重复次数100次
//读取csv数据
valfeeder = csv("D:\gatling-2.2.5\gatling-charts-highcharts-bundle-2.2.5\user-files\data\appdata.csv").random
feed(feeder)
.exec(http("ABTest")
.get("/abTest?appkey=$&deviceid=$"))
.pause(1)
//exec()里的参数就是我们的执行动作,http("本次请求的名称").get("本次http get请求的地址")
}
}
valhttpConf=http
.baseURL("http://10.168.99.209:8080/abapi")////设置请求的根路径
valusers=scenario("Users").exec(Search.search)//声明Scenario,指定我们的请求动作
setUp(
users.inject(atOnceUsers(400)).protocols(httpConf))
//atOnceUsers立马启动的用户数,可以理解为并发数
}
读取Excl数据500个用户
D:\gatling-2.2.5\gatling-charts-highcharts-bundle-2.2.5\user-files\data\appdata.csv
5、自动生成的测试报告:
概览800ms下响应的请求次数10,右边的饼状图显示成功请求10个,失败0个。注意在Global页面里的图都是整体的统计(一个测试计划可包含多个http请求),如果需要看某个请求的情况可点击到Details页面,并选取对应的请求
大家如果有感兴趣的方向文章,可以直接给我留言,我会去写你们感兴趣的文章。
想要了解,获取更多和测试相关的知识请添加此群,本群提供App、Web等Ui自动化,App性能测试,接口功能,
接口自动化测试,jemeter、loadrunner工具介绍,静态代码扫描实践;测试理论,
测试流程。测试管理。
App自动化及Web自动化全栈测试:群号544126564(想要更多资料立即加入此群)
- 上海2017QCon个人分享总结
- 为最佳性能调优 Nginx
- 《微信小程序七日谈》- 第一天:人生若只如初见
- 类加载器详解
- 《微信小程序七日谈》- 第二天:你可能要抛弃原来的响应式开发思维
- 《微信小程序七日谈》- 第三天:玩转Page组件的生命周期
- 《微信小程序七日谈》- 第四天:页面路径最多五层?导航可以这么玩
- 《微信小程序七日谈》- 第五天:你可能要在登录功能上花费大力气
- 《微信小程序七日谈》- 第六天:小程序devtool隐藏的秘密
- boi剖析 - 基于webpack的css sprites实现方案
- 深入JDK源码之ThreadLocal类
- 独家 | 一文读懂TensorFlow基础
- Webpack中hash与chunkhash的区别,以及js与css的hash指纹解耦方案
- RPC原理及实现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SQL注入原理及代码分析(二)
- 写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出 现的次数。
- SSRF漏洞简单分析
- 树莓派基础实验30:BMP180气压传感器实验
- DC-1靶机实战和分析
- 如何用Python优雅的登录校园网?
- PHP入门之类型与运算符
- 栈论 : 递归与栈式访问,如何用栈实现所有递归操作(幼儿园题目篇,题目3)
- Maven是什么? Maven的概念+作用+仓库的介绍+常用命令
- JDK8;HashMap:再散列解决hash冲突 ,源码分析和分析思路
- 写一个 Singleton
- 树莓派基础实验31:MPU6050陀螺仪加速度传感器实验
- springboot gradle mybatis mysql配置(注解)
- PHP入门之流程控制
- 常用进制转换方法(取商留余)原理解析, 附基于栈实现进制转换的代码