写点什么

模仿 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:381485
用户头像

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

关注

评论

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

还有人不知道鸿蒙智联设备认证咋搞?|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

盘点分布式软总线数据传输技术中的黑科技|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

阿里一面灵魂一问:RPC或者HTTP什么时候需要序列化和反序列化?

热爱java的分享家

Java 架构 程序人生 编程语言 经验分享

Linux一学就会之Linux详细基本命令操作

学神来啦

bash Linux centos 运维 Shell

3分钟教你如何在github上精确的找开源项目?

热爱java的分享家

Java 架构 程序人生 编程语言 经验分享

Linux学习方法,《Linux一学就会》教你如何学习Linux

侠盗安全

Linux 运维 linux运维 云计算架构师 linux电子书

《新程序员》走进微软亚洲研究院

刘旭东

微软 hololens

智能楼宇管理系统开发,智慧楼宇管控系统开发

电微13828808271

spark2.0笔记

Clarke

Java开发之集成开发环境

@零度

JAVA开发 Java学习 IED

面试官问:mysql中时间日期类型和字符串类型的选择

华为云开发者联盟

MySQL timestamp 时间日期 字符串类型

【Pandas学习笔记02】处理数据实用操作

恒生LIGHT云社区

Python 数据分析 pandas

北京朝阳区有正规等保测评公司吗?联系电话多少?

行云管家

网络安全 等保测评 朝阳区

HBase 调优详细剖析

五分钟学大数据

11月日更

35岁程序员创业,为何选择云原生赛道

行云创新

云计算 创业 程序员 云原生 CEO

Java 项目中使用 Resilience4j 框架实现故障隔离

码界行者

Java Resilience4j Bulkhead 故障隔离

拿捏这10点,玩转云原生应用

BeeWorks

Remix.run 新手教程

程序员铮铮

JavaScript 大前端 React SSR 教程分享

质量基础设施“一站式”服务信息平台建设,NQI一站式线上搭建

电微13828808271

自动驾驶汽车的安全架构体系 易筋 ARTS 打卡 Week 77

John(易筋)

ARTS 打卡计划

连续 14 年!IBM 荣获 2021 年 Gartner 主存储魔力象限领导者

BeeWorks

大会回顾丨游戏用户体验优化如何实践,看大咖怎么说(附PPT下载)

WeTest

大数据开发之如何用Scala进行spark开发

@零度

scala 大数据 spark

这才是Springboot事务创建流程的正确打开方式(附源码分析!)

热爱java的分享家

Java 架构 程序人生 编程语言 经验分享

Hadoop企业级生产调优手册(一)

大数据技术指南

11月日更

鸿蒙智联生态服务平台——智能硬件伙伴的最佳拍档|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

TMF国际大奖技术揭秘:5G智能动态步长

鲸品堂

5G 计费模式 通信运营商

前端开发环境搭建在内网是如何搭建的

@零度

大前端

50强诞生!2021 OceanBase 数据库大赛百所高校争霸!

OceanBase 数据库

数据库 开源 开发者 比赛 oceanbase

淘宝客户端安全生产体系建设

阿里巴巴终端技术

ios android 淘宝 客户端 安全生产

安全架构|云安全框架及虚拟化技术

明亮安全观

云计算 网络安全 云安全 安全架构

模仿Web Services_SOA_Boris Lublinsky_InfoQ精选文章