CSDN博客

img suesue

感悟软件测试

发表于2004/7/9 12:25:00  1386人阅读

感悟软件测试

曾经对软件测试很轻视,因为我那时很无知,只是一名普通的中国程序员,这也是绝大多数程序员的心态,最讲究编程才是硬道理

如今却非常热爱软件测试,包括软件测试工具,方法,理论,技术。因为测试工作中,深刻体会到软件测试的重要性和趣味性。此时,我已经跳出了小程序员的圈子,以软件系统工程以及项目管理、UMLERP的更大视角审视软件测试这项工作。

为什么要进行软件测试?软件测试的前途如何?软件测试的工具和思想谁更重要?软件测试的最高境界是什么?很长时间以来我一直被这几个问题而困惑,有些问题至今仍然只是具有肤浅的认识,而且随着测试项目越多,阅读的测试书籍越多,我越感到我对软件测试理解的越肤浅。因为我越来越感受到软件测试的广度和深度的无限性,它像大海宽广,像宇宙那样深邃。

当今软件测试在大部份人心目中是整天做着相同的工作,相当枯燥无味的,但却是很容易做的事。但其实不然。要成为一名称职的优秀的软件测试员并不是件容易的事。因为他需要你在各方面都具有很强的专业知识且较高的心理素质及交际能力。具体来说,从项目管理的角度看,优秀的测试工程师应具有如下能力:

1、沟通能力
  一名理想的测试者必须能够同测试涉及到的所有人进行沟通,具有与技术(开发者)和非技术人员(客户,管理人员)的交流能力。既要可以和用户谈得来,又能同开发人员说得上话,不幸的是这两类人没有共同语言。和用户谈话的重点必须放在系统可以正确地处理什么和不可以处理什么上。而和开发者谈相同的信息时,就必须将这些话重新组织以另一种方式表达出来,测试小组的成员必须能够同等地同用户和开发者沟通。切记提出问题不要复杂化。
  2、技术能力
  就总体言,开发人员对那些不懂技术的人持一种轻视的态度。一旦测试小组的某个成员作出了一个错误的断定,那么他们的可信度就会立刻被传扬了出去。一个测试者必须既要明白被测软件系统的概念又要会使用工程中的那些工具。比如说面向对象的开发语言工具、数据库管理工具、项目管理工具等。
  3、自信心与耐心
  开发者指责测试者出了错是常有的事,测试者必须对自己的观点有足够的自信心,要具备很高的心理素质,容许别人对自己指东指西,但不要让程序员,以这种情况不可能发生这句话说服你,相反,你应该去说服他,告诉他在客户心里,并不是这样的。并抱着打破砂锅问到底的精神,对于只出现过一次的bug,一定找出原因,不解决誓不罢休,相信自己能重演bug并能克服碰到的所有问题。
  4、外交能力
  当你告诉某人他出了错时,就必须使用一些外交方法。机智老练和外交手法有助于维护与开发人员的协作关系,测试者在告诉开发者他的软件有错误时,也同样需要一定的外交手腕。如果采取的方法过于强硬,对测试者来说,在以后和开发部门的合作方面就相当于"赢了战争却输了战役"
  5、幽默感
  在遇到狡辩的情况下,一个幽默的批评将是很有帮助的。能和开发小组很好的沟通是测试工作的关键,试着给你的开发小组找一个“BUG杀手,或对他们说我简直不敢相信,你写的程序居然到现在没有找到BUG”
  6、很强的记忆力
  一个理想的测试者应该有能力将以前曾经遇到过的类似的错误从记忆深处挖掘出来,这一能力在测试过程中的价值是无法衡量的。因为许多新出现的问题和我们已经发现的问题相差无几。
  7、怀疑精神
  世界上没有绝对正确的,总有错误的地方,测试员应具有叛逆心理,别人认为不可能发生的事,我却认为可能发生。别人认为是对的,我却认为不是对的。通常情况下,开发者会尽他们最大的努力将所有的错误解释过去。测式者必须听每个人的说明,但他必须保持怀疑直到多次验证以后。
  8、自我督促
  干测试工作很容易使你变得懒散。只有那些具有自我督促能力、保持一个良好的心情,并不把生活中的不愉快的情绪带到工作中来的人才能够使自己每天正常地工作,否则可能无法把测试作好。
  9、洞察力
  一个好的测试工程师具有"测试是为了破坏"的观点,捕获用户观点的能力,强烈的质量追求,对细节的关注能力。应用的高风险区的判断能力以便将有限的测试针对重点环节。

10、分析能力

考虑问题要全面,结合客户的需求、业务的流程、和系统的构架,等多方面考虑问题,分析问题的根本所在。灵活一些,聪明一点,多分析,制造一些容易产生bug的例子。

11、细心

做测试时要细心,不是所有的bug都能很容易的找出,一定要细心才能找出这些bug

12、追求完美

通常程序员只考虑到实现功能,却忽视了如何将程序、功能做得更完美,运行速度更优化。测试员就应当指出存在的缺陷,即使是位置偏移了影响视觉的总体效果也应大胆提出。
 
  优秀的测试工程师除了具备有以上能力以外,还应掌握测试的技巧。软件测试虽然辛苦,但是掌握了一定的技巧之后将使你事半功倍。

1、边界测试,测试用户输入框中的数值的最大数和最小数,以及为空或空时的情况。

2、非法测试,例如在输入数字的地方输入字母。

3、跟踪测试,跟踪一条数据的流程,保证数据的正确性。

4、数据测试,在开始测试时应保证数据的正确性,然后在从系统中找出各种BUG

5、接口测试,程序往往在接口的地方很容易发生错误,要在此模块测试勿掉以轻心。

6、代码重用测试,在开发过程中有些模块功能几乎相同,程序员在重用代码时可能忘记在原有代码上修改或修改不全面,而造成的错误。

7、突发事件测试,服务器上可能发生意外情况的测试。

8、外界环境测试,有些系统在开发时依赖于另外一个系统,当另外一个系统发生错误时, 这个系统所受到的影响的情况。

9、修复测试,在程序员刚修复Bug之后的地方,再找一找,往往程序员只修复报告出来的缺陷而不去考虑别的功能在修改时可能会引起其它的错误的产生。

10、重复测试,纪录认真做好测试记录在做完一天的测试记录之后,第二天再根据第一天的测试记录重复测试你会发现有未修正的错误。

11、文字测试,如果在系统中有用词不当的地方,我想这是不应该的。

12、系统兼容测试,例如有些程序在IE6能运行正常,到IE5下不能运行。有些程序在WIN2000下能运行,而到WIN98却不能运行。像一些很特别的用户去使用系统,你很有可能发现BUG

13、用户的易用性测试,往往用户的需求是不断的变化的,而其中的一部份变化的原因,是有用户操作上不方便引起的。

在项目管理中考虑的一些问题应该是在软件测试时有些体现,体现的内容是软件测试的一些侧重点,具体说,软件测试是事务性的,而项目管理是策略性,一些策略性的东西必须在一些事务性的事务上来实现。软件测试的事务性操作很多,这些操作需要一个良好的心态去对待。工作中需要多总结,多剖析,对于毛病:有则改之、无则加冕

到此你是不是对测试很有兴趣呢?不过我要告诉你,测试过程中有酸甜苦辣,其中的滋味只有你自己知道;测试过程更像是在弹奏动人的音乐,能使人感受到喜怒哀愁,更能让人心旷神怡,不信,你也来试试。

 

0 0

相关博文

我的热门文章

img
取 消
img