** 你跟开发和谐么?**
java
导语:测试工做从业者,打交道最多的就是开发,而测试和开发之间的关系在行业内被称为‘天敌’。python
** ‘天敌’关系造成的缘由 **shell
那做为测试工程师,你知道要怎么更好地来处理跟开发之间的关系么?其实对于这种‘敌对’关系,咱们也不难理解。数据库
开发是产品的制造者,产品就至关于他的‘孩子’,而测试的工做是去寻找这个“孩子”身上的毛病。相信,没有一个妈妈喜欢本身的孩子被各类挑错,而后要让本身去纠错进行重塑。因此,人之常情,开发和测试的这种自然冤家的属性确实在所不免。因此咱们常常能在公司各个的茶水间或者会议室看到这样的一些对话和小场景: 缓存
几个测试工做人员抱怨开发的各类行为:安全
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审核以及最后阶段的代码冰封,能够提升代码的质量以及下降发布最后阶段出现严重回归问题的概率......
各类流程的推行,虽然看起来很繁琐,可是严格执行起来,确实可以解决不少实质性的问题,帮助缓解不少开发和测试之间的尖锐冲突。
**总结**
总而言之,虽然开发和测试之间存在着自然的‘敌对’关系,可是做为测试人员要树立好本身的定位,清楚的知道不管开发和测试,最终目的都是使项目高质量、高时效地完成。而且只有开发和测试并力合做才能完成好一个项目。
因此不管开发仍是测试,你们都离不开彼此,测试工程师不是给开发的工做挑刺找茬。可是也更加不是开发人员的附属品,须要再提升本身的同时,理性地处理和看待和开发的关系,共同营造一个良好愉快的工做氛围。