本文主要介绍如何使用PTS的OpenAPI搭建一个压测平台,以及开放的API种类、利用API能实现的功能、如何使用API等信息。文末附有一份详细的使用教程,可以帮助您实现填空式编程。

基本概念

  • 场景:PTS以场景为中心,每个场景都有唯一标识的场景ID。一次压测的对象就是一个场景,每次压测都有唯一标识的任务ID,一个场景可以包含一个或多个链路,一个链路可以包含一个或多个API,如下图。更多信息,请参见压测场景的结构和数据分配创建压测场景概念
  • 链路:指一组压测API的有序集合(类似于事务),具有业务含义。压测API之间只有在同一个串联链路中才能进行数据传递。两个不同的串联链路之间相互独立,通常不会存在参数的传递依赖(如有必要可以使用数据导出指令)。
  • API:指由用户行为触发的一条端上请求。压测API是场景压测中的必需元素,用来定义串联链路中每个阶段URL的具体信息。例如,登录电商网站、查询商品详情、提交订单等,分别对应一次用户行为中的多个请求API。

依赖

PTS的OpenAPI所有Maven依赖如下,最新版本请在Maven公网地址查询。
注意 aliyun-java-sdk-pts的4.0.0版本已废弃,请勿使用。
<!--创建场景需要的实体类。-->
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>pts-api-entity</artifactId>
  <version>1.0.1</version>
</dependency>

<!--PTS Java SDK依赖。-->
<dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>aliyun-java-sdk-pts</artifactId>
      <version>3.3.0</version>
</dependency>

<!--阿里云核心库。-->
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.5.2</version>
</dependency>

优势

使用OpenAPI的优势如下:

  • 直接通过引入Pom的方式编码调用,实现快速构建场景、启动压测、获取压测报告。
  • 提供场景结构实体类二方包,完美解决场景结构复杂导致的构造创建场景接口入参繁琐的问题。
  • 针对场景主要接口,提供最全样例代码,基本可以实现填空试编程。

功能

PTS以场景为中心,开放六大类接口,如下图所示。更多信息,请参见API概览

功能.png
  1. 编辑:实现场景的增、删、改、查各种操作。为了方便创建压测场景,同时提供了场景实体类(pts-api-entity二方包中的Scene类),帮助您快速构建创建场景的入参。
  2. 调试:实现场景的压测前调试。调试过程中可以通过压测数据接口获取调试结果数据,判断待压测API是否能连通。
  3. 执行:实现场景的启动、停止。调试结束,通过启动接口,实现一键启动压测,并在压测过程中,可以随时停止压测。
  4. 数据:获取压测和调试过程中的实时数据。在压测过程中,可以轮询调用查询场景运行时数据接口,得到压测结果。
  5. 报告:查询压测最终报告数据。PTS以场景为中心,可以通过某一个场景ID,查询其压测产生的所有报告;也可以通过报告ID查询其报告详情。
  6. 基线:实现性能基线的增、删、改、查各种操作。每个PTS原生场景都可以设置一个性能基线,基线数据包括RT、TPS、成功率等重要指标。通过对比场景的性能基线数据和压测报告数据,可以判断该次压测是否达标,这也是集成OpenAPI到能效工具、发布平台的重要意义。

使用方法

OpenAPI的设计思路遵循场景各阶段:编辑场景>调试压测>执行压测>获取压测实时数据>获取压测报告>设置性能基线,关于pts-api-entity实体类中的二方包中(BuildSceneEntity、PtsExample)的详细样例和具体使用教程,请参见样例教程

样例教程包含以下内容:

  • BuildSceneEntity:创建场景时,构建场景实体类。包括链路、API、施压配置、文件参数等信息。
  • PtsExample:各个API的调用样例。包括创建场景、启动压测、获取数据,获取报告等信息。

压测流程如下图所示。

压测流程.png