软件验证(Verification)和软件确认(Validation)是测试理论中包含的两个基本概念,我对这两个概念的确切含义的理解,以及在实际测试工作中有什么指导意义,一致存在模糊的认识。
这两个概念,在很多英文文章里这两个术语经常缩写成“V&V”,比较权威的解释是:
IEEE,1991
软件验证技术是“评估系统或部件在特定的开发阶段是否满足该阶段开始时人们对它提出的要求” 。
软件确认技术是“评估系统或软件部件在开发过程中或开发结束时是否满足特定要求”。
如果要更详细地解释一下,可以这样理解:
软件验证和确认是软件测试的两种技术。
软件验证是在软件开发的各个阶段,从软件技术人员的角度,测试当前的开发成果(文档,代码等)符合设计的规范,保证按照设计流程和要求进行开发,即“正确地做了事”。
软件确认是从用户的角度,测试当前的开发成果符合用户的真正需求,即“做了正确的事”。