LoadRunner做基于http协议的接口测试

来源:互联网 发布:一个矩阵的协方差矩阵 编辑:程序博客网 时间:2024/05/17 08:57

用LoadRunner实现http协议数据的发送,支持Java的语法,需要32位1.6版本的JDK才能访问,否则会出现一些莫名的错误,本人已经经历过

依赖包:

httpclient-4.3.3.jar、httpcore-4.3.2.jar、commons-logging-1.1.1.jar

1.需要在LoadRunner中进行配置JDK的运行环境及包的需要的包导入


2.编写需要测试的接口的java代码:

import java.io.IOException;import org.apache.http.HttpEntity;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.config.CookieSpecs;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.util.EntityUtils;import lrapi.lr;public class Actions {    CloseableHttpClient httpclient=null;    CloseableHttpResponse response=null;public int init() throws Throwable {return 0;}public int action() throws Throwable {        String host="192.168.1.41";    int port=20220;RequestConfig globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.BROWSER_COMPATIBILITY).setCookieSpec(CookieSpecs.BEST_MATCH).setExpectContinueEnabled(true).build();httpclient = HttpClients.custom().setDefaultRequestConfig(globalConfig).build();lr.start_transaction("schedule"); String url="http://211.144.118.118:29008/solr/NewHouseProject/select?q=*:*&wt=json&indent=true";String response=Http_Get(httpclient,url);System.out.println("response"+response);if(response.contains("status\":0")){    lr.end_transaction("schedule", lr.PASS);}else{    lr.end_transaction("schedule",lr.FAIL);}lr.think_time(1);return 0;}// end of actionpublic int end() throws Throwable {return 0;}public  String Http_Get(CloseableHttpClient client,String url){try {//创建 httpGet 的实例HttpGet httpGet = new HttpGet(url);//设置报文头以及格式httpGet.setHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36");httpGet.setHeader("Accept", "*/*");httpGet.setHeader("Accept-Language", "zh-CN");httpGet.setHeader("Accept-Encoding", "gzip,utf-8,deflate");//执行get请求 ,返回Response,包含响应头和响度应体response=client.execute(httpGet);HttpEntity entity = response.getEntity(); String ss = EntityUtils.toString(entity,"utf-8");return ss;} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{    try {    if(response != null){response.close();    }    if(httpclient != null){httpclient.close();    }} catch (IOException e) {    e.printStackTrace();    }}return null;}}
执行后的结果:

如果需要测试单个接口的性能时候,可以把服务器的返回及日志输出及System.out.println进行关闭,具体对性能进行压测的时候,单个接口就是一个场景,场景的直接到达最大的人数,然后持续5分钟进行查看运行的指标:(服务端:CPU/内存、java资源监控(jdk自带的工具)、ResponseTime、Transaction per second)


0 0
原创粉丝点击