JavaSampler编写

Jmeter进行性能测试的过程中,经常需要进行某些不同操作的,比如我经常用到的就是动态参数,此时可以通过新建一个java sampler。在sampler中进行处理。最终返回处理后的结果。

 

1、新建一个maven project。命令如下:

mvn archetype:create -DgroupId=com.alibaba.b2b.qa -DartifactId=jmeterSamplerExam

 

2、在eclipseimportmaven project

 

3、右击项目名,选择Properties->Java Build Path->Libraries->Add External JARs,添加jmeter安装目录下lib\ext中的ApacheJMeter_core.jarApacheJMeter_java.jar。如下:

JavaSampler编写_第1张图片
 

4、新建一个class集成自AbstractJavaSamplerClient(在添加完上面的两个jmeter包后)。命名为JmeterSamplerExam


默认只有一个runTest函数。

可添加的函数有setupTestgetDefaultParametersrunTestteardownTest。具体含义如下:

	
	int count;
	
	// 初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行,类似于LoadRunner中的init方法
	public void setupTest(JavaSamplerContext arg0) {
		count = 0;
	}
	
	// 设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中
	public Arguments getDefaultParameters() {
		Arguments arguments = new Arguments();
		arguments.addArgument("id", "10");
		arguments.addArgument("String", "initString");
		return arguments;
	}
	
	// 测试执行的循环体,根据线程数和循环次数的不同可执行多次,类似于LoadRunner中的Action方法
    public SampleResult runTest(JavaSamplerContext context) {
    	SampleResult results = new SampleResult();
    	results.sampleStart();						// 计时开始
    	for (int i = 0; i < 10000000; i++)
    		count++;
    	results.sampleEnd();						// 计时结束
    	
    	results.setDataEncoding("UTF-8");
    	results.setResponseCode(count + "");		// 结果返回
    	// results.setResponseCode(context.getParameter("id")); 	// 获取参数
    	results.setResponseMessage("responseMessage");	// 结果返回2
    	results.setSuccessful(true);                           // 可用于返回是否处理成功
    	
    	return results;
	 }

	// 结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行,类似于LoadRunner中的end方法
	public void teardownTest(JavaSamplerContext arg0) {
	}

 参考自:

http://www.51testing.com/html/64/n-218764.html

http://www.51testing.com/html/64/n-218764-2.html

 

 

5、为了调试JmeterSamplerExam,新建单元测试代码。右击类名,new->Other如下图:

JavaSampler编写_第2张图片
 在打开的select a wizard窗口中选择Java->Junit->Junit Test Case

在打开的New Junit Test Case窗口的Junit Test Case中,将source folder设置到test目录方便分类即可,其他设置可不变。如下图:


 Test Methods窗口中选择待测试函数。最终生成测试代码。在生成的空函数中加入以下代码,进行调试。
JavaSampler编写_第3张图片
 参考自:http://blog.csdn.net/shesunshine/archive/2010/08/20/5826798.aspx

 

6、在JmeterSamplerExamTest文件中按下F11,进行调试。


若报java.lang.reflect.InvocationTargetException异常。则在pom文件中加入jmeter依赖。代码如下:

    <dependency>
		<groupId>com.alibaba.external</groupId>
		<artifactId>apache.jmeter</artifactId>
		<version>2.3</version>
 	</dependency>

 

7、调试成功后,注释掉测试代码,右击项目名Easy Shell –> Open。打开cmd窗口。

mvn clean install命令编译打包即可。

 

8、将target目录下生成的jar拷贝至jmeterlib\ext目录下,重新启动jmeter

添加一个线程组后添加一个java请求,如下图:

JavaSampler编写_第4张图片
 箭头指向就是我们刚才自己写的类

红圈为程序中添加的参数名。

 

9、一般java sampler的结果可以通过程序中的setResponseCodesetResponseMessage返回。然后在jmeter脚本中通过正则表达式提取出来使用。

setResponseCode的内容可以通过勾选正则响应字段的响应代码提取

setResponseMessage的内容可以通过勾选正则响应字段的响应信息提取。

JavaSampler编写_第5张图片

 

 正则的更多内容见:

http://www.b2b-qa.com/phpwind/read.php?tid=33

 

 

若报

-source 1.3 中不支持泛型

(请使用 -source 5 或更高版本以启用泛型)

在pom.xml中添加

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>  
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
				<verbose>true</verbose>
				<fork>true</fork>
				<executable><!-- path-to-javac --></executable>
				<compilerVersion>1.3</compilerVersion>
				</configuration>
			</plugin>
		</plugins>
	</build>

 

 

 


                            

你可能感兴趣的:(maven,正则表达式,ext,JUnit,loadrunner)