专栏名称: 程序人生
十年漫漫程序人生,打过各种杂,也做过让我骄傲的软件;管理过数十人的团队,还带领一班兄弟姐妹创过业,目前在硅谷一家创业公司担任 VP。关注程序人生,了解程序猿,学做程序猿,做好程序猿,让我们的程序人生精彩满满。
目录
相关文章推荐
51好读  ›  专栏  ›  程序人生

构建下一代 HTTP API - 测试

程序人生  · 公众号  · 程序员  · 2020-12-11 08:30

正文

请到「今天看啥」查看全文


Quenya 如何生成 API 测试?

虽然撰写生成式测试会让开发者撰写测试的效率大大提升,Quenya 还是希望能帮助开发者来自动生成生成式测试。这听上去似乎很难,但因为有 OpenAPI spec 为基础,所以反而顺理成章。我们可以遍历 Open API spec 里面的每个 operation,从里面取出 request 相关的数据的 schema,然后生成测试数据集,发送请求,得到响应,最后用 response 的 schema 来验证,流程如下:

如何生成测试数据集?

想法很简单直观,接下来我们只需要解决一个核心问题:如何从一个描述了数据类型,可以做数据校验的 JSON schema 中生成可用于生成式测试的数据集?

这个问题进一步可以分解成两个问题:

  1. 如何通过 JSON schema 生成正确的数据?

  1. 如何通过 JSON schema 生成错误的数据?

为了解决这个问题,我做了一个新的库,叫 json_data_faker (github.com/tyrchen/json_data_faker)。为啥需要做一个新的库?因为我感觉通过 JSON schema 生成随机的测试数据,是一个比较公共的需求,不光 Quenya 需要它,其它项目也许也会用到它。

这个库的接口很简单,给定一个 JSON schema,会返回一个 stream,如果从这个 stream 里读取数据,会得到一个满足 JSON schema 的数据结构,比如下面的代码,我们期待获得一个 Todo 结构的数组:

iex> object_schema = %{    "properties" => %{      "body" => %{        "maxLength" => 140,        "minLength" => 3,        "type" => "string"      },      "created" => %{        "format" => "date-time",        "type" => "string"      },      "id" => %{        "format" => "uuid",        "type" => "string"      },      "status" => %{        "enum" => [          "active",          "completed"        ],        "type" => "string"      },      "updated" => %{        "format" => "date-time",        "type" => "string"      }    },    "required" => [      "body"    ],






请到「今天看啥」查看全文


推荐文章
心情聊伤话  ·  我去世了 (泪 奔)~
8 年前
左右青春  ·  真相推理师:嬗变(10)
8 年前