基于Jmeter和Testlink的自动化测试框架研究与实施
一、概述
本文档用于描述基于jenkins平台调用Jmeter执行接口测试用例,并把产出的结果解析,反写至testlink中对应用例的“一键自动化测试”实现过程。
理想化应用场景:当接到回归测试任务时,测试人员可通过jenkins平台,选取要回归的一个或多个被测模块,点击“立即执行”,通过该框架即可高效,自动的完成对应的测试用例执行,并在testlink中体现该次测试用例的结果等多维度的测试执行情况及报告;同时还提供Jmeter内置的接口测试报告。所有报告类的产出结果,均可在jenkins中配置自动发送邮件至相关负责人。
1.1Jmeter
扮演角色:接口测试运行者
编写接口级的测试用例,形成对应模块的jmx可执行文件。运行后生成对应的测试结果报告。
1.2TestLink
扮演角色:测试(用例)管理者
用于编写录入测试用例,建立测试计划、版本,管理记录测试用例执行过程及结果。
1.3Jenkins
扮演角色:测试任务调度者
测试任务执行的发起点,构建测试执行的运行环境;串联、集成相关软件(插件)之间的数据传递,起到顺序调用,模块化拼接的作用;并且提供了很好的可视化管理界面,及分布式执行的应用模块
1.4Other
本框架还用到了相关插件
Svn:用于管理维护JMX,build.xml 自有脚本
Ant Plugin:通过build.xml配置,构造JMETER运行环境,执行Jmeter脚本文件,并生 成XML格式测试报告
testlink_results:基于python的testlink API编写的脚本应用,作用是解析jmeter生成的 XML文件,把相关结果数据传入testlink对应的用例中
二、框架概览
三、工作流概览
四、jenkins集成testlink、jmeter
本章节只从jenkins新建任务的视角出发,来介绍整个环境的搭建和配置,具体软件的安装请点击相关“参考链接”查看
4.1、新建任务
点击新建任务 – 输入一个任务名 – 创建一个自由风格的软件项目
4.2、任务配置
4.2.1、general
A 处,没什么讲头,创建好就是这样了
B 处,功能就是设置操作的历史记录要保留多少天
此处其实提供了定义变量的功能,变量的实际值可以在运行任务的时候填写,变量的作用域即当前任务的所有功能
4.2.2、源码管理
可以实现 在这个任务中,我要把我在XXX上的东西下载下来的功能
此处我们用SVN的方式,管理我们的测试脚本(JMX文件),build.xml等
4.2.3、构建触发器
可以实现 如果到了xxx的时候,我就执行我的任务的功能
本文暂时未用到
4.2.4、构建环境
可以实现 当我要执行任务之前,我要把XXX环境,初始化成XXX的样子
本文暂时未用到
4.2.5、构建
可以实现 我要配置XXX插件来做XXX事情
此块是jenkins配置的重点,一般要用到的插件,都是在这来配置的
此处我们调用了 Testlink 的插件来与之建立链接,并获取相关用例信息
用了ant插件 来构建jmeter的运行环境
用了tap插件来接收测试执行结果
用了执行机器中的cmd命令行,启动testlink_results.exe用来把XML结果解析,并反写至testlink中
4.2.6、构建后操作
可以实现 当任务执行结束后,我要XXX
此处我们将生成的tap结果进行解析
4.3、执行任务
由于我们在配置中定义了一定的变量,可以使得整个任务更加的灵活!这些变量的值就是在此时来配置的,当然变量的含义该怎么填已经注释的很明确了
填好之后点击开始构建,就可以泡杯茶等结果了^ ^
当然,也不排除有时候会不顺利的情况,当任务执行失败,或异常的时候,我们可以运用jenkins的日志功能,去追溯查看下,具体的失败原因,从而寻找解决的办法
4.4、链接testlink
细心的小伙伴肯定发现了,在之前的配置中我们完全没有填写testlink的账户密码。那他们是怎么取得链接的呢?其实用的是testlink提供的Developer Key,jenkins中的具体设置如下
首页 – 系统管理 – 系统设置
往下滚动几下就会发现如下设置啦
五、未来展望及拓展
尝试自动部署被测应用的环境(数据预埋)
尝试对被测应用的后台日志做监控
尝试根据被测应用的接口定义规范,来自动生成用例
尝试通过Python来对testlink做更多的操作
尝试多个任务在多台机子上同时进行,形成分布式测试的形式
……