有没有人有使用从 BNF 语法生成测试字符串然后可以输入单元测试的工具的经验?
Rob Walker
问问题
2166 次
4 回答
1
我没有工具问题的答案,但我会说在任何文本处理语言(perl/python/etc)中从 BNF 语法随机生成句子都相当容易,而在更大的语言中稍微冗长一些( Java/C/etc),但自己动手应该不会太难。
这样做的问题当然是它只能在语法中生成字符串,而且除非你的语法很简单,否则测试空间是无限大的。
于 2008-09-09T16:32:46.217 回答
1
我已经完全按照 hazzen 评论的方式完成了(在脚本语言中使用嵌入式 DSL)。这是一个稍微有趣的练习,但除了最基本的解析测试之外,它并不是非常有用。我的大多数最有趣的测试都与比 BNF(或任何其他上下文无关语法)更复杂的关系有关。
于 2008-09-09T16:43:41.697 回答
0
例如,如果您正在开发一个编译器,那么您可能有一个抽象语法树数据类型。如果是这样,那么您可以编写一个函数来生成一个随机 AST —— 这样,您可以将其打印到一个字符串并将其提供给您的单元测试。以这种方式保证它是一个有效的程序,因为你是从你的 AST开始的。
如果我在 Haskell 或 ML 中编写编译器,这就是我会做的,使用QuickCheck。
于 2008-09-17T17:21:59.883 回答