假设我编写了一个可以按以下方式调用的应用程序:

my_magic_app --foo=yes --bar=5003 --baz=best_baz_ever


现在,假设我想通过将范围从某个数字到另一个数字进行测试,可以是或否,并且baz要么是长度不超过一定长度的所有字符串,要么是我在文件中具有的某个字典中的字符串。另外,我不太希望所有组合,而只是要满足特定条件(例如,如果foo为负,则bar不能超过5000)。应用条件等-但我想知道是否已经有类似的东西。

要求:


对于类似Unix的操作系统免费提供许可
免费提供
我不在乎它是脚本还是二进制
首选非arcane语言(例如bash,python,perl)


评论

我总是以临时脚本来完成此操作,因此这对我来说是一个有趣的问题。快速注意事项:1)对测试空间的大小保持谨慎-获得难以置信的测试数量非常容易; 2)通常,您会发现最好自己指定范围(foo中的是,否); 3)很难产生预期的结果,尤其是在您给出的情况下(您不想从遇到一个问题变为遇到两个问题)。
1.是的,我知道。痛苦的观点3.我有在自己的情况下生成预期结果的代码(有时没有预期结果,除非崩溃,否则结果始终相同),但是,是的,总的来说这是一个问题。
这可以通过列表理解来完成。

@dramzy:我正在寻找现有软件,而不是用于实现此功能的方法...

#1 楼

类别划分方法描述了这种基于约束的测试生成。 TSLGenerator是一个实用程序,可以在给定约束的情况下为您生成测试。输出采用测试规范的形式;如果您想采用自己的方式将其解析为单元测试存根或命令,则它们很容易阅读。

#2 楼

您可能会考虑所有对测试和边界测试的组合。所有对测试是一种将测试向量的数量减少到可以使用所有对组合的测试向量的方法。它可以大大减少测试用例的数量,而不会明显减少测试范围。您显然必须满足测试要求,但这确实是一个很好的使用方法。在测试数字范围时,通常只有检查边界才真正有趣。例如,如果输入可以是0-5000,那么有趣的测试用例将是-1、0、1、4999、5000和5001。

我过去所做的用于测试的脚本被组合在一起,该脚本使用所有成对的参数具有不同的选择,并对参数进行边界测试。 ,但您当然可以使用其他人开发的工具。 “著名的”软件测试员James Bach编写了可以使用的全对工具。

评论


尽管此建议可能与(或可能与)我进行测试的方式有关,但仍然不是我所要的……我需要测试整个空间。部分覆盖它的网格可能是相关的,但极值无关。尽管如此,还是需要+1。

– einpoklum
16年7月14日在7:51



询问者清楚地表明他们需要测试所有组合。没有工具可以自动猜测不应该尝试使用哪种组合,尤其是在不了解测试程序内部的情况下。您建议的工具将“创建将每个变量的每个值与其他变量的每个值至少配对一次的测试”,这不行。

–尼古拉斯·拉乌尔(Nicolas Raoul)♦
16年7月15日在10:48

根据我作为软件测试人员的经验,我发现所有的线对都是有用的工具,可以提供较高的覆盖率,同时减少测试用例的数量。该技术在软件测试界众所周知,我听说过它在会议和书籍中都在谈论。但是,我与之合作的大多数测试人员对此一无所知,因为他们陷入了这个角色。我提供此建议是因为在很多情况下,它是一个可行的替代方案,可能尚未考虑。

–isaac
16年7月15日在11:56

再次-公平地说,您的经验是完全有效的。

– einpoklum
16年7月15日在14:02

减少测试用例的数量通常是在软件开发人员仅执行一次代码的期望下完成的。我已经观察到太多次了代码被复制/粘贴,导致了意想不到的失败,因为我已经测试过了。从那时起,我愉快地测试了比通常需要的更多的组合。 (在这种情况下,我从事质量检查工作,但我不同意ISTQB)这适用于黑盒测试

–托马斯·韦勒(Thomas Weller)
16年8月14日在8:41