Web services 测试公共web服务的客户端

Web services 测试公共web服务的客户端,web-services,language-agnostic,testing,client-side,cloud,Web Services,Language Agnostic,Testing,Client Side,Cloud,测试公共web服务的自定义客户端的方法有哪些 今天有许多在线服务提供API。使用这些API的小应用程序数量激增。例如:社交网络和博客平台的桌面/移动客户端、文档存储和处理中心、云数据库、实时数据流、GIS数据等 问题在于,此类应用程序中的非平凡部分通常与在线服务通信(处理错误、编码/解码数据、处理配额、调整API更新等),但客户机的开发人员并不控制服务。因此,我们无法直接看到测试的效果,也无法始终将服务的状态回滚到原始状态 你如何设计你的客户测试是可复制的 你测试什么行为 如何测试破坏性或重载

测试公共web服务的自定义客户端的方法有哪些

今天有许多在线服务提供API。使用这些API的小应用程序数量激增。例如:社交网络和博客平台的桌面/移动客户端、文档存储和处理中心、云数据库、实时数据流、GIS数据等

问题在于,此类应用程序中的非平凡部分通常与在线服务通信(处理错误、编码/解码数据、处理配额、调整API更新等),但客户机的开发人员并不控制服务。因此,我们无法直接看到测试的效果,也无法始终将服务的状态回滚到原始状态

  • 你如何设计你的客户测试是可复制的
  • 你测试什么行为
  • 如何测试破坏性或重载行为?(反对公共服务)
  • 您是否自动运行此类测试(例如作为预提交挂钩)
  • 您如何针对异常情况(从服务下降到超过配额,到不一致状态,再到服务行为的突然变化)进行测试

非常清楚您正在测试什么。您是否正在测试您的代码在从服务接收响应时是否执行了它应该执行的操作?既正常又不寻常?然后模拟服务,以便您可以轻松地使用这些路径

是的,我会设计可重复的测试,并在某个框架下运行它们,该框架允许我自动运行它们,理想情况下也是构建/提交的一部分

但是如何测试服务本身呢。一些测试只是通过验证您的解决方案而产生的。比如重负荷。嗯,虽然重要的是不要反社会,让公共服务饱和是不合理的,如果有一个公开的SLA,那么我认为测试它是合理的。因此,如果你的应用程序预计每秒发出n个请求,那么我们肯定应该至少测试一下。测试我们的整体解决方案,使其达到所需的吞吐量


毁灭?也许太反社会了。然而,我确实认为发送有效和无效请求以及检查预期响应是否发生可能是有效和有价值的,如果只是作为对您正在使用的服务的健全性检查的话。因此,我至少会为公共服务提供一个回归套件,这样我就可以很容易地验证它的行为是否符合文档要求。

好问题!我会一直关注这个问题,直到得到答案,因为我正在集成多个服务,并研究最佳实践,以整合IOC容器和依赖注入,从而将我的应用程序与远程服务分离,并使我能够编写更好的单元测试。我指的是软件示例:博客客户端、在线数据库的查询工具,在线存储管理工具。但是我正在寻找客户端测试的一般指南。问题是服务不是我的,模拟它比编写客户端更耗时,而且我不确定模拟版本是否可靠地与真实版本相似。所谓重载,我指的不是服务本身的压力测试,但我希望客户端能够正确执行的操作可能会给服务带来沉重的负担(请考虑通过API在所有博客帖子中更改一个单词或收集统计数据)。通过破坏操作,我指的是不可逆地改变服务状态的操作(如删除帐户或其部分数据),从而阻碍进一步的测试(因此不会中断服务本身!)使用模拟框架编写模拟并不像您想象的那么多工作。作为一般模式,使用mock而不是针对真实对象的集成测试来对客户机进行单元测试往往是一种非常有用的技术。嘲讽可以让你很容易地检查客户的行为,难以复制的反应。谢谢DJNA,我会考虑嘲笑服务下一次。