最近一直在用Jmeter做接口测试的工作,这款工具同时具备GUI和non-GUI的功能,也就是既可以方便测试人员用GUI进行接口测试用例的编写和分析,也能很容易的使用non-GUI的方式部署到持续集成环境中去,可谓一举两得。
要做接口测试,输出结果的断言是必不可少的。Jmeter提供了很多的断言方式,如下图:
这些断言可以在我们编写case时很有用,但是并不是能够很方便的满足我们对于测试的要求,后期维护起来也有些麻烦。在测试用例的开发中,我总结了几点对于我们接口测试的需求(还在丰满中):
- 可检验一个期待的完整Json结果数据是否完全一致,包括所有的key和value
- 可检验一个期待的完整Json结果数据的key是否完全一致
- 在1的基础上,可排除规定的key的检验,如serverTime能字段,只检查key是否存在
目前,在Jmeter里没有能满足以上我们需求的断言,所以,要是想实现上面的需求,我们需要构造大量的断言来实现接口测试,性价比有些得不偿失。
我们该怎么做才能优化这个问题呢?
答案就是我们自己为Jmeter做插件!
既然有了需求,我们只要在Jmeter的基础上去加我们实现需求的功能不就行了。但是问题没有那么简单,我在网上搜了一下,没有找到相关技能的文章可以借鉴。怎么办?突然想到Jmeter本身是可以装载插件的,如下图:
这个是Jmeter插件下载的官网,并且最大的一点是这些插件是开源的!!!所以,我们需要做的不就是下载插件的源码,然后仿照插件的设计去完成我们自己的实现吗!
(…此处实现过程省略很多字,在研发过程中也遇到了各种坑,甚至发现了官网插件源码还有一些bug,对于了解JavaSwing界面设计的童鞋会很好上手)
最后,在完成了插件开发,并且将生成的jar放到了Jmeter的lib里面后,我们成功的看到了自己开发的插件 - jp@gc - JSON Content Assertion:
打开后界面是这样的:
里面的功能就是之前需求里面提到的实现,而且用了中文,更加方面测试人员的使用:)