搭建私有PTS性能测试服务(二)

上一篇给大家介绍了阿里云的PTS服务,工具虽好,毕竟是需要花点钱的,比起高大上的LoadRunner是要便宜不少,但互联网讲究什么啊,Free啊,开源啊……那市场上有没有一个开源工具跟阿里云的PTS一样,即开即用呢?答案是肯定的,甚至比阿里云PTS出现的时间还早。其实啊,阿里云的PTS也是根据它进行二次开发来的,当然,这是我的怀疑,参考淘宝开放平台—聚石塔性能测试服务(http://open.taobao.com/doc/detail.htm?spm=0.0.0.0.UspfOC&id=102088)便可看出一些端倪

在前段时间进行项目的性能测试时,让我无意间发现了这款神器—nGrinder,瞬间便被它清爽的界面,操作简单且不失强大的功能所吸引,下面进入正题。

nGrinder简介

nGrinder(http://naver.github.io/ngrinder/)是基于Grinder开源项目,但由NHN(据说是韩国最大的互联网公司)公司的nGrinder开发团队进行了重新设计和完善(所以叫做nGrinder)。nGrinder是一款非常易用,有友好简洁的用户界面和controller-agent分布式结构的强大的压力测试工具

它是由一个controller和连接它的多个agent组成,用户可以通过web界面管理和控制测试,以及查看测试报告,controller会把测试分发到一个或多个agent去执行。用户可以设置使用多个进程和线程来并发的执行该脚本,而且在同一线程中,来重复不断的执行测试脚本,来模拟很多并发用户。

nGrinder的测试是基于一个python的测试脚本,用户按照一定规则编写测试脚本以后,controller会将脚本以及需要的其他文件分发到agent,用Jython执行。并在执行过程中收集运行情况、响应时间、测试目标服务器的运行情况等。并保存这些数据生成运行报告,以供以后查看。

nGrinder的一大特点就是非常容易使用,安装也非常容易,可以做到开箱即用,测试新手也可以很容易就开始测试任务。当然,如果想执行一些比较复杂场景的性能测试,就需要测试人员对python有一定认识。

跟阿里云的PTS相比,有很多共同点

  1. 都是BS架构,web界面操作,界面清爽,配置简单
  2. 都是分布式并发压测,可模拟业务场景进行测试
  3. 都可在线管理测试脚本、测试任务、测试结果
  4. 测试脚本都可用Jython进行编写,实现较为复杂的逻辑
  5. 都可以使用插件进行脚本的录制,降低编写测试脚本的成本
  6. 都可定时执行任务,配置好任务,预约好执行的时间,性能测试再也不用盯着了。

当然也有一些不同的地方,比如对测试机的管理,阿里云PTS可以直接在线管理被测服务器,而nGrinder需要我们手工在被测试服务器上安装监控程序,这样才能收集服务器的性能数据。阿里云PTS测试中可配置的更多,对新手来说更加方便,而nGrinder要实现稍微复杂的逻辑,就需要在测试脚本中实现。

nGrinder的安装

先决条件

  • nGrinder是一个web应用(Controller)和Java应用(Agent, Monitor)的组合。安装 nGrinder的Controller和Agent,需要安装JDK 1.6或更高的版本。
  • 请检查你的PATH环境变量,java安装路径是不是在PATH环境变量之前,如果是,那就可以正常的运行java了。
  • nGrinder需要用到很多端口。如果有些端口被防火墙阻挡,请联系服务器管理开放下面这些端口。
    • Agent : Any ==> Controller : 16001
    • Agent : Any ==> Controller : 12000 ~ 12000+(允许并发测试的数量)
    • Controller : Any ==> Monitor : 13243
    • Controller ==> Public user : 这取决于你的Tomcat的配置,默认为8080。