通过同行评审等静态测试方式,不仅能尽早的发现软件开发过程中的潜在问题和缺陷,而且能有效降低软件的整体开发成本,提高软件交付质量。这一点,TMMi比CMMI认识得更早、更重视,也更深刻。
在TMMi的早期版本中,同行评审(Peer Reviews)就成为了一个独立的过程域PA,而CMMI到了2018年,CMMI2.0才将同行评审从验证(VER)过程域中分离出来,成为一个独立的实践域。
另外,TMMi不仅重视同行评审,而且重视同行评审结果的应用。通过对同行评审中发现的缺陷的类型和数量结果进行分析,评估测试过程质量和产品的质量,可以调整或优化后续的测试工作,增强动态测试的测试策略和方法。
同行评审(静态测试)和动态测试协调一致起来,不仅可以提升测试过程效率,使测试更有效率和有效果,而且质量更加可靠。为此,TMMi在四级中设置了高级评审(Advanced Reviews)这个独立的过程域,这一点,TMMi比CMMI做得更好,更深刻。
今天,就来谈谈软件测试中的同行评审和高级评审这二个话题。
一、为什么需要同行评审
根据Capers Jones的Applied Software Measurement数据,软件中有超过50%的缺陷是在软件开发的需求阶段和设计阶段等前期阶段就引入的(其中15%的缺陷是在需求阶段引入,40%的缺陷是在设计阶段引入),如下面的缺陷引入阶段分布图。而仅有30%的缺陷是编码过程中产生的,另外有5%的缺陷是文档的编写类缺陷,10%的缺陷是由于改错而导致的缺陷。
我们知道,缺陷发现越晚,修复缺陷的成本越高。
我们也知道,测试是发现缺陷的一种有效方法。但由于动态的测试通常只能在软件代码编码之后才能执行测试,此时发现缺陷、修复缺陷的成本会比较高。
评审也是一种测试,它属于静态的测试方法,同样也是发现缺陷的一种有效方法。而且能在软件代码编写之前即开展评审活动,尽早发现缺陷。
通过评审,除了能尽早发现缺陷,帮助减少后续修复缺陷和编码返工的工作量,同时还能发现测试工作不能发现的一些缺陷。
因此,为了尽早发现缺陷,降低成本,提高软件质量,应该在项目的早期,如需求分析、设计和编码阶段就开展评审。尤其对关键的产出物或软件工作产品,更应该进行评审。
同行的含义是指不具有直接上下级关系的一组相关人员。
同行评审(Peer Review)是指由软件开发者的同行,按照预定的规程,对软件工作产品进行的评审。
同行评审是发现软件工作产品中缺陷的一种高效的方法。尤其在项目的早期阶段,有效的同行评审能发现比较多的缺陷和需要改进之处。
在软件测试成熟度模型集成TMMi中,评审是测试过程的一部分,用来在生命周期早期测量产品质量,并作为正式控制质量的阶段点。同行评审,作为一种缺陷检测技术,在TMMi中成为与产品质量评估过程域保持一致的产品质量测量技术。
二、同行评审的类型
根据评审目的、评审可用的时间,及评审时可用的专家人员,同行评审的类型可分为走查、技术评审和审查三种基本类型。
?走查通常以非正式的方式进行。
?技术评审通常是针对特定技术专家的评审,通常是正式的评审方式。
?审查一般也是正式的评审方式,它除了规定参加审查的人员,审查结束后还要报告审查结果数据。
三种同行评审类型的差异对比大致如下:
三、同行评审的对象
同行评审的目的是尽早地发现工作成果中的缺陷,并帮助开发人员及时消除缺陷,从而有效地提高产品的质量。
在软件项目的开发过程中,需求、设计、源代码,这些关键工作产品,都应该按照同行评审的流程进行细致的评审,如能及早发现问题,将减少缺陷遗留到项目的后续阶段中,降低项目的总体成本,减少产品的质量风险。
高成熟度的组织在软件研发和实施项目过程中,对所有中间产品或最终工作产品都会进行同行评审,这些产品包括:
?软件需求规格说明书
?设计(概要设计、详细设计)说明书
?源代码
?测试计划、测试用例
?软件开发计划,包括配置管理计划、进度计划、质量保证计划、风险管理计划等
四、同行评审的流程
同行评审前,首先应由项目经理或相关负责人按照项目选择的生命周期模型,识别软件工作产品,确定将经受评审的软件工作产品,并确定评审方式是采用正式的评审还是非正式的评审。然后根据项目计划及组织标准过程要求,制订评审计划,确定评审的进度、人员等。
在TMMi 3 级,同行评审还不是测试过程的一个完整部分,因此,通常执行同行评审过程的计划包含在项目计划中,确保同行评审的资源得以保证(提早计划好),例如评审组长,目的是保证同行评审的效果。
在TMMi3 级以上的更高级别,同行评审成为测试过程的一个有机部分,则执行同行评审过程的计划就应包含在(主)测试计划中。
(一)正式的同行评审流程
正式的同行评审流程通常如下
1.准备评审
(1)评审主持人首先确定评审会议的时间、地点、设备和参加会议的人员名单,包括评审员、记录员、作者、旁听者等,然后起草《技术评审通知》,并告知所有相关人员。
(2)评审主持人负责和项目经理、项目SQA协调,对组织提供的检查表进行审阅,并依据项目对检查表做适当的裁减。
(3)评审主持人把工作成果及相关材料、评审规程、已裁减过的检查表等发给评审员。
(4)评审员阅读(了解)工作成果及相关材料。
2.举行评审会议
2.1主持人宣讲
主持人宣讲本次评审会议的议程、重点、原则、时间限制等。
2.2作者介绍工作成果
作者扼要地介绍工作成果。
2.3识别缺陷和答辩
(1)评审员根据“检查表”认真查找工作成果的缺陷。
(2)作者回答评审员的问题,双方要对每个缺陷达成共识(避免误解)。
2.4会议结束决议
评审小组给出评审结论和意见,主持人签字后本次会议结束。
评审结论有三种:
(1)工作成果合格,“无需修改”或者“需要轻微修改,但不必再审核”。
(2)工作成果基本合格,需要作少量的修改,之后通过审核即可。
(3)工作成果不合格,需要作比较大的修改,之后必须重新对其评审。
3.修正、跟踪与审核
3.1修正与跟踪
(1)作者修正工作成果,消除已发现的缺陷。
(2)评审主持人(或者指定审查员)跟踪每个缺陷的状态。
3.2提交审核
作者消除所有已发现的缺陷后,再将修正后的工作成果递交给评审主持人(或者指定审查员)审核。
3.3审核工作成果
评审主持人(或者指定审查员)审核修正后的工作成果。审核结论有两种:
(1)修正后的工作成果合格。
(2)修正后的工作成果仍然不合格,需重新修改,重复[3]。
评审结束后,输出《同行评审报告》和根据评审报告修正后的工作成果。
(二)非正式的同行评审流程
非正式的同行评审方式通常有会议评审方式和邮件评审方式二种。
A、会议评审方式
流程通常如下:
1.准备评审
(1)作者/项目经理作为同行评审发起人,首先确定评审会议的时间、地点、设备和参加会议的人员名单,包括评审员、记录员、作者、旁听者等,然后起草《同行评审通知》,并告知所有相关人员。
(2)评审主持人负责和项目经理、项目SQA 协调,对组织提供的检查表进行审阅,并依据项目对检查表做适当的裁减。
(3)评审活动发起人把工作成果及相关材料、技术评审规程等发给评审员。
(4)评审员阅读(了解)工作成果及相关材料。
2.举行评审会议
2.1主持人宣讲
主持人宣讲本次同行评审会议的议程、重点、原则、时间限制等。
2.2作者介绍工作成果
作者扼要地介绍工作成果。
2.3识别缺陷和答辩
(1)评审员认真查找工作成果的缺陷。
(2)作者回答评审员的问题,双方要对每个缺陷达成共识,避免误解。
2.4会议结束决议
(1)评审小组给出评审结论和意见,主持人签字后本次会议结束。
(2)评审结论有两种:工作成果需要修改、无需修改。
3.修正、跟踪
(1)作者修正工作成果,消除已发现的缺陷。
(2)指定审查员跟踪已发现的缺陷。
B、邮件评审方式
流程通常如下:
1.准备评审
(1)作者/项目经理作为评审发起人首先确定起草《技术评审通知》,并通知评审员及相关人员。
(2)评审员在进行同行评审前,必须接受过同行评审相关技能和方法的培训。
(3)评审主持人负责和项目经理、项目SQA 协调,对组织提供的检查表进行审阅,并依据项目对检查表做适当的裁减。
(4)评审活动发起人把工作成果及相关材料、技术评审规程等发给评审员。
(5)评审员阅读(了解)工作成果及相关材料。
2.邮件交流过程
(1)评审员认真查找工作成果的缺陷,并通过电子邮件通知作者评审的情况。
(2)评审发起人回答评审员的问题,双方要对每个缺陷达成共识,避免误解。
(3)评审发起人如实的记录、规整评审过程中产生的电子邮件等文档,并总结产生非正式技术评审报告。
(4)评审员给出评审结论和意见。评审结论有两种:工作成果需要修改、无需修改。
3.修正、跟踪
(1)作者修正工作成果,消除已发现的缺陷。
(2)指定审查员跟踪已发现的缺陷。
五、同行评审后的数据分析
每一次同行评审结束后,还应对同行评审的数据进行收集和分析,对评审过程中的工作量数据进行收集和分析,分析结果可作为评审结论的依据,评价当次评审是否达到了评审的出口标准,以及评估评审活动的稳定性情况,为后续工作决策提供依据。
单次评审的缺陷情况,还可以结合评审的工作效率进行分析,具体分析内容可参考下图:
六、高级评审
在缺陷聚类[Graham]的测试原则基础上,同行评审过程中发现的缺陷的类型和数量有助于选择后续最有效的测试,也可能影响测试方法甚至测试目标。
高级评审是建立在同行评审的基础上,早期的同行评审结果和数据被用于影响后续的动态测试。高级评审的目的是在生命周期的早期测量产品质量,并通过使同行审查(静态测试)和动态测试一致来增强测试策略和测试方法。
每次同行评审后,测试经理应组织人员收集评审数据,并进行整理分析,对发现的问题进行原因分析,评估测试过程质量和产品的质量,进而用来调整后续的测试工作,即同行评审的结果可以用来协调动态测试的调整,如优化后续的动态测试,提升测试过程效率。
在高成熟度的测试组织中(如达到TMMi四级标准或以上的测试组织),他们会采用高级评审,建立同行评审和动态测试之间协作的测试方法,在早期通过使用同行评审的方法,对需求文档、评审设计文档和源代码等来对产品进行静态测试,根据静态测试(同行评审)的结论和数据来调整或优化动态测试策略、测试计划以及测试方法,同行评审完全与动态测试过程集成,使测试更有效率和有效果,使得产品的质量更加可靠。
文章来自,王道质量
更多原创,欢迎关注 质量与创新