性能工具之 nGrinder 入门安装及使用

举报
zuozewei 发表于 2021/08/05 21:52:43 2021/08/05
【摘要】 nGrinder是基于 Grinder 开源项目,但由 NHN(据说是韩国最大的互联网公司)公司的 nGrinder 开发团队进行了重新设计和完善(所以叫做 nGrinde r

介绍

nGrinder (http://naver.github.io/ngrinder/) 是基于 Grinder 开源项目,但由 NHN(据说是韩国最大的互联网公司)公司的 nGrinder 开发团队进行了重新设计和完善(所以叫做 nGrinde r)。nGrinder 是一款非常易用,有友好简洁的用户界面和 controller-agent 分布式结构的强大的压力测试工具。它是由一个 controller 和连接它的多个 agent 组成,用户可以通过 web 界面管理和控制测试,以及查看测试报告,controller 会把测试分发到一个或多个 agent 去执行。用户可以设置使用多个进程和线程来并发的执行该脚本,而且在同一线程中,来重复不断的执行测试脚本,来模拟很多并发用户

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

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

架构图

在这里插入图片描述

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

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

  • 单节点支持 3000 并发、支持分布式、可监控被测服务器、可录制脚本、开源、平台化。

快速安装

下载二进制包

访问 Github:https://github.com/naver/ngrinder/releases
在这里插入图片描述

下载 tomcat 中间件

在这里插入图片描述
或者点击:https://tomcat.apache.org/download-90.cgi
在这里插入图片描述

安装应用

在这里插入图片描述
把下载好的【nGrinder-controller-3.4.3.war】包放到 Tomcat 的 webApps 文件夹中
在这里插入图片描述
注意:
永远不要将 war 文件放在包含像这样的文件夹的空间中 “C:\Program Files\Tomcat\webapps” 否則下载不了grinder-agent 端。

启动应用

在这里插入图片描述

浏览器访问

在这里插入图片描述
注意:
默认情况下,nGrinder 用 8080 作为 web 端访问的端口。

在这里插入图片描述
提供快速使用功能,工具比较成熟,开箱即用

安装 agent

在这里插入图片描述

下载后并且解压到相对目录:
在这里插入图片描述

运行成功如下:
在这里插入图片描述
平台验证是否有 agent 客户端:
在这里插入图片描述
在这里插入图片描述

简单使用

输入压测地址

咱们用 baidu 页面简单做一个测试:

在这里插入图片描述
输入要压测的请求地址:

在这里插入图片描述
该页面都是中文一看就知道怎么操作:

在这里插入图片描述
点击输入相关内容后保存并运行:
在这里插入图片描述
在这里插入图片描述
查看相关信息:

在这里插入图片描述

查看压测结果

在这里插入图片描述

查看详细结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看压测脚本

在这里插入图片描述
下面就能看到文件夹,继续点击去就能看到脚本:

脚本如下:

/**

 * A simple example using the HTTP plugin that shows the retrieval of a
 * single page via HTTP.
 *
 * This script is automatically generated by ngrinder.
 *
 * @author admin
 */

@RunWith(GrinderRunner)

class TestRunner {

    public static GTest test
    public static HTTPRequest request
    public static NVPair[] headers = []
    public static NVPair[] params = []
    public static Cookie[] cookies = []

    @BeforeProcess

    public static void beforeProcess() {
        HTTPPluginControl.getConnectionDefaults().timeout = 6000
        test = new GTest(1, "www.baidu.com")
        request = new HTTPRequest()
        grinder.logger.info("before process.");
    }


    @BeforeThread 
    public void beforeThread() {
        test.record(this, "test")
        grinder.statistics.delayReports=true;
        grinder.logger.info("before thread.");
    }


    @Before
    public void before() {
        request.setHeaders(headers)
        cookies.each { CookieModule.addCookie(it, HTTPPluginControl.getThreadHTTPClientContext()) }
        grinder.logger.info("before thread. init headers and cookies");
    }


    @Test
    public void test(){
        HTTPResponse result = request.GET("https://www.baidu.com/", params)
        if (result.statusCode == 301 || result.statusCode == 302) {
            grinder.logger.warn("Warning. The response may not be correct. The response code was {}.", result.statusCode); 
        } else {
            assertThat(result.statusCode, is(200));
        }
    }
}

小结

以上为 nGrinder 入门安装及简单使用介绍,下一篇分享参数化与分布式压测。

相关系列:

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200