meetmatt/open-api-coverage

OpenAPI规范覆盖率

dev-master 2023-05-09 15:24 UTC

This package is auto-updated.

Last update: 2024-09-09 18:07:31 UTC


README

目的

此包可用于报告和记录测试中Open API规范的文档化和执行部分:哪些路径和操作被执行,哪些参数被传递,发送了哪些内容类型,返回了哪些响应状态码类别、代码、主体属性和内容类型。

术语表

  • 已文档化/未文档化:存在于规范中/不存在。
  • 通过/未通过:在请求中发送/未发送。
  • 获取/未获取:在响应中接收/未接收。
  • 已测试/未测试:获取的响应与预期值断言/未断言或断言失败。
  • TCL:测试覆盖率级别(每个套件,每个规范)。
  • 输入标准:与API请求相关。
  • 输出标准:与API响应相关。

标准

输入标准

输入标准的类型

  • 输入参数(可选或必填)。
  • 输入参数值(枚举,布尔值)。
  • 内容类型(仅适用于有请求体的操作)。
  • 操作流程(未实现,缺乏正式定义)。

请求覆盖率

  1. 已文档化,通过 - 完全覆盖。
  2. 已文档化,未通过 - 缺少API调用。
  3. 未文档化,通过 - 缺少文档。
  4. (无意义) 未文档化,未通过。

输出标准

输出标准的类型

  • 状态码类别:200 与 400/500,应明确定义。
  • 状态码。
  • 响应体属性。
  • 内容类型。

响应覆盖率

  1. 已文档化,获取,已测试 - 完全覆盖。
  2. 已文档化,未获取,测试不适用 - 缺少API调用和测试。
  3. 已文档化,获取,未测试 - 缺少测试。
  4. 未文档化,获取,已测试 - 缺少文档。
  5. 未文档化,获取,未测试 - 缺少文档和测试。
  6. (无意义) 未文档化,未获取,测试不相关。

测试覆盖率级别(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

覆盖率如何工作

  1. 解析规范。
  2. 在每个HTTP调用(REST模块)中,在规范中找到路径和操作,将其标记为已文档化和通过。
  3. 更深入地研究请求参数:从URI路径推断路径参数,通过将路径定义转换为正则表达式根据路径参数,将参数标记为通过。
  4. 如果有路径但没有已文档化的操作,则将路径标记为已调用,并记录未文档化的操作。
  5. 如果没有路径,则记录未文档化的路径(包括操作、参数(推断路径参数)、查询字符串参数、请求体内容)。
  6. 更深入地研究请求参数:查询参数。

参考文献

A. Martin-Lopez, S. Segura, A. Ruiz-Cortés. 2019. RESTful Web API的测试覆盖率标准。 ACM SIGSOFT国际自动化测试案例设计、选择和评估研讨会(A-TEST'19)。

许可证

OpenAPI规范覆盖率 是开源软件,使用 MIT 许可证授权。