gpt4 book ai didi

java - 自动测试以检查 XML 输出

转载 作者:行者123 更新时间:2023-12-02 12:42:25 24 4
gpt4 key购买 nike

现状:我们的软件(后端用 Java 编写)具有生成 XML 文件的功能,其中包含系统中存储的数据。为了描绘出更好的画面,该文件返回了员工数据,例如他们的个人详细信息、资格、医疗状况和工作可用性。

但是,没有一个标准文件结构可以返回所有内容。返回的内容取决于公司类型、一年中的时间以及针对员工存储的某些数据。例如,如果公司是一家私有(private)有限公司,则不会返回医疗状况,仅在冬季返回资格,仅在员工达到一定年龄时才返回工作可用性数据,等等。这使得测试具有挑战性,因为需要测试许多场景以确保 XML 文件在不同情况下正确。

XML 结构的更改是由使用这些文件的第三方软件驱动的,这些更改似乎每年每个季度都会发生。目前,测试根本不是自动化的,我们发现自己做了很多手动测试。每次发生变化时,我们都会:

  • 通过 UI 生成测试数据
  • 生成 XML 文件
  • 检查 XML 文件的结构是否正确
  • 检查 XML 文件中返回的数据是否正确
  • 针对每种公司类型的不同场景重复上述操作

目标:理想情况下,我们希望能够自动化大部分(或至少部分)测试,XML 的结构经常更改,并且测试它非常耗时。

虽然第三方提供了 XSD,但由于导出的性质和 XSD 的限制,使用它来验证 XML 结构很困难。数据导出根据返回的某些数据而变化,并且 XSD 没有办法说“如果……返回此数据……否则不返回任何内容”。

对各个导出方法进行单元测试正在进行中,并且是长期目标的一部分。为了正确编写单元测试,我们必须重构(大量)代码,而我们目前正在为这些代码而苦苦挣扎。然而,我们正在为任何新的开发尝试这一点。

我们希望在短期内进行一些改进。我正在考虑编写一些数据库脚本来输入不同公司类型所需的数据,这些数据将在一个单独的测试模式上创建,其中每次都会清除以前的数据。原因是,脚本将包含日期变量,因此每年我运行这些测试时,我总是会得到一名具有出生日期的员工,这将触发数据导出。创建导出后,会将其与第三方文档提供的示例文件结构进行比较。当然,对于新的更改总是需要进行手动测试。

这个方法听起来合理吗?这样做还有其他选择吗?

最佳答案

我觉得你的方法很好!我可以建议您使用一些工具来自动化仅使用 java 描述的一些步骤:

  • Generate the test data through the UI

您可以使用类似 dbunit 的工具提取使用 UI 创建的场景。您可以使用java清除数据库并插入数据!

  • Generate the XML file
  • Check that the structure of the XML file is correct
  • Check that the data returned in the XML file is correct
  • Repeat above for the different scenarios for each company type

我认为所有这些步骤也可以在 Junit 中完成。

在 Junit 中,可能是这样的:

class XmlSpecification {

@Before
void setup() {
// You have to implement for your specific database
this.clearDatabase()
}

@Test
void forCompanyABCTheXmlShouldBeLikeThis() {
// This method would use some dbunit api to insert data to the
// db
this.loadScenarioFor("company_abc_data.xml")
// Then you get the xml, validate the format and the data and etc...
}
}

关于java - 自动测试以检查 XML 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44890877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com