软件验证

软件验证软件工程编程语言计算理论的学科,其目标是确保软件满足预期要求。

广泛的范围和分类

验证的广泛定义使其与软件测试有关。在这种情况下,有两种基本验证方法:

  • 动态验证,也称为实验动态测试或简单地测试。 - 这非常适合查找故障(软件错误)。
  • 静态验证,也称为分析静态测试- 这对于证明程序的正确性很有用。尽管当软件真正执行的过程与静态验证假设的过程之间存在一个或多个冲突时,这可能会导致误报。

ACM计算分类系统下,软件验证主题出现在“软件创建”中的“软件及其工程”下,而程序验证也出现在计算理论下,在语义和推理,程序推理下。

动态验证(测试,实验)

在执行软件时进行动态验证,并动态检查其行为;它通常称为测试阶段。验证是一个审查过程。根据测试范围,我们可以将它们分为三个家庭:

  • 在小:检查单个功能或类(单位测试)的测试中测试
  • 大型测试:检查一组课程的测试,例如
    • 模块测试(单个模块)
    • 集成测试(多个模块)
    • 系统测试(整个系统)
  • 接受测试:定义用于检查软件接受标准的正式测试

软件动态验证的目的是查找活动引入的错误(例如,拥有医疗软件来分析生物化学数据);或通过一个或多个活动的重复性能(例如Web服务器的压力测试,即检查活动的当前产品是否像活动开始时一样正确)。

静态验证(分析)

静态验证是检查软件在运行之前检查软件是否满足需求的过程。例如:

通过分析验证 - 分析验证方法适用于通过调查,数学计算,逻辑评估和使用经典教科书方法或接受的常规使用计算机方法进行验证。分析包括采样和关联测得的数据和观察到的测试结果与计算出的预期值,以建立符合要求。

狭窄的范围

当更严格地定义它时,验证仅等效于静态测试,旨在应用于工件。而且,(整个软件产品的验证)将等效于动态测试,并旨在应用于运行的软件产品(不是其伪像,除非要求除外)。请注意,需求验证可以在静态和动态上执行(请参阅工件验证)。

与验证的比较

软件验证通常与软件验证相混淆。验证验证之间的区别:

  • 软件验证提出了一个问题:“我们是否正在建造产品吗?”;也就是说,该软件是否符合其规格? (作为房屋符合其蓝图。)
  • 软件验证提出了一个问题:“我们正在建造正确的产品吗?”;也就是说,该软件是否执行用户真正需要的事情? (作为房屋,符合所有者的需求和想要的东西。)

也可以看看