关于测试开发及其他——写在离职之前
前面
在入职一周年的时候,写过一些东西,有过一些思考。
而在一个月前,花了六天,投了下简历,花了五天,思考,抉择。
虽然要投身入另一个地方,不再搞测试开发,但是,工作十六个月迄今,还是有一些感受的。
所以,想针对这个,说说一些个人看法,仅供参考。
(SDET,测试开发,但是貌似实际工作和字面理解还是有些差距的,工作时,角色更像QA+Tester,实际工作中,被称为QA……其实我还是喜欢SDET多些)
作为测试这一年多(准确来说16个月):
有为了赶进度,和开发一起加班到凌晨两点的时候
有深夜上线,一大早又起来冒烟的时候(冬天很痛苦)
有要开发帮忙搭环境,拉数据,查问题的时候
有经历各种问题,挖出一个潜伏很深的bug的时候
有误提bug导致开发查老半天的时候(面壁面壁)
有搭环境搭到抓狂的时候
有为了提高效率(不加班),狂写工具的时候
也会偶尔测漏,郁闷的时候
当然,也会吐吐槽,某个项目或某些流程很让人蛋疼
一年多,经历了很多事情,接触了很多开发,接触了很多测试,无论是开发和测试,都很nice,合作也很愉快,一年多下来,自认做到了“靠谱”二字,侥幸,一年多经手测试没出过测漏故障。
关于开发:
开发,我划分了三类
一种,完美型,这类开发,对自己要求十分严格,思维严谨,逻辑清晰,严格遵守流程规范,严格自测(或许还懂得测试理论的)。对于这种开发,作为测试对其是十分佩服的,他们的提测近乎完美,文档清晰,从头到尾测试起来效率非常高,提测近于形式。当然,这类开发还是十分少的,大部分是经验丰富而且严格要求自己的开发。
另一种,次完美型,这类开发,刚刚工作或工作有一段时间,离完美型还有一定距离,(经验问题而非能力问题),在向完美型努力,代码会有bug,规范有不遵守,文档有缺失,等等,但是非常配合测试,测试提的bug等及时修复,文档规范等及时改正,犯过一次的错误后续不会再出现,逐步地完善。合作起来还是非常愉快地,良性循环,逐步提高的过程,随着合作深入,效率不断提高。接触的大部分开发属于此类。
还一种,新手型,这类开发,大多是新人,对环境流程等等还不熟悉,处于初生牛犊不怕虎的。又分为两种,一种认为不需要测试,另一种认为走走测试流程也还好。无论哪种,第一次提测比较头痛,如果对应开发部门没有新人规范或者没师兄指导的话,提测是属于头痛型甚至灾难型的,一次提测bug频出,频繁触犯规范,狂打包…….一般头痛一次即可,每一个开发都是需要培养的,逐渐就会遵守规范了。
很幸运,碰到的开发都很nice,非常配合。
关于测试:
测试有依赖型和独立型,依赖型过度地依赖开发(只用不学,用过即忘,对开发各种依赖-环境搭建,调试定位等等),独立型相对独立(接触-请教-学习-实践,自我驱动,独立能搞定大部分东西)。后者我认为才是合格的测试人员,
这年头,测试不再是所谓的点点鼠标能搞定的
我们要:
- 对业务熟悉,项目的业务,涉及逻辑,上下游等等
- 对代码熟悉,参与code review,读懂各类代码,java/c++/perl/python/shell….同时要懂debug,往往要定位到错误原因
- 要会写代码,测试需要各种工具,自动化等等,都需要实现
- 对流程规范熟悉,从项目初始介入,到最终上线完成,要制定测试计划,协助和跟进各个环节风险和进度(测试环节在最后,前面环节的失误会影响测试进程及项目主体进度,而且这时候PM往往会压缩测试时间),各种沟通
- 会搭环境,sap.apach,nginx,hadoop…..要面对各种千奇百怪的错误异常。
- 要会测试理论,进行各种测试(功能性能稳定性黑盒白盒…….),造各种case,模拟各种场景
- 要会写文档,会提bug,描述清楚问题….总之,文笔要好,不要求会吟一首好诗,但要会以最简洁的文字描述清楚问题
- 要会分配时间,多线程运作……往往开发测试比开始很高的,有时候同时要处理好多事情…..
……………..
当然,这些都是需要时间的。
以及
测试,需要有足够的细心和耐心,只有忍无可忍的时候,没有无需再忍的时候。(当然,事不过三,过三就是你自个问题了)
测试,要求什么都要达到一定程度(什么都要会,会到足够用,但也经常被人吐槽什么都会点,什么都不精),测试其实对广度要求来得高些,但其实很多前辈身怀绝技,卧虎藏龙之地。
测试,有时候想想挺郁闷的,因为我们的目标是没有测试。通过各种方式提高质量,终极目标没有测试一样质量有保证。即,我们的目的是消灭自己。(这个想象就…….)
测试,还有个很矛盾的问题,一个牛逼的项目,不出问题,好像没你测试什么事,出了问题,却又觉得辜负了这份信任,哎。(这个有些苦逼了)
测试,还有个问题,就是要全程参与关注流程,必须像一个老妈子一样,事无巨细,关注很多事情……
测试,有些被动的角色,却要时时掌握主动权,督促开发
测试,既要和开发保持良好关系,又要坚持自身的原则(不能放水)
记得在哪听过,代码问题,和测试有毛关系。其实作为测试,存在测试遗漏,无论是否是自身问题,测试都会数省吾身,反省,思考,改进,提高自身及改进流程,防止再次发生。(我不杀伯仁,伯仁却因我而死…….)
测试,其实有时候是相当累的,项目多的时候,满负荷运转,数量上去了,还得质量保证。但将一个个项目送上线,还是很有成就感的。
测试,更多的像是幕后全能型选手,操心一切,保证一切ok,一切ok,我们便ok。(你好,我好………….囧)
其实测试涉及的内容还很多,我只是作为最初级的测试人员,就所做所见写了下.
关于测试开发关系:
说说测试和开发的关系。
记得上次会上,提到测试和开发的关系,有恋爱关系,长辈晚辈关系,敌人关系等等,不同人有不同看法,不同条件也会得到不同结论。
开发和测试其实是需要磨合的,老开发新测试,开发需要多配合指导一些。新开发老测试,测试需要更花心思督促规范。新开发新测试,都需要多问前辈多思考。老开发老测试,一句你懂的足矣。
网上看到很多开发吐槽测试或者测试吐槽开发的,其实,这只是其中某一方做得不够好,导致磨合进入恶性循环而非良性循环。
要保证良性循环,开发在不断提高自身代码质量,测试在不断完善和优化流程规范,提高自身测试相关的素质,保证项目质量,二者配合之下,一个良性循环,开发和测试效率都会大大提高。
这需要做的,首先还是开发需要积极的态度配合测试,而测试,需要了解开发的习惯,了解对应的项目,读代码,熟悉流程,会环境搭建,熟悉逻辑,测试逻辑,很多都需要在开发的帮助下完成。但这并不是依赖关系,开发教你搭了一次环境,你就要学会搭环境,下次不再麻烦。
恶性循环往往始于轻视和不配合,开发认为测试不重要,测试吐槽开发不配合,但是测试流程还是要走的,往往结果是,双方效率直线下降,消耗了大量时间和精力。搞完之后,对对方的印象都再次恶化。
看到有吐槽测试不重要,不需要QA的。
当然,如果团队都是完美型的选手,再加上某些方法,当然可以。
但是现实很骨感的,大部分情况是次完美型选手居多,这类情况,QA还是有存在必要的。
合格的开发+合格的测试 + 良性循环 = 最佳组合
无论是开发或测试,都会走的更远。
关于规范:
很多开发可能吐槽很多规范(代码,打包,流程等等)的形式化or不重要or浪费时间。
但是,其实这些规范一开始也都是没有的,都是前人一次次踩坑踩出来的。
存在即合理,该遵守的规范还是不能忽视。但对于流程规范,也没有完全死板硬性要求一定要做什么,根据项目特点,确认某些规范是否适用,是否有改进之处。这并不矛盾,很多规范,有个适用性,很多规范,也是在一步步改进和优化,目的只有一个,提高质量。
开发和测试或许大目标不一样,但是我们目的只有一个,保证最终产品正常运行。
关于靠谱:
要做到“靠谱”二字,感觉还是有些难度的
有几类:相当不靠谱,不靠谱,一般靠谱,靠谱
大多数处于一般靠谱->靠谱之间,当然,有极少数属于相当不靠谱/不靠谱/靠谱。
其实,要达到靠谱,需要一个过程,这个过程有快有慢
大部分都是随经验和能力增长变得靠谱,当然,也有极少数顿悟型的,直接进入靠谱行列
测试和开发,同样要经历一个过程,逐步“靠谱”
是否,我说修复了,一定就是修复了,我说有bug,一定是有问题,我说,我回头check下,一定就check了。
最给力的,我说,没问题,一定就没问题。
可以自问下,我靠不靠谱?
开发最怕改需求(特别是刚写完代码就改),其实测试最怕提测后改需求(特别是测完的时候)……哎,来来回回尽折腾。
所以,一群靠谱的人,可以释放超乎想象的能量。
靠谱的最高境界,或许是把复杂的事情做简单,把简单的事情做好。
关于选择:
你为什么选择做测试?
记得面试的时候被问过这个问题,(那时候是,你为什么选择测试开发?),好吧,当时刚刚毕业的我,实习半年多(Java开发),那时对测试开发印象模糊,工作半年后才发现,测试比例多一些,和SDET其实还是有些差距的。
曾经有段迷茫的时候,也被主管问及到底想要做什么,那时候的回答是“做当下认为正确的事情”,很多事情,没想明白之前,做自己认为正确的事情。
其实,每个阶段有每个阶段的想法,受到那时经验/阅历/环境的限制,我们做出的决定或许并不是最好的。
但是,选择没有正不正确,只有后不后悔。
我当时的选择,我并不后悔,工作后这一年多,很充实,很快乐,这就足够了。
So,当面临选择时,问下自己,自己是否喜欢?SWOT,分析下
做出决定,便不后悔。
既然选择了远方,便只顾风雨兼程。
SDET,测试开发,我的第一份工作。三天后,我只能说,我曾经是。
哎,伤感
最后,在这里,感谢这一年多,一起奋战的同事,谢谢!!!
:)
wklken
2012-11-28 于杭州