Gatling主要用于测量基于HTTP的服务器,比如Web应用程序,RESTful服务等。
1 优点:
1.gatling和其他压力工具相比有个好处是放在同一内网环境下linux服务器上,这样避免其他压力使用办公机使用共有网络,网络情况对压力测试的影响。
2 生成比较详细的压力测试报告。
3 能够更灵活的编写压力脚本。
4 可以jenkins集合,将压力测试整合自动化持续集成中。
2 安装:
下载地址: http://gatling.io/#/download
bin目录下有2个脚本,gatling和recorder, gatling用来运行测试, recorder用来启动录制脚本的UI的(不推荐使用)。
conf目录是关于Gatling自身的一些配置。
lib目录是Gatling自身依赖的库文件。
results目录用来存放测试报告的。
user-files目录是用来存放测试脚本的。
3 压力脚本介绍:
package computerdatabase import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._ class BasicSimulation extends Simulation { val httpConf = http .baseURL("http://computer-database.gatling.io") // 设置请求的Host .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") // 设置请求header .doNotTrackHeader("1") .acceptLanguageHeader("en-US,en;q=0.5") .acceptEncodingHeader("gzip, deflate") .userAgentHeader("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0") val headers_10 = Map("Content-Type" -> "application/x-www-form-urlencoded") // Note the headers specific to a given request val scn = scenario("Scenario Name") // A scenario is a chain of requests and pauses .exec(http("request_2") .get("/computers?f=macbook")) .pause(2) .exec(http("request_3") .get("/computers/6")) .exec(http("request_9") .get("/computers/new")) .pause(1) .exec(http("request_10") .post("/computers") .headers(headers_10) .formParam("name", "Beautiful Computer") .formParam("introduced", "2012-05-30" ) .formParam("discontinued", "") .formParam("company", "37"))//请求格式 setUp(scn.inject(atOnceUsers(1)).protocols(httpConf))
4 运行:
[html] view plain copy
cd bin
sh gatling.sh
5 生成报告:
results在目录下生成报告:
以下是报告中的两个图表,其他图就不贴了
转载于:https://blog.51cto.com/tenderrain/2130512