论测试的主要责任

2016-03-03  柳记 

论测试的主要责任


序:

        很多人对测试工程师这个工作的范围和责任有非常多的误解,可能包括公司的高层、本领域的研发同事、其他领域的同事等等。

        甚至有时候测试工程师本身也受种种观点、看法的影响,混淆了自己的工作职责,盲目的承担额外的工作压力和责任,疲于奔命,无法把精力和心思放在提高本职工作,专注获取自我职业提升上。(这是一个关于承担和推卸的度,下文会用示例具体分享。)

        种种原因,都会让这个群体的从业者背负起额外的工作压力,在某些责任定位或者推卸责任的情况下,莫名中枪。类似的吐槽,在网上我们可能看过很多,比如设计人员、解决方案人员等。但是此文并不是吐槽,实际上,职业生涯初期的小委屈,额外的误解和背黑锅,长远来看,非常有利于打磨出合格的从业者。本文更多是试图表明测试的主要责任范围,以免在推诿扯皮中,放过真正的问题,没有拿出有效的对策和方案来解决问题。


场景重现:

        在不同的维度,我们可能见过对测试领域不同的指责:

        “这个问题测试为什么没测出来?”——这是产品经理或者高层面对客户的反馈,习惯性第一板子先打过来。

         “你们的测试是怎么设计的?有没有考虑客户的实际应用场景?”——这可能是项目经理或测试经理对测试工程师的拷问。

         “不是有测试么?代码自测完提交上去就行了,等他们测出来问题就改,测不出来就过了。”——除了业内非常有名的大公司,很多公司对代码提交、联调做的还是非常不规范,很多开发人员就会产生这种想法。

         “这个BUG到底有没有修复,是什么原因,以后怎么督促解决改进?”——很多人也会把QA和测试的责任放在一起做要求。

        那么你知道在上文的几种说法里面,有哪些是测试人员的责任?有哪些不是测试人员的责任呢?


        正如邰晓梅在她的《测试对质量负主要责任?》中表达的观点“我的观点:测试不对质量负主要责任,测试只起到质量辅助的作用;测试是一种服务,为其他角色提供服务,提供关于质量的信息。”一样。个人认为:

        产品的质量是产品团队每个人都要承担的,不隶属于某个小组或某个角色。测试的责任是要对测试工作本身负责,承担本职工作的质量责任。而不是承担整个产品的质量责任。

        这个观点的另外表达方式,可以参考个人的另外一篇博文《一把手的态度决定产品质量》。


测试的本职工作是什么?

        我们可以跨领域用一个案例来分享——体检。

        很多公司每年都会组织员工进行体检,在IT行业或任何一个行业待久了,都会有一些职业病,体检结果也不尽人意。Ok,测试部门,实际上就是一个体检中心。整体流程如下:


        一、一个人进入体检中心(一个开发产品流转到测试环节)

        二、体检中心经过五官科、抽血、验尿、X光等等一系列流程(测试经过冒烟、功能、性能、随机等等流程)

        三、体检中心会给这个人出具一份体检报告(测试提供的测试报告)

        四、体检报告会列出问题,比如脂肪肝、高血压等等,以及给出建议和结论(测试会给出产品的问题,以及解决建议,版本测试结论)。

        这个例子就是测试完整的工作范围和职责。一个人体检有没有问题,实际上取决于这个人自己。同样,自己的病症能不能解决,也完全取决于自己。

        人的病症可能就是自己的作息习惯、平时的重视、遗传或意外导致,体检只是暴露了问题。——同样,好的产品是设计出来的,而不是测试出来的——宏观上有流程,微观上编码规范,有评审有制度,如果严格遵守过程质量,那么最后的结果肯定是符合本组织的质量标准。所以患病的原因,往往是因为没有按照规范来,平时的代码设计编写粗狂,取的开源代码直接放到版本中等等原因导致。

        病症的解决,也会完全依赖这个人本身,而不是体检中心。比如脂肪肝,体检中心可能会给出脂肪肝的危害性,以及提供一些建议:运动、饮食平衡等。但是这个人本身不重视,依然我行我素,那么下一次体检,肯定还会存在脂肪肝这个问题,当然,可能会更严重一些。同样,测试团队对产品进行了测试,如果在开发过程中不去修复,或者没有解决方法——比如加强评审,增加自测用例,对代码进行部分优化或重构,甚至换人等等,那些同一个团队,下次的产品质量,也不会本质上的提高,该有的问题,还依然会有。

        当一个人面对体检报告的时候,可能知道应该怎么做,但是考虑到其他因素,还是会继续带着问题前行,比如这个人是销售,他会说我知道我有脂肪肝,但是我需要陪客户应酬,没办法——同样,一个产品发布,测试团队给出问题,可能产品团队是心知肚明,但是为了赶上产品的deadline,或者先对付竞争对手的某类产品,只能带着风险/问题发布。两者的意义一模一样,知道问题,但是经过评估,选择带着问题继续下去。

        体检中心的责任是全面的对体检者进行诊断,提供详细的报告建议。至于体检者有没有问题,问题能不能解决,完全的取决于体检者本身的努力。同样,测试的责任就是针对准入测试的产品进行系统的测试,给出测试结论。问题本身能不能解决,还依赖于开发人员的修复和完善。

        测试是产品质量的一个环节,可以理解为是质量体系非常重要的环节。但是绝对不是唯一的环节。测试对质量的责任就是做好本职工作,提高测试的质量和效率。


        还是用体检的例子。

        如果一位体检者本身有脂肪肝,体检中心没有检测出来,给体检者出具了全部合格的报告,这种误诊漏诊,是体检中心的事故。同样,产品的缺陷没有测试出来,就是测试的失职,是没有做到本职工作的质量标准。针对测试环节,会有漏测或重大事故指标来衡量测试环节的工作质量。

        换个主动的角度,体检中心让体检者对自己的健康有全面直观的了解,不要担心讳疾忌医。对一些特别严重的病症,可能会采用婉转的表达,或者瞒过体检人,直接和直系亲属沟通。但无论如何,要对出具的体检报告负责,通过或直接、或委婉、或间接的方式通知到个人。一个软件版本进入测试环节,测试人员有必要把这个版本的真实情况完完整整的呈现出来。同样,测试也不要因为面子等因素或各种穿小鞋的权术范围,去主动的隐瞒产品的缺陷。也可以通过种种直接、委婉或间接的方法。


        体检中心怎么去提升自己的业务,提高自己的专业化程度呢?

        1、提高效率:原来平均一个人体检需要3个小时,提高到2.5个小时;

        2、简化流程:通过各种体检项目的整合优化,节省体检者的往返次数;

        3、更新设备:购买更先进的器材,提高准确度和工作效率;

        4、培训人员:让医生的业务技能提高。

        5、业务创新:做血常规本来需要抽4管血,现在只需要抽3管。


        这也是测试部门如何提高自己本职工作的方法,如何更快准狠的出测试报告?无非就是上文描述的种种:培训、流程优化、测试工具开发更新、测试理论和意识提高,结合业务优化测试方法等等。


        做更专业化的测试团队,而不是做管的更宽的过程质量团队。这可能是很多业内业务人员的混淆——你让一个体检中心,派出自己的护士,24小时跟催体检者:不行,你不能抽烟,要注意健康;不行,不能熬夜,注意血压等等——是应该有人去做,但是,肯定不是体检中心这个部门的本质职责。


