meetmatt / open-api-coverage
OpenAPI规范覆盖率
dev-master
2023-05-09 15:24 UTC
Requires
- php: ^8.2
- ext-json: *
- cebe/php-openapi: ^1.7
- psr/http-message: ^2.0
- symfony/console: ^6.2
Requires (Dev)
- codeception/codeception: ^5.0
- codeception/module-asserts: ^3.0
- guzzlehttp/psr7: ^2.4
This package is auto-updated.
Last update: 2024-09-09 18:07:31 UTC
README
目的
此包可用于报告和记录测试中Open API规范的文档化和执行部分:哪些路径和操作被执行,哪些参数被传递,发送了哪些内容类型,返回了哪些响应状态码类别、代码、主体属性和内容类型。
术语表
- 已文档化/未文档化:存在于规范中/不存在。
- 通过/未通过:在请求中发送/未发送。
- 获取/未获取:在响应中接收/未接收。
- 已测试/未测试:获取的响应与预期值断言/未断言或断言失败。
- TCL:测试覆盖率级别(每个套件,每个规范)。
- 输入标准:与API请求相关。
- 输出标准:与API响应相关。
标准
输入标准
输入标准的类型
- 输入参数(可选或必填)。
- 输入参数值(枚举,布尔值)。
- 内容类型(仅适用于有请求体的操作)。
- 操作流程(未实现,缺乏正式定义)。
请求覆盖率
- 已文档化,通过 - 完全覆盖。
- 已文档化,未通过 - 缺少API调用。
- 未文档化,通过 - 缺少文档。
- (无意义) 未文档化,未通过。
输出标准
输出标准的类型
- 状态码类别:200 与 400/500,应明确定义。
- 状态码。
- 响应体属性。
- 内容类型。
响应覆盖率
- 已文档化,获取,已测试 - 完全覆盖。
- 已文档化,未获取,测试不适用 - 缺少API调用和测试。
- 已文档化,获取,未测试 - 缺少测试。
- 未文档化,获取,已测试 - 缺少文档。
- 未文档化,获取,未测试 - 缺少文档和测试。
- (无意义) 未文档化,未获取,测试不相关。
测试覆盖率级别(TCL)
对象模型
覆盖率
Coverage: Spec: Specification Input: InputCriteria Output: OutputCriteria
规范
Specification: ID: string Paths: URL -> Path URL: string Operations: HTTP Method -> Operation HTTP Method: string PathParameters: Name -> Values Name: string Values: array QueryParameters: Name -> Values Name: string Values: array RequestBodies: Content-type -> RequestBody Content-type: string Properties: Path -> Values Path: string Values: array Responses: HTTP Status Code -> Response HTTP Status Code: string ResponseBodies: Content-type -> ResponseBody Content-type: string Properties: Path -> Values Path: string Values: array
覆盖率如何工作
- 解析规范。
- 在每个HTTP调用(REST模块)中,在规范中找到路径和操作,将其标记为已文档化和通过。
- 更深入地研究请求参数:从URI路径推断路径参数,通过将路径定义转换为正则表达式根据路径参数,将参数标记为通过。
- 如果有路径但没有已文档化的操作,则将路径标记为已调用,并记录未文档化的操作。
- 如果没有路径,则记录未文档化的路径(包括操作、参数(推断路径参数)、查询字符串参数、请求体内容)。
- 更深入地研究请求参数:查询参数。
参考文献
许可证
OpenAPI规范覆盖率 是开源软件,使用 MIT 许可证授权。