版本声明:转载请注明出处。未经允许,禁止商业用途。

俗话说,监听则明,偏听则暗。遇到分歧不能轻易相信一面之词,要听两家之言。关于一个bug的重现条件,开发工程师和测试工程师可能有不同的理解。原因何在?我既做过开发工程师也做过测试工程师。我从开发和测试两个角度来看这个问题。

首先从开发角度来看:

1、开发经理看到bug报告,常误以为bug很容易暴露,对测试质量深表不满。实际上,在软件工程实践中,经常会出现这样的情况。测试工程师测出bug时,开发简单看了一下,确认是bug,测试也可以重现,所以就请测试先提bug。过了几天或者一两周,开发自己按照bug报告中的描述,却重现不出bug。测试重新搭建环境,按照bug报告中的描述,却能重现bug。经过一番对比,最终会发现开发的操作和bug描述的微小差异。认真尝试重现的开发人员,只因为微小差异就导致bug不能重现。更何况,开发经理只是简单浏览一下bug报告,遗漏了多少细节。要知道在开放性操作空间中,每多一个重现的必要条件,bug的暴露难度就上升了数倍,甚至更多。更何况是可能遗漏了不只一个条件。

2、开发工程师在修复bug时,关注的是错误代码所在的位置。一旦发现了错误代码,心里想着的是如何修复?而不是想着如何通过代码总结bug重现条件。实际上看到代码来总结bug重现条件未必容易,更何况开发工程也没有动力用心来总结。因为代码执行不是一个点,而是一条路径,路径上的每个判定,都可能存在和外部条件和软件状态的映射。即使为了定位bug,开发从外部的触发条件开始一步步分析代码的执行路径,他也不可能用心去总结所经过的所有判定与外部重现条件的关系。当bug定位出来了,如果有人问他,重现条件,他更可能会告诉你离错误代码最近的判定所对应的外部条件。可只有这个条件是不够重现bug的。但是开发工程师并不关心。

再从测试角度来看:

1、如果能够找到一个缺陷重现的充分条件,通常测试工程师已经很开心了。要去掉所有非必要的条件,非常耗力,也并非必要。因为发现缺陷,是为了能够解决并且有效验证缺陷。如果开发已经能够解决,测试也可以有效验证,这就足够了。当测试工程师费了很大功夫搭建了一个很大的网络环境,发现了缺陷,他通常首先是高兴,但是然后可能就是痛苦,因为开发常会要求他简化环境,比如能在一两台设备的环境中重现它。痛苦也得接收,因为不能被修复的缺陷,也就没有多少发现的意义了。但是如果一定要求测试工程师,将每个bug都精简到一个非必要的条件都不剩,他会一定会发疯。所以测试人员的缺陷报告中通常都有非必要的条件。

软件工程之开发与测试对缺陷重现条件的常见误解相关推荐

  1. 【测试开发】测试管理工具禅道的安装

    [测试开发]测试管理工具禅道的安装 常见的测试管理工具是干什么的? 禅道的安装与配置 安装配置成功 常见的测试管理工具是干什么的? 测试管理工具是在指在软件开发过程中,对测试需求.计划.用例和实施过程 ...

  2. 敏捷开发和测试中重现缺陷和验证缺陷的解决方案(2)

    第二步:静默录制脚本 创建好项目之后,我们就不再需要 RFT 图形界面了,而是使用静默方式录制缺陷重现脚本. 静默方式录制脚本的优点在于不需要操作者对 RFT 有太多了解.只需简单一个命令及几个按钮动 ...

  3. 敏捷开发和测试中重现缺陷和验证缺陷的解决方案(3)

    简介:在作为系列的最后一篇覆盖的部分是缺陷生命周期的最后一个环节,缺陷的验证.本文主要描述了如何通过 Rational Team Concert(RTC).Rational Quality Manag ...

  4. stretchblt 模糊_微软开源持续开发模糊测试工具OneFuzz

    点击蓝字关注我们 近日,微软开源了OneFuzz--一个微软内部使用的,由开发人员驱动的持续开发模糊测试平台.开源后,世界各地的开发人员都可以通过OneFuzz直接从其开发系统接收模糊测试结果. 模糊 ...

  5. 软件工程:编码和测试

    软件的质量主要取决于需求分析的质量 程序的质量主要取决于软件设计的质量 程序代码的质量取决于详细设计的质量 1,编码 1.1,选择程序设计语言 程序设计语言是人和计算机通信的最基本的工具,会影响人的思 ...

  6. 软件工程-软件开发的工程思维

    软件工程-软件开发的工程思维 目录 软件工程-软件开发的工程思维 前言 什么是软件工程? 定义 出现的背景 软件工程核心知识 与项目管理的区别 软件工程的目标 为什么需要软件工程 如何做好软件工程:原 ...

  7. 敏捷测试——打通开发与测试的壁垒!

    DevOps是当前软件行业最热门的话题,无论是互联行业,还是传统行业,大家都在拥抱DevOps,享受引入DevOps后带来的团队效能提升.但是也有不少的团队对DevOps的理解还存在误区,导致在实践过 ...

  8. 软件测试基础理论体系学习2-软件开发和测试的过程

    2-软件开发和测试的过程 1 软件开发过程 1.1 软件产品的组成 1.2 软件开发项目组 1.2.1 项目管理员 1.2.2 设计师或系统工程师 1.2.3 程序员 1.2.4 软件测试员 1.2. ...

  9. 软件测试整理一:测试基础知识以及开发、测试模型、按照开发阶段进行测试

    文章目录 一.基础概念 1.什么是软件测试 2.软件测试的目的 3.软件测试的原则 4.软件测试的分类 4.1 按照开发阶段分类 4.2 按照软件特性分类 4.3 按照测试技术分类 4.4 按照测试运 ...

最新文章

  1. oracle去掉blob的黑边,oracle Blob处理
  2. linux查看CPU信息
  3. SAP Cloud SDK‘s Virtual Data Model
  4. Android 扫描二维码demo
  5. 自动驾驶专题研究报告:自动驾驶产业链全梳理
  6. 装错信封输出所有结果C语言算法,装错信封问题(数学应用题)
  7. Shiro自定义Token
  8. linux vi 文件查找,linux几种常见的文件内容查找和替换命令
  9. 基于Android平台的会议室管理系统详细设计说明书
  10. PLC计数器例子——3个计数器构成的24小时时钟
  11. Oracle Golden Gate 系列七 -- 配置 GG Manager process
  12. 大数据领域十大必读书籍
  13. 【XBEE手册】AT命令
  14. 将macbook内置键盘锁住,只使用外置键盘的方法
  15. Pico 的安卓自启动
  16. 企业级基于Centos8.5配置IPXE服务批量部署windows方案
  17. 【毕业设计】大数据 - 网络游戏数据分析可视化
  18. KANO模型分析法简介与应用
  19. 周星驰影片经典台词之《大话西游》
  20. 架构篇 -- 项目从无到有步骤

热门文章

  1. 爬取豆瓣正在上映的影片信息
  2. 华为云GaussDB创新技术再发力
  3. 【Milvus的人脸检索】
  4. 微软零信任用户访问架构解读
  5. 韩国电商平台 smelchi 店铺开店 数据批量采集上传
  6. ssm+mysql+基于微信小程序的恋上诗词设计与实现 毕业设计-附源码011431
  7. 学习401k计划,建立自己的养老金投资组合
  8. puppet证书重申
  9. Oracle动态授权用户权限
  10. Android 生命周期方法