《HarmonyOS:领航者说》技术公开课来啦,大咖分享、实战解码,不容错过 了解详情
写点什么

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

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

关注

评论

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

大厂面试必须掌握的 Linux 性能优化题

倪朋飞

Linux 面试 性能优化

Apache Flink Meetup · 上海站,超强数据湖干货等你!

Apache Flink

flink 数据湖 iceberg

无人驾驶平台,让IT没有难做的测试

鲸品堂

方法论 无人驾驶

答题拿奖两不误:华为云知乎金牌答题官,就是你!

华为云开发者联盟

程序员 华为云 知乎答题 答案 金牌答题官

FloydHub 2020年最佳机器学习书籍之一《可解释机器学习》中文版来啦!

博文视点Broadview

大厂面试必问!Android彻底组件化方案实践方法!面试总结

欢喜学安卓

android 程序员 面试 移动开发

需求分析是什么?

Simon

架构实战营

一文掌握GaussDB(DWS) SQL进阶技能:全文检索

华为云开发者联盟

sql 全文检索 华为云 GaussDB(DWS) 字段

一周信创舆情观察(3.22~3.28)

统小信uos

4K Video Downloader V6.1.50 版本正式发布

科技猫

产品 软件 行业资讯 开发日志 发布

4月日更挑战|初夏开更,新人领书

InfoQ写作社区官方

4月日更 热门活动

LiteOS内核源码分析:任务栈信息

华为云开发者联盟

LiteOS 任务栈 栈指针 LOS_StackInfo LOS_Task

阿里云:城市大脑数据智能解决方案

不脱发的程序猿

大数据 阿里云 城市大脑 数据智能解决方案 4月日更

区块链电子合同签署平台搭建,区块链电子存证解决方案

13828808769

区块链+ #区块链#

Java-技术专题-Synchronized锁的分析

码界西柚

Java synchronized

EGG NETWORK阿凡提以“自由匿名竞价”流通市场EFTalk

币圈那点事

公安合作作战指挥中心,情报分析研判系统建设

Redis 期中测试

escray

redis 学习 极客时间 Redis 核心技术与实战 4月日更

节能降耗——搭建绿色IDC能耗与管控系统

一只数据鲸鱼

物联网 数据中心 数据可视化 IDC 机房管理

年纪轻轻,为什么要搞中间件开发?“路怎么走,让你们自己挑”

小傅哥

Java 分布式 小傅哥 中间件 架构设计

有道云笔记新版编辑器架构设计(下)

有道技术团队

架构 大前端

Redis-技术专题-数据日志持久化

码界西柚

redis 持久化 aof rdb

DevEco Studio 2.1 Beta3强势来袭

Geek_283163

华为 鸿蒙 开发

有了人工智能技术,告警管理会发生什么变化?

睿象云

人工智能 事件管理

【LeetCode】笨阶乘Java题解

Albert

算法 LeetCode 4月日更

量化策略系统搭建,马丁策略交易软件

安卓开发从零开始!分析Android未来几年的发展前景,安卓系列学习进阶视频

欢喜学安卓

android 程序员 面试 移动开发

微众银行区块链开源基于Rust的Wasm合约语言框架Liquid

Patract

智能合约 rust polkadot Patract Wasm

gorm源码阅读之callback

werbenhu

Go 语言 gorm

RTC技术干货 | 音频质量评价体系那些事

拍乐云Pano

音视频 WebRTC RTC 3A算法 音频

区块链电子印章签约平台的搭建,区块链电子签约解决方案

13828808769

区块链 #区块链#

模仿Web Services_SOA_Boris Lublinsky_InfoQ精选文章