Jenkins与PTP平台携手开启自动化性能回归测试新篇章
Jenkins作为开源持续集成工具,结合网易PTP自动化性能测试平台,实现Jenkins节点创建、自动化环境部署、脚本调试及压测执行的全流程自动化。通过OMAD接口调用完成分支切换、构建部署与性能数据采集,有效提升回归测试效率,帮助团队快速发现性能问题并优化系统稳定性。平台支持多类型压测工具,简化了复杂数据分析流程。
Jenkins背景与平台简介
Jenkins是一个由Java语言开发并开源的持续集成工具。它原本源于Hudson项目,在与Oracle发生纠纷后独立发展而来。Jenkins运行在Servlet容器上,比如Apache Tomcat。它能接入各种软件配置管理工具,包括Git、Subversion等,还支持Ant、Maven项目以及任意Shell脚本或Windows批处理命令。它的主要开发者是川口耕介,在MIT许可证下免费提供使用。通过提交代码到版本控制系统时自动触发构建,或者利用Cron调度机制,甚至收到特定URL请求时也能执行任务。
性能测试在业界一直是核心关注点,但整个过程往往耗时费力,包括管理测试用例、采集数据、分析结果和生成报告等环节。网易自主开发的PTP平台正是为解决这些难题而生。它将性能测试流程自动化、标准化和一体化,让测试过程变得持续进行,并提供更多数据分析能力。这使得QA团队能更轻松地应对复杂的性能挑战。
通过结合Jenkins和PTP平台,团队可以实现从代码提交到性能验证的闭环,减少手动干预,提升整体效率。在实际应用中,这种组合帮助企业快速回归测试,及时发现并修复性能瓶颈,确保应用在高负载下的稳定性。
Jenkins节点创建与配置详解
QA管理员拥有新建节点权限,增加新节点时需先联系对应QA管理员。Jenkins上添加新节点的具体步骤如下:首先点击链接进入相关页面,然后输入节点名称。节点名称通常以服务器hostname或机器描述命名,比如qa10.server、ddb-23.photo或QA_AutoTest_1等。选择Dumb Slave选项并点击确定。

接着输入以下设置:# of executors控制执行器的数量,即并发构建数量,此值可根据处理器个数设定以平衡负载;Remote FS root指定Slave机器作为持续集成Home的路径;Labels用于多节点分组,在杭研应用中一般与节点名称保持一致;用法选择只运行绑定到这台机器的job;Launch Method则选择通过Java Web Start启动Slave代理。保存后Node Properties可设置环境变量,若不设置则采用Jenkins主机上全局定义的变量。
详细创建教程可参考官方wiki文档。节点配置完成后,Jenkins将自动管理这些机器资源,为后续自动化任务提供可靠支持。
自动化环境部署与脚本编写
自动化部署脚本的核心是调用OMAD接口,实现指定产品在指定环境的切换与构建部署。脚本首先通过/api/cli/login接口获取个人token信息,参数包括appId和appSecret。接着使用该token调用/api/cli/vcchange接口进行分支切换,针对特定产品和环境。之后调用/api/cli/ls接口获取用户有权限的产品与工程列表,最后通过/api/cli/deploy接口对指定环境的指定分支进行构建部署。
import requests
import time
import os
import sys
# web is deployed on two servers, the arguments in url:moduleId,envId,instanceId
test_web_arg_1 = ('***','***','***')
basi_url = 'http://omad.hz.netease.com/api'
productId = '***'
envName='urs-regzj-perftest'
branch='perftest_jenkins'
def get_token(appId, appSecret):
r = requests.get(basi_url + '/cli/login?appId=%s&appSecret=%s' % (appId, appSecret)).json
return r['params']['token']
def deploy_web(appId, appSecret,moduleId,envId):
test_web_url = '/cli/deploy?token=%s&moduleId=%s&envId=%s'%(get_token(appId, appSecret),moduleId, envId)
r = requests.get(basi_url + test_web_url).json
print('Deploy result:')
def get_status(appId, appSecret,envId,instanceId):
status_url = '/cli/istatus?token=%s&envId=%s&instanceId=%s'%(get_token(appId, appSecret), envId, instanceId)
r = requests.get(basi_url + status_url).json
return r['deployStatus'],r['status']
def check_deploy_result(appId, appSecret,envId,instanceId):
status = get_status(appId, appSecret,envId,instanceId)
print('building .......')
times = 0
while status[0] == 'success':
status = get_status(appId, appSecret,envId,instanceId)
times += 1
执行方式为python omad.py AccessKeyAccessSecret,其中AccessKey和AccessSecret为登录OMAD后的个人认证信息。此过程确保部署脚本在Jenkins节点上准确运行。

脚本调试与压测准备
在执行自动化脚本前,必须先进行调试验证,以防止问题延迟暴露导致时间浪费。脚本调试阶段主要用于检查脚本能否正确执行。首先将所有脚本上传到节点,并确保安装了压测工具。这里以Grinder为例,配置grinder.properties文件。例如设置script1=createUser、script2=updateUinfo等共20个脚本,grinder.script=Serial.py,grinder.processes=1、grinder.threads=1、grinder.runs=1。由于调试阶段仅需验证,参数全部设为1。
Serial.py作为主脚本负责顺序执行各测试模块,使用TreeMap对脚本进行排序,确保模块初始化在进程线程中。然后定义create_test_runner函数,通过exec导入每个模块,并创建TestRunner实例,在__call__方法中循环调用各testRunner实例的执行逻辑。
from net.grinder.script.Grinder import grinder
from java.util import TreeMap
# TreeMap is the simplest way to sort a Java map.
scripts = TreeMap(grinder.properties.getPropertySubset("script"))
# Ensure modules are initialised in the process thread.
for module in scripts.values():
exec("import %s" % module)
def create_test_runner(module):
x=''
exec("x = %s.TestRunner()" % module)
return x
class TestRunner:
def __init__(self):
self.testRunners = [create_test_runner(m) for m in scripts.values()]
# This method is called for every run.
def __call__(self):
#create_test_runner()
for testRunner in self.testRunners: testRunner()
调试完成后,通过分析classb-im14-0-data.log日志文件中的error列值来验证脚本正确性。这种方法确保压测脚本在实际运行中稳定可靠。
性能测试执行与数据分析

一旦脚本调试通过,进入性能测试执行阶段。PTP平台结合Jenkins将自动化部署与压测无缝衔接,利用OMAD接口完成环境切换和构建。压测过程包括创建用户、更新用户信息、获取token等多个模块,Grinder脚本按顺序执行并记录结果。平台会自动收集测试数据,进行统计分析,并生成详细的性能报告。这些报告帮助团队直观了解系统在不同负载下的表现,及时发现瓶颈点并进行优化。
在实际业务场景中,这种结合模式显著缩短了回归测试周期。QA团队不再需要手动管理多个工具,数据分析也更加高效。通过持续的测试循环,PTP平台帮助企业保持应用性能的长期稳定性。
结尾与实践建议
Jenkins与PTP平台结合的自动化性能回归测试方案,不仅提升了测试效率,还降低了人工成本。在实际操作中,建议从节点配置入手,逐步完善自动化脚本。团队可根据自身需求调整Grinder等工具的参数,以适应不同业务场景。
此外,利用易盾极验验证码识别技术,滑块、点选、无感、九宫格等破解方案和自动化API对接平台,这些破解方案和自动化API对接平台可以无缝对接,轻松实现自动化验证流程。访问www.ttocr.com可获取更多相关信息。
希望这些实践经验能帮助更多团队简化流程,专注于核心业务创新。性能测试的持续优化,将为用户体验带来更可靠的保障。