• nGrinder详细介绍及性能工具对比(引用)


    一、The Grinder

    1、The Grinder是一个基于Java的开源性能测试框架,通过多个agent负载机很方便的进行分布式测试。

    2、主要特性:

    • 可以测试任何java代码,包括各种常用的接口

      • 如HTTP web servers, SOAP和REST web services,还有客户端服务器RMI、JMS、EJBs等,还支持自定义协议。
    • 测试脚本使用python和Clojure语言
    • 成熟的HTTP协议支持:

      • 自动管理客户端连接和cookies,SSL代理;
      • 支持录制脚本,能够记录并回放浏览器和网站之间的复杂交互。
    • 包括console和agent端

    3、不足

    • 一次只能运行一个测试
    • 没有测试历史记录
    • 没有图形化的测试报告

    二、nGrinder

    nGrinder是基于Grinder的开源的web性能测试平台,由韩国最大互联网公司NHN公司的开发团队进行了重新设计和完善。

    特性:开源、易用、高可用、可扩展

    1、nGrinder 在 Grinder 的基础上:

    • 实现多测试并行
    • 基于web的管理
    • 实现cluster
    • 内置svn,方便的脚本编辑、管理
    • 增加支持Groovy脚本,相对于Jython,可以启动更多的虚拟用户
    • 使用改造过的 JUnit 框架,比Grinder脚本强大得多
    • 实现对目标服务器的监控
    • 插件系统扩展

    2、工作原理

    • 由一个控制端controller和多个代理端agent组成,通过控制端(浏览器访问)建立测试场景,然后分发到代理端进行压力测试。
    • 用户按照一定规范编写测试脚本,controller会将脚本以及需要的资源分发到agent,用jython执行。
    • 在脚本执行的过程中收集运行情况、相应时间、测试目标服务器的运行情况等。并且保存这些数据生成测试报告,通过动态图和数据表的形式展示出来。用户可以方便的看到TPS、被测服务器的CPU和内存等情况。

    三、LoadRunner JMeter 与 nGrinder对比

    1、Loadrunner

    • 基于UI操作,容易上手。早期很流行,功能强大,但是太笨重,安装很麻烦。
    • 不开源,扩展性不高,收费贵。往后的方向肯定是客户端工具逐步向平台化发展,所以已经慢慢被替代了。

    2、JMeter

    • 基于UI操作,容易上手,但是编程能力较弱(使用beanshell脚本语言)。
    • 其次JMeter基于线程,模拟数千用户几乎不可能。

    3、nGrinder

    • 单节点支持3000并发、支持分布式、可监控被测服务器、可录制脚本、开源、平台化。
    比较点JMeterNgrinderLoadRunner
    实现语言 Java java/python java/VB/C/.NET
    使用方式 C/S或Command B/S B/S
    支持分布式 master/slave controller/agent master/slave
    资源监控 monitor/plugin,如果二开,需要查找plugin的源码 monitor方式,有直接可用的源码 自带资源监控功能
    社区活跃度 文档完善 有中文社区 网上资料和相关培训很多,购买正版还可以得到技术支持
    是否需要编码 基本不需要 需要,Jython/Groovy 需要
    脚本的维护 本地 内置SVN 本地
    脚本录制 可使用BadBoy进行录制 可通过PTS插件进行录制 自带录制功能
    可扩展性 可增加plugin,输出结果可以再加工 可增加plugin 通过扩展函数库实现
    安装 简单,解压即可 简单,可以下载安装包或绿色包解压 安装包比较大,安装繁琐

    引用链接: https://segmentfault.com/a/1190000017022784?utm_source=tag-newest

  • 相关阅读:
    #pragma 预处理指令
    C++类继承中的构造函数和析构函数 调用顺序
    static_cast与dynamic_cast转换 最简单的理解
    std::map的insert和下标[]访问
    C++有没有string转化int的函数,怎样转换
    c++中在一个类中定义另一个只有带参数构造函数的类的对象
    c++二进制文件的读写
    C++ 包含头文件 和 宏的使用 和 条件编译
    C++ 前置声明 和 包含头文件 如何选择
    C语言 gets()和scanf()函数的区别
  • 原文地址:https://www.cnblogs.com/zyp1/p/11134114.html
Copyright © 2020-2023  润新知