十年前,毕业后就进入了一家软件公司,经理分配的任务就是测试软件,发现有错的地方就告诉他。这是我对软件测试工作的第一印象,就是看系统是否报错,各个功能按钮是否能够正确响应。
两年后,由于公司经营不善,我被公司裁员。其理由是:技术总监认为没有必要设置软件测试工程师的岗位。因此,竞岗时,我无岗可竟。
恰巧,当时中国软件评测中心跟省科技厅联合培训,于是,我就第一次真正认识到什么是软件测试。同时,也知道了51testing和测试时代这些软件测试交流的专业平台。
之后,我就入职另一家软件公司。当时,入职的职务是测试员,但公司的测试基本上和我第一次接触软件测试工作时的水平差不多。于是,我就从最基础的缺陷管理、测试用例、测试流程、测试规范、测试标准等等,一步步的将公司的测试规范建立起来,而我也因此成为了公司的测试部门经理。从测试员到测试部门经理,在这短短的八个月的时间里,可以说我取得的每一次进步,掌握的每一种知识,均来源于51testing和QQ群。可以说,如果没有这些交流平台,就不可能有系统化学习的机会。
为了挑战质量要求更高的项目,我离开了家乡,加入了现在的团队。这是一支由150多名技术人员组成的团队,其中,测试人员有20人。我入职的职务是测试组长,两周后任质量经理,八个月后任测试总监。从各种测试标准的制定到测试规范的建立,再到测试体系的建立;从团队战略发展方向到团队梯队建设再到测试知识库的筹建;从技术培训到团队成员职业规划;三年来 ,我和这支团队一起成长。
从业近十年,参与的项目十余个,其中千万级以上的项目三个。项目涉及MIS、HIS、GIS、OA、三维应用、BI、SOA、应用系统集成等诸多方向,其测试类型包括:功能测试、性能测试、接口测试。
说了这么多,大家一定以为我写跑题了,其实不然。之所以描述自己的成长经历,是想告诉大家我的体会来源于我的经历。
无论是在各种测试论坛上,各个测试QQ群中,还是在招聘时的应聘人员。我经常会遇到这种问题,相信大多数同行们也都遇到过。
1、做功能测试有前途么?
2、做黑盒测试有前途么?
3、我现在只能做功能测试,但我今后一定要做自动化测试、性能测试!
4、你们公司上自动化了么?
5、我会QTP、LR。
广大测试同行在投简历时,也一定常见这种职位要求:要求熟练掌握LR、QTP、QC、TD、Bugzilla等工具之一。
咱们先说说后面这种情况。一个公司在选择测试人员时,竟然将这些测试工具作为选人标准之一。我想问这样招聘的公司几个问题:
1、贵公司的产品适合上自动化么?
2、贵公司的管理水平达到上自动化的要求了么?
3、LR能完全支撑贵公司产品的性能测试么?
4、贵公司一年能有多少项目需要做性能测试?
5、缺陷管理工具每个公司用的都不太一样,其缺陷管理流程是需要结合公司管理流程的,这种工具即便人家不会或没用过此类工具,你就不能培训么?很难么?
除非公司是在招聘对口的技术人才,否则,我只能认为这家公司的测试水平真的不咋的。甚至于写招聘要求的人,压根就不懂测试。
咱们再来说说关于同行们对功能测试的误解。好多人都认为功能测试门槛低,没技术含量,好像提起来做功能测试就低人一等似得。如果你有这种意识,我只能说:兄弟,多干几年吧。我承认功能测试的入门门槛是低,但我不认为功能测试没技术含量。我甚至认为一个能把功能测试做好的测试人员,才是一个合格的质量负责人!
大家先别拍我,让我们来谈一下什么是软件测试。既然大家都是同行,相信大家都认同:“通过测试手段,在用户使用前,发现缺陷。”以及“软件中不可能没有缺陷。”这两句话。不错,测试是不能被穷举的,因此,我们也不可能发现软件中所有的缺陷。因此,我们是不是能够换句话说:“软件测试是通过一系列的测试手段,证明软件具备一定的质量。”
如果你认同这一观点,那么我们再来谈谈功能测试的范围。
狭义的功能测试:这点点,那点点,看看能不能正确打开页面、程序会不会崩溃、功能是不是能够正确实现等等。这也就是大家之所以认为功能测试没技术含量的根本原因。因为这种测试也得叫它功能测试。
广义的功能测试:各种业务逻辑是否已正确实现?各种业务约束是否正确实现?各类特殊的数据是否能够正确处理?软件的容错机制如何?数据的完整性、唯一性、正确性是否已经通过测试?系统及数据的安全性是否已通过测试?软件的易用性是否满足用户的需要?等等等等。功能测试所包含的范围实在是太大。
我没有贬低其他测试专业的意思,但有几点是需要说明的。随着各行各业对信息化建设的需求日益提高,其软件的规模和复杂度正在翻倍的提高。而功能测试的难度也随软件的复杂度逐日提高。而相对来说,白盒测试依旧关注的是单个函数的代码逻辑以及异常的处理;自动化测试仅仅提高的是测试执行效率,测试质量依然是要靠功能测试用例来保障;性能测试其实关注的是业务发生的场景和如何生成负载和收集监控指标,其变化就是需要监控的对象更多,影响因素更为复杂。
面对规模庞大,业务逻辑愈来愈复杂的系统,保障其软件质量,就需要广大功能测试人员具备更强的逻辑分析、设计能力;掌握更多的业务知识及技术。同时,由于当前国内绝大多数企业对测试工作的认知程度不足,大多数测试工作都是在时间紧、任务重的条件下完成的。那么,在有限的条件下,如何能够提高软件产品的质量,即:如何证明软件具备了一定的质量。将是所有软件质量负责人首先考虑的问题。
在这种前提下,我认为,一个好的功能测试工程师应具备丰富的行业知识(专家级),极强的逻辑分析能力,精于业务架构、测试架构、数据库、测试用例的设计。公司的产品质量,取决于测试负责人的组织能力及团队成员的技术能力,因此,功能测试工程师在测试团队中不可或缺。
无论是白盒测试、自动化测试、性能测试,都是不同的测试手段,但功能测试却是产品质量的根本保障! 请广大正在从事功能测试的同行们,正视自己的工作,认真对待,不要气馁或轻视自己的工作。将自己手头上的事做好,人生的每一段经历都将是你的财富!