我们如何为大型XML架构构建/组装测试数据?
我们需要为复杂的嵌套XML模式(xsd)构建测试数据。我们喜欢分别为每个嵌入式XSD构建测试数据,并喜欢按照主XSD的定义顺序进行组装。我们正在使用具有text / Grid / Schema视图的XMLSPY。
是否有办法获取XML模式的列表视图,该模式列出了表单中定义的序列(仅限子xsd名称),如下所示。
Main XSD
Sub XSD1
Sub XSD2
Sub XSD21
Sub XSD22
Sub XSD3
我们可以计划如何建立&汇编大型XML模式的测试数据。
在这种情况下是否还有其他方法可以构建测试数据?
答案 0 :(得分:1)
我专注于你的最后一个(和粗体问题)......并快速浏览其他人......
我不是一个XMLSPY用户......虽然我已经问了一些人,据我所知,没有开箱即用的报告可以提供你想要的东西。我知道XMLSPY有一个自动化API,我相信它可以很好地用于确切地满足需求。
从通用工具的角度来看,QTAssistant(我与之关联)有一个开箱即用的报告,可以为您提供依赖关系报告(可以导出到Excel)。下面是显示UBL 2.1.0 XSD文件依赖关系的屏幕截图。
考虑到你的要求,我相信你是在正确的道路上(组件化你的方法)......我会建议更好的角度......
根据我的经验,人们在您的场景中所犯的许多错误之一是在定义测试数据模型时专注于XSD文件布局。一般来说,XSD作者描述的XSD文件之间的关系(通过xsd:include / xsd:import)并不总是与XSD处理器相关。实际上,在不影响XSD集的完整性的情况下可能会丢失引用;多余的引用可能会导致布局中出现不必要的开销,而XSD处理器会安全地“忽略”它们。这最终意味着XSD组件之间的关系不一定与XSD文件布局所描述的关系相同。
另一个常见的错误是将测试数据放在一个模型中,该模型通过名称和/或结构以逐字方式使用XSD组件。至少根据我的经验,测试数据和XSD模型由两个不同的团队管理,具有截然不同的优先级,时间表和对技术的理解,特别是XML和XSD。这最终意味着XSD组件之间的关系不一定与项目需求文档中描述的关系相同,甚至不一定与业务领域中的关系相同:粒度可能不同,关系可能被展平或超标准化等。 / p>
将测试数据建模与XSD结合起来有一个缺点...例如,创建测试数据的人尽早(通常是XSD设计人员)需要尽可能早地需要XSD;更不用说XSD的更改(由于新的要求,合规性和错误修复等)在测试数据方面造成了严重破坏。
如果XSD已经存在,或者XSD是“模型”(而不是UML,或者其他类型的建模语言)......它可以用作“灵感来源”......将它们整合在一起在我看来,应该通过一个映射层来确保两者的解耦:你的测试数据模型与XSD所描述的一样。
这让我想到了我们推荐的方法...... XSD背后总是存在某些东西(需求等),或者采用XSD(不是其组件)描述的模型或测试数据要求。使用它来构建“规范化”数据集...例如,它可能是一堆Excel工作表,或者您最喜欢的/可用数据库中的一些表。
使用一些工具组合,这些工具将使用映射信息将规范化数据集中的数据转换为XML,理想情况下直接基于XSD,或间接(例如ORM映射)。您必须检查哪些对您有用,具体取决于您运行的平台,以及您可以使用哪些技术(我们使用XML Builder)。
例如,假设您使用客户,帐户,发票等对象。您的测试数据应该描述这一点。虽然XSD也应该排队,但它可能会使用各种其他东西,并且出于不同的原因(替换组,类型层次结构,组等,以实现可扩展性,重用,容纳XSD到代码绑定等)。重点是, XSD中提供的很多东西都支持与业务领域模型无关的各种需求,这可能会给您的测试数据模型带来负担。
更不用说对测试数据建模也可以提供一般测试模型的种子......这与(良好的)XSD要实现的更加不同。