Automated tests 如何测试需要复杂输入数据的程序?

Automated tests 如何测试需要复杂输入数据的程序?,automated-tests,regression-testing,Automated Tests,Regression Testing,我们有一套转换器,用于获取复杂数据并进行转换。大多数情况下,输入是EDI,输出是XML,反之亦然,尽管还有其他格式 数据中存在许多相互依赖关系。有哪些方法或软件可以生成这样复杂的输入数据 现在我们使用两种方法:(1)我们多年来构建的一套样本文件,主要来自文档中的文件bug和样本;(2)生成伪随机测试数据。但前者只覆盖了一小部分情况,而后者有很多折衷之处,只测试了字段的一个子集 在进一步实施(重新发明?)复杂的表驱动数据生成器之前,您发现哪些选项成功了?答案在您的问题中。除非实现复杂的表驱动数据生

我们有一套转换器,用于获取复杂数据并进行转换。大多数情况下,输入是EDI,输出是XML,反之亦然,尽管还有其他格式

数据中存在许多相互依赖关系。有哪些方法软件可以生成这样复杂的输入数据

现在我们使用两种方法:(1)我们多年来构建的一套样本文件,主要来自文档中的文件bug和样本;(2)生成伪随机测试数据。但前者只覆盖了一小部分情况,而后者有很多折衷之处,只测试了字段的一个子集


在进一步实施(重新发明?)复杂的表驱动数据生成器之前,您发现哪些选项成功了?

答案在您的问题中。除非实现复杂的表驱动数据生成器,否则使用(1)和(2)是正确的

(1) 涵盖“1个错误已验证,1个新测试用例”的规则。 如果(2)的伪随机测试数据的结构符合现实生活中的任何情况,那么就可以了

(2) 在考虑新的边缘情况时,它总是可以改进的,并且主要会随着时间的推移而改进。用于测试的随机数据的问题是,它只能是随机的,以至于很难计算测试用例中随机数据的预期输出,因此您必须在测试用例中重写测试算法

所以(2)总是匹配一小部分情况。如果有一天它匹配所有的情况,它实际上将是你算法的新版本

  • 我建议不要使用随机数据,因为如果不是不可能重现报告的错误,也可能会造成困难(我知道你说的是“伪随机”,只是不确定你的确切意思)

  • 对整个数据文件进行操作可能需要考虑功能或集成测试。我建议您将已知bug的文件集转换为单元测试,或者至少对将来遇到的bug这样做。然后,您还可以扩展这些单元测试,以包括您没有任何“样本数据”的其他错误条件的覆盖范围。这可能比每次想到要检查的条件/规则冲突时都提供一个全新的数据文件更容易

  • 确保数据格式的解析是从格式中的数据解释封装的。这将使如上所述的单元测试更加容易

  • <> LI>

    如果您确实需要驱动测试,您可能需要考虑获得文件格式的机器可读描述,并编写一个测试数据生成器,根据该格式分析格式并生成有效/无效文件。这也将允许您的测试数据随着文件格式的变化而变化


    1.它实际上是伪随机的;它是随机生成的,但在运行之间是固定的。2.通常遇到的问题主要是由交互作用引起的。3.EDI解析器是一个单独的步骤,XML解析器也是。两者都以中性内部格式写入。因此,解析器在逻辑上是分开的。4.是 啊当然,如果我们使用与解释测试数据相同的字典来生成测试数据,我们就会遇到问题。因此,使用/找到一个不同的算法将是有价值的;它使我发笑。我希望有人知道现有的测试数据生成器。。。