xml - 如何生成语义上有效的随机 xml 文件?

标签 xml xsd random-testing oxygenxml

我想使用随机 xml 生成器工具,以便通过从 xsd 生成随机 xml 文件来执行随机测试。 (我正在使用氧气工具)

随机生成器不会对生成的值应用语义限制。例如,我有一个元素“parameters”,它有多个元素“parameter”,例如 p1 和 p2,另一方面我有另一个元素“constraint”,它将使用“parameter”。我的意思是如果我有 P1, P2 ,它应该使用 p1 和 p2 的子集。我想强制随机生成器工具使用它们(p1 和 p2),而不是再次为约束随机生成一些其他参数。我使用了“key”、“keyref”和..但它仍然不起作用。 它只是在任何地方生成随机字符串而没有任何限制,我不得不提到我选择了选项“元素和属性的值:随机(应用限制)”所以它应该在生成随机值时考虑限制但它没有!请帮助..

有效 XML 的示例:

 <system>
         <parameters>
             <parameter id="1" name="p1" >
                  <value id="1" name="value1"/>
                  <value id="2" name="value2"/>
              </parameter>
              <parameter id="2" name="p2" >
                  <value id="1" name="value1"/>
                  <value id="2" name="value2"/>
              </parameter>
          </parameters>
          <constraint text="p1=p2">
               <parameter name="p1"/>
               <parameter name="p2"/> 
          </constraint>
       </system>

所以我想要使用已经生成的参数子集(p1 和 p2),正如您在上面的示例中看到的,而不是生成一些其他随机参数,因为这样所有生成的 xml 都是无效的,我想要一个有效的。

无效 XML 的示例:

   <system>
         <parameters>
             <parameter id="1" name="p1" >
                  <value id="1" name="value1"/>
                  <value id="2" name="value2"/>
              </parameter>
              <parameter id="2" name="p2" >
                  <value id="1" name="value1"/>
                  <value id="2" name="value2"/>
              </parameter>
          </parameters>
          <constraint text="**p3**=**p5**">
               <parameter name="**p8**"/>
               <parameter name="**p9**"/> 
          </constraint>
       </system>

谢谢

最佳答案

一般来说,检查身份约束会使文档生成任务变得更加复杂。 (我相信我曾经看到过一个声明,它使它成为 NP 完整的,但我可能误解了。)所以我怀疑你是否会很幸运地告诉 Oxygen 的示例文档生成器遵守你想到的约束;大多数生成器满足于生成满足内容模型的数据。

你可能更幸运地编写了一个过滤器来区分遵守你想到的约束的例子和不遵守约束的例子(这样你就可以生成 100 个例子并运行过滤器来找到对你的目的有用的例子),或采取任意示例并对其进行更改以满足您的约束的转换。

关于xml - 如何生成语义上有效的随机 xml 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13612882/

相关文章:

ruby-on-rails - 错误的状态行 : "&lt;!DOCTYPE HTML PUBLIC\"-//IETF//DTD HTML 2. 0//EN\">"

java - 通过 jar 文件进行 SAX 解析声明 XML 文档无效

xml - 如何在 XML 模式中定义用户定义数据类型?

java - 处理 XSD 生成的类的多个版本

c++ - 多次调用单个测试 - Google 测试

在 Maven 构建单元测试中(在 Windows 上),Java XMLStreamWriter 将 '£' 序列化为不同的字节数据

php - 如何使用magento2中的自定义模型将数据保存到自定义表

xml - dp :serialize and escaping on ibm datapower