写点什么

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

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

关注

评论

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

开发技术指南 | 最全 Substrate 与 Polkadot 技术文档、教程、课程

One Block Community

区块链 技术 波卡生态

架构实战营 第 6 期 模块七课后作业

火钳刘明

#架构实战营 「架构实战营」

软件开发模型有哪些?

源字节1号

软件开发

能够发现零日漏洞模糊测试威力几何?

极狐GitLab

security DevSecOps

【LeetCode】单词长度的最大乘积Java题解

Albert

LeetCode 5月月更

Serverless JOB | 传统任务新变革

Serverless Devs

Serverless SAE

在进行行情 tick 数据存储时,哪种数据结构查找起来更快?

TDengine

数据库 tdengine 时序数据库

新思科技探究保护供应链安全需要考虑的六个因素

InfoQ_434670063458

软件 新思科技 软件供应链

名师开团,倾力指导!CCF GitLink 编程夏令营来袭,亚马逊云科技开源专家携丰厚奖金,与你相约!

亚马逊云科技 (Amazon Web Services)

亚马逊云

低代码构建物联网平台,让物联网项目更简单

AIRIOT

物联网 低代码开发

2022云原生安全发展24个洞见

青藤云安全

网络安全 容器安全 镜像安全

Apache APISIX v2.14.1 探索性版本发布,进军更多领域

API7.ai 技术团队

服务注册与发现 API网关 Apache APISIX APISIX 网关

集成底座项目实施规程

agileai

主数据管理 集成底座 企业服务总线 项目实施 统一身份

昆仑芯科技加入龙蜥社区 ,赋能智慧开源,共筑AI芯生态

OpenAnolis小助手

芯片 龙蜥社区 CLA 昆仑芯科技

影视作品制作中不可或缺的技术支撑——云渲染技术

Finovy Cloud

服务器 云渲染 GPU算力

phpstorm 配置 Xdebug 调试

CRMEB

2022年第1季度中国跨境进口零售电商市场规模为983.1亿元

易观分析

跨境电商

陆奇:“黑客精神”过时了吗?答案是永远不会

图灵教育

nginx 程序员 服务器 计算机

第一次读 “Clean” 系列,并没有觉得这是一本多好的书

博文视点Broadview

手把手教你打造一套最牛的知识管理系统

小炮

国内首个纯数字藏品元宇宙世界“ADAMeta”星城宇宙开启公测

最新动态

GitHub 3.1K,业界首个流式语音合成系统开源!

百度开发者中心

AI+工业互联网:百度AI专利讲述“中国智造”

百度开发者中心

视频直播技术干货:一文读懂主流视频直播系统的推拉流架构、传输协议等

JackJiang

实时音视频 直播技术 即时通讯IM

Docker容器:将带UI的程序直接转为Web应用,so easy

华为云开发者联盟

云计算 后端 Docker容器 Web应用

解读ICDE'22论文:基于鲁棒和可解释自编码器的无监督时间序列离群点检测算法

华为云开发者联盟

数据挖掘 数据库 时间序列 自动编码器

银行应将低代码能力作为在评估厂商综合能力的一个维度

易观分析

低代码 银行

查询语句写了limit 1,为什么依然很慢?

华为云开发者联盟

后端 开发 计算引擎 limit 1

全自动、可视化开发,成为敏捷转型落地关键词

飞算JavaAI开发助手

深入浅出Nginx实战与架构原理

C++后台开发

nginx 架构师 后端开发 Linux服务器开发 C++后台开发

七天玩转 PolarDB-X 开源训练营 完成任务更有AirPods大奖等你拿!

阿里云数据库开源

数据库 阿里云 开源 分布式 PolarDB-X

模仿Web Services_SOA_Boris Lublinsky_InfoQ精选文章