当前位置: 首页 > article >正文

【PyRestTest】进行Benchmarking测试

PyRestTest支持通过Curl请求本身收集比较差的网络环境下的性能指标。

基准测试:它们扩展了测试中的配置元素,允许你进行相似的REST调用配置。然而,它们不对HTTP响应情况进行验证,它只收集指标数据

下列选项被指定用于benchmark:

  • warmup_runs:如果没有指定该选项,默认为10。在开始收集数据之前,多次运行这个基准测试调用,以允许JVM warmup、缓存等。
  • benchmark_runs: 如果没有指定该选项,默认为100。运行基准测试的次数。
  • output_file: 如果没有指定该选项,默认为None。要写入基准输出的文件名,每次运行都会被覆盖,如果没有给定,则只会写入终端
  • output_format:如果没有指定该选项,默认为CSV。将结果写入(‘json’或’csv’)的格式。
  • metrics: 必须指定要收集的指标(如下所述),否则基准测试将不起作用

Metrics(指标)

收集性能指标的方法有两种:原始数据(Raw Data)、聚合统计值(Aggregates)。

每一个指标可以生出原始数据(Raw Data)、一个或多个聚合(Aggregates)值:

  • Raw Data: 返回值是一个数组,一个基准每运行一次都会参数一个数组。
  • Aggregates: 运行一个缩减(reduction)函数,在整个基准运行期间返回单个值(中值、平均值等)。

为获取原始数据,在“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:

聚合数值更直观,下面给出常用的聚合数值指标:

  • mean/mean_arithmetic: 算术平均数(通常是作为平均值
  • mean_harmonic: 调和平均值(等于两数乘积的二倍被两数之和除) (有助于衡量速率)
  • median: 数值中位数
  • std_deviation: 标准偏差, 有助于衡量它们的一致性
  • total/sum: 给定值之和

通常支持下述给定的指标,这些是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,输出报告包括如下内容:

  • Benchmark name:名称
  • Benchmark group:所属组,默认为default
  • Benchmark failure count (raw HTTP failures):失败次数
  • Raw data arrays:作为一个表,头是度量名称,按字母顺序排序
  • Aggregates: 格式为(metricname,aggregate_name,result)的结果表

以JSON格式输出,数据结构会有一些不同,下方式给出的json格式输出样例:

{"failures": 0,
"aggregates":
    [["metric_name", "aggregate", "aggregateValue"] ...],
"failures": failureCount,
"group": "Default",
"results": {"total_time": [value1, value2, etc], "metric2":[value1, value2, etc], ... }
}

Benchmark样例:

---
- 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'

http://www.kler.cn/a/225257.html

相关文章:

  • cka考试-02-节点维护
  • STM32 拓展 RTC(实时时钟)
  • 在 macOS 上,你可以使用系统自带的 终端(Terminal) 工具,通过 SSH 协议远程连接服务器
  • Java高频面试之SE-08
  • Git的使用流程(详细教程)
  • 【QT】实现RestFul接口
  • C++进阶--多态
  • C/C++ C++入门
  • linux中vim的操作
  • 2024美赛 MCMProblem B: Searching for Submersibles 问题B 搜索潜水器 完整思路代码分享
  • ArcGIS Pro 如何计算长度和面积等数据?
  • 使用goland IDE编写go windows ui
  • 打造工业4.0的5G+边缘云服务产业生态,艾灵完成1.5亿元A轮融资
  • Unity中使用Ultraleap的InteractionButton组件
  • Spring Boot通过配置文件支持数据库自定义表名
  • CloudStack Agent 配置文件解析与含义
  • 【机器学习】贝叶斯垃圾邮件识别
  • 如何解决 docker registry x509 证书不信任问题?
  • Linux系统各目录作用
  • 微服务-微服务Alibaba-Nacos 源码分析 (源码流程图)
  • Leetcode 《面试经典150题》169. 多数元素
  • 蓝桥杯算法赛第4场小白入门赛强者挑战赛
  • 数据分析中需要用的的python知识(包括Numpy、Pandas、Matplotlib)
  • SQL 语句
  • 通过与chatGPT交流实现零样本事件抽取
  • 网络通信--术语对照表