软体验证(software verification)是软体工程中的一部份,目的在确认软体满足预期的需求。

较广的定义及分类

编辑

广义定义的软体验证类似软件测试。有二种验证的方式:

动态验证(测试、实验)

编辑

动态验证是在执行软体时进行,并且动态的确认其行为是否正确。一般会称为软体测试阶段。验证本身就是评审的过程。依照测试范围的不同,可以区分出几种不同的测试:

  • 小范围测试:针对单一函式或是类别的测试(单元测试
  • 大范围测试:针对一组类别进行的测试,例如
    • 模组测试(单一模组)
    • 集成测试(几个模组)
    • 系统测试(整个系统)
  • 验收测试:针对软体是否符合允收条件的正式测试
    • 机能性测试
    • 非机能性测试(性能、压力测试

软体动态验证的目的透过一个活动(例如用医疗软体来分析生医资料)来找到软体问题,也可以透过一个或是多个活动的重复性性能(例如网页伺服器的压力测试、确认产品测试时的情形是否和一开始测试时相同)。

静态验证(分析)

编辑

静态验证是在软体执行之前检查原始码,来检查软体是否符合需求。例如:

透过分析进行验证,此方式可以用检测、数学计算、逻辑推导、以及教科书上建议的方式或是其他广为接受的方式来进行验证。分析包括取样、找到量测资料和观察到测试结果之间的相关性,再配合计算软体符合需求的期望值高低。

较窄的定义

编辑

若要作较精准的定义,软体的验证(verification)只包括静态测试,是要应用在制品(artifacts)上。(整个软体产品)的确认(validation)就等于动态测试,是要应用在运行的软体产品上(除了需求外,不会针对制品进行确认)。不过需求确认(requirements validation)可以是动态的,也可以是静态的。

和软体确认的比较

编辑

软体验证常会和软体确认(software validation)混淆。软体验证及确认之间的差异如下:

  • 软体验证会确保“以正确的方式制造产品”,例如房屋符合蓝图的中的设计。
  • 软体确认会确保“制造正确的产品”,例如房屋符合客户的期待及需求。

相关条目

编辑

参考资料

编辑
  • IEEE: SWEBOK: Guide to the Software Engineering Body of Knowledge
  • Carlo Ghezzi, Mehdi Jazayeri, Dino Mandrioli: Fundamentals of Software Engineering, Prentice Hall, ISBN 0-13-099183-X
  • Alan L. Breitler: A Verification Procedure for Software Derived from Artificial Neural Networks, Journal of the International Test and Evaluation Association, Jan 2004, Vol 25, No 4.
  • Vijay D'Silva, Daniel Kroening, Georg Weissenbacher: A Survey of Automated Techniques for Formal Software Verification页面存档备份,存于互联网档案馆). IEEE Trans. on CAD of Integrated Circuits and Systems 27(7): 1165-1178 (2008)