基于Jenkins + Zentao+ JMeter实现自动化测试集成de起步阶段。
1. 前言
千呼万唤之下,公司内部的自动化测试流程终于蹒跚起步,可惜放眼整个公司,从理论体系到实际落地经验,完全没有现成的果子可以摘。
想要让自动化测试真正在公司内部落地,我们需要从零开始摸索。
本文尝试建立一个起步的自动化测试流程,实现Jmeter脚本自动执行,测试执行结果结构化存储,测试结果消息通知,需求-代码-测试关联的无人工参与,最大化地降低研发人员和测试人员的心智负担,提升协同效率。
2. 流程介绍
相关流程图:流程图 -> CI - 基于JMeter自动化测试 。
流程顺序(测试人员视角)
-
测试人员预先以需求为粒度,编写相应的JMeter测试脚本;并按照“产品-模块-需求”的禅道层级结构来组织创建相应的文件目录结构来存放相应的JMeter测试脚本。

-
测试人员从Zentao端,以禅道中的测试套件(对应禅道"产品"概念下的一个需求)为粒度,点击提供的二次开发按钮"执行该测试套件",发起指令调用Jenkins相应的任务。

-
Jenkins通过调用JMeter执行用户所选择的测试套件,并将生成的测试报告按照约定的目录结构进行存储。

-
Jenkins在执行完JMeter测试用例之后,需要收集每个测试用例的执行情况,生成自定义格式的汇总信息报表。

-
Jenkins将上一步生成的报表对应的远程访问链接,通过IM工具,QQ邮箱实时推动给在Zentao端发起调用指令的用户。



-
Jenkins还需要将报表对应的远程访问链接,反写回Zentao中对应测试套件的操作日志下,形成最终的闭环。

3. 环境准备
按照以上流程图,涉及到的相关组件有:
- Jenkins安装 - 略。作为持续流水线执行的推动者。(被部署在一台Windows Server2012服务器上)
- JMeter安装 - 略。执行实际的自动化测试。(与Jenkins一起,被部署在一台Windows Server2012服务器上)
- Tomcat安装 - 略。用作文件服务器。(与Jenkins一起,被部署在一台Windows Server2012服务器上)
- Zentao安装 - 略。用作产品生命周期管理。(部署在单独的服务器上)
- KIM即时消息通知,QQ邮箱等。
4. Jenkins端
作为流程实现的核心点之一,Jenkins的主要配置项是通过pipeline脚本来体现的。
properties([
parameters([
string(name: 'SCRIPTS_WILL_EXECUTE', defaultValue:"XXXXX", description: '将要被执行的脚本. 如果是多个脚本, 请使用 , 进行分隔'),
string(name: 'TEST_SUITE_ID', defaultValue:"555555", description: 'testsuite id'),
string(name: 'TEST_SUITE_NAME', defaultValue:"XXXXXXX", description: 'testsuite name'),
string(name: 'PRODUCT_NAME', defaultValue:"XXXXZ", description: '产品名称'),
string(name: 'NOTICED_USER', defaultValue:"XXZ", description: 'Job执行完毕之后的被通知对象'),
])
])
def zNotifyWin(String RECEIVERS, String MSG_TITLE ,String MSG_CONTENT, String EXECUTE_RESULT = "SUCCESS"){
["powershell.exe","/c","E:/_devops/notifyByIM.ps1 ${RECEIVERS} ${MSG_TITLE} ${MSG_CONTENT} ${EXECUTE_RESULT}"].execute()
}
pipeline {
agent any
environment{
CURRENT_TIME = new Date().format("yyyyMMddHHmmss")
CURRENT_TIME_READABLE = new Date().format("yyyy-MM-dd HH:mm:ss")
EXECUTED_SCRIPT_BASE_PATH = "F:/02server"
// 为了最大化的兼容现有流程和人员习惯,我们决定以中文来组织测试脚本的存放目录结构, 于是这里我们需要将zentao传递来的参数进行url解码(相应的, zentao那边会对参数进行url编码之后进再行传递)
SCRIPTS_WILL_EXECUTE_DECODED = URLDecoder.decode("${SCRIPTS_WILL_EXECUTE}","UTF-8")
TEST_SUITE_NAME_DECODED = URLDecoder.decode("${TEST_SUITE_NAME}",

本文详细介绍了如何利用Jenkins、Zentao和JMeter搭建自动化测试流程,包括测试脚本编写、Jenkins任务配置、Zentao二次开发以及结果通知。流程实现了测试用例的自动化执行、结果结构化存储和通知,旨在降低研发与测试人员的工作负担,提升协同效率。
最低0.47元/天 解锁文章
380





