tencent cloud

腾讯云可观测平台

动态与公告
产品动态
产品简介
产品概述
产品优势
基本功能
基本概念
应用场景
使用限制
购买指南
云产品监控
应用性能监控
终端性能监控
前端性能监控
云拨测
Prometheus 监控服务
Grafana 服务
事件总线
云压测
快速入门
监控概览
实例分组
云产品监控
应用性能监控
云拨测
云压测
Prometheus 监控服务
Grafana 服务
创建 Dashboard
事件总线
告警服务
云产品监控
云产品监控指标
控制台操作指南
云服务器监控组件
云产品监控对接 Grafana
故障处理
实践教程
应用性能监控
应用性能监控简介
接入指南
控制台操作指南
实践教程
参考信息
常见问题
终端性能监控
终端性能监控概述
控制台操作指南
接入指南
实践教程
前端性能监控
前端性能监控简介
控制台操作指南
接入指南
常见问题
云拨测
产品简介
控制台操作指南
常见问题
云压测
云压测概述
控制台操作指南
实践教程
JavaScript API 列表
常见问题
Prometheus 监控
Prometheus 监控简介
接入指南
控制台操作指南
实践教程
Terraform
常见问题
Grafana 服务
产品简介
控制台操作指南
Grafana 平台常用功能指引
常见问题
Dashboard
什么是 Dashboard
控制台操作指南
告警管理
控制台操作指南
故障处理
常见问题
事件总线
事件总线简介
控制台操作指南
实践教程
常见问题
报表管理
常见问题
腾讯云可观测平台常见问题
告警服务相关
一般性问题
监控图表相关
云服务器监控组件相关
动态阈值告警相关
云监控对接 Grafana 相关
文档阅读指南
相关协议
应用性能监控服务等级协议
APM 隐私协议
APM 数据处理和安全协议
前端性能监控服务等级协议
终端性能监控服务等级协议
云拨测服务等级协议
Prometheus 监控服务服务等级协议
Grafana 服务服务等级协议
云压测服务等级协议
云压测使用限制
Cloud Monitor Service Level Agreement
词汇表

脚本概述

PDF
聚焦模式
字号
最后更新时间: 2025-03-10 22:14:18
PTS 兼容 JavaScript ES2015(ES6)+ 语法,并提供额外函数,帮助您在脚本模式下,快速编排压测场景。
您可在控制台的在线编辑器里,用 JavaScript 代码描述您的压测场景所需的请求编排、变量定义、结果断言、通用函数等逻辑。(详细的 API 文档请参见:PTS API
PTS 还提供了各种类型的脚本模板(如各种协议的常见用法、以及一些常用函数等),在控制台脚本编辑器右侧的脚本常用模板示例里,供您参考以编写自己的脚本。

脚本结构

一个 PTS 场景脚本可由导入依赖模块、定义全局变量、定义全局选项 Options、定义函数、定义检查点组成,详细脚本内容请参考下文。

导入依赖模块

将所需模块导入后,才能使用模块中的 API。
import http from 'pts/http';
import { check, sleep } from 'pts';

定义全局变量

如果需要全局变量,可定义在函数外部。例如:
const globalVar = "var"
const globalObj = {
"k": "v",
}

export default function () {
console.log(globalVar); // var
console.log(globalObj.k); // v
};

定义全局选项 Options

通过全局选项您可以控制引擎的默认行为。
export const option = {
http: {
http2: true,
maxIdleConns: 50,
basicAuth: {
username: 'user',
password: 'passwd',
}
},
tlsConfig: {
'localhost': {
insecureSkipVerify: false,
//需要用户在场景中上传请求文件ca.crt
rootCAs: [open('ca.crt')],
//需要用户在场景中上传请求文件client.crt, client.key
certificates: [{cert: open('client.crt'), key: open('client.key')}]
}
}
}

定义函数

每个并发用户(VU)每次迭代执行的逻辑,定义在主函数(default 函数)里。
除了主函数,您还可以定义预处理(setup)和后处理(teardown)函数,示例如下:
预处理函数在每次压测开始后运行一次。
后处理函数在每次压测结束前运行一次。
// 全局变量,定义在函数外
const global = { stage: "global" };

// 用 setup 函数做预处理,可返回自定义的键值对
export function setup() {
return { stage: "setup" };
}

// 主函数(入参可接收 setup 函数返回的键值对)
export default function(data) {
console.log(JSON.stringify(global)); // {"stage":"global"}
console.log(JSON.stringify(data)); // {"stage":"setup"}
}

// 用 teardown 函数做后处理
export function teardown(data) {
console.log(JSON.stringify(global)); // {"stage":"global"}
console.log(JSON.stringify(data)); // {"stage":"setup"}
}

定义检查点

配置检查点可以从业务角度判断请求是否成功。
import http from 'pts/http';
import { check } from 'pts';

export default function () {
// get request with headers and parameters
const resp1 = http.get('http://httpbin.org/get', {
headers: {
Connection: 'keep-alive',
'User-Agent': 'pts-engine',
},
query: {
name1: 'value1',
name2: 'value2',
},
});
console.log(resp1.json().args.name1); // 'value1'
check('status is 200', () => resp1.statusCode === 200);
check('body.args.name1 equals value1', () => resp1.json().args.name1 === 'value1');
}

生命周期

预处理(setup)和后处理(teardown)函数:每台压测机运行一次。
定义全局变量(global)的代码:每个 VU 运行一次。一些静态的文件读取等操作建议放到 global 中定义,这样一个并发仅需读取一次文件。避免场景迭代重复打开文件。
主函数(default)代码:每个 VU 的每次迭代运行一次,且每个 VU 在达到本次压测配置的时长上限或迭代上限之前,会持续不断地迭代执行。
例如:在一台压测机上,当有两个 VU 时的流程图如下:

说明:
关于 VU 的概念介绍,请参见 常见问题


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