gpt4 book ai didi

testing - 通过记录和回放方法的调用方式自动生成测试

转载 作者:行者123 更新时间:2023-11-28 20:34:29 24 4
gpt4 key购买 nike

这里有一个我认为应该存在的程序:当一个应用程序运行时,它会自动记录对所有方法的所有调用。然后它会根据每次调用创建一个测试。 (这样的测试可能被称为单元测试,但我在这里不这样做,因为存在捕获状态的问题。)

对于一个典型的应用程序,该程序会在使用几次后自动生成成千上万的测试。

这个程序存在吗?如果不是,为什么不呢?有没有类似的程序?

该程序的更复杂版本将执行以下操作:

  1. 它会重新组合来自多次调用以创建新测试。例如:调用一个方法(1,A) 和 (2,B)。该实用程序将生成调用的单元测试方法与 (1,B) 和 (2,A)。
  2. 这会扰乱创建新测试的调用。例如:用两个整数 (1,2) 调用一个方法。此实用程序将创建使用 (0,2)、(1,3)、(0,3) 等调用方法的测试。

我很感激这样一个实用程序生成的一些测试是不正确的。不过,我认为这样的实用程序会非常有用,尤其是在测试遗留应用程序时。

最佳答案

有类似的工具,但它们都是基于捕获用户输入并重放它。

您描述的 IMO 不是很有用,因为以这种方式生成的测试不会测试期望行为,而只是测试现有行为。就算错了。即使它是一个微不足道的实现细节。这些测试将极其脆弱且极其冗余 - 即它们将缺乏自动化测试的两个最重要的属性:稳定性和独立性。

应用程序中的任何更改,任何重构,都会导致数以千计的测试失败。最终结果要么是一个被遗弃和忽略的测试套件,要么是一个应用程序被及时卡住,没有人能够激发以任何方式进行更改的动力,因为它需要 10 倍的工作来调整测试用例。

It would perturb the calls to create new tests. For example: A method is called with two integers (1,2). This utility would create tests that call the method with (0,2), (1,3), (0,3), etc.

该工具如何知道这些生成的调用应该产生什么效果? Fuzz testing是一个类似的概念,但不测试应用程序的正确性,仅测试缓冲区溢出和类似灾难性错误的情况。

关于testing - 通过记录和回放方法的调用方式自动生成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1103833/

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