软体验证
软体验证(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)