** 你跟开发和谐么?**

 

导语:测试工作从业者,打交道最多的就是开发,而测试和开发之间的关系在行业内被称为‘天敌’。

 

  ** ‘天敌’关系形成的原因 **

 

那作为测试工程师,你知道要怎么更好地来处理跟开发之间的关系么?其实对于这种‘敌对’关系,我们也不难理解。

开发是产品的制造者,产品就相当于他的‘孩子’,而测试的工作是去寻找这个“孩子”身上的毛病。相信,没有一个妈妈喜欢自己的孩子被各种挑错,然后要让自己去纠错进行重塑。所以,人之常情,开发和测试的这种天然冤家的属性确实在所难免。所以我们经常能在公司各个的茶水间或者会议室看到这样的一些对话和小场景: 

 

几个测试工作人员抱怨开发的各种行为:

A:xx开发每次开一个bug就过来让我重现,明明我bug里的步骤描述得已经很清楚了,他自己都不会操作一下的!

B:xx开发太依赖测试了,相同的bug提出一处改一处,同类型的bug在相关的模块不能一并修改了么?

C: 遇到不想修复的bug,就说自己本地是好的,或者质疑测试的版本不对,再不然就说用户不会这么操作,不用修复,反正就是想方设法的不修bug!

D:开了bug开发就让我清数据,清缓存,或者重启手机,三两下就把bug整不见了,复现不出来了,就说看吧,不能复现,不修复了!

E:我开了一个bug,开始明明能稳定复现,然后开发一直放在那里不管,等过了一段时间后,我的环境被破坏了,或者测试版本升级了,又让我复现这个bug,浪费时间重新搭环境不说,bug还经常不再复现了,然后他又说不能复现所以bug就不修复了...

F: 开发修完这个bug单元测试报告没有,而且bug描述备注也没有,不说清楚根本原因和影响模块,我怎么做回归测试啊! ……

测试对开发的种种行径,哀声怨道,不绝于耳。

当然,开发对测试的态度也好不到那里去,你同样能经常听到开发围在一起埋怨测试人员:

A: xx经常开一些这么小的bug,还总要求开发改,影响又不大,还耗时费力,测试都不懂项目管理和预估风险啊?

B:这些明明是客户端的bug,指派给我们服务器是几个意思?测试都不会自己先定位一下的么?这点业务能力都没有!

C: 经常花费了大量的时间排查和定位bug,最后竟然发现是无效的bug,测试到底有没有搞清楚需求?简直是浪费大家的时间!

D:明明是个Major的bug,却给我报成critical级别,还害我被领导催加班,自己谨慎一点定bug级别不行么?

E:xx测试总是一直在问bug产生原因和解决方法,测试又不懂代码,说了也不明白,一直解释也是浪费大家时间!

F: 测试整天搞一堆流程和文档,要开发提供这个提供那个,开发写代码哪有那么多时间! ……

看着这些言辞相信作为测试工程师的你肯定觉得一点都不陌生。因为立场不一样,职责不一样,出现这样的分歧和矛盾也无可厚非。但是,如果每天工作在这样的氛围里,每天都需要花心思去跟开发斗智斗勇,不止影响我们每天的心情,而且肯定也会影响我们的工作效率。

 

所以,作为测试工程师,我们到底可以做些什么来改善这种敌对关系呢?或者说可以从哪些方面来努力融洽我们的工作氛围呢?

 

 ** 测试如何改善?**

> >业务能力

1. 我觉得测试工程师应该提高自己的核心业务能力,让开发挑不出来毛病,从而对你产生信任甚至叹服。

关于这点我自己是有亲身经历的,所以深有体会。我曾经工作2年左右,跳槽到一家外企做一名senior测试工程师。刚到公司参与项目的时候总是格外的谨慎,开bug也要经过再三确认才会发出去。但是就算是这样,跟公司的开发的矛盾也还是没有幸免。当时公司的开发老大是个特别强势的人,声音大气势强,一说话能把人吓懵的那种。我当时开了一个bug,在我的环境下面再三确认过,是个能够稳定复现的严重bug,所以我标记为了critical的级别,并且指派给开发。对应模块的开发大致定位了一下,没有复现出来。然后这个开发老大,就气势汹汹的过来测试办公区,趾高气昂地跟我的测试经理说:

