Jmeter 简易使用(网上有很多图片,教程,此处 只是简单 描述一下):
Jmeter 软件使用,首先 创建一个 测试计划,在该 测试计划上右键 添加- ->Threads(Users) --> 线程组
然后在 线程组上 右键--> 添加-->Sampler-->Http 请求 。
在 Http 请求中配置 响应的信息,保存即可
然后需要创建响应的 结果树,创建步骤:(在 该 线程组上 右键,添加 -->监听器-->查看结果树 )
可根据个人需求,自行添加 监听器。
Jmeter JAVA 脚本 使用 01:
使用 个人自定义的java脚本进行 测试。
- 首先需要在 Jmeter 的 lib/ext 包中拷贝
ApacheJMeter_core.jar
ApacheJMeter_java.jar
这两个包 到 java项目中。
2.创建测试类入口 implements AbstractJavaSamplerClient ,重写其内部的 方法即可。
- 将该项目打成jar包,(若有 其他jar包的引用,需要 将这些jar 包 存放到 lib 文件夹下,否则 会出现 某些 class not found 的 异常)
- 此处需要注意的是,若 有网络请求发生的时候,在Jmeter 默认lib 中存在 commons-apache-httpclient 3.x 版本的 网络请求包,此处可以考虑替换掉该包 或者 使用该包 ,否则 请求网络时会出现异常。
- 导出 jar包后,可将 该 jar包放置到 lib/ext 包下。
- 在 Jmeter 中 创建 线程组后,创建一个 Java 请求 ,如果路径放置正确的话,会 出现 你设定的 测试类。创建好相应的 结果查看树之类 的监听器后,即可监听。
此处贴出 Java 请求 类以供参考:
1 import java.io.ByteArrayOutputStream; 2 import java.io.IOException; 3 import java.io.InputStream; 4 import java.io.UnsupportedEncodingException; 5 import java.net.URI; 6 import java.net.URISyntaxException; 7 import java.util.Arrays; 8 import java.util.HashMap; 9 import java.util.List; 10 11 import org.apache.commons.httpclient.HttpClient; 12 import org.apache.commons.httpclient.HttpConstants; 13 import org.apache.commons.httpclient.HttpException; 14 import org.apache.commons.httpclient.NameValuePair; 15 import org.apache.commons.httpclient.methods.PostMethod; 16 import org.apache.jmeter.config.Argument; 17 import org.apache.jmeter.config.Arguments; 18 import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; 19 import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; 20 import org.apache.jmeter.samplers.SampleResult; 21 22 import com.leo.utils.Constants; 23 import com.leo.utils.HttpBase; 24 25 @SuppressWarnings({ "deprecation", "unused" }) 26 public class TestLogin extends AbstractJavaSamplerClient { 27 28 public SampleResult runTest(JavaSamplerContext arg0) { 29 SampleResult result = new SampleResult(); 30 HashMap<String, Object> hashMap = new HashMap<>(); 31 hashMap.put("size", "10"); 32 result.sampleStart(); 33 result.setRequestHeaders(hashMap.toString()); 34 result.setDataEncoding("UTF-8"); 35 HttpClient client = new HttpClient(); 36 PostMethod postMethod = null; 37 postMethod = new HttpBase(true, false).createJson_hm( 38 Constants.HOME_GOODS_URL, hashMap); 39 String body = null; 40 postMethod.addRequestHeader("Content-Type", "application/json"); 41 for (int i = 0; i < postMethod.getParameters().length; i++) { 42 NameValuePair pair = postMethod.getParameters()[i]; 43 result.setRequestHeaders(pair.getName() + "::" + pair.getValue()); 44 } 45 try { 46 int statusCode = client.executeMethod(postMethod); 47 if (statusCode == 200) { 48 InputStream in = postMethod.getResponseBodyAsStream(); 49 body = ToString(in); 50 result.setSuccessful(true); 51 result.setResponseData(body); 52 } else { 53 result.setSuccessful(false); 54 result.sampleEnd(); 55 } 56 } catch (HttpException e) { 57 e.printStackTrace(); 58 } catch (IOException e) { 59 e.printStackTrace(); 60 } 61 result.setResponseMessage(body); 62 result.setSuccessful(true); 63 result.sampleEnd(); 64 return result; 65 } 66 67 private String ToString(InputStream in) throws IOException { 68 // TODO Auto-generated method stub 69 ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 70 byte[] data = new byte[128]; 71 int count = -1; 72 while ((count = in.read(data, 0, 128)) != -1) 73 outStream.write(data, 0, count); 74 75 data = null; 76 return new String(outStream.toByteArray()); 77 } 78 79 @Override 80 public void setupTest(JavaSamplerContext context) { 81 super.setupTest(context); 82 Arguments arguments= getDefaultParameters(); 83 84 85 } 86 87 @Override 88 public void teardownTest(JavaSamplerContext context) { 89 // TODO Auto-generated method stub 90 super.teardownTest(context); 91 92 } 93 }
其中 的SampleResult 可用来打印显示 信息: 譬如:
所以 需要 对 SampleResult 中 的 信息进行设定。
时间: 2024-08-10 15:00:27