什么是 bug?
较为官方的概念:
- 当且仅当规格说明是存在的并且正确,程序与规格说明之间的 不匹配才是错误。
- 当需求规格说明书没有提到的功能,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的 功能要求时,就是软件错误
简单理解:
只要软件的功能没有满足需求,从广义来说都叫bug
比如我现在想要软件展示页面是老板电视剧中的白素贞形象(左图),结果软件展示的是王祖蓝版的白素贞(右图),那么此时我们就能说软件出现了BUG(没有满足需求)
测试人员为什么要对一个BUG进行描述?
为什么测试人员要对一个BUG进行描述,而不直接和开发面对面沟通呢
为什么不面对面沟通的原因:
在一个团队中,人与人之间的交流虽然高效,但也是最耗时间的,而且如果bug复杂,面对面的成本远高于阅读bug文档
为什么测试人员要对一个BUG进行描述?
简答:
测试人员对一个BUG进行描述的主要目的是为了有效地记录和传达关于软件或应用程序中的问题的信息,在bug描述中,有着发现问题的版本,问题出现的环境,错误重现的步骤,预期行为的描述,错误行为的描述等等,以便开发人员能够更快速地定位、理解、重现和修复这个问题
详答:
测试人员对一个BUG进行描述的主要目的是为了有效地记录和传达关于软件或应用程序中的问题的信息,以便开发人员能够理解、重现和修复这个问题。以下是描述BUG的重要原因:
- 问题记录:BUG描述是问题的正式记录。它们包含了问题的详细信息,如何触发问题,问题的严重程度等。这些记录可以帮助团队跟踪问题的状态和进展。
- 问题传达:通过描述BUG,测试人员能够将问题的本质和具体细节清晰地传达给开发人员。这有助于避免误解和提高问题解决的效率。
- 问题重现:BUG描述应该包含如何重现问题的步骤。这对于开发人员来说非常重要,因为他们需要在他们的开发环境中重现问题,以便更容易定位和修复它。
- 问题分类:通过描述BUG,测试人员可以对问题进行分类和分级,以确定问题的紧急程度和重要性。这有助于团队决定何时解决问题以及分配资源。
- 跟踪问题状态:通过记录和描述BUG,团队可以跟踪问题的状态,包括已解决、未解决、已验证等。这有助于团队在问题解决过程中保持透明度。
- 团队合作:BUG描述是测试人员、开发人员和其他团队成员之间有效沟通的一种方式。它们确保所有相关方都具备相同的信息,以便协同努力解决问题。
总之,描述BUG是软件测试和开发过程中的关键步骤,有助于问题的及时解决和团队协作。它们为问题提供了清晰的上下文和详细信息,以便更好地管理和解决问题。
一个合格的bug描述应该包括以下几个部分:
注:有bug描述的例子在该标题内容最下面
1、发现问题的版本
开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障,并且版本的描述也有利于统计和分析每个版本的质量
2、问题出现的环境
环境分为硬件环境和软件环境,如果是web项目,需要描述浏览器版本,客户机操作系统等,如果是app项目,需要描述机型、分辨率、操作系统版本等。详细的环境描述有利于故障的定位
3、错误重现的步骤
描述问题重现的最短步骤
就是测试人员发现这个bug时的操作步骤,比如用户登录,那么错误重现的步骤就是:
- 输入账号admin,密码123456,点击登录
4、预期行为的描述
要让开发人员指导怎么样才是正确的,尤其要以用户的角度来描述程序的行为是怎样的。如果是依据需求提出的故障,能写明需求的来源是最好的
拿用户登录举例,预期行为是:跳转到首页
依据需求提出的故障解释:即与需求不符,比如需求是点击登陆后跳转到首页,但实际情况是点击登录后跳转到商品页面,那么这个bug便是依据需求提出的故障
注:要相信,测试人员是最懂需求的
5、错误行为的描述
描述错误的现象。crash(程序崩溃)等可以上传log,UI问题可以截图
6、其他
某些公司会有一些其他的需求,例如故障的分类:功能故障,界面故障,兼容性故障等。有些优先级的分类,严重影响测试需要开发人员优先修改的,可以设置优先级为高
7、不要把多个bug放到一起
在无法确认是同一段代码造成的故障时,不要将bug放在一起提交
拿删除短信举例,删除短信在多个界面都可以删除,如果只是一个页面内的删除操作删除失败,就描述清楚,不要直接写短信删除失败,如下(1是错误的):
1、在短信列表,选择一条短信,进行删除,删除失败
2、在短信列表,选择一条短信,进行查看,在查看页面,进行删除,删除失败
bug描述举例:
第一个例子,页面文字重叠
故障发现版本:VPS20180226_01
故障类别:兼容性
故障优先级:中
故障标题:ie下界面显示异常,界面文字有重叠
故障描述:
测试环境:win7+IE8
测试步骤:1、打开vps首页,点击“通知”链接,进入通知页面
预期结果:通知页面显示正确,一页显示10条通知,按时间顺序倒序排列
实际结果:页面显示10条通知,通知顺序正确,但是页面文字有重叠
附件:上传截图
第二个例子,登录后跳转页面错误,此图片只是为了给你们表述,实际根据情况选择合适的图片或不需要图片:
版本:V1.0
环境:chrome浏览器
错误重现的步骤:输入账号admin,密码123456(账号密码是正确的),点击登录
预期行为:登录成功,跳转到首页
错误行为描述:跳转到课表页面
优先级:严重
如何定义bug的级别
bug的定义每个公司都不一样,在定义级别之前需要查看公司规范
1、Blocker(崩溃)
阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环、导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生死锁、重要的一级菜单功能不能使用等(该问题在测试中较少出现,一旦出现应立即终止当前版本测试)
2、Critical(严重)
系统主要功能部分丧失,数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出,关联程序间调用冲突,安全问题,稳定性等。如:软件中数据保存后数据库中显示错误,用户所要求的功能缺失,程序接口错误,数值计算统计错误等(该等级问题出现在不影响其他功能测试的情况下可以继续该版本测试)
3、Major(一般)
功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统稳定性。如:操作时间长、查询时间长、格式错误、边界条件错误,删除没有确认框、数据库表中字段过多(该问题实际测试中存在最多)
4、Minor(次要)
界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。如:错别字、界面格式不规范,页面显示重叠、不该显示的要隐藏,描述不清楚,提示语丢失,文字排列不整齐,光标位置不正确,用户体验感受不好,可以优化性能的方案等(此类问题在测试初期较多,优先程度较低;在测试后期出现较少,应及时处理)
bug的生命周期
每个公司、每一个工具对bug生命周期的定义都是不一致的,下面仅是一个常见的例子
测试人员应该跟踪一个Bug的整个生命周期,从Open到Closed的所有状态
● New:新发现的Bug,未经评审决定是否指派给开发人员进行修改。
● Open:经过评审,确认是Bug,并且认为需要进行修改,指派给相应的开发人员。
● Fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。
● Rejected:开发人员如果认为不是Bug,则拒绝修改。
● Delay:开发人员认为是bug,但认为暂时不需要修改或暂时不能修改,延后修改。
● Closed:修改状态的Bug经测试人员的回归测试验证通过,则关闭Bug。
● Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改。
无效的bug: open-rejected-closed
rejected、delay的bug一定要周知项目相关人,团队领导
语言讲解(有一定的逻辑,理解后按自己的习惯讲解即可):
测试人员发现了bug,然后打开状态,将bug指派给开发人员,开发人员查看bug决定是否修改,如果认为不是bug则拒绝修改,测试人员随后关闭bug,或者查看bug后进行修改,修改结束后再次打开状态,测试人员进行验证,若验证通过则关闭bug,若不通过,则再次打开,进行下一次的循环