加载中…

加载中...

个人资料
人月神话
人月神话 新浪个人认证
  • 博客等级:
  • 博客积分:0
  • 博客访问:4,204,775
  • 关注人气:5,928
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

谈SOA服务消费模拟

(2012-06-09 21:07:43)
标签:

soa

服务

模拟

it

分类: 随笔文章
服务消费模拟和服务提供模拟不同,服务消费模拟核心是想解决服务的自动化测试问题,在这里我们看到对于服务提供端暴露的服务,我们已经可以采用Junit来实现单元测试和自动化测试。但是这种方法存在的问题仍然是对于每一个新增加的服务,我们都需要编写大量的单元测试代码,模拟和准备相关的数据。

Junit单元测试的重点本身就是一种服务连通性测试和冒烟测试,而不是对于服务所使用到的所有业务场景覆盖的完整功能性测试。因此我们考虑的重点就是是否可以实现一个对于所有服务新增都适合的通用Junit单元测试代码。对于新增加服务的时候,我们只需要配置相应的参数信息就可以实现对所有新增加服务的自动化测试。

基于以上的思考,还是回到对于SOAP WebService的调用场景来分析,对于这种场景传统模拟方式如下:

1.采用CXF等Web Service相关框架生成服务消费端代码。
2.在客户端代理框架文件里面,手工编写相应的代码对服务进行消费。
3.通过引入Junit框架,对消费情况和结果进行验证。

在通用模式下面可以看到,我们可以把CXF对代理类的生成也打包到服务消费模拟器里面。也可以是通过CXF框架先生成服务消费端代码,然后根据相应的实体类文件再自动生成服务消费代码,自动模拟相应的测试数据,然后自动集成Junit框架进行单元测试和自动化测试。

由于每一个服务有严格的服务规范和服务契约,我们对规范和契约的解析完全可以拿到完整的服务Request和Response的结构定义,因此根据对schema的解析拿到输入需要的数据结构,根据数据结构来造模拟数据,模拟数据造完后对服务进行调用接收返回,通过Response结构对返回值进行验证和确认。

IBM网站有一篇文章专门在谈服务自动化测试的问题,对于 SOA 的功能测试我们要分三层的测试:第一层是用 RFT(Rational Functional Tester)进行 UI 界面层的测试;第二层和第三层是用 Junit 进行 Business Process 层和 Service 层的测试。性能测试方面,用 RPT(Rational Performance Tester)进行 UI 界面层的测试,而 RPT for SOA 用 Business Process 层和 Service 层的性能测试。具体地址如下:

服务自动化测试:http://www.ibm.com/developerworks/cn/webservices/lp/cbs/
开源WebService测试工具说明:http://voll588.iteye.com/blog/1155853

对于SOAPUI或LR我们看到都可以对服务测试的脚本进行录制和脚本,而我们始终关心的都是对于脚本录制过程可以一次完成。脚本录入的内容需要参数化,同时录制完成的内容可以自动执行和自动验证。否则无法真正做到我们需要的自动化测试。

0

阅读 收藏 转载 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有