gpt4 book ai didi

c++ - 如何决定为基于规则的系统创建哪些单元测试

转载 作者:行者123 更新时间:2023-11-28 07:27:30 25 4
gpt4 key购买 nike

我已经阅读了很多关于单元测试的文章,并且强烈考虑第一次将它与 C++ 和 TDD 一起使用。我遇到的问题是,在我创建测试时看到的所有示例中,当我考虑如何开始为我将要开发的项目编写测试时,它们显得太琐碎了。可能是我错过了单元测试的重点,所以请让我知道这里是否是这种情况。

例如检查质数的函数很容易理解。它有一个简单的输入(要测试的数字)和一个简单的输出(真或假)。在这里很容易理解和创建单元测试。

现在,让我们举个例子,一个防火墙应用程序有一个规则的配置文件和一个评估引擎,以特定的顺序评估这些规则,用于特定的输入;网络数据包的详细信息,例如 IP、子网、端口、域等。

如果不编写单元测试,我想首先编写一个解析器将规则配置文件解析为类,然后编写一个规则引擎将给定的网络数据包与这些类中的规则进行比较,按顺序逐步执行规则对它们进行解析,直到找到匹配项。

单元测试和 TDD 指出,在编写代码之前,应该先编写失败的测试。因此,在防火墙项目的情况下,您是否会首先编写测试来检查文件的解析,方法是创建一个模拟文件以提供一组特定的规则,或者这只是测试文件的读取,这通常不是推荐用于单元测试,而不是集成测试?如果要在这里做测试,应该测试什么?

此外,人们会如何考虑为这样的规则引擎编写测试来评估规则?如果网络数据包的详细信息是输入,则输出将是数据包是否被接受、拒绝或忽略。这样的测试几乎与规则引擎所做的相同,那么如何将其分解为小的“单元”测试呢?

最佳答案

您需要对解析器进行测试。对于给定的输入字符串,确保输出正确的规则对象。这不会访问文件,因为您的解析器不应与文件 I/O 紧密耦合。

您需要对每条规则进行测试。确保规则为给定的数据包提供您想要的结果。这可能是最重要的部分;一定要彻底测试边缘情况。您不希望这些规则中的任何一个行为不当,因为它们会受到恶意输入的轰炸。

并且您需要对规则系统进行测试。编写简单的测试规则并使用它们来确保规则系统正确地分派(dispatch)数据包并对响应采取行动。

所有这些都可以在实际代码之前轻松编写。

关于c++ - 如何决定为基于规则的系统创建哪些单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18483987/

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