我用 Java 制作了一个遗传算法,它是一个库的形式,可以添加到多个应用程序中。在开发过程中,我做了一些可能是功能测试的(jUnit)测试,但它们没有断言,因为算法是不确定的。所以,它们不适合自动测试,当运行一段时间后你必须花时间看看解决方案。
解决方案是车辆路线,可以打印为 XLS 格式,并在必要时进行实际测试,因此您知道在那一刻要寻找什么。它们有一个距离值和一个时间值,每个示例都有一个合理的值,以及路线本身,不能有某些锯齿形,尽管有时必须有锯齿形。
我可以断言这些值在那个合理的范围内,但这些并不清楚,我不确定我不会陷入糟糕的解决方案。很高兴知道人们在做什么,或者您对此事有何看法。
编辑:澄清目标:
- 单元测试已经解决了。我可以将随机数生成代码与不同函数中的逻辑代码隔离开来,并且我测试逻辑函数,将它们从测试代码中传递给非随机数。
- 我想进行一些功能测试,比如 Cucumber 或 Selenium 测试,没有虚假数据。产生真实输出的真实输入。(我并不是说我想专门使用 Cucumber 或 Selenium,只是说我要求的不是单元测试,并且算法的行为必须是真实的,并且不能以任何方式伪造)
该库用于不同的项目,每个项目的输入数据遵循相同的模型,但偏向不同。一个项目数据可以有很多相同点的重复,而另一个项目则没有。可以让车辆非常快地达到极限容量,而在其他情况下,这个极限几乎无法达到。
目标是从插入的每个项目中获取样本数据,以便在修改算法时快速反馈算法的行为(例如修改或添加变异或交叉运算符,或添加新的参数化)。因此,不得以任何方式伪造其行为。
鉴于这一切,我要问的问题是找到一种方法来对整个行为做出有效的断言。我想问一下其他人是如何处理这个问题的,或者你们对此有什么看法。