PyRestTest支持通过Curl请求本身收集比较差的网络环境下的性能指标。
基准测试:它们扩展了测试中的配置元素,允许你进行相似的REST调用配置。然而,它们不对HTTP响应情况进行验证,它只收集指标数据。
下列选项被指定用于benchmark:
收集性能指标的方法有两种:原始数据(Raw Data)、聚合统计值(Aggregates)。
每一个指标可以生出原始数据(Raw Data)、一个或多个聚合(Aggregates)值:
为获取原始数据,在“metrics”配置元素中,只需在“metrics”配置元素值列表中输入度量名称。示例如:
- benchmark: # create entity
- name: "Basic get"
- url: "/api/person/"
- warmup_runs: 7
- 'benchmark_runs': '101'
- output_file: 'miniapp-benchmark.csv'
- metrics:
- total_time
- size_download
上述示例,会返回运行101次之后,每组元素数值总时间、下载大小。
Aggregates are pretty straightforward:
聚合数值更直观,下面给出常用的聚合数值指标:
通常支持下述给定的指标,这些是Curl get_info变量的子集。关于这些变量的解释说明(这些变量移除了CURLINFO_ 前缀):https://curl.haxx.se/libcurl/c/curl_easy_getinfo.html。支持指标如下:
‘appconnect_time’, ‘connect_time’, ‘namelookup_time’, ‘num_connects’, ‘pretransfer_time’, ‘redirect_count’, ‘redirect_time’, ‘request_size’, ‘size_download’, ‘size_upload’, ‘speed_download’, ‘speed_upload’, ‘starttransfer_time’, ‘total_time’
默认报告格式是CSV,输出报告包括如下内容:
以JSON格式输出,数据结构会有一些不同,下方式给出的json格式输出样例:
{"failures": 0,
"aggregates":
[["metric_name", "aggregate", "aggregateValue"] ...],
"failures": failureCount,
"group": "Default",
"results": {"total_time": [value1, value2, etc], "metric2":[value1, value2, etc], ... }
}
---
- config:
- testset: "Benchmark tests using test app"
- benchmark: # create entity
- name: "Basic get"
- url: "/api/person/"
- warmup_runs: 7
- 'benchmark_runs': '101'
- output_file: 'miniapp-benchmark.csv'
- metrics:
- total_time
- total_time: mean
- total_time: median
- size_download
- speed_download: median
- benchmark: # create entity
- name: "Get single person"
- url: "/api/person/1/"
- metrics: {speed_upload: median, speed_download: median, redirect_time: mean}
- output_format: json
- output_file: 'miniapp-single.json'