在软件测试中,“正确性”一词的意义是什么?

时间:2019-07-31 09:41:04

标签: unit-testing testing terminology

在软件测试中有一个事实说:

测试用于查找软件中的错误,但不能用于显示软件的正确性。 在这里,我无法理解“单词正确性”的意义。 难道在软件中无法实现正确性吗?

2 个答案:

答案 0 :(得分:2)

由于足够复杂的软件可能包含无数个可能的错误,因此从逻辑上讲不可能通过测试来证明软件的正确性。

缺少 已显示的错误 (错误)并不表示不存在 所有错误

答案 1 :(得分:0)

测试用于发现软件中的错误,但不能用于 显示软件的正确性。

这里的单词正确性的意义是什么。

软件的

一个单元functionally correct 如果它会为每个可能的输入产生正确的输出。

理论计算机科学中,此术语有很多细微差别, 例如,我们区分部分正确性总和 正确性:如果返回的答案是部分正确 正确,如果它总是返回正确的,则为完全正确 答案。

实践中,事情要复杂一些。当我们 建立大型软件系统,要正式地实现它并不总是那么容易 定义什么是程序的正确输出,然后我们讨论 根据说明正确

我不认为“ ”测试声称可用于发现错误,但不能 用来表示正确性”的一种很好的说法。 测试通常是指运行您的软件的小型计算机程序 在某些输入上,并验证输出是否符合预期。我会 将其声明为 testing,以防止错误引入 现有代码

在软件中无法实现正确性是真的吗?

不,这并非不可能。尝试编写 identity函数, 例如:f(x) → x。实际上,这很容易。更复杂 算法,正确编写就越困难。

不仅可以编写正确的代码,还可以 prove that code is correct。然而, 这更加困难且耗时。

但是,您不能做的是证明代码在以下方面是正确的: 仅测试(除非您的函数仅需要有限(少量)数量的 输入)。