“任何人都可以做软件测试的工作,是点点鼠标,提提bug嘛”。哦,也熟悉,是吧?确实有不少人是这样认为的,甚至是带领一个技术团队的经理,他可能表面没这样说,但是行为却体现出这样的想法,这些人觉得软件测试没有什么技术含量,如果换做让开发工程师来测试,或者随便找几个员工,或者学校的学生,甚至拉过一个路人甲,都可以做测试工作。对,可以做,但是你想得到什么质量的工作成果呢?专业的测试人员得到的效果,和随机测试的效果之间差别非常大。那么测试的专业性体现在哪里?我认为主要有以下几点:

  1、不同的角度。在一个团队里,开发经理、需求人员、设计人员、编码人员,大家的思路,都是在考虑如何构建一个系统,但是,测试人员,对,只有测试人员,他们是在思考如何能够‘破坏’系统。这是一个非常有价值的角度,只有在开发过程中这些可能遭受破坏的地方被发现,被修复,软件投入实际使用后,才会避免在客户的环境中发生这些失败的情况。所以,不同的角度是测试人员的一个重要的,也是团队中一个独特的价值所在,可能很多人没有意识到这一点。

  2、广泛的覆盖。覆盖率是软件测试中的一个重要概念,我觉得可能仅次于前面提到的角度的重要性。测试人员会根据软件系统将来承诺运行的环境,硬件的、软件的、第三方的,以及功能方面的,性能方面的,安全性方面的等等需求,设计测试用例,验证软件是否能够如预期的正常应对。如果不是经过专门训练的工程师,测试覆盖的设计,肯定会有问题。

  3、系统集成的问题。有责任心的编码人员,会尽力确保自己负责的模块功能正确(当然这也只是主观的期望,实际上不出错是不可能的),但是如果涉及到自己模块与其他人模块之间的交互,往往会出问题,这是由系统集成的特殊性决定的,主观认真会起作用,但问题还是要发生,而测试人员会比较容易的发现这类问题。

  4、质量文化的建立。测试工程师在团队中,有助于建立一种质量文化,使大家能够从反面思考一些问题。另外,包括全程测试、尽早测试的提倡,单元测试的指导,等等,对于提高软件质量都会发挥极大作用。

  软件测试人员,能看到整个系统的全貌,可能是对系统要做什么了解的人,甚至比产品的负责人还要了解(我指的是广度上,具体特性的深度上往往会欠缺一些)。从测试团队那里,你能及时的得到一个系统当前状况的切片,对于防止项目失控,看清当前情况与目标的差距,是非常重要的的信息。