最近一直在用Jmeter做接口测试的工作,这款工具同时具备GUI和non-GUI的功能,也就是既可以方便测试人员用GUI进行接口测试用例的编写和分析,也能很容易的使用non-GUI的方式部署到持续集成环境中去,可谓一举两得。

要做接口测试,输出结果的断言是必不可少的。Jmeter提供了很多的断言方式,如下图:

jmeter的插件Available Plugins里没有redis_测试人员

这些断言可以在我们编写case时很有用,但是并不是能够很方便的满足我们对于测试的要求,后期维护起来也有些麻烦。在测试用例的开发中,我总结了几点对于我们接口测试的需求(还在丰满中):

  1. 可检验一个期待的完整Json结果数据是否完全一致,包括所有的key和value
  2. 可检验一个期待的完整Json结果数据的key是否完全一致
  3. 在1的基础上,可排除规定的key的检验,如serverTime能字段,只检查key是否存在

目前,在Jmeter里没有能满足以上我们需求的断言,所以,要是想实现上面的需求,我们需要构造大量的断言来实现接口测试,性价比有些得不偿失。

我们该怎么做才能优化这个问题呢?

答案就是我们自己做适合于我们测试用的Jmeter的插件。

既然有了需求,我们只要在Jmeter的基础上去加我们实现需求的功能不就行了。但是问题没有那么简单,我在网上搜了一下,没有找到相关技能的文章可以借鉴。我去… 怎么办?突然想到Jmeter本身是可以装载插件的,如下图:

jmeter的插件Available Plugins里没有redis_官网_02

这个是Jmeter插件下载的官网,并且最大的一点是这些插件是开源的!!!所以,我们需要做的不就是下载插件的源码,然后仿照插件的设计去完成我们自己的实现吗!

此处实现过程省略很多字,在研发过程中也遇到了各种坑,甚至发现了官网插件源码还有一些bug,对于了解JavaSwing界面设计的童鞋会很好上手

最后,在完成了插件开发,并且将生成的jar放到了Jmeter的lib里面后,我们成功的看到了自己开发的插件 - jp@gc - JSON Content Assertion:

jmeter的插件Available Plugins里没有redis_接口测试_03

打开后界面是这样的:

jmeter的插件Available Plugins里没有redis_测试人员_04

里面的功能就是之前需求里面提到的实现,而且用了中文,更加方面测试人员的使用。以后我们还会有各种各样我们为自己产品定制的需求,都可以采用这种方式来扩展。

杏树林QA 唐雪