Lyrebird API-Coverage 为客户端提供 API 维度测试覆盖评估方法

发布于 2021-08-04 19:22:19 字数 3616 浏览 1268 评论 0

API-Coverage 是基于 Lyrebird 的插件,为客户端提供 API 维度测试覆盖评估方法。

客户端的操作可以实时反应在前端页面上,主要有 API 覆盖率统计、不同优先级的覆盖率展示等。可以参考该数据,判断测试是否已覆盖目标功能。

项目地址:https://github.com/meituan/lyrebird-api-coverage

API 覆盖率的计算公式:覆盖率 = 已访问 API / 基准 API

  • 已访问 API:被测应用已发出的请求(只记录当前业务内 API)
  • 基准 API:当前业务所有 API

环境要求

  • macOS
  • Python3.6及以上

安装

pip3 install lyrebird-api-coverage

启动

lyrebird

界面说明

如图所示,不同区域的介绍:

工具栏

  1. Import Base - 导入需要统计的基准API列表(文件格式见附录 Base 数据格式)
  2. Resume Test - 导入统计结果并继续统计
  3. Save Result - 导出统计结果到“~/.lyrebird/plugin/lyrebird_api_coverage/data/”
  4. Clear Test - 清空当前的统计结果
  5. Filtering Rules - 过滤规则设置(配置格式见附录过滤配置数据格式)

覆盖率信息

  1. 展示覆盖率信息,总体覆盖率信息,分优先级覆盖率信息

基准API信息

  1. 展示当前生效的基准API信息

覆盖率详情模块

  1. Priority:API的优先级
  2. API: URL信息
  3. Description:API的描述信息
  4. Count:API的请求次数
  5. Status:API的状态,包括 已测试,未测试,不在base中的API
  6. Detail:查看请求详情,点击表格最后一列的详情中的Detail,就可以展示最近一次的请求的详情

使用流程

  1. 准备 Base 数据,Base 数据格式见附录
  2. 点击工具栏中的 Import Base 按钮进行导入 Base 文件
  3. 操作过程中观测页面的覆盖率等信息展示

开发者指南

# clone 代码
git clone https://github.com/meituan/lyrebird-api-coverage.git

# 进入工程目录
cd lyrebird-api-coverage

# 创建虚拟环境
python3 -m venv venv

# 安装依赖
source venv/bin/activate
pip3 install -r requirements.txt

# 使用IDE打开工程(推荐Pycharm或vscode)

# 在IDE中执行debug.py即可开始调试

附录

Base 数据格式

{
  "business": "app_channel",
  "version_code": 1,
  "version_name": "1.0",
  "api_list": [
    {
      "desc": "A接口",
      "priority": 3,
      "url": "meituan.com/test/a"
    },
    {
      "desc": "B接口",
      "priority": 2,
      "url": "meituan.com/test/b?paramKey=val"
    },
    {
      "desc": "C接口",
      "priority": 2,
      "url": "meituan.com/test/c/{num}"
    },
    {
      "desc": "D接口",
      "priority": 1,
      "url": "meituan.com/test/d?sourceType=1"
    }
  ]
}
  • 支持两种API,Path 和 Path + query,即不带参数的配置和带参数的配置
  • 在配置API时,如果path中带有参数,如 a.b.com/v1/test/{num},需要用'{}'括起,在覆盖率计算中用来判断是同一API
  • 配置参数的情况下,字段名的大小写敏感

过滤配置数据格式

demo

{
  "exclude": {
    "host": [
      "a.meituan.com",
      "b.baidu.com"
    ],
    "regular": [
      ".webp",
      ".gif",
      ".jpg",
      ".png"
    ]
  }
}

支持两种筛除规则,以 host 为维度,以包含字符串为维度

  • 如果不想关注某些 host 下的请求,可以按照上述筛选配置文件的数据格式配置 host字段下的规则
  • 如果不想关注某些包含指定字符串的请求(如:.webp),可以按照上述筛选配置文件的数据格式配置 regular 字段下的规则

字段说明

  • exclude:不关注的配置项
    • host:不关注的 host
    • regular:不关注的字符串(URL只要包含指定的字符串都会筛选掉)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

醉城メ夜风

文章 0 评论 0

远昼

文章 0 评论 0

平生欢

文章 0 评论 0

微凉

文章 0 评论 0

Honwey

文章 0 评论 0

qq_ikhFfg

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文