软件工程之开发与测试对缺陷重现条件的常见误解
版本声明:转载请注明出处。未经允许,禁止商业用途。
俗话说,监听则明,偏听则暗。遇到分歧不能轻易相信一面之词,要听两家之言。关于一个bug的重现条件,开发工程师和测试工程师可能有不同的理解。原因何在?我既做过开发工程师也做过测试工程师。我从开发和测试两个角度来看这个问题。
首先从开发角度来看:
1、开发经理看到bug报告,常误以为bug很容易暴露,对测试质量深表不满。实际上,在软件工程实践中,经常会出现这样的情况。测试工程师测出bug时,开发简单看了一下,确认是bug,测试也可以重现,所以就请测试先提bug。过了几天或者一两周,开发自己按照bug报告中的描述,却重现不出bug。测试重新搭建环境,按照bug报告中的描述,却能重现bug。经过一番对比,最终会发现开发的操作和bug描述的微小差异。认真尝试重现的开发人员,只因为微小差异就导致bug不能重现。更何况,开发经理只是简单浏览一下bug报告,遗漏了多少细节。要知道在开放性操作空间中,每多一个重现的必要条件,bug的暴露难度就上升了数倍,甚至更多。更何况是可能遗漏了不只一个条件。
2、开发工程师在修复bug时,关注的是错误代码所在的位置。一旦发现了错误代码,心里想着的是如何修复?而不是想着如何通过代码总结bug重现条件。实际上看到代码来总结bug重现条件未必容易,更何况开发工程也没有动力用心来总结。因为代码执行不是一个点,而是一条路径,路径上的每个判定,都可能存在和外部条件和软件状态的映射。即使为了定位bug,开发从外部的触发条件开始一步步分析代码的执行路径,他也不可能用心去总结所经过的所有判定与外部重现条件的关系。当bug定位出来了,如果有人问他,重现条件,他更可能会告诉你离错误代码最近的判定所对应的外部条件。可只有这个条件是不够重现bug的。但是开发工程师并不关心。
再从测试角度来看:
1、如果能够找到一个缺陷重现的充分条件,通常测试工程师已经很开心了。要去掉所有非必要的条件,非常耗力,也并非必要。因为发现缺陷,是为了能够解决并且有效验证缺陷。如果开发已经能够解决,测试也可以有效验证,这就足够了。当测试工程师费了很大功夫搭建了一个很大的网络环境,发现了缺陷,他通常首先是高兴,但是然后可能就是痛苦,因为开发常会要求他简化环境,比如能在一两台设备的环境中重现它。痛苦也得接收,因为不能被修复的缺陷,也就没有多少发现的意义了。但是如果一定要求测试工程师,将每个bug都精简到一个非必要的条件都不剩,他会一定会发疯。所以测试人员的缺陷报告中通常都有非必要的条件。
软件工程之开发与测试对缺陷重现条件的常见误解相关推荐
- 【测试开发】测试管理工具禅道的安装
[测试开发]测试管理工具禅道的安装 常见的测试管理工具是干什么的? 禅道的安装与配置 安装配置成功 常见的测试管理工具是干什么的? 测试管理工具是在指在软件开发过程中,对测试需求.计划.用例和实施过程 ...
- 敏捷开发和测试中重现缺陷和验证缺陷的解决方案(2)
第二步:静默录制脚本 创建好项目之后,我们就不再需要 RFT 图形界面了,而是使用静默方式录制缺陷重现脚本. 静默方式录制脚本的优点在于不需要操作者对 RFT 有太多了解.只需简单一个命令及几个按钮动 ...
- 敏捷开发和测试中重现缺陷和验证缺陷的解决方案(3)
简介:在作为系列的最后一篇覆盖的部分是缺陷生命周期的最后一个环节,缺陷的验证.本文主要描述了如何通过 Rational Team Concert(RTC).Rational Quality Manag ...
- stretchblt 模糊_微软开源持续开发模糊测试工具OneFuzz
点击蓝字关注我们 近日,微软开源了OneFuzz--一个微软内部使用的,由开发人员驱动的持续开发模糊测试平台.开源后,世界各地的开发人员都可以通过OneFuzz直接从其开发系统接收模糊测试结果. 模糊 ...
- 软件工程:编码和测试
软件的质量主要取决于需求分析的质量 程序的质量主要取决于软件设计的质量 程序代码的质量取决于详细设计的质量 1,编码 1.1,选择程序设计语言 程序设计语言是人和计算机通信的最基本的工具,会影响人的思 ...
- 软件工程-软件开发的工程思维
软件工程-软件开发的工程思维 目录 软件工程-软件开发的工程思维 前言 什么是软件工程? 定义 出现的背景 软件工程核心知识 与项目管理的区别 软件工程的目标 为什么需要软件工程 如何做好软件工程:原 ...
- 敏捷测试——打通开发与测试的壁垒!
DevOps是当前软件行业最热门的话题,无论是互联行业,还是传统行业,大家都在拥抱DevOps,享受引入DevOps后带来的团队效能提升.但是也有不少的团队对DevOps的理解还存在误区,导致在实践过 ...
- 软件测试基础理论体系学习2-软件开发和测试的过程
2-软件开发和测试的过程 1 软件开发过程 1.1 软件产品的组成 1.2 软件开发项目组 1.2.1 项目管理员 1.2.2 设计师或系统工程师 1.2.3 程序员 1.2.4 软件测试员 1.2. ...
- 软件测试整理一:测试基础知识以及开发、测试模型、按照开发阶段进行测试
文章目录 一.基础概念 1.什么是软件测试 2.软件测试的目的 3.软件测试的原则 4.软件测试的分类 4.1 按照开发阶段分类 4.2 按照软件特性分类 4.3 按照测试技术分类 4.4 按照测试运 ...
最新文章
- oracle去掉blob的黑边,oracle Blob处理
- linux查看CPU信息
- SAP Cloud SDK‘s Virtual Data Model
- Android 扫描二维码demo
- 自动驾驶专题研究报告:自动驾驶产业链全梳理
- 装错信封输出所有结果C语言算法,装错信封问题(数学应用题)
- Shiro自定义Token
- linux vi 文件查找,linux几种常见的文件内容查找和替换命令
- 基于Android平台的会议室管理系统详细设计说明书
- PLC计数器例子——3个计数器构成的24小时时钟
- Oracle Golden Gate 系列七 -- 配置 GG Manager process
- 大数据领域十大必读书籍
- 【XBEE手册】AT命令
- 将macbook内置键盘锁住,只使用外置键盘的方法
- Pico 的安卓自启动
- 企业级基于Centos8.5配置IPXE服务批量部署windows方案
- 【毕业设计】大数据 - 网络游戏数据分析可视化
- KANO模型分析法简介与应用
- 周星驰影片经典台词之《大话西游》
- 架构篇 -- 项目从无到有步骤