(二)ngrinder压力测试实践groovy脚本实战

  

前言

  

groovy脚本

  
  

ngrinder的groovy脚本是顺序结构的,用户可通过编写脚本执行过程中被预置的函数进行用户操作,完成各种复杂的测试工作。

     

ngrinder的进程与线程

  
  

ngrinder使用进程和线程来模拟多个用户,例如,如果您设置了如下的测试。只有一个代理将被激活,1个进程将被调用,然后这个进程将包括2个运行线程。每个线程的行为就像一个用户,因此,2个虚拟用户正在运行。如果将代理计数增加到2,则总共有4个虚拟用户(时)。

     

 ngrinder压力测试实践(二)groovy脚本实战

  
  

并发量=代理数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脚本实战