对DWR进行接口测试的一些想法和实践

发表于:2013-4-17 10:08

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:丰羽    来源:51Testing软件测试网采编

  最近研究了一下dwr的自动测试方案。在这里抛砖一篇博文。

  dwr的协议,还是基于HTTP的。客户端一般会使用POST方法来提交内容给服务器端,服务器端从POST内容里面获知客户端想调用服务端的哪个方法,哪些参数。服务端执行这个方法后,把结果响应给客户端。

  以下是一段例子:

callCount=1
scriptSessionId=${scriptSessionId}187
c0-scriptName=AlbumBean
c0-methodName=deleteAlbum
c0-id=0
c0-param0=number:250497656
batchId=481523

  这里可以很清楚的看到,POST的内容里面指定了要访问的是AlbumBean中的deleteAlbum方法,参数是number类型的250497656。其他什么batchId,scriptSessionId,c0-id, callCount等,大多数情况下都是固定的那几个值。

  那我如果要写代码自己来提交这个HTTP请求,就必须把调用的Bean、方法名,还有参数,以及参数类型都按照这个格式进行包装。

  如果再进一步,参数类型都是可以通过js的typeof来自动获取。

  然后我的思路是:用java写引擎,负责http传输。用js来接受调用,自动获取参数格式,然后把Bean、方法名,还有参数,以及参数类型发给java引擎,把这些内容组织好post出去。

  我们再来看看服务端响应的内容:

//#DWR-INSERT
//#DWR-REPLY
var s0={};s0.cDocId=-1;s0.coverStorageType=0;s0.createTime=1329811796415;s0.creatorUserId=9552463;s0.curl="http://d1.bst2.126.net/style/img/m/album/none160.gif";s0.description="\测\试\一\下";s0.id=250514017;s0.name="\测\试\一\下";s0.photoCount=0;s0.privacy=0;s0.resourceId=9552463;s0.status=0;s0.type=0;s0.undeletable=false;s0.updateTime=1329811796415;
dwr.engine._remoteHandleCallback('997381','0',{albumId:250514017,album:s0,code:100});

  这段内容可以分三段看:

  第一段,是两行申明,一般都固定

  第二段,是第三行,是js格式的一段语句,这段语句用js的语法定义了一个js对象

  第三段,最后一行,调用了dwr的引擎中的某个方法,参数是json格式的

  由于这段内容比较复杂,js格式内容也有,json格式的内容也有,如果想自己写程序获取完整内容,得用些特殊的手段。

  我的思路是:这整段返回内容,进行一些简单处理后,直接转化成js的代码,然后用eval来执行这段代码,返回一个js的对象。然后这个js对象转成HashMap,java程序里就可以直接调用了。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号