示例场景说明
场景设定:
•具有一定安全性要求、部分接口的参数具有时效性的场景。总共有三个接口,分别是登录接口、申请资源访问权限接口和获取资源接口,场景总流程如下:
1)调用登录接口获取认证信息。
2)使用认证信息申请资源访问权限,获取资源accessKey。
3)使用认证信息和accessKey访问对应资源。
其中,申请资源访问权限接口需要构造签名,申请到的accessKey具有时效性,超时后将不能用于访问资源。
•secretKey:在申请资源访问权限接口中用于签名的密钥。
•resourceId:用于压测的资源ID。
接口说明:
1.登录接口
1)地址:https://example.ctyun.cn/user/login
2)请求方式:POST
3)请求Body:
•结构:Json
•字段定义:
username:用户名(从参数文件中读取)。
password:密码(从参数文件中读取)。
4)响应:
•结构:Json
•示例:{"code":200, "message": "ok", "auth_info":"6688629172654192"}
2.申请资源访问权限
1)地址:https://example.ctyun.cn/resource/access
2)请求方式:GET
3)请求参数:
•结构:Query
•字段定义:
timestamp:毫秒时间戳。
resourceId: 请求资源的ID。
4)请求Headers:
•x-auth-info: 登录接口返回数据中的auth_info字段。
•signature:签名。签名算法:a. 构造字符串timestamp-resourceId;b. 使用hmacSha256算法和secretKey对1中构造的字符串签名。
5)响应:
•结构:Json
•示例:{"code":200, "message": "ok", "access_key":"784373beb194aaec97", "timeout": "946656000"}
3.获取资源
1)地址:https://example.ctyun.cn/resource/fetch
2)请求方式:GET
3)请求Headers:
•x-auth-info: 登录接口返回数据中的auth_info字段。
4)请求参数:
•结构:Query
•字段定义:
resourceId:请求资源的ID。
accessKey: 申请资源访问权限接口的响应Json数据中的access_key字段。
5)响应:
•结构:Json
•示例:{"code":200, "message": "ok", "data": "..."}。
备注:业务成功时code字段应该为200。
压测配置示例
步骤一:准备数据
1.准备用于签名的secretKey和需要压测的资源ID resourceId,示例中设定secretKey为e769ef4a5c03b71ed685938235448345,resourceId为42b730f250da7fbc。
2.将用于压测的username、password按照以下格式构造CSV文件username-password.csv。
3.登录PTS控制台。
4.在左侧导航栏选择场景管理 > 创建场景。
5.在创建场景页面,填写场景名,例如example,填入基本信息后保存。
6.在左侧导航栏选择数据源 ,点击上传文件 ,将CSV文件上传到PTS作为数据源,上传完毕后,将数据源关联上一步创建的场景。
步骤二:配置场景基本框架
1.切换到施压配置页签,按照您的需求配置相关参数,示例中使用默认配置。
2.切换到场景配置页签,添加任务和压测请求,填入接口基本信息,在本示例场景中,这三个接口是串行的,所以它们需要配置在同一个任务下,示例配置如下。
步骤三:配置登录接口
修改登录接口user/login,示例:
1.接口基本信息:
1)协议:HTTPS
2)请求方式:POST
3)url:https://example.ctyun.cn/user/login
2.使用文件参数username和password构造请求Json,Content-Type选择“JSON(application/json)”。
3.配置响应提取,从响应的Json中提取认证信息auth_info字段作为引用参数authInfo。
步骤四:配置申请资源访问权限接口
修改申请资源访问权限接口resource/access,示例:
1.接口基本信息:
1)协议:HTTPS
2)请求方式:GET
3)url:https://example.ctyun.cn/resource/access
4)query:timestamp=${sys.timestampMS()}&resourceId=42b730f250da7fbc
解释:timestamp=${sys.timestampMS()},使用系统函数获取毫秒时间戳;resourceId=42b730f250da7fbc,需要压测的资源ID。
2.请求头信息:
1)x-auth-info:${authInfo}
解释:${authInfo}为步骤三中登录接口提取到的认证信息。
2)signature: {func.hmacSha256( {func.concat(${sys.timestampMS()}, "-","42b730f250da7fbc")},"e769ef4a5c03b71ed685938235448345")}
解释:使用func.concat函数构造字符串timestamp-resourceId;使用func.hmacSha256方法和secretKey(示例中secretKey=e769ef4a5c03b71ed685938235448345)对构造的字符串进行加密。
3.配置响应提取,从响应Json中提取鉴权信息access_key作为引用参数accessKey。
步骤五:配置获取资源接口
修改获取资源接口resource/fetch,示例:
1.接口基本信息:
1)协议:HTTPS
2)请求方式:GET
3)url:https://example.ctyun.cn/resource/fetch
4)query:resourceId=42b730f250da7fbc&accessKey=${accessKey}
解释:resourceId=42b730f250da7fbc,用于压测的资源ID;accessKey=${accessKey},步骤四中提取到的鉴权信息
2.请求头信息:
x-auth-info:${authInfo}
解释:${authInfo}为步骤三中登录接口提取到的认证信息。
3.配置响应提取,提取响应Json的code字段作为参数businessCode。
4.检查businessCode是否为200,判断本次业务是否成功。
步骤六:启动压测
至此,完成了示例场景的所有配置,只需保存场景并压测即可。