从2010年开始做测试至今也有六个年头了。从最开始的跟着别人设计好的测试用例一步步的测试执行到现在独立完成一个项目的测试计划、设计、执行、自动化交付等,期间做过大大小小的项目不知道有多少。六年来,其中的酸甜苦辣也只有自己知道。虽已不是测试小白,但距测试专家的程度还有很远,在此记录下一些关于测试的想法,梳理下以后的努力方向。
首先关于软件测试职业以后的发展情况。当前有人或公司提出全栈工程师的概念,即从最开始的需求到最后的交付都由开发人员独立完成,其中包括软件测试,所以以后专职的软件测试人员将不再需要了。对于这种观点我不赞同。大型软件都是有很多模块组成共同完成用户的需求,因为精力及时间有限,很多一线开发人员往往都是只专注于自己负责的一部分,不可能对全部的模块都了解,因此,让开发自己做测试设计,从整个软件角度来看,不一定能够测试充分(虽然,测试做的测试设计也不一定能够覆盖充分);另外,对于测试自动化的脚本开发及其维护,开发也不一定会有时间来做。所以,不需要专职的测试这个结论不成立。
其次,当前的软件开发环境也对测试提出新的挑战,仅仅按照设计出的模拟用户场景来进行测试的工程师会越来越没有竞争力,因为大部分的用户场景,开发人员自己测试的时候都能够覆盖到。因此,测试想要自己有竞争力,除了了解用户场景外,还要懂代码(至少能够看懂)了解产品功能的实现,了解模块间的关系,以及测试自动化能力(将大部分基本功能的测试交给自动化来实现)。
所以,一个好的测试工程师必须具备以下能力:
(1)业务能力:你只有比开发更懂业务,才能赢得开发的尊重。但是代码都是开发自己写的,对于某个模块,你不可能比开发更了解。这似乎是个矛盾。但是开发不可能对全部的业务都了解,所以测试要发挥自己的优势,我不可能比你了解的深,但是我可以做到比你了解的更全面。这就要求测试要阅读了解产品各方面的文档,必要时从代码角度了解产品的实现(不需要深入分析代码内部实现,只需要通过代码了解产品各模块的衔接即可,了解各模块的衔接,也为以后代码修改的影响性分析提供依据,从而开发出测试对应用例);
(2)测试设计能力:毕竟自己是专职做测试的,测试理论必须要过关,这样才能够知道并度量做了哪些测试,覆盖程度怎么样,才能够对项目作出有用的评价;
(3)测试自动化能力:为了降低测试的重复以及后续模块的维护,采用自动化测试时完全有必要的,所以自动化能力也是测试必须掌握的一项能力;
(4)C语言以及Linux操作系统的了解:Linux操作系统和C是密不可分的,所以要了解Linux操作系统,就要了解C语言。这是开发人员的基础,但是想要成为一名优秀的测试人员,也必须对此有了解;
(5)其他:问题跟踪能力,团队协作能力,沟通能力,也非常重要。
以后的两年,为成为一名优秀的测试工程师,加油!!!