一文教会你:如何使用 HttpRunner v4.0 开展性能测试

在 HttpRunner v4.0 全新发布 中我们有介绍过,HttpRunner v4.0 期望成为一款专业级的一体化 API 测试工具,特别是针对性能测试能力进行了重大升级。相比于之前的版本,HttpRunner v4.0 在性能测试部分最大的优化包括如下 4 个方面:

  • 使用 Golang 重新实现了脚本执行引擎(基于 Boomer),相比于 Python Locust 极大地提升了发压能力
  • 对标 LoadRunner 新增实现了丰富的性能测试机制,包括事务、集合点、思考时间等
  • 对压测结果进行了严格的 benchmark 测试和数据校准,确保测试结果真实可靠
  • 集成了 Prometheus 性能采集能力,配合 Grafana 可实现丰富的性能指标看板

涉及的内容比较多,因此我们针对 HttpRunner v4.0 的性能测试能力规划了一系列专题文章,包括性能测试工具使用、多机负载分布式加压、监控配置、benchmark 数据比对、竞品工具对比、原理解析等等。

本文作为性能测试专题的第一篇文章,将结合一个简单的案例整体介绍如何使用 HttpRunner v4.0 开展性能测试,帮助大家快速上手使用工具。

案例介绍

为了方便大家理解,本文挑选了一个非常简单的案例场景,但同时会尽量多地覆盖常用的性能测试特性。

案例设计如下:

  • 压测目标为 3 个接口:API1/API2/API3
  • 业务层面期望整体关注 API1 + API2 的性能情况,即「事务」特性
  • 在真实场景中,API1 和 API2 请求之间需要有一个间隔时间,即「思考时间」特性
  • 期望重点关注 API3 的并发性能,即所有用户同一时间请求的情况,即「集合点」特性

接下来,我们将对这些特性进行具体介绍,并对使用方法进行演示说明。

编写测试用例

在性能测试之前,我们需要先准备好性能测试用例。在 HttpRunner 中,得益于「一体化」的特性优势,我们可以在无需对已有接口测试用例做任何修改的情况下,直接运行性能测试。

针对本文中的案例,接口测试用例如下所示:

config:
  name: load test demo
  variables:
    app_version: v1
    user_agent: iOS/10.3
  base_url: 'http://httpbin.org'
  verify: false
teststeps:
  - name: get with params
    request:
      method: GET
      url: /get
      headers:
        User-Agent: '$user_agent/$app_version'
    validate:
      - check: status_code
        assert: equals
        expect: 200
        msg: check status code
  - name: post with params
    request:
      method: POST
      url: /post
      headers:
        User-Agent: '$user_agent/$app_version'
    validate:
      - check: status_code
        assert: equals
        expect: 200
        msg: check status code
  - name: post with params 2
    request:
      method: POST
      url: /post
      headers:
        User-Agent: '$user_agent/$app_version'
    validate:
      - check: status_code
        assert: equals
        expect: 200
        msg: check status code

我们只需将测试命令从 hrp run 改为 hrp boom,即可启动性能测试,具体的参数配置后面会详细介绍。

需要说明的是:

  • HttpRunner v4.0 做性能测试时,测试用例格式只能选择 YAML/JSON/GoTest;PyTest 格式的底层引擎基于
    pytest 执行引擎,不支持性能测试;
  • 如果我们在性能测试中期望实现「事务」、「集合点」、「思考时间」等机制,需要在接口测试用例基础上添加特定的步骤。

添加「事务」机制

事务可以将多个接口的测试结果进行聚合统计,性能指标更加贴合真实业务场景。

事务的数据结构如下:

type Transaction struct {
   Name string          `json:"name" yaml:"name"` 
// 事务名称,可定义为任意字符串

   Type transactionType `json:"type" yaml:"type"` 
// 事务类型,仅包括 2 种类型,start(事务开始)和 end(结束事务)

}

事务使用示例:

config:
  ...
teststeps:
  ...
  - name: transaction 1 start
    transaction:
      name: tran1
      type: start
  ...
  - name: transaction 1 end
    transaction:
      name: tran1
      type: end
  ...

针对「事务」机制,有 2 个需要特别注意的点:

使用 HttpRunner v4.0 执行性能测试时,会自动添加名称为 Action 的事务,该事务包含整个测试用例的所有测试步骤(参考了 LoadRunner 的做法)

在测试用例中,transaction 应该成对出现,即必须同时定义 start 和 end;如果存在配对缺失的情况,会按照如下逻辑进行处理:

仅设置开始事务,则会在测试用例最后一个测试步后添加结束事务

仅设置结束事务,则会在测试用例第一个测试步前添加开始事务

添加「集合点」机制

集合点可以确保指定的虚拟用户在同一时刻发起请求&#x

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值