为公共(public) Web 服务测试自定义客户端的方法有哪些?
如今有许多提供 API 的在线服务。使用这些 API 的小应用程序正在蓬勃发展。示例:社交网络和博客平台的桌面/移动客户端、文档存储和处理中心、云数据库、实时数据流、GIS 数据等。
问题在于,此类应用程序中最重要的部分通常是与在线服务通信(处理错误、编码/解码数据、处理配额、调整 API 更新等),但客户端开发人员并不控制服务。因此无法直接看到测试的效果,也无法始终将服务状态回滚到原始状态。
- 您如何设计可重现的客户测试?
- 您测试哪些行为?
- 您如何测试破坏性或重负载行为? (针对公共(public)服务)
- 您是否自动运行此类测试(例如,作为预提交 Hook )?
- 您如何针对异常情况进行测试(从服务下降到超过配额,到不一致的状态,再到服务行为的突然变化)?
最佳答案
非常清楚您要测试的是什么。您是否正在测试您的代码在收到来自服务的响应时是否执行了预期的操作?既正常又不寻常?然后模拟该服务,以便您可以轻松地使用这些路径。
是的,我会设计可重现的测试,并在一些允许我自动运行它们的框架下运行它们,理想情况下也作为构建/提交的一部分。
但是如何测试服务本身呢?一些测试只是从验证您的解决方案中出现的。例如重载。好吧,虽然重要的是不要反社会并且让公共(public)服务饱和是不合理的,但如果有已发布的 SLA,那么我认为测试它是合理的。因此,如果您的应用预计每秒发出 n 个请求,那么我们当然应该至少对此进行测试。测试我们的整体解决方案达到其所需的吞吐量。
毁灭?也许太反社会了。但是,我确实认为发送有效和无效请求并检查预期响应是否发生可能是有效且有值(value)的,如果仅作为对您正在使用的服务的健全性检查的话。所以我至少要有一个用于公共(public)服务的回归套件,这样我就可以很容易地验证它的行为是否符合记录。
关于web-services - 测试公共(public) Web 服务的客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2224845/