在项目过程中,测试同学会发现大量的bug,但同时也不可避免的会存在一些遗漏的bug。为了能够减少遗漏bug的现象,我们需要针对遗漏的问题进行总结,从教训中积累经验,总结方法,从而提高测试的覆盖度,提升产品的整体质量。

什么样的bug需要进行总结?

1.线上遗漏的bug

没有被测试发现而遗漏到线上的bug。其影响不言而喻,会直接影响用户的体验,影响产品的口碑,势必需要进行总结。

2.非线上遗漏的bug。

没有在规定的测试阶段发现,从而导致发现晚的bug,例如XX模块已经测试完毕,结果后来又发现该模块的新bug。这类bug会导致增加bug修改和验证的时间,从而有可能影响项目的整体进度,甚至导致项目delay。

什么时机进行bug总结?

1.项目上线后,应尽快进行bug总结,否则时间一长会出现遗忘的情况,包括测试和开发两方面,给总结操作带来不便。

2.遇到严重的或非常重要的遗漏bug,可随时进行单独总结,比如线上发现的严重问题。

总结什么内容?

总结bug的核心,是为了后续减少遗漏bug,提高测试覆盖度,提升项目质量。想要达到这个目的,首先需要分析bug的原因,尤其是遗漏原因;其次是确定后续的改进方案,避免类似的问题再次发生。

原因分析:

bug遗漏的原因一般分为几大类:

  • 非遗漏问题:bug总结时,出现概率最高的可能就是非遗漏问题,这类问题并不需要进行具体的总结,其中主要包含三类:

    • 不是问题:例如用户反馈的问题,但符合产品的需求要求,这种就属于不是问题。

    • 开发引入:例如我们测试完成的模块,开发修改bug,或在测试不知情的情况下修改了代码,引入的新bug。

    • 需变引入:例如我们测试完成的模块,发生了需变,导致新的bug产生。

  • 用例设计遗漏:bug是用例设计时没有覆盖到的场景,又可以细分为几类:

    • 基础用例设计不足:例如需求中详细说明的内容,没有在用例中提现。

    • 需求理解错误:例如需求理解错误,导致测试用例的预期结果不正确,而开发实现正好符合错误预期。

    • 模块间影响考虑不足:例如没有A模块与B模块有关联,会对B模块产生影响,但B模块的用例中未涉及到相应的场景。

    • 复杂路径无法覆盖:路径过于复杂,或者涉及较多层级的操作,例如经过10步操作后才会出现的bug。

    • 复杂场景考虑不足:例如两个或多个看似完全没有关系的场景,结合起来产生的bug。

    • 适配问题考虑不足:例如在某些特定的机型上出现的bug。

  • 用例执行遗漏:bug是执行用例过程中出现过,但没有被发现,可细分为2类:

    • 纯执行遗漏:测试用例中涵盖,但没有执行;或者执行了用例,也出现了问题,发现了问题但没有提交bug。

    • 敏感度不足:测试用例中涵盖,但没有明确说明,遇到了问题,但没有意识到是bug。例如同样都是头像,在A页面是个圆的,在B页面是个方的。

  • 重现率低的问题:重现几率较低的bug,无稳定复现的步骤。

  • 体验性或性能问题未关注到:需求中没有明确说明,也未在用例中涉及,但对用户体验有影响,后经其他方指出的bug。例如产品logo不够明确、使用过程中设备发热等。

改进方案:

针对bug遗漏的不同原因,也有不同的改进方案。

  • 非遗漏问题:这种类型,与测试无关,无需改进。

  • 用例设计遗漏:

    • 补充对应模块的测试用例,这个是基础。

    • 补充后的case是否具有通用性,如果有,那么需要应用到所有相关的模块中,并作为后续用例设计的经验积累。例如:锁屏后再解锁会导致某个页面控件的功能失效,那么各个页面都应该添加“锁屏后再解锁,检查控件可用”的case。

  • 用例执行遗漏:

    • 纯执行遗漏不可饶恕,除了自己做好备忘外,没什么更好的改进办法,这个层面出现问题,更多的应该是自我反思。

    • 如果是敏感度不足导致的遗漏,那么可以持续进行经验积累,提升自己对bug的认知。

  • 重现率低的问题:

    • 如果是能够找到具体原因的bug,那么应该深入挖掘,找到问题的本质原因以及重现步骤,然后再进行分析,对遗漏原因进行归类,然后再进行针对性的改进。

    • 如果是无法找到具体原因的bug,这块暂无有效的改进方法。

  • 体验性或性能问题未关注到:这类问题的改进方案跟敏感度不足的改进方案类似,需要持续的进行积累,提升自己的产品感觉。

其实对于bug总结,应该正面认识,并不是一味的追讨责任,而是更好的改进测试方法、提升测试是能力。认真做好bug总结,对测试团队、测试个人的能力提升,都有很大的帮助。

尊重原创,转载于搜狗测试公众号!

