写点什么

模仿 Web Services

  • 2008-05-20
  • 本文字数:1368 字

    阅读完需:约 4 分钟

InfoQ 以前的一篇新闻已经涵盖了Web service 的一些测试方法。最近,这些方法通过Web Service 模仿(Web Services mocking)的使用得到了扩展。

对象模仿是一种非常流行和通用的单元测试方式。根据 Wikipedia 所说

模仿对象行为是指仿真对象以一种受控的方式效仿真实对象的行为……模仿对象可以模拟复杂、真实对象的行为,因此当真实对象难以甚至不可能包含到单元测试中时,模仿就非常有用。如果一个对象有任何如下特征,那么在它的位置使用模仿对象可能会很有用: - 非确定性结果(例如,当前的时间或者当前的温度);

  • 具有难以创建或者重现的状态(例如,一个网络故障);
  • 很慢(例如,一个完整的数据库,测试之前必须初始化它);
  • 尚不存在或者行为可能会被改变;
  • 包含一些测试专用的信息和方法(这些信息和方法对它的真正任务没有用)

Web Service 引入了一些额外的场景,非常适于使用模仿方式:

  • 必须书写依赖某个或者某些远程 Web service 的程序,但是这些服务正运行在生产服务器上,在测试服务器上还没有准备好;亦或第三方服务运行在客户防火墙之后,无法测试;
  • 离线开发(例如在家里或者在路上)可能会需要一组完整的、能够工作的离线 Web Service 才可能测试一个实现;
  • 在远程 Web Service 可能无法访问或者无法始终保持运行的情况下进行离线演示。确保演示在以上各种情况下都能顺利进行是很有必要的。

Upul Godage 写的一个新的教程描述了如何使用Apache Synapse 来为开发和测试模仿web services。Apache Synapse 是一个简单、轻量级、高性能的企业服务总线(ESB)。Apache Synapse 可以用来过滤、转换、路由、操作和检测那些可以通过HTTP、HTTPS、Java™ 消息服务(JMS)、简单邮件传输协议(SMTP)、第3 版邮局协议(POP3)、FTP、文件系统以及很多其它传输媒介传输的SOAP、二进制、XML 以及普通文本格式的消息。

教程描述了如何使用Synapse 来定义那些固定或受控的服务响应,步骤涉及使用简单的XML 配置文件,定义转换,为一个(组)给定请求构建响应。它还描述了使用相同的基于配置的方式模仿仲裁(mediator)的方法。

另一个模仿Web Services 的途径是使用Crosscheck Networks 最新发布的 SOAPSimulator 。它的功能与 Synapse 提供的相似,但还包含如下的额外功能:

  • SOAP 和 XML 模拟过程的图形化。

  • 详尽的 WSDL 和 XSD 模式支持。

  • 从模拟实例动态地检索 WSDL 和模式。

  • 实时仿真事务监测。

  • 根据企业最佳实践进行度量的 WSDL 和 XSD 报告卡片。

  • 可定制的运行时消息掌控分析规则。

  • 多并发服务模拟。

  • 包含运行时变量状态机的复杂业务逻辑模拟。

  • 支持 WS-Security 和 WS-Identity 可扩展性。

  • 支持数据库和 API 插件可扩展性。

Crosscheck Networks 还提供了一个关于产品使用的详细教程

正如其白皮书——《使用服务仿真加速你的 SOA 项目》——中定义的那样:

在满足所提出的业务目标的过程中,构建和部署服务的紧密时间压力给 SOA 项目留下了很小的犯错空间。在 IT 预算面临持续压力,紧张的最后期限,以及在商业伙伴的内部及之间集成系统的驱动下,SOA 项目需要在它们的环境中引入服务模拟。服务模拟解耦了消费者和生产者之间的依赖,使它们能够相互独立地实现。Web Service 模仿解决方案为开发者提供了一个“盒装参考系统”,并消除了那些为了构建一个完整规模的生产系统的副本所需的开销,这能使开发者受益。

查看英文原文 Mocking Web Services

2008-05-20 03:381509
用户头像

发布了 29 篇内容, 共 52248 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

第九周-总结

jizhi7

不讲码德!坏味道偷袭我这个老码农

爱笑的架构师

Java 代码审查 代码坏味道 代码规范 七日更

甲方日常 71

句子

工作 随笔杂谈 日常

Docker

云淡风轻

余额和核心信息数据安全分享

冬天的秘密

加密 防篡改 数据隐私

如何坚持做一件事情

熊斌

个人成长 七日更

第13周

袭望

生产环境全链路压测建设历程 16:淘宝网高可用历程的总结

数列科技杨德华

全链路压测 七日更

互联网已经干得很好的事情,不应该是区块链干的

CECBC

区块链 互联网

架构师训练营第十一周作业

文智

极客大学架构师训练营

【STL 源码剖析】浅谈 STL 迭代器与 traits 编程技法

程序员贺同学

c++ 后端 迭代器模式 源码剖析 stl

架构师 3 期 3 班 -week5- 作业

zbest

作业 week5

66把锁的门禁系统,告诉你区块链的特点

CECBC

区块链

学习总结-week13

张荣召

今天发的被删了,不是我没写

lidaobing

28天写作

我们该如何正确的中断一个线程的执行??

冰河

并发编程 多线程 高并发 中断线程 签约计划第二季

十日谈:我的 2020

escray

2020 七日更 十日谈

还在用ELK? 是时候了解一下轻量化日志服务Loki了

京东科技开发者

DevOps 云原生 日志监控

如何守护数据安全? 这里有一份RDS灾备方案为你支招

京东科技开发者

数据库 云数据库

权限系统的基本概念和架构

程序那些事

权限系统 程序那些事 SSO 权限架构 权限认证

DBA 的效率加速器——CloudQuery v1.3.0 上线!

BinTools图尔兹

数据库 运维 开发 dba

程序员告诉你:C/C++后台开发需要学习哪些技能书

赖猫

c++ Linux 后台开发

欧盟推出新数字法案,会是一场“锄强扶弱”的数字监管变革吗?

脑极体

【Java入门】String,StringBuffer和StringBuilder

Albert

Java 七日更

阿里P8手把手教你!微信小程序的事件处理,安卓系列学习进阶视频

欢喜学安卓

android 程序员 面试 移动开发

TypeScript | 第一章:环境搭建及基础数据类型

梁龙先森

typescript 大前端 七日更

创业感悟 | 2021是继续打工还是选择创业?

程序员潘Sir

创业

架构师 3 期 3 班 -week5- 总结

zbest

总结 week5

第九周-作业

jizhi7

Android知识体系大纲!Android平台HTTPS抓包解决方案及问题分析,年薪50W

欢喜学安卓

android 程序员 面试 移动开发

深度剖析原理!2020年Android网络编程总结篇,已开源

欢喜学安卓

android 程序员 面试 移动开发

模仿Web Services_SOA_Boris Lublinsky_InfoQ精选文章