测试要不要向过程质量的探索?

        上文定义了测试的本职工作。但是在实际的工作中,测试和过程质量之间的界限非常模糊,这就是开篇提到的承担/推卸之间度的问题——承担额外的工作压力和责任,疲于奔命,无法把精力和心思放在提高本职工作,专注获取自我职业提升上。

        没有一个标准答案,需要具体情况具体分析的判断。下面分别从三个角度来分析问题:


        正面:

        测试人员多是新人,打出bug之后,并不是继续投入到其他测试执行或者测试技能提升,而是继续跟踪这个bug,确认bug是那个开发人员的,这个开发人员怎么分析定位的,bug的原因是什么,业务逻辑耦合还是编码思路不够清楚,这个bug是怎么修复的,resolved之后,自己应该怎么验证?  

        通过这种对bug打破沙锅问到底的方式,测试人员能较为快速的了解很多业务逻辑,对后面自己定位问题、分析问题,甚至成长为需求、架构师都非常有帮助。当然,可能对测试本身来说较为耗时,因为同样的工作时间,可能会继续执行好多case。

        测试人员是老手,对很多疑难问题怎么处理都比较清楚,甚至一些常见的编码错误都比较知道。所以会去对一些研发的新人做一些反向的追溯和建议。这种方式,对产品本身的质量非常好,同样,也很容易让开发和测试之间的对立关系趋向于平和。


        反面:

        真正需要对质量负责的人,逃避了自己的责任。某个产品经理面向客户一阵虚吹,回头给的项目时间比较少。最后出了问题,直接找测试团队背黑锅,产品质量问题都是因为没有测出来。

        没有真正意义上的QA团队,由测试团队兼任,在向前探索,规范过程的时候,和开发人员对立,然后把较多的精力放在互相证明对方是错误、是不规范的事情上。无法集中精力在业务和技术的层次——如果明确是测试兼任QA的职责,那么一定要快速的切成两只子团队,各负其责。职责混淆在一起,肯定会出问题。


        第三方:

        产品经理和测试主管达成一致,你帮我背黑锅,回头我补偿给你——某款产品出了问题,大老板雷霆震怒,一定要找人承担责任。这时候,产品经理说不能让全团队挂掉啊,测试的兄弟帮忙背个黑锅,回头我补偿你。然后测试主管就站出来,说都是我的错。然后扣奖金,通报。过了半年,产品经理找个由头,给测试主管加了一下工资。

        类似的这种小弟替老大背黑锅的江湖义气桥段,实际上在很多公司也上演过。这种场景不好定位是正方还是反方,所以就放在第三方来描述。

        所以测试要不要向过程质量去探索,甚至承担质量的责任。在不同的公司、文化、环境、定位下,是截然不同的选择。

        很多迷茫的同行,也不要奢望能在网上找到标准答案。自己在工作的时候,仔细的评估好各种利害关系,小心求证的去做即是。

        整体而言,产品的质量是产品团队每个人都要承担的,不隶属于某个小组或某个角色。测试的责任是要对测试工作本身负责,承担本职工作的质量责任,而不是承担整个产品的质量责任。让测试本职工作更专业的方法是去提高测试的效率、准确度、方法、工具、思路等等。

213°/2132 人阅读/0 条评论 发表评论

登录 后发表评论