问题描述:
一个优秀的测试人员是否需要对缺陷定位负责?
精彩答案:
会员 TesterChen:
问题的答案我觉得应该是肯定的。
首先,从字面意思来说,我觉得测试人员应该对缺陷的定位负责,尽量在报告缺陷时将自己对于缺陷的理解(或缺陷产生的原因)写入到缺陷的备注信息(或缺陷主体)中。在个人能力、资源许可的情况下,尽我们所能的去提升我们的工作质量,做到100%的自我负责,因为我们的目标不是做完成就可以,而是追求优秀!!!
其次,软件测试人员的责任角度来说,在测试人员具备这样的个人能力,且通过他们掌握的资源可完成对定位缺陷,那么最好是提供对缺陷的定位给开发人员或产品人员。这样即方便开发人员去定位问题、解决问题,也便于后期缺陷的追溯与回归。同样,部分缺陷可作为产品人员对产品进行优化的参考。
但是,如果对缺陷的定位很困难,通过测试人员所掌握的资源与知识在短时间(如一个小时、半天)内无法完成对缺陷的定位,我们最好是向开发人员反映,并表示期望得到他们的帮助,共同对发现的缺陷进行定位,定位后要记录在缺陷的描述中;
如果在交流过程中测试人员和开发人员一致认为此问题很复杂,需要开发人员内部进行排查的问题,那么此时测试人员可以终止缺陷定位,交由开发组人员进行处理,测试人员只需要对后期缺陷产生的原因进行了解、对缺陷进行回归测试即可,测试人员可考虑参加他们的讨论。
将问题的定位转至开发人员层面之后,如果涉及到更加深层次的问题,开发经理(项目经理)会向他们的上级或同行请求协助,测试人员可考虑参加他们的讨论。
另外,我们要考虑的一个问题就是具体问题具体分析、能随机应变。如果测试组的成员有很重的测试任务,在规定的时间内对所有内容完成测试任务的可能性都不大,那么我想测试人员也没太多时间去找寻缺陷出现的具体原因。但在这里仍然要强调的是缺陷的重现步骤、涉及到的数据等信息一定要记录全面,这样方便开发人员在调试时更快更准确的重现问题、找到问题、解决问题。
同时,我觉得适量的对具体问题进行深入探讨,即有利于我们了解被测系统的业务,也有利于提升测试人员的工作技能。同时也加强了开发人员与测试人员之前的相互沟通和协作。
最后,我认为优秀测试人员不仅要善于找出现在系统已有的缺陷、对发现的缺陷进行问题定位、提出对缺陷的修改意见或建议。更要能预知未来系统可能会出现的缺陷,并提出自己的看法、同时设法对它进行验证。
会员 san:
狭义的说,不需要!广义的说,depends。
这个其实以前考虑和讨论过的。
说不需要是从合作分工的效率上来说。专职的测试出现是软件工程化之后,出于提高生产力和提高合作管理效率,必然的结果就是行业分工。这和其他行业工程化的体系框架相似。测试,开发,项目管理,需求,架构师,分别代表和承担着软件开发过程中的不同方面。专职的分工能提高工种的专业性和过程平衡(不至于忽视了某一方面),在绝大多数情况下这是提高效率的有效手段。我们可以定义测试人员的职责是:证明没问题,或者发现问题,或者预防问题。无论从这些传统的任何一个定义,其实都没有必要去定位问题,只是需要确定和重现问题。当然,定位问题的能力,在某些时候能有助于我们发现和分析,但这不是必须的。如果只是为了解决修复,让熟悉代码的SE来,效率会更高。
说depends是因为,分工合作是基于某种工程模式的。也就是我们常说的开发模型。任何工程模型的两个核心都是过程与分工。不同种软件模型都是在解决相同的软件问题:需求的抽象/变更,设计的预见/适度/变更,过程的估计/变更,而波动和变更的体现就是风险。在不同的工程模型中,我们可以设定专门的角色掌控风险,也可以把风险掌控的职能放到其他不同角色中。所以一个角色的职责,需要做什么或者不需要做什么,取决于工程模型的设定。我们的模型一直在发展演变。一些团队在刻意模糊淡化研发测试的界限,一些团队拓展了测试的职责。测试可以不仅仅对产品质量负责,也可以对需求质量负责,可以对过程质量负责,可以对代码质量负责。对代码质量负责的测试团队,或者运用底层测试技术的团队,往往需要进入代码层,或者说他们本身测试的颗粒度就很小,这样不但能更容易捕捉到代码的变化,容易维护,其实也一定层度定位了问题。另外一个特例是性能测试。性能测试最困难的地方其实是场景和分析。这里,分析和定位问题,然后重新设计更有针对性的场景就是QA的职责了。
总的来说,测试是可以定位问题的。但定位和解决问题在分工上真不是测试本来的出发点。如果还有测试这个职业,他依然应该围绕质量这个中心。只是随着分工形式和技术发展的演化,我们运用的方法也能一定程度上能定位问题。最后,从职业发展来看,测试人员的职责定位也会随着工程模型的演变不断发展,提高技能与时俱进还是有益的。
会员 ffan1027:
以下是我的见解 :)
作为一名优秀的测试人员,能够对发现的缺陷进行准确定位,对与产品线或项目组来讲是非常有利的事情,可以给出研发人员修改建议,提高研发人员的工作效率。但是针对此题目“一个优秀的测试人员是否需要对缺陷定位负责?”我认为答案是否定的。测试人员有责任对缺陷问题进行定位,负一部分责任,但是缺陷定位的第一责任人应该是研发人员。
测试人员的职责包含:制定测试计划、撰写测试用例、执行测试用例、总结测试报告、缺陷管理。开发人员的职责包含:制定研发计划、根据需求实现功能开发,使之满足需求定义,并正确的运行。缺陷定位可以划分在缺陷管理中,当我们发现一个bug时,会详细记录bug的复现步骤。如果能找到缺陷的根本原因那是最好的情况,但是有很多情况下,如产品成本控制,不要求测试人员对代码级的分析和测试,无法通过调试代码来定位缺陷问题,那么定位缺陷的就由功能开发者完成,毕竟是自己写的代码,最熟悉的还是自己。测试人员可以针对缺陷给出问题定位建议,对于问题定位是否正确,是否接纳测试人员的修改建议,研发人员有自己的见解,应对自己研发功能的缺陷定位负责,并根据缺陷定位修复bug。
虽然上面我讲由研发人员对缺陷定位负责,但是对于测试人员的自身素质来讲,缺陷定位是非常重要的一项要素。工作时只发现问题表相,描述缺陷仅包含步骤,没有对缺陷的分析,“做了什么操作,系统报了错误,无法进行……”,我们所做的工作缺乏了一些挑战和难度。如果能在发现缺陷后,对缺陷进行定位,如“缺少配置文件x.config”、“执行sql不正确,where条件关联关系错误,xx.id
应与cc.id关联,不是与a.id关联”、“sql语句错误,开头是应该为 like ‘xx%’,现在写为了like ‘%xx’
,同理’结尾是’sql也错误”。这些是几个简单的例子,开发人员看到bug后,清楚明了,可以直接修改代码,提高了我们测试工作的趣味,同时也提高项目组的工作效率。