接口测试

JMeter二次开发实现接口测试(二)

2019-02-19  本文已影响375人  君桦录

JMeter涉及到二次开发,原因总不绕开一些定制内容,比如接口测试存在复杂的上下文关联。“真·二次开发"的优势是基本没有约束地实现自定义内容,当然功力不够会写BUG,也会降低源代码的运行效率。本文主要说说“伪·二次开发”如何处理这类定制需求。

1.开源包jmeter-maven-plugin

通过查看源码,发现这个包的作用是拼接JMeter命令行并运行。这使得用户可以不关心调用细节,配置pom.xml文件的约定内容即可。

(具体配置参见:https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/wiki)

命令行生成逻辑

MAVEN命令触发JMeter的测试管理器,调度执行中会判断是否是生成报表、是否是配置加载和是否运行测试项来获得测试结果。

(注意:jmeter-maven-plugin版本与apache-jmeter有对应关系,官网描述为:The current release of this plugin is 2.8.0, it requires JDK 8 and uses Apache JMeter 5.0.)

2.Plugin项目开发

Plugin项目最后生成的结果是Apache JMeter软件下扩展LIB下的JAR包,作用是通过定制化的JAVA Request请求来处理上下请求间的复杂参数处理,如加解密、调用远程方法计算等。

(1)Java Request

JMeter支持多种协议的请求和响应,比如HTTP请求、FTP请求、JDBC请求、JMS协议、LDAP请求、SMTP协议、TCP协议等等。Java请求为其中的一项,操作灵活度高,可方便处理上下接口的参数。

Java请求定制化实现

(2)上下文参数特殊处理

@Override

public SampleResult runTest(JavaSamplerContext context) {

SampleResult results = new SampleResult();

// Default Success Result

results.setSuccessful(true);

// Start to Record Time

results.sampleStart();

try {

// Load Test Data From DAO

// Call API

// Save Data to DAO

} catch (Throwable e) {

e.printStackTrace();

results.setSuccessful(false);

// Log Exception to JMeter Result

results.setResponseData(toStringStackTrace(e), "utf8");

}

// End to Record Time

results.sampleEnd();

return results;

}

上述代码为具体用例TestCase实现的接口方法runTest(JavaSamplerContext context)。

其中,粗体“Load Test Data From DAO”与“Save Data to DAO”用来负责处理接口参数的调取和存储。调取的参数可以预设,可以结合依赖接口返回值进行加密等复杂操作。

(3)部署测试

Plugin项目完成后,需要放入指定Apache JMeter软件目录生效,比如下图所示的扩展LIB路径。

Plugin项目部署路径

在部署后,在JMeter的GUI界面中可以看到生效的结果。

比如,项目中实现了下述Java Request用例。

Java Request用例

那么在JMeter中,可以选择到指定Java Request用例。

JMeter可见定制用例

在项目真正部署到平台或打包EXE之前,可以通过JMeter图像界面配置和进行综合场景的接口测试。

本文介绍了JMeter Plugin项目的开发和测试流程,稍后会对部署项目进行介绍。

JMeter二次开发实现接口测试(一)

JMeter二次开发实现接口测试(三)

上一篇下一篇

猜你喜欢

热点阅读