我们为什么需要软件测试?

发表于:2013-08-07来源:博客园作者:虫师点击数: 标签:软件测试
我们为什么需要软件测试?写作本文的动机原于 陈皓 的那篇《我们需要职QA吗?》 ,今天有一位测试的朋友发到的QQ群里,所以才有幸拜读到,搜索了一下这篇文章的标题发现转载的到处都是。我居然现在才看到,鄙视一下自己,然后又看了段念《对《我们需要专职QA吗?》的回应

  写作本文的动机原于 陈皓 的那篇《我们需要职QA吗?》 ,今天有一位测试的朋友发到的QQ群里,所以才有幸拜读到,搜索了一下这篇文章的标题发现转载的到处都是。我居然现在才看到,鄙视一下自己,然后又看了段念《对《我们需要专职QA吗?》的回应》对这篇文章的回应:

  有测试朋友对陈皓 同学的这篇文章比较气愤,因为他否定了我们广大测试员存在的意义。如果有人跳出来对某人说,你做的工作毫无意义,有你没你公司一样运转,项目一样进行,这无疑是对这个人最大的打击,这是对一个人辛苦工作的完全否定。

  如果那人就只是简单的否定,我们对其曰:“此人SB,不解释~!”然后不屑都走开。但此人不但给出了否定,而且还给出了比较充分的说明,这样不少测试工程师就不淡定了,就像年初的时候,方舟子说韩寒造假,还弄了不少“证据”,韩寒自然就不淡定了。扯远了。

  身为一个测试员(请允许我这么自称),陈皓同学的前面的许多观点我非常在赞同。鄙人不才,测试两年有余,无项目开发经验。在这里来谈谈自己的看法。

  测试与QA

  个人认为测试与QA是不同的,虽然,有不少公司对QA的定义是包含测试,比如淘宝吧。但我还是不喜欢别人叫我QA(其实,也没人这么叫过),段念大哥也不喜欢别人这么叫,就连淘宝的季哥都不喜欢,他们更喜欢被叫着测试工程师,我嘛,小小测试员一枚。

  从软件有开发流程来讲,一般的项目流程为:需求分析-->总体设计-->详细设计-->开发编程--> 测试-->上线维护 ,对于这些工作来说,具备开发能力的人可以把整个流程走下来。单枪匹马,白手起家的开发人员在IT行业还不少呢。这么来看,测试工作怎么不能被开发人员兼做了?测试是流程的一部分,也就是对其开发功能的验证。假如你在家有手工的爱好,当你做好一个有趣或实用的东西时,去试试其功能,这是一般都有的思维。

  居然有无知测试员大言不惭地说:“不懂开发的测试人员更能站在用户的角度去测试。” 说过此言论的SB,不解释!所以,我的结论是,开发人员完成可以胜任测试工作。

  再来说QA吧,QA跟测试是两码事儿,我不知道那么多人与公司非要混搭,貌似还挺潮。在某某处有一个鞋匠,做的鞋子非常质量,来找他做鞋子的人越来越多,于是,鞋匠收了学徒,来找他做鞋子的人更多了,他收的学徒就更多了,后来,他办了鞋厂,来找他做鞋子的从散户变成了大客户,一订购就是好几千双。但做鞋子的人有手艺好的,也有手艺差的,有认真的,也有马虎的。做出来鞋子质量就参差不齐,于是,销量就下降了。为了控制每双鞋子的质量,于是,就有了QA,他从鞋子的材料的裁剪,鞋跟的大小,上线,完工。制定了一套规范的流程,每个鞋匠按照这套流程来走,于是,鞋子的质量得到了保障。----这就是QA的作用。

  那么软件项目也有其流程标准CMMI 和ISO 9000 ,前者在软件行业相当流行,因为是其针对软件行业制定的标准,后者是国际标准,实用于所有行业。当然,还有TICKIT标准和ISO15504标准。那么QA根据这些标准,规范与约束公司软件项目的整个流程。

  你能告诉我,现在上了规模的,做产品的,不是管鞋子、手机,还是软件哪个能离了QA 职位?陈皓同学给测试盖个QA的帽子来批斗,你这到底是批谁呢?我迷糊了。当然,不能怪你,大家都这么混搭。

  黑盒测试技术的难度有多大?

  段念大哥给出了他的看法“所谓的黑盒测试技术,有多大的难度?平心而论,一个智商正常的具有较好计算机基础的人,一个下午就能完全理解常用的黑盒测试技术,白盒测试技术也不会难到哪里去。只要开发工程师愿意,这些工作他们完全可以承担 ” 大哥有十年的测试积累,也是我冲崇拜的对象之一,在和开发争论时,必定搬此大牛“坐镇”。黑盒测试嘛,无非就是那些个方法,等价类,边界值,因果图,甚至因果图都很少用。但我更偏向于淘宝季哥的看法“对黑盒测试的深度问题”。

  学会理解方法的使用很简单,但真正的在项目中应用达到“炉火纯青”的地步也非一朝一夕之功。曾见电视表演中有人用嘴以针为暗器,射在西瓜里。方法并不难学。难的是能把针吐到西瓜里,这就非一日之功。当然,我如果说高手用树叶杀人,就会略觉我武侠看多了吧。

  当你看过这些方法的背景以及应用的注意点后,你就会发现自己的理解是肤浅的,有多少做测试的同学完整的读过《测试的艺术》这本书,与其追求热门的测试技术,不如静下心来深化对这些方法的理解。 你能测试的理解有多深?你能把所有测试方法的5W2H(What、Why、When、Where、Who、How、How Much)都能非常清晰明了的演讲出来? 起码我一个都答不出来,这点很惭愧!方法理解的不深,怎么能更好运用这些方法去做测试。做技术千万不要本末倒置了。

  想法不要被视野局限了

  前面非常赞同陈皓同学的看法,看到“在做性能测试的时候,需要Dev手把手的教怎么做性能测试,如何找到系统性能极限,如何测试系统的latency,如何观察系统的负载(CPU,内存,网络带宽,磁盘和网卡I/O,内存换页……) ” 就看不下去了。

  不知道你们怎么会找一个那么菜的人来做性能测试?是因为缺钱请不起性能测试高手呢?还是随便拉一个测试员就让其稿性能测试?

  每个人所处的环境不同,以偏概全的认为测试人员就只会写写用例,点点鼠标。让其去做性能测试,简直就是浪费开发人员的生命。那么是否有点井底之蛙的感觉了。这个不多解释了。

  不愿改变的人会在愤怒中死亡

  这句话是送给国内测试人员的,陈皓同学的那篇文章,有不少同学愤怒了,凭啥就把我们测试员给淘汰了呀。为什么是送给国内测试员的,因为国内纯功能的测试人员颇多。不掌握核心技术,没有其不可取代的竞争力,早晚是会被淘汰的。没什么好愤怒的,不要以为那些个技术是开发人员的,我们测试不学。

  微软的招的功能测试工程师在减少,招的测试开发工程师在增加,谷歌招的测试工程师更少,Facebook根本没有测试工程师。你固执的不原意去学习开发知识,那么只能在愤怒中死亡。 如果你有心看一下我博客中对各种技术的学习的话,我能告诉你我只是个普通的功能测试员么?好多测试新手告诉我,他们不知道学什么,我能想到测试人员必须掌握的技术,可能不上班在家学两三年都学不完。你能找出淘汰我的理由么?

原文转自:http://www.cnblogs.com/fnng/archive/2012/11/14/2769098.html