Lyrebird API-Coverage 为客户端提供 API 维度测试覆盖评估方法
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
界面说明
如图所示,不同区域的介绍:
工具栏
- Import Base - 导入需要统计的基准API列表(文件格式见附录 Base 数据格式)
- Resume Test - 导入统计结果并继续统计
- Save Result - 导出统计结果到“~/.lyrebird/plugin/lyrebird_api_coverage/data/”
- Clear Test - 清空当前的统计结果
- Filtering Rules - 过滤规则设置(配置格式见附录过滤配置数据格式)
覆盖率信息
- 展示覆盖率信息,总体覆盖率信息,分优先级覆盖率信息
基准API信息
- 展示当前生效的基准API信息
覆盖率详情模块
- Priority:API的优先级
- API: URL信息
- Description:API的描述信息
- Count:API的请求次数
- Status:API的状态,包括 已测试,未测试,不在base中的API
- Detail:查看请求详情,点击表格最后一列的详情中的Detail,就可以展示最近一次的请求的详情
使用流程
- 准备 Base 数据,Base 数据格式见附录
- 点击工具栏中的 Import Base 按钮进行导入 Base 文件
- 操作过程中观测页面的覆盖率等信息展示
开发者指南
# 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论