前言
前段时间公司正好准备开始进行接口测试及接口监控方面的工作,为了使得接口测试及接口功能监控,所以我根据以往对Jmeter的使用经验,设计了一套最简单的Jmeter持续集成接口测试框架。虽然网上这块的资料也不少,但在做的过程中也遇到不少的坑,写作本文主要的目的是为了记录,但鉴于目前网上能找到的相关资料都写得比较杂乱,所以本着开源共享的精神,也一并分享于此,希望更多人能够受益,大家一起进步。
本文将由以下几个部分组成:
- 框架组成简介
- 框架选型特点
- 后期可能的扩展
框架组成简介
废话不多说,首先上一张框架架构示意图,简单明了,然后再来分别解释各个部分的组成和具体操作步骤。由于时间有限,来不及自己做图,直接引用一下网上现成的图片。:)
(图片引用自
)
由上图可知,该框架主要由三个部分组成:Jmeter、Jenkins和Git,但其实还有一个非常重要的角色:Maven,所以我们总共应该会用到四个工具。作为框架的设计者,我们除了要实现框架外,更应该知道每个部分的作用,接下来分别看看:
** Jmeter作为执行者的角色,每次负责执行具体的接口/性能测试脚本,并得到结果,生成报表。
** Maven和Git是作为管理者角色,前者主要负责项目的依赖管理,而后者主要负责项目的代码管理。
** Jenkins作为调度者,主要根据我们设置的build触发条件和事件调用jmeter进行测试
框架选型特点
市面上能达到我们目的的工具和框架很多,为什么要这样选型?这里简单地说明一下。我是开源爱好者,开源的好处自不必多说,所以一般只要有开源工具代替商业工具的,我都会选择开源工具实现。对于本框架来说,这四个工具都是开源免费,并且经过长时间的使用已经可谓非常成熟,所以更是不二选择。
首先,说说接口测试工具的选择。接口测试可选择的面也非常广,常见的有soupUI、httpclient等,甚至可以自己用jave或python写工具来实现。但选择Jmeter而不是这些接口工具的原因是,通常接口测试与性能测试是相通的,如果我们在写好接口测试脚本后,在后面的性能测试过程中能完全复用现成的这些测试脚本,那么就大大提高了我们的脚本复用率,减少了很多重复的工作量,也使得框架的扩展性大大增强。Jmeter则是非常好的一个选择,它不但可以完成接口测试,做性能测试也是非常专业的,各种插件应有尽有,实在不行还可以自己写plugin,真是爽得不要不要的。
其次,对于项目管理工具而言,很多人其实是用Ant在结合jmeter使用。Ant和Maven同为软件构建工具,但Maven的定位是软件项目管理和理解工具,所以Maven除了具备Ant的功能外,还增加了以下主要的功能:
1)使用Project Object Model来对软件项目管理;
2)内置了更多的隐式规则,使得构建文件更加简单;
3)内置依赖管理和Repository来实现依赖的管理和统一存储,不管项目更换到了任何主机上,都不用关心依赖文件,随时可以更新和配置;
4)内置了软件构建的生命周期;
另外,Ant本身build.xml文件的规则也是比较繁杂的,而基于Project Object Model的pom.xml文件则相对友好得多。
第三,对于基于git的代码管理,就不多了,自己建立一个github项目,随时随地都可以通过git终端拉取,非常方便。
第四,Jenkins对于持续集成的重要性就不言而喻了,并且方便测试代码与开发代码之间的集成和验证。
后期可能的扩展
- 在Jmeter脚本项目中根据公司业务补充更多的接口测试脚本
- 脚本复用,利用Jmeter的性能监控插件,监控接口性能
- 增加更多配置内容,使得本框架更加灵活可定制,增加可配置化模块(Jmeter Properties、邮件通知、测试报告展现等)
- 加入性能场景分析模型,直接扩展接口测试脚本为性能测试脚本,实现接口和业务压力测试