前言
groovy脚本
ngrinder的groovy脚本是顺序结构的,用户可通过编写脚本执行过程中被预置的函数进行用户操作,完成各种复杂的测试工作。
引用>ngrinder的进程与线程
ngrinder使用进程和线程来模拟多个用户,例如,如果您设置了如下的测试。只有一个代理将被激活,1个进程将被调用,然后这个进程将包括2个运行线程。每个线程的行为就像一个用户,因此,2个虚拟用户正在运行。如果将代理计数增加到2,则总共有4个虚拟用户(时)。
引用>
并发量=代理数x进程数x线程数
如果在Vuser每剂中输入总的虚拟用户数时,nGrinder根据内部算法,会进行适当的计算,如输入100年,当代理数为1时,会变成99,该算法可以通过process_and_thread_policy。js这个文件来修改。
若果剂的内存4 g以下的话,建议进程不要超过10个,线程数不要超过200 .<李>官方最新测试:4 g内存的代理最多可以模拟4000年虚拟用户。李>
引用>
预置函数
依据上面对代理,进程与线程的解释,就比较好理解ngrinder groovy脚本的
引用> 注解 描述 执行次数 用例 @BeforeProcess 在进程被调用之前执行的函数 每进程一次 加载被线程共享的资源文件,定义公共变量等 @AfterProcess 在进程被终止之前执行该函数 每进程一次 关闭资源文件 @BeforeThread 在每个线程被调用之前执行的函数 每线程一次 登录目标系统,建立线程内的一些值,例如,饼干处理 @AfterThread 在每个线程被终止之前执行的函数 每线程一次 退出系统 @Before 每个被@Test注解的方法被执行前应执行的函数 同虚拟用户数 每个被@Test注解的方法的共享逻辑,变量设置 @After 每个被@Test注解的方法被执行后应执行的函数 同虚拟用户数 很少使用 @Test 主测试行为,将被被执行多次 同虚拟用户数 测试体
结构了。
控制器将脚本分发给代理,每个代理按照算法启动对应数量的进程,每个进程里在启动对应数量的线程,执行测试任务。
groovy脚本实例
压测实例
<代码>/* 这个脚本是对需要验签接口的压测 */进口静态net.grinder.script.Grinder.grinder 静态org.junit.Assert。*进口 静态org.hamcrest.Matchers。*进口 进口net.grinder.plugin.http.HTTPRequest 进口net.grinder.plugin.http.HTTPPluginControl 进口net.grinder.script.GTest 进口net.grinder.script.Grinder 进口net.grinder.scriptengine.groovy.junit.GrinderRunner 进口net.grinder.scriptengine.groovy.junit.annotation.BeforeProcess 进口net.grinder.scriptengine.groovy.junit.annotation.BeforeThread//静态net.grinder.util.GrinderUtils进口。*//可以使用这个如果你使用后nGrinder 3.2.3 进口org.junit.Before 进口org.junit.BeforeClass 进口org.junit.Test 进口org.junit.runner.RunWith 进口java.util.Date 导入并不知道 进口java.util.ArrayList 进口org.slf4j.LoggerFactory; 进口ch.qos.logback.classic.Level; 进口HTTPClient.Cookie 进口HTTPClient.CookieModule 进口HTTPClient.HTTPResponse 进口HTTPClient.NVPair 进口java.text.SimpleDateFormat; 进口org.apache.commons.codec.binary.Base64; 进口java.security.spec.PKCS8EncodedKeySpec; 进口java.security.KeyFactory; 进口java.security.PrivateKey; 进口java.security.Signature; 进口java.util.Arrays; 进口org.apache.commons.lang.StringUtils; 进口java.lang.StringBuilder 进口java.io.UnsupportedEncodingException;/* * *一个简单的例子使用HTTP插件显示的检索 *通过HTTP单页。 * *此脚本是由ngrinder自动生成的。 * * @author管理 */@RunWith (GrinderRunner) 类TestRunner { 公共静态gt测试 公共静态HTTPRequest请求//定义全局变量 公共静态NVPair [] params=[] 公共静态曲奇饼干[]=[] 公共静态字符串private_key 公共静态String[]=[]内容 @BeforeProcess 公共静态孔隙beforeProcess () { HTTPPluginControl.getConnectionDefaults ()。超时=6000 测试=新gt (Test1) 请求=new HTTPRequest ()//获取加密私钥内容 内容=新文件(“。/资源/rsa_private_key_pkcs8.pem”)作为String [] StringBuilder private_str=new StringBuilder (); for (int i=0; i(二)ngrinder压力测试实践groovy脚本实战