‘你们测试怎么开bug的,是不是bug自己有没有搞明白啊?现在开发的环境里就是OK的,肯定是你们的测试环境的问题或者操作方法的问题!下次搞清楚再发bug,不要浪费开发的时间...’ 

这些话说的一点都不客气,矛头全指向测试这边,不留任何余地。 

我当时内心肯定是很生气的,但是我没有直接站起来跟他理论,因为我知道,需要理论必须要掌握有效的证据,自己才能有底气,不然就是强词夺理,没有胜算。

所以,我在自己的环境下再次成功的把这个问题复现出来,然后再去找到开发,帮助他搭建同样的环境,告知稳定的复现步骤,将bug在他的环境下复现,并且协助开发把问题定位出来,只需要他们修改对应的代码就可以了。

整个事情,我没有去争吵,没有去理论,用自己专业的业务能力,让他们心服口服。

从这次事情之后,整个开发团队对我的态度明显的改善了,不仅不再趾高气昂的指点和质疑我的工作,而且在要修改bug的状态(非修复状态)的时候也会先跟我确认,得到准许之后才做相应状态的修改。

我的工作开展顺利了很多。

所以,要避免落人口舌,请先做好自己。测试做好自己的首要前提,就是必须要提高自己的业务能力:

◆ 一方面要充分的熟悉产品,理解产品的逻辑和实现,在这个基础上,不仅会提高你的测试技能和工作效率,而且在被开发质疑的时候,也能有扎实的产品知识做后盾,有充分的底气去做辩解,理论才有胜利的可能;

 ◆ 另一方面,也要规范自己的工作的输出。例如保证各种测试文档(测试计划,测试用例和测试报告等)的质量,可以经得起开发、产品等各部门的审核;比如保证输出的bug质量,编写bug的描述和步骤清晰,bug的严重级别定位准确,以及定位日志和现场截图齐全,不给开发留下挑刺的余地。

提高了自己的工作质量,才可以用同等的标准去要求开发,才能在守住测试的立场的同时,也赢得对方的尊重。

 

 > >技术能力

2. 其次,测试人员也需要提高自己的技术能力,包括测试的技能,以及测试相关的技术能力和知识领域。

同样给大家分享一个真实的故事。

我原来有一个同事,也是做测试的,因为是黑盒测试,她并不懂代码。在项目工作过程中,她遇到一个合作很不愉快的开发,每次想更加深入地熟悉产品的功能实现和业务逻辑的时候,咨询开发,他都很不配合。两个人争吵过,也互怼过,甚至双方领导调解过,但是都不见情形的改善。

没有办法,为了保证自己的测试任务能够按时按量的完成,她只能逼着自己去阅读产品的源代码。

虽然一开始都看不懂,但是她坚持,一边找资料,一遍咨询别人,最后终于把这个产品相关模块的代码都熟悉了。

在随后的测试过程中,遇到bug,她可以自己准确的定位出来是那一块代码的缺陷。

从此以后,再也没有听过她跟那个开发争吵了,因为她自己已经成为了那个最熟悉产品的人,不管从功能实现,还是代码逻辑,她都了然于心。

技术在手,无求于人。

所以,测试工程师可以适当的有针对性的提高自己的技术能力。

那从哪些方面提高呢?

◆ 第一,肯定是测试的技能,测试流程以及各种测试方法的掌握是测试工作的基础,所以这个是必须要掌握的;

◆ 第二,第二,最好能熟悉至少一门语言,不管是java,C++,或者其他的脚本语言python,perl以及shell,掌握其中1-2个就可以。有了语言基础,测试可以更加深刻的理解产品的实现,也能够更加清楚的知道bug经常会出现的模块,能够对产品进行更加充分的测试; 

