性能工具之 nGrinder 参数化脚本编写

简介: 【5月更文挑战第6天】性能工具之 nGrinder 参数化脚本编写

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

一、前言

在做性能测试,脚本参数化是一个比较好玩的事情,不同工具参数写法不一样,简单可以从三个方面(随机、唯一,顺序)获取参数进行脚本参数化。

nGrinder 参数化需要一点代码基础才可以实现。

二、 在线编写

1、创建脚本

点击脚本,选择需要参数化的脚本:
image.png

新建文件为:resources,并且在该目录下上传参数文件:
image.png

新建脚本:
image.png

如果有头信息等信息,点击高级即可看到:
image.png

2、参考脚本

import org.junit.Before
import org.junit.BeforeClass
import org.junit.Test

import static net.grinder.script.Grinder.grinder

import static org.hamcrest.Matchers.*
import net.grinder.plugin.http.HTTPRequest
import net.grinder.plugin.http.HTTPPluginControl
import net.grinder.script.GTest
import net.grinder.script.Grinder
import net.grinder.scriptengine.groovy.junit.GrinderRunner
import net.grinder.scriptengine.groovy.junit.annotation.BeforeProcess
import net.grinder.scriptengine.groovy.junit.annotation.BeforeThread
// import static net.grinder.util.GrinderUtils.* // You can use this if you're using nGrinder after 3.2.3
import java.util.Date
import java.util.List
import java.util.ArrayList

import HTTPClient.Cookie
import HTTPClient.CookieModule
import HTTPClient.HTTPResponse
import HTTPClient.NVPair

/**
 * @Title: TestRunner
 * @Description: 脚本参数化 demo
 * @author: 7d
 * @date: 2019/10/9 / 19:50
 */
class TestRunner {
   
   

    public static GTest test
    public static HTTPRequest request
    public static NVPair[] headers = []
    public static NVPair[] params = []
    public static Cookie[] cookies = []
    public static List lineList //存放参数文件记录

    @BeforeProcess
    public static void beforeProcess() {
   
   
        HTTPPluginControl.getConnectionDefaults().timeout = 6000
        test = new GTest(1, "blog.51cto.com")
        request = new HTTPRequest()
        lineList = new File("E:\\work\\apk\\uiElement\\assortElement.properties1").readLines("UTF8");

        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://blog.51cto.com/357712148/2440849", 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));
        }
    }
}

调试结果为:

image.png

image.png

三、IDE 编写

image.png

测试结果为:
image.png

如果是源码部署可以在如图位置新建相关目录与脚本,把上面脚本参数路径修改下即可跑起来。
image.png

四、总结

这里介绍简单的参数化写法,如果想了解更多的写法请看源码或者查找资料,因为源码大家已经部署成功,写法网络上很多,可轻松掌握。

源码地址:

目录
相关文章
|
4天前
|
JSON IDE Java
性能工具之 nGrinder 关联脚本编写
【5月更文挑战第5天】性能工具之 nGrinder 关联脚本编写
19 2
性能工具之 nGrinder 关联脚本编写
|
4天前
|
SQL JSON Java
性能工具之 nGrinder Get 请求脚本编写
【5月更文挑战第3天】性能工具之 nGrinder Get 请求脚本编写
28 8
|
4天前
|
缓存 人工智能 算法
编写高效的Python脚本:性能优化的策略与技巧
编写高效的Python脚本需要综合考虑多个方面,包括代码结构、数据结构和算法选择等。本文将探讨在Python编程中提高脚本性能的方法,包括优化数据结构、选择合适的算法、使用Python内置函数以及通过并行和异步编程提升效率。这些技巧旨在帮助开发者在不同应用场景中编写出高性能的Python代码。
|
6月前
|
数据采集 监控 数据处理
Python自动化与脚本编写:提升效率与简化工作流程
Python自动化与脚本编写:提升效率与简化工作流程
|
7月前
4 JMeter 参数化常用方式
4 JMeter 参数化常用方式
|
9月前
|
XML SQL JSON
软件测试|JMeter 参数化的方式有哪些
软件测试|JMeter 参数化的方式有哪些
84 0
|
测试技术
loadrunner 脚本优化-参数化方法
loadrunner 脚本优化-参数化方法
236 0
|
存储 文件存储
Jmeter之实现参数化的不同方式详解
Jmeter参数化定义:动态的获取、设置或生成数据,是一种由程序驱动代替人工驱动的数据设计方案,提高脚本的编写效率以及编写质量。适用场景:当提交的数据量较大时,每次修改太麻烦,可以使用参数化。 本文介绍实现参数化的4种方式:1、用户定义的变量;2、CSV数据文件设置;3、用户参数;4、函数:计数器函数/随机数/时间戳。。。
215 0
Jmeter之实现参数化的不同方式详解
|
Linux 程序员
自己编写高负荷测试的工具
在第一轮测试时,我们通过在LINUX操作系统上,用压缩和解压缩的方法去占用CPU,这样的方法有个弊端,就是比较耗时而且不可控。
EMQ
|
Java 测试技术 Linux
JMeter 扩展开发:BeanShell 数据模拟实现及性能探讨
本文是开源测试工具JMeter扩展性开发教程第三期,讲解如何采用JMeter内置功能BeanShell实现动态生成测试数据,并探讨其与Java扩展JMeter的实现方式对比。
EMQ
145 0
JMeter 扩展开发:BeanShell 数据模拟实现及性能探讨
http://www.vxiaotou.com