摘 要
目前基于Jmeter的接口自动化测试框架,大多只实现脚本维护和自动调度,无法与Testlink进行互通,实现测试方案与自动化实施流程连接,本文基于Testlink、Jmeter、Jenkins实现:通过Testlink统一维护接口自动化测试用例,Jmeter编写和运行测试脚本,Jenkins实现统一调度,并返回执行结果和测试报告到Testlink。从而实现整个接口自动化测试框架,提高测试效率,降低后续维护成本。
1、引言为了实现项目快速开发-测试-交付,测试需要在项目开发过程介入,进行接口级别测试,并输出自动化测试脚本,便于后续集成测试使用自动化测试保证每次BUG修复,没有引发新的问题,故需要研究一种自动化测试框架,满足目前项目测试的需求
2、目标需求梳理如下:
1、 TestLink统一管理测试用例:因功能测试用例一直在Testlink上维护。
2、 接口测试工具满足需求的同时,易上手掌握
3、 测试脚本统一维护,如:SVN
4、 脚本运行时,需要结合Testlink测试计划分配用例,将自动化运行结果返回到Testlink。
5、 运行失败的接口,要自动提交到BUG系统
6、 测试结束后,生成测试报告,统计自动化测试总体情况,并邮件发送给项目相关人员。
7、 测试服务器的IP和端口变化后,在调度测试时统一指定测试IP和端口,避免测试脚本的重复修改
8、 测试框架可扩展到其他项目。
基于以上需求,梳理大致的目标图如下:
期望框架达到的效果:
若测试用例已经导入TestLink,且脚本已经设计完成并上传到SVN,则在web管理平台构建项目后,即可自动完成所有测试,并且项目可支持定时循环测试。
测试结束后,可自动提交BUG到BUG系统,测试人员只需对最后的结果进行确认即可。
图中中间部分:云计算管理平台接口自动化测试平台,则是本文应该要实现并达到的效果。
3、整体框架以上是整体框架的思路介绍:
TestLink负责接口自动化用例维护Jmeter则负责脚本编写和运行,统一通过SVN进行维护另外邮件收发服务器则根据内部情况灵活选择整个过程统一由Jenkins 进行调度管理;BUG系统负责BUG管理,Jmeter脚本执行时,若失败,自动提交BUG到Build下。 4、技术关键1、Testlink仅支持三种格式的结果返回:Junit、TestNG、TAP ,Jmeter生成报告无法直接通过Jenkins传递给Testlink,并正确识别。
2、TAP格式文件与Testlink中对应用例关联是通过.tap文件关联的,即:一个用例就需要一个TAP文件,但是测试结束后需要输出整体测试结果,必须要求Jmeter测试结束后,输出一个测试结果文档,如何将测试结果转化为TAP文件,且实现与用例一一对应。
5、实现思路本章给出第4章提到键技术点的解决,在说明前,需要以下前提准备:
1、 规范化Jmeter脚本中的规范要求:
1) HTTP Sample命名规范为:
2) 如果1条用例对应有多个HTTP Sample,需要使用事务处理器,这时事务处理器名称必须符合1)的命名规范,事务控制器内的HTTP Sample可以任意命名,但建议按照:【用例名称:可修改内容】形式进行命名
3)如果1条用例对应1个HTTP Sample,不强制使用事务处理器
4) 每一个HTTP Sample最好都要有断言,判断是否执行成功,若没有断言,无法判断是否符合预期,则转换脚本默认为成功。
5)事务控制器内:最好不要再套用事务控制器,若需要建议使用简单控制器或者一次性控制器等
2、 TestLink上增加自定义字段,用于标记用例与脚本的对应关系,如:AutoTest,AutoTest字段内容则为:上述中的用例编号,用以将Testlink测试用例与脚本测试结果关联对应
3、 TestLink上自动化的用例执行方式设置为:自动的
4、上述括号和冒号为英文字符,且命名中不要出现空格,否则会出现异常
5.1、脚本批量调用实现思路
Jmeter作为测试工具,仅输出测试脚本,若要形成框架持续集成,需要进行批量调用,并且可以统一配置脚本的全局参数,如:接口服务器地址、端口、默认登录用户名和密码等;
Ant是Apache软件基金会JAKARTA目录中的一个子项目,操作简单。Ant是由一个内置任务和可选任务组成的。Ant运行时需要一个XML文件(构建文件)。Ant通过调用target树,就可以执行各种task。每个task实现了特定接口对象。由于Ant构建文件时XML格式的文件,所以和容易维护和书写,而且结构很清晰。
故直接使用Ant+Jmeter来实现接口测试脚本的批量调用,目前需要解决的问题就是,Jmeter脚本运行时,从Ant获取HTTP请求默认值中的服务器IP、端口信息,以便后续服务器地址变更后,不会影响接口测试脚本,减少维护的工作量。
主要实现见下图:
按照图中的流程配置,每次需要自动运行时,在Jenkins上配置TEST_URL的参数后,接口测试则使用该访问地址,进行测试,若后续服务器的IP修改后,只需要在Jenkins上配置即可快速完成测试环境的切换。
5.2、测试结果回传思路
以下则是XML2TAP.sh的设计思路,根据以下思路输出sh脚本
5.2、具体实施过程
具体的实施过程,如下述图所示:
1. Jenkins每次执行时,首先从SVN指定目录,检查是否有用例更新,若有,则下载所有更新测试脚本到工程目录
2. 通过API key与Testlink建立关联,并获取工程配置的测试项目对应测试计划下的自动化测试用例信息。
3. 调用Ant Plugin插件,通过build.xml配置,执行所有的Jmeter脚本文件,并生成XML格式测试报告:1份。
4、Jmeter脚本执行期间,若有失败的接口用例,自动提交BUG到BUG系统
5. 对XML测试报告进行二次处理,调用XML2HTML.xsl样式表,生成HTML格式测试报告,用于邮件发送完整的测试报告和jenkins上发布测试结果。
6. 对XML测试报告进行转换,调用XML2TAP.sh脚本,对XML中每一个Sample结果进行处理,生成Testlink可识别的TAP文件,以用例为单位,生成多个tap文件。
7. 将tap文件与第二步中获取的自动化用例信息对应,返回测试结果及测试报告到Testlink。
8. 将第五步生成的测试报告邮件发送给相关人员。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!