如何才能做好软件测试工作

发表于:2014-08-27来源:uml.org.cn作者:不详点击数: 标签:软件测试
如何才能做好软件测试工作,这个问题在面试的时候经常会被HR问到。当然,她们对答案的了解几乎都是照本宣科。
  如何做好测试,这个问题在面试的时候经常会被HR问到。当然,她们对答案的了解几乎都是照本宣科。

  业内普遍认为测试是技术含量偏低的工作,确实刚毕业的学生能做测试,因为我们理解的测试就是一群"鼠标点击者"在电脑前按照文档机械性重复着枯燥的事情,最好写份报告,工作就算完成了。

  对于部分企业或部分项目,这是做测试工作的基本现状。这也是大部分局外人和小部分局内人所理解的测试。

  就是这种外界或部分局内人对测试错误理解的氛围,才一定程度的影响了测试人员就业面的狭窄和即将从事测试行业人的认知。

  每次,我在跟各个公司的HR讲解如何做好测试和测试与开发的区别有多大的时候,她们都很难真正理解到我对测试的看法,也更难说服她们我还可以做开发,而且会比以前更好。

  那么,测试究竟是怎样的工作呢?测试比开发究竟差多少呢?

  先从开发与测试的发展讲起:开发从1946年初计算机诞生开始,到现在,顶多有五十几年的历史。在大陆,开发也就有20年左右的历史。能正规的开始测试应该从95年微软把windows系统的注册表本地化业务交给国内算起,发展将近15年,但真正的测试还是要从93年做软件外包开始,实际发展也就7年时间。

  再说什么是开发:大部分人都容易理解了开发,就是按照需求创造出一个新的应用程序呗。那么测试,就是检测开发出来的东西(如api, UI, user experience, internal function, environment-demond such as network bandwidth and System and Memory,etc.)与需求有无差距,还能挖掘出潜在需求,实际结果是否是期望的行为。

  我们常说测试是为了能保证产品质量,尽早找出bug。这么说也对,不过还是很抽象,并且在概念的理解上,简单化了测试。

  测试----由于历史发展较短,不象开发那样发展那么迅速,可借鉴的东西不象开发那么明显(代码是可见的,测试就难了),所以这就意味着一点:测试更需要人的创新,验证程序的正确性更是需要人们大量的创造性劳动。验证程序的正确性,远不象普通人想象的那样简单。

  开发是开发人员使用编程语言按照需求文档写出来另外一套API。测试就是测试人员为了更好验证开发出来的API需求文档,不用去关心产品功能实现,而是首先去考虑开发出来的API是否符合需求(这就是BVT/Function Test),其次是通过设计和搭建好的测试情景去分析对系统,网络,其他API,module模块的影响(白盒测试,集成测试),有些时候需要做性能压力测试。如果出现问题,就要进一步分解测试用例,定位问题所在。

  要做到以上几点,会遇到很多挑战,说白了,就是会遇到很多困难,如同开发人员一样,都需要用专业知识与想法来解决。

  现在说下困难是怎样的,你才能了解测试人员每天遇到的问题,才会知道需要什么样的人才能做好测试。

  第一,测试产品是否符合需求,需要用有效的方式,全面验证需求点。高级测试人员要写很多专业的文档,应用很多IT方面的知识,与更高级更资深的人士探讨需求,去开发出不同的文档来保证将在产品生命周期中的各个阶段都作最正确的事情。普通测试人员每天要做好记录和报告,说明测试了哪些,哪些还没有测试。要求有很好的自我管理的能力。

  第二:设计与搭建测试环境。随着开发技术的不断进步,诸如多线程,虚拟化,超大规模数据量的并发,安全性,软件间、不同系统平台间的交互响应这类问题会给搭建环境,模拟真实客户的使用环境,对测试人员来讲都很有挑战。而开发人员更关注于需求实现细节,不做架构师的普通开发人员不会考虑,只要实现出来功能,做个单元测试,接下来就交给测试人员来综合考虑这个开发出来的东西是不是很好用,会带来哪些问题,开发人员很懒,等测试人员检查出来问题,他们才去应付问题,注意,我说的是有些情况他们都是应付而已,掩盖问题。 所以,测试人员往往比开发人员更懂得需求,而且要懂得很多IT知识,才能最大限度的评估出开发出来的东西到底有哪些问题。开发就好比去制作出一个玩具模型,测试人员就是研究这个玩具模型,拆开,放到事前预备好的装模型的模具里检测是否符合规格;再放到更大的玩具模型里, 看看这些小东西跟其他的模型玩具能一起工作。这些工作有些时候是无可借鉴的,不象开发那样,上网搜索就能找到答案,测试就很难,几乎是不可能,只能自己想办法,找出解决办法。

原文转自:http://www.uml.org.cn/Test/20114134.asp