在软件工程理论中,BUG严重级别(severity)是用于指示软件质量问题致使的负面影响的程度。但在大部分实际的软件开发组织中,对BUG严重级别(severity)的定义和使用经常充斥着大量的争议和分歧。甚至有些组织即便有专门的BUG严重级别定义文档,可是因为其描述的宽泛和模糊性,使得争议和分歧并无获得有效的减轻。本文将尝试探讨工程实践中的一些具体问题,并提出笔者的一些观点。app
BUG严重级别定义对于软件开发组织来说,是一个很是重要的事情。由于它影响了以下几个方面:测试
- 影响修复某个BUG的必要性和优先级
- 衡量软件质量的重要因子之一
接下来探讨下工程实践的具体问题:资源
- 没有明确的BUG严重级别定义,或者BUG严重级别定义很是宽泛和模糊
这个问题是一个普通存在的问题,也是测试团队和开发团队争议的重要源头。有些测试团队会把全部的软件崩溃重启问题都设置为较高严重级别,可是有时会遭到开发团队的反对,理由是此种崩溃重启问题只发生在一些不重要的功能的异常处理路径上。这个问题能够用汽车故障做类比,汽车行驶过程当中行车电脑出现崩溃问题和车机娱乐系统链接某款手机的蓝牙出现崩溃问题,通常人都不会把两个问题放在一个严重级别,由于前者的影响是极大可能致使交通事故,然后者的影响只是使用某款手机带来不便。还有一些测试团队将某项重要功能的任何发现BUG都设置为较高严重级别,可是其问题在于,BUG发生在主路径(happy path)和异常处理路径具备明显不一样的影响程度。后者在用户实际使用过程当中执行到的几率较低,且一般能够有办法能够避开。最后提到一点,多数状况下测试团队和开发团队对同一功能同一执行路径下的BUG严重等级一般具备至关的共识,通常都认同致使系统没法启动的问题比起功能输出错误结果的问题有更高的严重等级。所以,BUG严重级别定义问题的根源经常在于没有考虑功能重要等级的明肯定义和主路径/异常处理路径的区分。
- 随意指定BUG的严重级别致使开发团队问题修复的工做优先级混乱或者没法评估软件质量
基于BUG严重级别是衡量软件质量的重要因子,开发团队应当根据BUG的严重级别来调整BUG修复工做的优先级。但在工程实践中,BUG报告者有两种极端:一种极端是将全部发现的BUG一概设置为最高或较高等级,究其缘由是某些BUG报告者但愿他所报告的问题都能以较高优先级处理;另一种极端是将全部发现的BUG一概设置为最低等级,这种状况通常是BUG系统默认严重级别为最低,而报告者没有意识到他应该根据实际状况设置真实的严重级别或者报告者不知道如何定义严重级别。若是开发团队按照错误的BUG严重级别制定工做优先级计划,会致使整个团队以错误的优先级来开展工做。但在工程实践中,理智的开发团队领导者一般会根据实际本身的严重性级别判断来制定修复计划。但这也意味着BUG严重级别被彻底忽略,软件质量的评估变得异常困难。
- 将BUG严重级别和BUG重现几率混淆在一块儿
当测试团队报告了一个较高严重等级的BUG。可是开发团队提出异议,认为这个BUG虽然会致使使用某项主要功能出现问题可是复现几率低(<10%),因此严重等级应该下降。这个就是将BUG严重级别和BUG重现几率混淆在一块儿。BUG严重级别和BUG重现几率是两个相互独立的指标,能够认为没有交叠的地方。BUG重现几率通常来讲与测试有前置条件相关,若是测试前置条件充分,理论上全部的BUG均可以100%复现。重现几率低于100%只能说明执行当前测试用例产生某个或多个未知的前置条件的几率小于100%,或者说执行当前测试用例出现这种负面影响的几率小于100%。而BUG严重级别是指示出现这个负面结果的影响。举一个例子,若是某个BUG在以前的测试复现几率为10%, 后面测试用例通过修改后测试复现几率变为80%。很明显,这个BUG的严重等级不该该由于测试用例的修改而改变。对因而否要修复某个BUG,应同时考虑严重等级和重现几率两个因素,这个依赖于开发组织特定的质量控制策略。通常来讲,若是某个BUG严重性极高但复现几率低,采起的行动策略应该是设法改进测试用例或者建立新的测试用例提升复现率,以提升问题修复的可能性。若是严重性和复现几率都很低,不须要浪费开发资源在这类问题上。对于只出现过一次再不能复现的BUG,笔者的建议是通常状况下不作修复,由于不能复现的问题经常缺乏必要的信息用于问题的定位,即便修复后也不能经过测试加以验证。补充一次,若是测试团队常常性上报此类问题,一般意味测试用例或测试环境的一致性有很大的问题,应该优先对此加以改进。
笔者对BUG严重级别管理有以下建议:开发
- 每一个开发组织应该有一份公开且通过评审的文档明肯定义BUG严重级别。
- BUG严重级别应该由功能的重要等级,主路径/异常处理路径,BUG产生错误的影响共同决定。BUG产生错误的影响通常可分为三级:不可恢复错误(系统没法启动,系统没法升级等),影响功能使用,不影响功能使用(字符显示拼写错误等)
- 在BUG管理系统中,严重级别不该该容许被直接设置,而应该由BUG报告者输入对应的用例名称/路径,BUG产生错误影响级别,由系统自动生成对应的严重级别。