我不是英语母语人士。用我的母语,我知道一些术语,这些术语用于表示检查条件以停止递归,以及用于极端,不太可能或非常简单的情况的检查条件。在英语中,我遇到过“边缘情况”,“拐角情况”,“边界情况”和“基本情况”,但是我不太清楚它们之间的区别,以及用来指代什么。我很想对它们之间的区别进行一些总结。 />
    int transmogrify(int n) {
1.      assert(n <= 1000000);
2.      if (n < 0) return -1;
3.      if (n == 1000000) return PRE_CALC;
4.      if (n == 0) return n+1;            // For stopping the recursion
5.      if (n == 1251) return 3077;
        return transmogrify(n-1);
    }


我认为是:


健全性检查
输入检查
边界情况?边缘情况?角壳?
基壳?边界案例?
角落案例?边缘保护套吗?


评论

我相信边缘和边界通常是相同的。但是它们指的是测试,而不是检查代码中的条件。

@理查德测试不是代码?那不是我的理解-您是否有参考资料来支持您认为这些术语不适用于代码的事实?

#1 楼

我也不是说英语的人。但是根据Wikipedia:




在极端(最大或最小)操作参数下会出现边缘情况。超出正常运行参数,特别是当多个环境变量或条件同时处于极端水平时,即使每个参数都在该参数的指定范围内。 (“外部正常运行参数”显然意味着类似于“外部典型运行参数组合”,而不是严格意义上的“外部允许运行参数”。也就是说,您仍在有效参数空间之内,但在其角落附近。) br />
当输入之一达到最大极限或最小极限时发生边界情况。


递归结束的基本情况。

因此,即使拐角处的情况似乎与边缘和边界情况(肯定是同义词)有所不同(值的组合),术语也似乎完全混淆了。可以肯定地说边缘,拐角和边界情况在普通语言中是同一回事。也许每个人都可能说不同的话,但是几乎没有共识。

您写的是1)和2),3)是边缘/边界情况,4)是基本情况,而5)是特例。

评论


这对于理解每个技术词汇背后的概念非常有用。

– Jignesh Fadadu
18-10-17在5:42

在面试中非常有用

–刘伊玲
20年9月8日在6:39

#2 楼

无论单词之间有什么区别,用于描述测试的内容取决于测试的语义(含义),而不取决于确切的代码-在提供的示例中,每个测试的含义并不明显。除此之外,这就是我的理解方式:


健全性检查=这是否还有意义?例如,如果您的应用程序仅输出整数,则sqrt(-1)log(-1)未定义。
输入检查=测试用户输入,而不是某些内部数据结构或函数的输出。例如,在Bash中,[ $# -gt 0 ]检查您是否至少有一个输入参数,这也可能是对诸如findmail之类的命令的健全性检查。正确的输出。例如,一个仅将数字加一个的函数的操作范围为-1,因为用户无法提供小于的输入,而输出大于
角落的情况检查=更复杂的边界检查(拐角是二维边界),例如在计算中组合。 check =非显而易见的,非边界的特殊值,例如log(1 + the smallest floating point number)


评论


一个简单的尼特:logₑ-1是iπ。在python中,导入cmath;断言(cmath.log(-1)== 3.141592653589793j)

–鲍勃·斯坦(Bob Stein)
17年2月20日在14:16