xml - 模式 (xsd) 等效性的回归测试

标签 xml validation xsd schema testing

我正在考虑重写其中包含许多独立复杂类型的模式,将其改写为复杂类型更明智地扩展其他基本类型的模式。这样做的基本原理部分是概念性的——因为这些类型中的大多数是具有明确层次结构的域对象的特定实例——部分是实际的,因为我们使用 JAXB 生成的类来处理 XML 读取逻辑,并且不可能编写无需反射或大量 instanceof 和转换的通用功能方法。呸。

所以我的主要问题是是否有人知道测试两个 XSD 架构的功能等效性的好方法?如果我正确地执行了这个模式重构,那么被认为有效的文档集对于两个模式应该是完全相同的,尽管文件本身会非常不同。这听起来像是测试框架可以提供帮助的事情;我知道有一些工具可以为 JUnit 测试建议测试输入,我想知道是否有任何工具可以生成边缘案例 XML 文档来测试新旧模式的有效性?

顺便说一句 - 如果这是一个糟糕的想法(或者如果有更好的选择),那么现在就阻止我。 :-)

感谢您的关注。

最佳答案

经过一些调查,我发现了 Liquid XML Sample Generator ,这听起来正是我要寻找的东西(虽然我不确定相当这对于测试边缘情况有多好)。

我也偶然发现了SUT: XML Schema Unit Test它看起来不再被积极维护,也没有得到很好的记录,而是采用了一种更具编程性的方法来定义给定模式的有效或无效 XML 文档,并对其进行测试。不幸的是,测试用例似乎是线性解释的,而不是像上面的 XML 示例生成器那样排列每个不同节点的可能性。因此,虽然可以实现更好的覆盖范围,但这样做可能需要大量工作。

所以至少我有一个看起来可行的后备方案——从旧模式生成一堆文档,然后根据新模式验证它们,反之亦然。它不是确定的(好吧,单元测试永远不会确定)但是在每个方向上运行几百或几千个测试应该会给人们相当大的信心,即模式是等效的。

我仍然很乐意提供一个优雅的测试解决方案,但经过一个小时的谷歌搜索后,我并不抱太大希望存在类似的东西。

关于xml - 模式 (xsd) 等效性的回归测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1922043/

相关文章:

android - 如何在 android XML 中连接多个维度?

xml - 使用XSD验证XML……但仍然允许扩展

javascript - 无法使用PHP将数据从javascript保存到MySql

ios - ASIHTTPRequest 始终使用默认的 responseEncoding 而不是 XML 文件中提到的编码

Java、StaX 简单代码但出现解析错误、文件过早结束

ruby - Rails 4 更改标准的事件模型验证消息

javascript - 过滤文本字段数值的正确方法是什么?

javascript - AngularJS 选择必需

java - 从 XML 消息中查找模式,从 XML 生成类并在 JAVA 中反序列化

.net - xsd.exe输出文件名