一说到测试和开发的关系,你一定会想到一个词“冤家”。

开发的工作就是按照PM的设计将产品最终造出来,而测试则是在开发已完成的工作里纠错。so,测试的工作会让开发很不爽,人之常情,谁都不喜欢自己的劳动成果被别人挑毛病。

如果测试在工作中采用不讲究的方法,更会让比较紧张的测试开发关系雪上加霜。所以测试总是很容易就和开发们吵起来,吵得是鸡飞狗跳,一言不合就鱼死网破。所以,下面这样的场景每天在不同的公司重复上演。

测试:每次提出一个bug都让测试重现,描述得那么清楚,自己操作下不会吗?开发太依赖测试了,相同的bug提出一处改一处,就不知道自己检查一遍吗?出现bug就说自己本地是好的,版本是不是不对,用户不会这么操作。出现bug就让测试清数据,重启手机,三两下就把bug整不见了,坑……

开发:这么小的bug都要开发改,影响又不大,还耗时费力,测试懂不懂项目管理,预估风险啊?花费了时间排查,竟然是无效bug,测试到底有没有搞清楚需求?简直是浪费时间。明明是个P3的bug,给我报P1,至于么?测试总是在深究bug产生原因和解决方案,测试又不懂代码,懒得解释。……

测试和开发在工作中因为职责不一样,往往会造成分歧。

对测试和开发的一些建议

在完成软件研发的过程中,开发和测试之间的关系非常的“微妙”,时而合作如亲人,时而争论如敌人。我认为,为了做出高质量的软件产品来,开发和测试需要做到:

  • 共同参与软件需求文档的评审,对程序要实现的功能有一个清晰的认识。如果对需求有疑问,一定要当面提出来。
  • 在对需求达成共识之后,软件开发人员严格按照软件需求文档上的描述来编写程序,如果在程序实现上有困难,要提出来和大家讨论。软件测试人员严格按照需求的描述来验证程序的功能,如果发现程序实现与需求不符,要及时与软件开发人员联系,大家共同将程序问题解决掉。
  • 如果开发时间紧张、人手不足,那么在开发人员编写程序的时候,测试人员可以帮忙把测试环境搭建好。等程序编写好之后,开发人员便可以立即进行单元测试和集成测试。
  • 不管是需求有问题,还是程序有缺陷,大家都可以指出来。但注意要就事论事,不可将软件问题上升为对特定个人的人身攻击。
  • 虽然是各司其职,也许还身处不同的部门,但大家的共同目标是一致的:做出让客户满意的、高质量的软件产品。开发和测试人员要为了这个目标,一起努力。

如果要做一名让开发人员佩服的测试人员,需要掌握的技能:

1)编程语言

至少要掌握一门语言,不管是简单的php,java,还是C++也好,或者其他的脚本语言python,perl还是shell也好。

2)数据库

至少要掌握一种数据库的DBA,对SQL的操作要熟悉,熟练的运用JOIN进行查询,知道HAVING用法,测试人员离不开数据库的管理和数据库的操作。

3)操作系统

熟悉系统安装,配置,管理,对于Linux,熟悉常用的命令行操作,用Linux的时候,尽量能用命令行,就不要去点鼠标,能在Linux下能安装和配置软件等。

4)扎实的软件测试理论

理论是实践经验的总结,不能说最好,但是如果说设计测试用例的时候,如果每种方法都有涉及到,肯定会发现用例覆盖率会高,而且容易发现bug。

5)尽量自己分析问题

在发现问题之后,能自己尽量的寻找线索,首先要确定非环境因素,比如检查配置是否全部正确,网络是否有问题等等,然后确定非环境因素后,保护现场,保存记录系统提示信息;

如果有日志功能,那自己先根据日志查找一些线索,并把自己检查过的地方和做过的分析信息尽可能多的提供给开发人员,而不是仅仅把错误日志或者错误信息丢给开发人员分析就不管了。

6)多涉猎一些项目之外的知识

做测试的就是要涉猎的广,跟开发不同,测试是要能接受任何类型的项目,因为测试是一门方法学,方法学是不受某个产品或者领域限制的。

7)掌握一些安全方面的知识

安全方面需要哪些知识,首先从网络安全入手,了解一些密码学方面的知识,比如了解常用的加密算法原理,比如报文加密传输协议原理,建议看一下hash的方法,这个简单容易理解,还比较容易举一反三。

8)提高沟通能力,懂得尊重开发人员

测试人员要面对的人员很多,客户,项目经理,开发人员,产品经理等,有时候会全部都接触的到,那么沉默就不一定是金,有良好正确的沟通能力,会帮助测试人。

总结

很多时候不仅仅是把自己手头的工作做完就结束了,大家是在同一个团队为了同样的目标在努力。如果仅仅是为了更快的完成自己的工作而延误了别的小伙伴的工作,就最终将要达成的目标来说也是得不偿失的。

因此,在日常的工作中多站在对方的角度思考问题,多体谅对方,将自己能力范围内的工作做好,问题解决好,为对方营造一个舒适的解决问题的环境,对方自然将你的好看在眼里,记在心里。即便是前世的宿孽,今世的冤家也能有情人终成眷属。