后台性能测试
开发者在完成后台开发后,在“自定义模板-模板管理-开发中模板-提交测试-后台性能测试”提交如下内容:
- 自测用例
- 自测结果
- 压测时间 && 压测服务器
1. 自测用例
测试用例由正常用例和异常用例组成。
正常用例应覆盖服务接口的所有功能,并通过脚本构造出不同的用例值来避免命中cache。
异常用例则是构造参数不在白名单内或者参数范围超过允许值的用例,以监控在异常参数情况下服务的稳定性。
1.1. 压测自测用例数量
根据业务数据量大小需要最多3000条压测用例,如果业务数据量本身不大,那么尽量多提供即可。
- 案例1: 某查询快递服务,因为快递单子数量很大(百万、千万级别),所以仅需抽样提供3000条。
- 案例2: 某查询地铁路线服务,因为国内地铁路线总共在几百条,此处只需要提供这几百条数据。
1.2. 自测用例示例
以股票查询服务(type = 1)为例,其数据格式定义为:
key | 类型 | 示例 |
---|---|---|
stock_code | string | 00700 |
stock_market | string | hk |
微信在收到用户的query并进行意图识别之后,生成的数据包中未经json_encode
的query字段为(见消息同步示例):
{"type": 1, "slot_list": [{"key": "stock_code", "value": "00700"}, {"key": "stock_market", "value": "hk"}]}
开发者模拟这一字段(未经json_encode
)生成自测用例,示例如下:
{"type": 1, "slot_list": [{"key": "stock_code", "value": "00700"}, {"key": "stock_market", "value": "hk"}]}
{"type": 1, "slot_list": [{"key": "stock_code", "value": "00248"}, {"key": "stock_market", "value": "hk"}]}
{"type": 1, "slot_list": [{"key": "stock_code", "value": "01041"}, {"key": "stock_market", "value": "hk"}]}
{"type": 1, "slot_list": [{"key": "stock_code", "value": "00004"}, {"key": "stock_market", "value": "hk"}]}
{"type": 1, "slot_list": [{"key": "stock_code", "value": "00197"}, {"key": "stock_market", "value": "hk"}]}
{"type": 1, "slot_list": [{"key": "stock_code", "value": "00648"}, {"key": "stock_market", "value": "hk"}]}
{"type": 1, "slot_list": [{"key": "stock_code", "value": "01271"}, {"key": "stock_market", "value": "hk"}]}
{"type": 1, "slot_list": [{"key": "stock_code", "value": "11638"}, {"key": "stock_market", "value": "hk"}]}
{"type": 1, "slot_list": [{"key": "stock_code", "value": "10231"}, {"key": "stock_market", "value": "hk"}]}
{"type": 1, "slot_list": [{"key": "stock_code", "value": "00001"}, {"key": "stock_market", "value": "hk"}]}
{"type": 1, "slot_list": [{"key": "stock_code", "value": "10001"}, {"key": "stock_market", "value": "hk"}]}
...
...
2. 自测结果
由于此处是逻辑比较简单的http服务,所以采用业界比较成熟的压测工具即可,比如:
参考官方要求时延验收标准
在QPS 200的情况下,持续压测半小时,做到95% 的请求要求在 300ms 内返回,而超过1000ms的请求不超过 1%。
预留来回网络传输最坏情况 120ms
的时延以及 10ms
的加解密,开发者自测要求做到:
在QPS 200的情况下,本地持续压测半小时,做到95%以上的请求要求在 170ms 内后台处理完成,而后台处理超过 870 ms 的比例不超过 1%
校验点 | 耗时比例 | 预期结果 |
---|---|---|
170ms内处理 | 待填写 | >= 95% |
超过 870 ms处理 | 待填写 | <= 1% |
自测报告示例:
校验点 | 耗时比例 | 预期结果 |
---|---|---|
170ms内处理 | 98.2% | >= 95% |
超过 870 ms处理 | 0.72% | <= 1% |
3.压测时间 && 压测服务器
开发者选择合适的时间段(当多家服务提供者申请在同一时间段内压测时,微信侧可能会进行分批测试。为了保证测试的质量,此处建议尽可能选择较长的时间段),微信侧将在该时间段内对生产环境(生产环境的配置见接入概述)进行为期半小时的压力测试,测试结果将在“模板申请单”中展示。