◆ 第三,需要至少要掌握一种数据库的使用,如对SQL的操作,能运用JOIN进行查询,或者HAVING用法,测试人员离不开数据库的管理和操作,自己掌握了这方面的技能,就再也不用依赖开发,减少自己的被动性;

◆ 第四,也需要熟悉系统的相关操作,如安装,配置,管理,对于Linux系统需要熟悉常用的操作命令,能在Linux下能安装和配置软件等。 

总之,提高了自己各方面的技术能力,才能够在工作中充分发挥自己的主观能动性,不过分依赖开发,才能提高自己在开发心目中的专业性,赢得双方平等的待遇。

 

 > >沟通能力

3. 再者,测试工程师也要提高自己的情商,增强自己的沟通能力,懂得站在开发的角度思考问题,学会去尊重开发人员。

 相信大家都知道,无论什么场景,有效的沟通总能让事情完成得事半功倍,测试跟开发之间的关系处理也是一样。

作为测试人员,我们除了坚持自己测试的角度和立场之外,也要有同理心,学会站在开发的角度去看问题。

实际上很多冲突都是源于大家对需求理解不一样造成的,所以当测试和开发对一个bug持有不同观点的时候,不要率先很强硬的否定他,尝试解释为什么他理解的需求有不足之处。找到一些可以站得住脚的论点,从用户角度出发,从安全性考虑,或者从易用性和友好性来看,说服开发接受测试的观点,而不是强加自己的观点给他们;

另外,平时工作之余大家也可以多沟通,有机会就组织一些活动让开发与测试熟悉一下,这样子很多时候面对熟悉的人,在反对对方的观点的时候会更加容易考虑一下对方的感受,只要气氛不对立,很多事情就可以商量了。

这些沟通技巧都是一个人情商的体现,这也是为什么很多公司招聘的时候都要求测试人员善于沟通和表达,高情商的表达和沟通方法,可以让我们的工作氛围少一些凌厉,多一些柔和。

 

 >> 流程管理

4.最后,在公司层面,最好还有一个完善的管理流程,通过流程控制来规范开发和测试部门的工作,同样可以很大程度上减少冲突的发生

质量保证从来都不仅仅是测试人员的职责,而是需要整个团队齐心协力。所以建立完善的流程,能够帮忙提高产品的质量。

我原来工作的一家公司,测试部门的总监就一直致力于各种管理流程的制定和推行,比如用流程来规范测试文档的输出模板,以及测试开bug的模板,可以提高测试的工作质量;

还有用流程来规范开发的单元测试报告,写明修复方法和bug的根本原因,可以帮助测试进行bug验证和回归测试;

同样用流程来规范开发处理的bug的过程,比如关闭bug之前必须要发邮件跟测试确认,避免bug没有经过确认被擅自关闭而引发矛盾和冲突;

再如规范项目code审核以及最后阶段的代码冰封,可以提高代码的质量以及降低发布最后阶段出现严重回归问题的几率......

各种流程的推行,虽然看起来很繁琐,但是严格执行起来,确实能够解决很多实质性的问题,帮助缓解很多开发和测试之间的尖锐冲突。

 

 **总结** 

总而言之,虽然开发和测试之间存在着天然的‘敌对’关系,但是作为测试人员要树立好自己的定位,清楚的知道无论开发和测试,最终目的都是使项目高质量、高时效地完成。并且只有开发和测试并力合作才能完成好一个项目。

所以无论开发还是测试,大家都离不开彼此,测试工程师不是给开发的工作挑刺找茬。但是也更加不是开发人员的附属品,需要再提高自己的同时,理性地处理和看待和开发的关系,共同营造一个良好愉快的工作氛围。

 posted on 2019-10-21 10:27  Tricyling  阅读(1312)  评论(2编辑  收藏  举报
  • 功能测试,自动化测试,性能测试,笔记面试、简历相关、职场晋升的问题欢迎交流

  • 个人工作微信:ningmengpyn