如何进行bug总结的更多相关文章

  1. Tomcat一个BUG造成CLOSE_WAIT

    之前应该提过,我们线上架构整体重新架设了,应用层面使用的是Spring Boot,前段日子因为一些第三方的原因,略有些匆忙的提前开始线上的内测了.然后运维发现了个问题,服务器的HTTPS端口有大量的C ...

  2. a标签点击跳转失效--IE6、7的奇葩bug

    一般运用a标签包含img去实现点击图片跳转的功能,这是前端经常要用到的东西. 今天遇到个神奇的bug:如果在img上再包裹一层div,而且div设置了width和height,则图片区域点击时,无任何 ...

  3. 关于 Chrome 浏览器中 onresize 事件的 Bug

    我在写插件时用到了 onresize 事件,在反复地测试后发现该事件在 Chrome 及 Opera(内核基本与 Chrome 相同,以下统称 Chrome)浏览器打开时就会执行,这种情况也许不能算作 ...

  4. Chrome出了个小bug:论如何在Chrome下劫持原生只读对象

    Chrome出了个小bug:论如何在Chrome下劫持原生只读对象 概述 众所周知,虽然JavaScript是个很灵活的语言,浏览器里很多原生的方法都可以随意覆盖或者重写,比如alert.但是为了保证 ...

  5. 一个粗心的Bug,JSON格式不规范导致AJAX错误

    一.事件回放  今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...

  6. 了不起的 nodejs-TwitterWeb 案例 bug 解决

    了不起的nodejs算是一本不错的入门书,不过书中个别案例存在bug,按照书中源码无法做出和书中相同效果,原本兴奋的心情掺杂着些许失落. 现在我们看一下第七章HTTP,一个Twitter Web客户端 ...

  7. 应该是Angular2的一个bug?

    为了应对未来的趋势,及时赶上下一趟互联网技术,我最近也在通过具体项目研究angular2,首先必须要吐槽的是,学习angular2的成本本身不高,但是一堆的工具.配置实在让人 很是焦灼,就像asp.n ...

  8. 记录一次bug解决过程:数据迁移

    一 总结 不擅长语言表达,勤于沟通,多锻炼 调试MyBatis中SQL语法:foreach 问题:缺少关键字VALUES.很遗憾:它的错误报的让人找不着北. 二 BUG描述:MyBatis中批量插入数 ...

  9. 关于MJRefresh的下拉加载数据bug

    当没有更多数据的时候显示NoMoreData 我的理解是先结束刷新再显示没有更多 今天之前一直没发现有问题 贴之前的代码 [self.collectionView reloadData]; [self ...

  10. [异常特工]android常见bug跟踪

    前言 对app的线上bug的收集(友盟.云捕等)有时会得到这样的异常堆栈信息:没有一行代码是有关自身程序代码的.这使得对bug的解决无从下手,根据经验,内存不足OOM,Dialog关闭,ListVie ...

随机推荐

  1. JSON.parse和JSON.stringify的区别

    JSON.stringify()的作用是将 JavaScript 值转换为 JSON 字符串, 而JSON.parse()可以将JSON字符串转为一个对象. 简单点说,它们的作用是相对的,我用JSON ...

  2. 牛客训练三:处女座和小姐姐(三)(数位dp)

    题目链接:传送门 思路:数位dp的记忆化搜索模板 从高位向低位枚举,逐位确定每一位的6的个数,dp[i][s]表示处理到第i条边,状态为s时的数字的个数. 注意,要使用long long类型. #in ...

  3. mysql 在linux下的完整安装过程

    1.下载RPM包 https://cdn.mysql.com//archives/mysql-5.7/mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar 2.先使用命令删 ...

  4. php Amome框架 层次设计备注

    层次说明: 每一级中函数都是为而且只为  上(高)一层  的文件服务的 最底层: AmemoMySql   基础数据库函数:AmemoConfig  数据库信息配置文件  再高一层: 一个文件对应一个 ...

  5. linux 定时器 定时执行php

    输入命令:    crontab -e 添加定时命令 每隔一分钟执行一次php //复制一下命令即可.  */1 * * * * /usr/bin/curl -o /home/logs/temp.lo ...

  6. 好文推荐系列---------(4)使用Yeoman自动构建Ember项目

    好文原文地址:http://segmentfault.com/a/1190000000368881 我决定学习前端开发的效率工具Yeoman.本文将首先介绍Yeoman的基本情况,接着我们会使用Yeo ...

  7. Ng第十七课:大规模机器学习(Large Scale Machine Learning)

    17.1  大型数据集的学习 17.2  随机梯度下降法 17.3  微型批量梯度下降 17.4  随机梯度下降收敛 17.5  在线学习 17.6  映射化简和数据并行 17.1  大型数据集的学习 ...

  8. C#-vs2012学习笔记-惊奇于vs的强大和便利

    网站常用功能自动完成,包括网页和数据库.

  9. java基本数据类型与封装类型详解(int和Integer区别)

    int是java提供的8种原始数据类型之一. Java为每个原始类型提供了封装类,Integer是java为int提供的封装类(即Integer是一个java对象,而int只是一个基本数据类型).in ...

  10. QT源码查看001-QApplication和QCoreApplication

    QCoreApplication和QApplication的区别(1) QApplication这个类是继承QCoreApplication的,而QCoreApplication有继承QObject的 ...