前几天有小伙伴在后台问,转行人员应该如何进入检测领域?
今天我就来完整的回答一下这个问题。对了,进入软件测试行业后不断努力的方向,可以供所有想转行做测试的,还没转行的,转行做测试但刚进入测试领域的朋友参考。有疑问的请继续讨论。

一、软件测试的门槛
软件测试作为软件RD过程的一部分,是软件研发质量的重要保证,随着互联网行业和软件需求的不断增加,对此类人才的需求持续旺盛。所以越来越多的人看到这个机会,想进入这个行业。一方面,这一行作为信息化行业,薪资待遇高于其他行业;另一方面,随着信息技术越来越多地进入我们的生活,这方面的发展前景得到了大家的认可。所以,这一切都不难理解。
那么,想要从事这个行业,需要做哪些准备呢?在我看来,首先要了解的是软件测试的基本概念和思想。软件RD过程中软件测试的过程是什么,软件RD的基本原理,软件测试的基本方法,这些都是需要了解和掌握的。只有了解了这一点,才能很好的理解软件测试到底是怎么回事,才能更好的参与软件测试,进而为软件研发的质量保证做出贡献。
这里不讨论软件测试的基本概念和思想。我想说的是,在我多年的测试管理中,我面试过很多应聘者,他们很多人都不知道软件测试的概念和方法。他们认为软件测试是一个糟糕的答案,即使测试是通过确保需求文档中的所有内容都得到满足来完成的。
作为软件测试行业的从业者,我们必须清楚,软件测试需要基本的测试方法来保证软件的质量。也有很多受访者讲测试的基本方法是有逻辑的,但是当他们真的给他一个需求文档去设计一个测试用例的时候,他们根本不关心测试方法里给我们的是什么,而是胡乱的传播空。这种理论与实践的脱节,会让面试官觉得自己还是没有很好的掌握测试方法,测试出来的软件产品质量是不可控的,所以会有很大的质量风险。
只有当软件测试的基本概念和方法很好的运用到日常工作中,只有当我们经常在应聘者简历中看到的“对软件测试方法的精通”能够转化为真正的精通,在我看来,才是从事软件测试行业最基本的门槛。要做到这一点,就要在日常工作中积极思考被测软件的测试方法和测试用例的比较,在日常使用软件的过程中培养测试用例设计的意识,这些都可以提高我们这方面的能力。
二、测试的基本技能
过了软件测试的门槛,接下来就是掌握测试的基本技能了。这种技能包括对被测软件的进一步理解和掌握,以及对测试工作中使用的测试工具的熟悉。
面试的时候,我们看到应聘者的简历中提到了自己测试项目的基本介绍,包括使用的语言和框架,但是真正问起来,对这些都没有一个基本的了解,在我们看来是不合适的。除此之外,对于应聘者所测试的项目所在平台的一些基础知识的缺乏,也是面试中的致命伤。比如在面试中,我就经历过这样的考生,在做移动端的APP测试,但是不知道APP测试的基本特点,需要注意哪些方面,兼容性测试怎么做等等。这些都是日常测试中非常基础的东西。如果不能很好的告诉他们,那就很糟糕了。

在我们日常的软件测试中,首先要关注的是被测软件所在平台的基本特性。是Web还是APP?Web类产品的特点是什么,实现原理是什么,测试过程中需要考虑什么,承载Web类产品的浏览器是如何工作的,做兼容性测试需要注意哪些方面。APP产品的特点是什么,所处系统的特点,与终端系统的交互,需要考虑的指标等等。在此基础上,我们会根据被测软件的需求和功能特点设计测试用例,包括功能特点,如何使用边值法,如何划分等价类,有哪些异常场景等等。
另外,我们在很多考生的简历中看到“熟练使用XXXX测试工具”,但是他们真的不知道这个工具的原理是什么,有哪些基本操作,能帮我们做哪些测试。更何况只是知道哪个按钮能产生什么东西,而问这些东西是怎么产生的,包含了哪些信息,你就不知道了。这些都不太合适。这样的“熟练”更多的是在最常规、最基础的使用上的“重复熟练”,而不是对这种测试工具更深入的理解和掌握。
在我看来,使用一个测试工具,其实现的基本原理是什么,工具能做什么,不能做什么,为什么能做这些事情,在使用过程中能给我们提供什么数据,我们能用这些数据做什么,如何辅助我们进行测试,这些都是我们拿到工具后首先要学习的东西。只有掌握了一个工具的这些知识,我们才能在日常的测试工作中更好更熟练的使用它,最大程度的帮助我们的测试工作。
第三,提高测试能力
当我们掌握了基本技能后,我们需要进一步提高我们的软件测试能力。
那时,测试能力的定义和范围可以进一步扩大。当我们测试一个软件的时候,软件底层的东西需要我们开始接触,使用的语言,框架的特点,软件的技术架构等等。这些对于我们更好的了解被测软件,找出其中的问题有很大的帮助。对于较大的软件,还需要了解整个系统的模块是如何划分的,模块之间的调用关系是怎样的,调用过程中是否存在困难或异常,这里的用例是如何设计的,如何构造错误处理的用例,软件上线后是否上报过相应的数据,上报的问题反映了什么问题等等。
在测试工具的使用上,我们也有更高的要求,比如还有哪些类似的工具可以实现类似的功能,为什么要用现在的工具,这个工具可以得到哪些信息,如何得到这些数据,准确率如何,误差是否在我们可以接受的范围内,是否需要在此基础上进行优化等等。
另外,随着我们对软件测试的要求越来越高,测试的粒度也越来越细。当一些基本的测试和常规工具不能满足需求时,是否可以开发一些脚本和工具来满足我们的测试需求,是否可以利用工具在测试中不断解决问题,提高测试效率,加强测试深度等。

四。测试职业发展
最后简单说一下软件测试行业的职业发展。软件测试作为一个技术岗位,是不断提升其技术能力的核心发展因素。在这个大前提的指导下,不断积累自己的技术领域,拓展自己的解题知识和能力是关键。
从这个意义上说,软件测试工程师的发展会从能够独立解决需求测试的初级工程师,到能够独立负责大型系统测试的中级工程师,再到能够完成测试系统建设的高级工程师,一步步推进。在这个过程中,他们的技术能力也将从被测软件的基本实现,转变为掌握系统架构,对系统架构进行完整的测试,用小工具提高测试效率,用测试平台和测试系统实现一整套测试架构。
测试管理也是软件测试工程师发展的一个选项,从独立跟进需求测试,到带领一个小团队完成某个项目的测试,再到带领一个更大的测试团队完成包括功能测试、工具搭建在内的多个领域的提升。
总之,软件测试是一个需要不断了解行业,不断提升自己,不断思考测试对于项目团队的意义的工作。只有不断进步,自己的事业才能有更好的未来和更大的发展。


