zoukankan      html  css  js  c++  java
  • 性能测试平台工具选型对比

    工具对比

    目前主流的开源性能测试工具主要有如下几种

    比较点

    JMETER

    nGrinder

    Gatling Tsung 结果
    开源 免费,完全开源 免费,完全开源 免费,完全开源 免费,完全开源 =

    实现语言

    JAVA

    JAVA

    Scala写的,支持JAVA库 erlang jmeter=ngrinder>gatling>Tsung

    使用方式

    C/S或Command

    B/S

    Command Command =

    支持分布式

    master/slave

    controller/agent

    不支持 master/slave jmeter=ngrinder=Tsung>gatling

    资源监控

    monitor/plugin

    monitor方式,有直接可用的源码

    可以对远程机器用erlang或者SNMP协议监控,并生成相应的图表 jmeter=ngrinder=Tsung>gatling

    社区活跃度

    文档完善,用户多

    有中文社区

    有社区支持 有社区支持 jmeter=ngrinder>gatling>Tsung

    是否需要编码

    基本不需要

    需要,Jython/Groovy

    需要,scala 需要 jmeter>Tsung>ngrinder=gatling

    脚本的维护

    本地

    内置SVN

    本地 本地 =

    脚本录制

    支持http代理录制,支持第三方录制

    可通过PTS插件进行录制

    支持http代理录制 支持脚本录制 =
    易用性 成熟的模板,元器件,控制器等直接引入 易用性相对强,对编程要求低 逻辑控制、参数化、检查点 依赖编程 熟悉scala的人少,逻辑控制、参数化、检查点 依赖编程  脚本格式和loadrunner是一样的 jmeter>Tsung>ngrinder>gatling
    协议支持 多协议的支持 http协议,其他需要自己扩展开发 http协议,其他需要自己扩展开发 多协议的支持 jmeter>Tsung>ngrinder>gatling

    可扩展性

    可增加plugin,扩展性强

    支持插件

    基于一套开源的Gatling DSL APT,功能容易扩展 支持插件 =

    安装

    基于jdk,绝对轻量化,拷贝即用

    两个服务controller和agent

    基于jdk,绝对轻量化,拷贝即用 需要安装3个服务和配置 jmeter=gatling>ngrinder>Tsung
    压测平台编码量 很大 很大 ngrinder>jmeter>gatling=Tsung

     通过从下面各个维度对比可以看出,工具jmeter都具有优势,但压测平台的开发编码量比较大,nGrinder有现成的压测平台,开发工作量少,但是易用性不如jmeter,脚本需要大量的编码工作,推广难道比较大,两者各有优缺点。

    平台开发工作量对比

    如下为完全平台化需要完成的核心功能点

    比较点

    JMETER

    nGrinder

    平台开发主要实现功能 核心功能点如下
    • controller 服务主要用来计算资源,把任务分配给空闲的agent服务
    •  agent 服务注册心跳、拉取任务,拉取脚本,把执行任务分配给jmeter
    • 平台生成压测曲线报告和聚合报告
    • 平台需要完成测试脚本、场景、任务、报告的管理
    • 平台需要完成web页面编辑脚本的功能

    核心功能如下

    • 支持用户的权限功能
    • 支持项目和服务的分组功能

     可以看出JMETER的工作量要远大于nGrinder

    易用性对比

    在易用性主要是在脚本的编码工作量方面,通过对比可以看出jmeter无非常明显的优势,前提是测试人员具备一定的编码能力

    比较点

    JMETER

    nGrinder

    参数化 通过界面操作完成,简单

    需要手功编写代码,编码工作量少,简单

    关联 界面操作,各个接口之间的数据可以直接传递,简单 各个方法之间的值可以直接传递,简单
    检查点 界面操作完成,简单 有检查点的方法调用,简单
    综合场景 有丰富的逻辑控制器,简单 需要大量的编码工作,复杂

     

    压力机硬件资源消耗对比

    压力机对资源的占用对比,已压测某服务为例,使用相同的并发用户数500,对比压力机资源占用可以看出,ngrinder的cpu占用是jmeter的4倍,内存占用是jmeter5倍

    比较点

    JMETER

    nGrinder

    cpu jmeter只需要1个进程,cpu占用为320%

    agent 如下10个进程CPU占用达到1200%

    内存 进程内存占用为0.96G

    agent10个进程内存占用5.3G

    nGrinder 压测时,监控agent资源利用情况

    jmeter

    测试指标对比

    通过对同一服务,相同并发数和测试时间,对比业务指标TPS和平均响应时间结果如下,jmeter的值要远大于nGrinder,后续我们对nGrinder的压测节点进行扩容

    最终也只能压测到18000多TPS

    比较点

    JMETER

    nGrinder

    TPS 24002

     14778

    响应时间 20ms

    33.1ms

    nGrinder测试结果截图

    JMETER 测试结果截图

    综合分析

     nGrinder在平台二次开发上最简单,在易用性方面也比较好(前提是要具备一定的编码能力),但是在调研的过程中发现非常耗压力机资源,在相同并发下cpu占用是jmeter的4倍,内存占用是jmeter5倍以上,同时在测试kong的时候发现无法压测到kong的极限值。所以 2个压测工具可以根据公司或具体情况再选择吧。

  • 相关阅读:
    python
    python
    打开python自带IDLE出的问题
    Python GUI编程(Tkinter)8、CheckButton多选框控件
    Python GUI编程(Tkinter)7、带滚动条的Text
    Python GUI编程(Tkinter)6、Text控件
    Python GUI编程(Tkinter)5、点击按钮输出输入框中的内容
    Python GUI编程(Tkinter)4、Entry控件
    Python GUI编程(Tkinter)3、Button控件
    Python GUI编程(Tkinter)2、Label控件
  • 原文地址:https://www.cnblogs.com/unknows/p/11289540.html
Copyright © 2011-2022 走看看