码迷,mamicode.com
首页 > 其他好文 > 详细

Gatling 测试工具学习

时间:2015-03-11 13:11:02      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

Gatling是一款基于Scala 开发的高性能服务器性能测试工具,它主要用于对服务器进行负载等测试,并分析和测量服务器的各种性能指标。Gatling主要用于测量基于HTTP的服务器,比如Web应用程序,RESTful服务等,除此之外它拥有以下特点:

  • 支持Akka Actors 和 Async IO,从而能达到很高的性能

  • 支持实时生成Html动态轻量报表,从而使报表更易阅读和进行数据分析

  • 支持DSL脚本,从而使测试脚本更易开发与维护

  • 支持录制并生成测试脚本,从而可以方便的生成测试脚本

  • 支持导入HAR(Http Archive)并生成测试脚本

  • 支持Maven,Eclipse,IntelliJ等,以便于开发

  • 支持Jenkins,以便于进行持续集成

  • 支持插件,从而可以扩展其功能,比如可以扩展对其他协议的支持

  • 开源免费

Gatling适用的场景包括:测试需求经常改变,测试脚本需要经常维护;测试环境的客户机性能不强,但又希望发挥硬件的极限性能;能对测试脚本进行很好的版本管理,并通过CI进行持续的性能测试;希望测试结果轻量易读等。

其他详解:http://www.infoq.com/cn/articles/new-generation-server-testing-tool-gatling/

使用安装

   最新版本2.0.1  

   sbt构建  "io.gatling.highcharts" % "gatling-charts-highcharts" % "2.0.1"(GutHub应保存构建模板)  

   安装相对来说比较简单,根据自己系统下载相应的zip包,解压至安装目录,配置系统环境变量GATLING_HOME(WIN)

   配置好环境变量后,在目录bin下有gatling.bat or gatling.sh运行脚本,运行成功后会提示用户选择测试脚本

   运行成功后,会在/$gatling/results生成本次测试数据:曲线图、请求响应时间等方便查看结果统计。

使用技巧:

   目前使用Gatling 1.5.6版本居多,但与2.0.1版本变化有明显差别,加入DSL等特性,具体详细

   参见: http://gatling.io/docs/2.0.1/project/migration_guides/1.5.x-to-2.0.html#x-to-2-0

   api doc: http://gatling.io/docs/2.0.1/

使用中遇到的问题:

   Q:如何对请求追加请求参数

   A:对于scala来说可以用queryParamMap(Map[String,Any])来对请求方便的增加请求参数(get请求可以将map转换为K=V 的String),当然还有单个传参queryParam(String,String)等,可参考:query-parameters


   Q:需要对请求后的结果进行检测或校验

   A:使用check 如 check(status.is(200)),check(regex(""""<.*>""").findAll.exsits)

   Q: 怎么对请求后响应的结果进行操作?操作如:将结果set到session中?

   A: 上例子会更明白些,案例说明:获取用户喜欢的所有topics根据每个topic的id请求相应id的推荐
  
val ranking = scenario("just test userLike")
    .exec(http("userLikeTopic").get("user/general_men/like.json").queryParamMap(params)
    .check(status.is(200), jsonPath("$.datas[*]").ofType[Map[String,Any]]//jsonPath         

    .findAll.saveAs("likeTopics"))).foreach("${likeTopics}", "topics") {

        exec(session => {

                val topics = session("topics").as[Map[String, Any]]
                session.set("cid", topics("cid"))
        })
    .pause(2, 5)
    .exec(http("ranking") get ("topic/${cid}/rankings.json") queryParamMap (params)//可以更换为page请求
}

  setUp(ranking.inject(atOnceUsers(1)).protocols(httpConf))//设置一个用户请求 设置大于1时,是指N个用户并发访问,当然Gatling也提供了另外一种配置来解决,"多用户但并不同时并发访问" inject(rampUsers(n) over (n times))


后续整理中...


Gatling 测试工具学习

标签:

原文地址:http://my.oschina.net/173/blog/385191

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!