3

我想使用随机 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>

谢谢

4

1 回答 1

0

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

您可能会更幸运地编写一个过滤器来区分遵守您所考虑的约束的示例和不遵守约束的示例(因此您可以生成 100 个示例并运行过滤器以找到可用于您的目的的示例),或者采用任意示例并对其进行更改以满足您的约束的转换。

于 2012-12-08T01:21:32.690 回答