软件测试人员的技术性思考-从SDO谈起

发表于:2013-6-28 16:04

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

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

  理解SDO的实现

  我们没有实现规范定义的所有内容

  ChangeSummary、sequence、静态接口API等功能我们没有实现

  SDO的实现关键点

  我们抛开SDO的API不谈,因为我们不是从接口的角度来分析SDO的实现。我觉得SDO的实现主要包括如下的内容:

  1、数据类型转换

  简单类型转换、普通的JavaBean转化为SDO等等,这是SDO能被用来处理异构系统之间数据传输的能力必要的基础

  2、XPath访问

  xpath大家很熟悉了,但特别的地方是实现对JavaBean对象使用xpath形式进行访问

  3、序列化

  SDO要在网络间传输,就要实现序列化;普通的Java对象实现序列化是非常简单的,只要声明实现java.io.Serializable就可以了。但SDO实现的是Externalizable接口,类完全负责序列化和恢复数据成员。

  4、数据更新(增、删、改、查)

  SDO本身是一个Tree形结构的,每个枝干、叶子节点都要能访问到

  5、特别属性的支持,如readonly属性、动态属性(OpenContent)的支持、约束

  readonly对数据更新有许多限制

  OpenContent对应的是xsd中定义的anyType属性类型,它能放置任何java对象,如果xsd中如果定义了约束,在将其转为SDO对象实例后,需要支持这种约束,但需要注意的是:这种约束只有在调用Validate的方法之后才会起作用,例如你定义某个字段的长度为10,在使用中之间set为20,普元的SDO实现不会进行检查这中约束,但调用SDOUtil.Validate方法来校验的时候,就能检查到这种冲突。

  6、动态数据API的支持

  动态API使用的定义是common.sdo.DataObject类,使用studio的属性编辑器的时候可以看到。

  7、异常处理

  SDO规范中详细定义了数据运算的行为,当出错时该抛出什么异常,实际测试中我们发现抛出的异常都没有遵循规范来做

  测试时该重点考虑的地方

  1、数据类型及其兼容性的转换

  这不用说大家应该都知道,这是基本功能,也是实现其它特性的基础。如果从定义业务流(好像被改为了逻辑流?)/页面流的角度考虑,就是利用属性编辑器的时候要考虑,SDO的数据类型与Java类型的映射关系

  2、复杂xpath的支持

  包括xpath多层、对象多层自引用嵌套;xpath的下标带数组形式

  3、对象的序列化/反序列化

  前面提到,SDO序列化实现的是Externalizable接口,类完全自己负责序列化和恢复数据成员,因此这应该是个测试的重点,如果从使用的角度来考虑,ajax调用会使用到这方面的功能;此外这会带来安全性的问题,例如:一个远程调用,当恶意的客户端返回一个与服务器端不同版本的序列化对象时,如果不妥当处理,会抛出ClassCastException,严重时会导致系统崩溃;还有恶意类读取和写入对象数据,造成敏感信息泄漏等等。不过目前SCA的版本似乎关注的安全性不多,安全性的问题似乎可以放一放,不过将来会应该会出的,就像出来了WS后,要加一个WS-Security一样。

  还有,要考虑被测的SDO对象应包含所有的Java基本数据类型及其数组形式、复杂对象及其数组形式。

  4、opencontent属性的支持

  opencontent属性就是xsd文件中定义的anyType了,需要注意的是由于opencontent属性的特别性,目前的实现保存opencontent属性是一个SDO对象共用一个List来保存的,而不是每个枝干、叶子节点下建一个。这种实现中比较特别的地方,可能会造成并发访问时出问题。实际测试中我们可以在页面流/逻辑流中大量地操作一个有opencontent属性的SDO对象,来模拟这种情况的发生。

  上述的描述可能展开的不够,如果有兴趣,不妨再进行更详细的探讨,就先介绍到这吧。

22/2<12
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • lilinyuliyang
    2014-9-10 16:42:53

    为什么木有最新的 都是去年的东西了

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号