性能测试过程中遇到了一个问题。测试机选择了一台只有命令行界面的Linux服务器。执行测试用例不是很灵活。有时我需要更改一两个参数并添加一些日志,我需要重新打包和部署。虽然自动化构建比较方便,但是感觉绕了一大圈。经过一些简单的尝试,就完成了。两种方案,一种是单接口压测,以配置文件的形式完成每个请求的组装,然后通过调整并发参数执行不同的测试用例,支持多个请求一起压测;另一种是groovy脚本Form执行用例,需要在服务器上配置groovy环境,将打包好的jar包推送到groovylib目录下。方案一:从文中读取请求组件:首先从文中读取组件请求类:packagecom.fun.utils.request;importcom.fun.frame.SourceCode;importcom.fun.httpclient.FanLibrary;importcom。fun.profile.Constant;导入com.fun.utils.WriteRead;导入net.sf.json.JSONObject;导入org.apache.http.client.methods.HttpRequestBase;导入org.slf4j.Logger;导入org.slf4j。LoggerFactory;/***从文件中读取接口相关参数发送请求,实现接口请求的配置*
从当前路径获取后缀为.log的文件,并根据读取文件文件名Content
*/publicclassRequestFileextendsSourceCode{privatestaticLoggerlogger=LoggerFactory.getLogger(RequestFile.class);字符串网址;/***get对应get请求,post对应post请求表单参数,其他对应post请求json参数*/JSONObjectheaders;字符串请求类型;字符串名称;JSON对象信息;JSON对象参数;/***@paramname*/publicRequestFile(Stringname){this.name=name;获取信息();this.url=this.info.getString("url");requestType=this.info.getString("requestType");获取参数();headers=JSONObject.fromObject(this.info.getString("headers"));}/***获取当前目录下的配置文件,以数字开头,后缀为.log**@parami*/publicRequestFile(inti){this(i+Constant.EMPTY);}/***从配置文件中读取信息,形成json对象*/privatevoidgetInfo(){StringfilePath=Constant.WORK_SPACE+name;logger.info("配置文件地址:"+filePath);this.info=WriteRead.readTxtByJson(filePath);}/***获取请求参数*/privatevoidgetParams(){params=JSONObject.fromObject(info.getString("params"));}/***根据信息形成请求**@return*/publicHttpRequestBasegetRequest(){HttpRequestBaserequestBase=requestType.equalsIgnoreCase(Constant.REQUEST_TYPE_POST)?FanLibrary.getHttpPost(this.url,this.params):requestType.equalsIgnoreCase(Constant.REQUEST_TYPE_GET)?FanLibrary.getHttpGet(this.url,this.params):FanLibrary.getHttpPost(this.url,this.参数.toString());FanLibrary.addHeaders(requestBase,headers);FanLibrary.setHeaderKey();输出(FanLibrary.getHttpResponse(requestBase));返回请求库;}}然后通过main方法实现参数化:classPerformanceFromFileextendsSourceCode{publicstaticvoidmain(String[]args){MySqlTest.setFlag();defsize=args.size();List