6

我正在开发一个有很多标志的命令行工具。一个典型的命令如下:是否存在测试命令行参数的既定标准?

mycommand --foo=A --bar=B --jar=C --gnar=D --binks=E 

在大多数情况下,一个“成功”的消息被打印,但我还是想验证对等的外部数据库的其他来源,以确保实际成功。

我开始创建集成测试,我不确定这样做的最佳方法。我主要关心的是:

  1. 有很多很多的标志组合,我怎么知道要测试哪些组合?如果你为可以一起使用的10+标志做数学运算...
  2. 是否有必要测试标志的排列?
  3. 如何构建一个能够自动执行测试并验证结果的框架。
  4. 如何跟踪大量标志并提供订单,以便轻松判断哪些组合已实施,哪些未实施。

想到手动写出个别情况并以格式单位测试验证结果令人望而生畏。

有谁知道可用于自动化此类型测试的模式吗?也许甚至试图解决这个问题的软件?使用GNU命令行工具的人们是如何测试他们的软件的?

回答

2

我认为这是非常特定于您的应用程序。

首先,您如何确定您的应用程序执行的成功?它是结果代码吗?它是否打印到控制台?

对于问题2,它取决于如何解析应用程序中的这些标志。大多数情况下,标志的顺序并不重要,但有时会出现这种情况。我希望你不需要测试标志的排列,因为它会增加很多测试的情况。

在一般情况下,您应该分析每个标志的影响。标志不会干扰其他标志,然后只需要测试一次。这也适用于单独使用的标志(例如--help或--version)。你还需要分析你应该测试每个标志的值。通常,你想尝试每种可能的有效值,以及每种可能的无效值。

我认为可以编写一个简单的bash脚本来执行测试或Python等任何脚本语言。使用嵌套循环,您可以为每个标志尝试可能的值,包括测试无效值和未设置标志的情况。我将产生一个多维矩阵的结果,应该分析结果是否符合预期。

+0

感谢您的反馈。在大多数情况下,命令产生'成功'消息,但是,命令外部的实体被操纵。所以我不得不做一些额外的工作来验证(例如查询数据库)。我会玩弄嵌套循环的想法,但是,看起来很难以这种方式组织测试。 – trinth 2011-04-29 05:35:07

1

当我编写应用程序(使用脚本语言)时,我有一个解析命令行字符串的函数。我输入了我正在开发的文件,并直接对这个函数进行单元测试,而不是涉及到shell。