首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >API自动测试中的持久化层

API自动测试中的持久化层
EN

Software Engineering用户
提问于 2020-04-22 10:32:02
回答 1查看 334关注 0票数 1

API的自动化测试应该是稳定和简单的。

在为API编写自动化测试时,我们通常必须检查用实现该API的程序创建的数据是否持久。如果直接检查持久性层(例如:数据库),那么测试将与这个持久层的使用相关联,并且可能经常中断。

我们宁愿使用API来检查数据是否持久化,这样就可以在不中断测试的情况下更改实现。

示例

假设我们正在测试一个API来添加用户"myfakeapi.com“。给定这个JSON文件"user.json":

代码语言:javascript
运行
复制
{
  "name": "Harry"
}

..。这个测试脚本是:

代码语言:javascript
运行
复制
#!/bin/bash

# Deleting all the users
curl -X DELETE https://myfakeapi.com/users

# Adding the new user, returns {"id": 1, "name": "Harry"}
curl -X POST -H "Content-type: application/json" --data-binary "@user.json" https://myfakeapi.com/users

# Checking that the user was saved, returns {"id": 1, "name": "Harry"}
curl -X GET -H "Content-type: application/json" https://myfakeapi.com/users/1

我们可以说测试是成功的。此外,如果实现发生变化,它也不会中断。

问题是,没有任何证据证明myfakeapi.com将用户存储在数据库中。实际上,它可以通过将用户存储在内存中来通过测试。最后,直接检查持久层是正确的解决方案吗?

我不这么认为(编辑:我后来改变了主意)。

问题

从API用户的角度来看,持久性只意味着如果程序重新启动,数据就不会丢失。这正是我想要测试的。

我的问题是:在测试会话期间重新启动实现API的程序可以检查持久性吗?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2020-04-22 12:02:23

作为一个API用户,我只关心写(POST/PUT/DELETE)具有公告的效果,并且读取(GET)给出预期的数据,其中各种请求之间的时间不是一个因素(除非明确记录为超时)。

API的提供者如何确保时间无关,我并不感兴趣。就我而言,如果他们能够确保可执行文件永远不会死,那么他们就可以将所有的数据保存在RAM中。

作为API的实现者,我可能需要一种更持久的方式来存储数据,而不仅仅是RAM。

从测试的角度来看,这意味着API测试应该检查API是否按预期工作,但它们不应该常规地执行生产中的API用户无法执行的操作,比如重新启动程序。

如果持久性策略工作正常,我希望在软件的单元测试、组件测试和集成测试中找到测试。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/409141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档