测试阶段
验证意味着每个阶段结束后,对软件产品的技术审查和管理评审,确认则是对每个阶段结束后所产生的代码进行测试
1.软件需求分析阶段
基于“软件测试介入要及早”的原则,在软件需求分析阶段,软件测试人员就可以加入到软件需求分析和确认的行列中,并在该阶段结束后,参与本阶段软件产品的评审。在该阶段,并没有软件代码产生,所以主要的软件产品就是文档。本阶段产生的跟软件测试关系密切的文档是软件需求规格说明和软件开发计划,根据这两份文档,测试人员可以出具软件配置项测试计划,在计划中明确测试类型,测试方法,测试环境,以及测试人员和进度安排。
2.软件设计阶段
在软件概要设计阶段,软件人员主要参与的测试活动是评审软件概要设计和软件集成计划文档,并出具软件集成测试计划。同样,在软件详细设计阶段,软件人员参与评审软件详细设计文档,并出具软件单元测试计划。
3.软件编码及后续测试阶段
在这个阶段,软件代码已产生,可以按照单元测试计划,拟制单元测试用例,执行单元测试,出具单元测试报告。在单元测试阶段,建议进行代码走查,这是对软件代码的确认。自此以后的阶段,软件确认和验证的对象就都是代码。
单元测试完成后,对该阶段的软件产品进行确认,相关文档该评审就评审,该入受控库就入受控库,经软件配置确认后,转入集成测试阶段。
依照集成测试计划,拟制集成测试用例说明,可对软件单元按照某种恰当的集成策略进行组装。在这个阶段,产生集成测试报告。这是该阶段软件验证和确认的成果。同样,集成测试完成后,对该阶段的软件产品也要进行确认并入受控库,经软件配置确认后,转入配置项测试阶段。
软件配置项测试以需求阶段产生的测试计划为依据,拟制配置项测试说明,执行以黑盒为主的配置项测试,出具配置项测试报告。测试完成后,提交配置管理,确认后等待软件交付。(文档审查,静态分析,内存使用缺陷测试,功能测试,性能测试,人机界面测试,余量测试,接口测试,安全性测试)依据需求规格说明书
验证(VER)
是为了确认某一开发阶段的产品是否满足在阶段初期提出的要求而进行评估的过程,验证就是证明是否正确地构造了产品
SG1 准备验证
SP1.1 选择需要验证的工作产品
SP1.2 建立验证环境
SP1.3 建立验证规程与准则
SG2 执行同级评审
SP2.1 准备同级评审
SP2.2 进行同级审评
SP2.3 分析同级评审数据
SG3 验证选定的工作产品
SP3.1 执行验证
SP3.2 分析验证结果
验证就是按照既定的标准,检查工作产品是否符合要求。工作产品可能是文档也可能是软件本身。而检查的办法一般是同行评审或者是软件测试。
那什么是同行评审呢?比方说:A君是做软件设计的,B君也是做软件设计的,A君写了一份设计文档,让B君这个同行(因为大家都是做设计的)来给给意见,这样就使同行评审。同行评审的目的就是让有同样工作经验和技能的人来评审自己的工作产品,发现尽量多的问题。
验证这个PA其目的是希望软件企业在软件开发整个过程中,做好相应的检查工作,把尽量问题发现前面,保证了项目的可控性,降低开发的成本。
这个PA有3个Specific Goals,SG1讲述的是做好验证的准备,SG2、SG3分别讲述的是执行验证的两种办法,一种是同行评审,一种是执行验证(通常就是测试)。
如果测试是在用户实际生产环境下进行的,例如:验收测试、客户试用系统等,这时这类工作就属于确认(Validation)
SG1 准备验证的工作
Preparation for verification is conducted.
SP1.1 选择需要验证的工作产品以及每个工作产品的验证办法
Select the work products to be verified and the verifaction methords that will be used for each.
组织会定义要进行同行评审的工作产品,如:计划文档、需求文档、设计文档、代码等,并且规定了每种文档的同行评审办法。组织也会
定义需要进行测试的软件产品,比方说要进行单元测试、集成测试、系统测试等。
SP1.2 建立和维护支持验证所需的环境
Establish and maintain the environment needed to support verification.
对于同行评审来说,支持环境可能就是会议室、投影、电脑、事先准备好的文档等。
对于测试来说,支持环境可能就是测试的软件环境、数据环境、硬件环境等。
SP1.3 建立和维护工作产品的验证过程及准则
Establish and maintain verification procedures and criteria for the selected work products.
对于同行评审来说,验证过程就是同行评审开展的过程相关规定,如要事先发资料、通知大家到会、会议的组织、会议记录等等,准则可能就是每个工作产品的评审标准。
对于测试来说,验证过程就是测试过程的相关规定,准则就是需求规格说明书,或者说是测试通过的标准。
SG2 对指定的工作产品进行同行评审
Peer reviews are performed on selected work work products.
SP2.1 做好同行评审的准备
Prepare for peer reviews of selected work products.
如:把要评审的文档实现发给大家,准备好会议议程,准备好会议室、投影仪等。
SP2.2 执行同行评审并识别同行评审中发现的问题
Conduct peer reviews on selected work products and identify issues resulting from the peer review.
SP2.3 分析在同行评审准备、执行、结果方面的数据
Analyze data about preparation,conduct,and results of the peer reviews.
例如:记录评审的准备、进行时间,发现的问题数量,对每个问题进行分析等。
SG3 根据指定的要求验证工作产品
Selected work products are verified against their specified requirements.
这里的验证既包括同行评审也包括测试,但因为SG2专门是针对同行评审的,这个SG可以理解成主要针对除了同行评审外的其它验证活动。
SP3.1 对指定的工作产品进行验证
Perform verification on the selected work products.
如:执行单元测试、集成测试、系统测试等。
SP3.2 分析验证的结果,并制定修正计划
Analyze the results of all verification activities and identify corrective action.
这里强调的是:除了要分析发现的问题外,还需要采取行动修正这些问题。
确认( VAL )
是在开发过程中或结束时,对软件产品进行评估以确定其是否满足软件需求规格的要求,确认则是证明构造的产品是否正确
SG1 准备确认
SP1.1 选择需要确认的产品
SP1.2 建立确认环境
SP1.3 建立确认规程与准则
SG2 确认产品或产品组件
SP2.1 执行确认
SP2.2 分析确认结果
验证强调的是在开发过程中对工作产品进行检查,尽早发现问题。而确认强调的是,在真实的使用环境中,确保软件能达到预期的效果。开发环境与真实环境是不可避免存在差异的,为了有效地避免在开发环境中没有问题,但一到真实环境就出现问题的情况,确认的工作是非常重要的。
确认不一定在项目后期才进行,这个PA没有对确认的时间有任何的规定。作为一般的常识,我们应该尽快安排软件的确认工作,如:尽快发出一个小版本,在实际环境中运行起来,尽快发现确认中的问题。
一般来说,调试、试用、验收测试等都是确认的工作。
SG1 准备确认工作
Preparation for validation is conducted.
SP1.1 选择需要确认的产品、产品组件以及确认的方法
Select products and product components to be validated and the validation methods that will be used for each.
SP1.2 建立和维护支持确认的环境
Establish and maintain the environment needed to support validation.
如试用环境、验收环境的准备等。
SP1.3 建立和维护确认的过程及确认准则
Establish and maintain procedures and criteria for valication.
SG2 执行确认,确保产品或者产品组建在目标操作环境下满足使用的要求
The product or product components are validated to ensure that they suitable for use in their intended operating environment.
SP2.1 执行产品及产品组建的确认工作
Perform validation on the selected products and product components.
验证(Verification)与确认(Validation)的区别
验证:验证检查某样东西是否符合之前已定好的标准,如:文档评审,要检查的东西是文档,检查标准就是文档的评审标准,又如:测试软件,要检查的东西就是软件,检查的标准就是软件的规格说明,包括功能说明,性能要求等。
确认:检查软件在最终的运行环境上是否达到预期的目标。一般来说,就是调试、验收测试等,这些工作都是在真正的软件需要运行的环境上进行的,在最终环境上运行软件,确保软件符合使用要求。