• 0
  • 0
分享

作为一个在测试一线奋斗多年的老捉虫达人,经常会被人问道这样一个问题,「转行人员应该如何进入测试领域?」

今天,我就这个问题做一个完整的回答,顺便说一下进入软件测试这个行业后持续努力的方向,供各位想转行做测试还没转的、已经转行做测试但时间不久的、刚刚进入测试领域的,这几类的小伙伴都可以参考下。对于其中有疑问的,也欢迎持续探讨。

软件测试的门槛

软件测试,作为软件研发流程中的一环,是软件研发质量的重要保证,而随着互联网产业、软件等需求持续增加,这样的人才需求也持续旺盛,因此,有越来越多的人看准这个机会想进入这个行业。一方面,这一行作为信息基础行业,有着相比于其他行业更高的薪酬待遇;另一方面,随着信息技术更多的进入我们的生活,这方面的发展前景也得到了大家的认可。所以,这一切也都不难理解。

那么,想从事这一行业,都需要做哪些准备呢?在我看来,首先要了解的就是软件测试的基本概念和思想。软件测试在软件研发流程中处于怎样的过程,软件研发的基本原理,软件测试的基本方法,这些都是需要了解和掌握的。只有清楚了这些,才能很好的认识到软件测试是怎么一回事,才能够更好的参与到软件测试工作中,进而为软件的研发质量保证贡献出自己的一份力量。

软件测试的基本概念和思想,在这里我就不展开讲了。我想讲的是,在我多年的测试管理工作中,面试了不少候选人,有很多候选人对软件测试的概念和方法都不清楚,觉得软件测试就是将需求文档中的内容点点点,确定都实现了就算测试完成,这个回答是很糟糕的。

作为软件测试行业的从业人员,我们必须清楚,软件测试是需要用基本的测试方法来保障软件的质量的。还有很多面试者,谈起测试的基本方法来是头头是道,但真的给了一个需求文档让他去设计测试用例时,就完全不管测试方法中交给我们的东西了,而是天马行空的发散起来。这种理论与实际脱钩的情况,就会让面试官觉得还是没有很好的掌握测试方法,经过他测试的软件产品的质量是不可控的,因此也会存在很大的质量风险。

只有将软件测试的基本概念、方法进行很好的应用到日常工作中,只有能将我们在候选人简历中经常看到的「熟练掌握软件测试方法」转换成真正的掌握,那在我看来才是迈过了从事软件测试行业最基本的门槛。而要达到这一点,日常工作中积极的思考测试方法与被测试软件的测试用例的对照关系,在日常使用软件的过程中培养测试用例设计的意识,都能够很好的提高自己在这方面的能力。

测试的基本技能

在迈过软件测试的门槛后,接下来就是要掌握做测试的基本技能了。这个技能,包括对被测试软件的进一步了解和掌握,对测试工作中使用的测试工具的熟悉。

在面试中,我们看到候选人的简历中提到自己测试项目的基本介绍,包括使用的语言、框架,但真正问起来,对这些都没有基本的了解,那在我们看来就是不合适的。还有候选人对自己测试的项目所在平台的一些基本常识的缺乏,在面试中也是很致命的。比如,在面试中我经历过这样的候选人,做的是移动端的APP测试,但不清楚APP测试的基本特点,需要关注哪些方面,兼容性测试怎么做等,这都是日常测试中很基础的东西,如果都不能很好的讲出来,那就会说很糟糕的。

在我们日常的软件测试中,首先要关注的就是被测试软件所在平台的基本特点,是Web的还是APP?Web类的产品有哪些特点,实现的原理是怎样的,测试过程中需要考虑哪些东西,承载Web类产品的浏览器是怎样的工作原理,做兼容性测试的时候需要关注哪些方面。APP类的产品有哪些特点,所在的系统有哪些特点,与终端系统有哪些交互,需要考虑哪些方面的指标等。再此基础上,再去结合被测试软件的需求和功能特性去进行测试用例的设计,功能特性有哪些,边界值法怎么用,等价类怎么划分,异常场景有哪些,等等。

另外,我们在很多候选人的简历中看到「熟练使用XXXX测试工具」,但真的问起来,这个工具的原理是怎么样的,都有哪些基本操作,可以辅助我们做哪些测试等,他们就不知道了。更有甚者,只是知道点哪个按钮可以产生什么东西,多问一句产生的这些东西是怎么得到的,都包括哪些信息,就不知道了。这些就比较不应该了。这样的「熟练」更多的是对最常规、最基本使用的「重复性熟练」,而非真的对这个测试工具有更深层次的了解和掌握。

在我看来,使用一个测试工具,这个工具实现的基本原理是怎样的,这个工具能做什么,不能做什么,为什么能做这些,使用过程中能给我们提供哪些数据,我们可以用这些数据做什么,如何辅助我们进行测试,都是我们在拿到一个工具时首先可以去了解的。只有对一个工具有了这些了解,我们才能在日常的测试工作中更好的、更熟练的使用,最大化的辅助我们的测试工作。

测试的能力提升

当我们对基本技能有了一定的掌握后,我们就需要进一步的提升自己的软件测试能力。

这时候对测试能力的定义和范围就可以进一步的扩大化,当我们测试一个软件时,这个软件更底层的东西就需要我们去开始接触,使用的语言、框架的特点,软件的技术架构等。这些对我们更好的了解被测试软件,发现其中存在的问题,都有很大的帮助。

对于较大型的软件,我们还需要了解整个系统的模块划分是怎样的,模块与模块间的调用关系是怎样的,调用过程中是否困难存在异常,这里的用例该如何设计,对错误处理的用例该怎么构造,软件发布上线后,对应的数据是否有上报,上报的问题反应了怎样的问题,等等,都是我们需要去了解的。

在测试工具的使用上,也对我们有更高的要求,比如能实现类似功能的同类工具还有哪些,为什么我们要用当前工具,这个工具能得到哪些信息,这些数据是怎么得到的,准确率是多少,误差是否在我们可接受范围内,我们是否需要再此基础上去做优化,如此等等。

另外,随着我们对软件测试的要求越来越高,测试的粒度越来越细,一些基本的测试、常规的工具不能满足时,我们是否能够开发出一些脚本、工具来满足我们的测试需要,我们是否能够持续用工具来解决测试中的问题,用工具实现测试效率的提升,测试深度的加强,等等。

测试的职业发展

最后,简单谈下软件测试这个行业的职业发展。软件测试作为一个技术岗,不断的提升自己的技术能力是最核心的发展要素。在这个大前提的指引下,不断的沉淀自己技术领域的积累,扩充自己在技术解决测试问题上的知识面和能力,是关键。

从这个意义上讲,软件测试工程师的发展会从解决独立需求测试的初级工程师,向能独立负责较大系统测试的中级工程师,到能完成测试体系的建设的高级工程师一步步实现前进,在这个过程中,自己的技术能力也从对被测软件的基本实现,到掌握系统架构,针对系统架构进行完整测试,从用小工具实现测试效率的改进,到用测试平台、测试体系实现一整套测试架构的实现。

测试管理也是软件测试工程师发展的一个选项,从独立跟进需求测试,到带领小团队共同完成某个项目的测试,进而到带领更大的测试团队完成包括功能测试、工具建设等多领域的提升。

总之,软件测试是一个需要不断理解行业,不断提升自我,不断思考测试对于项目团队意义的工作。只有不断的前进,自己的职业生涯才会有更好的前途和更大的发展。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 读者提问:『阿常你好,Windows 下 Git 拉 Gitlab 代码的操作步骤可以分享一下吗 ?』阿常回答:好的,总共分为五个步骤。一、Windows 下安装 Git官网下载链接:https://git-scm.com/download/winStandalone Installer(安装版)注意哦,另外一个Portable ("thumbdrive edition")是绿色免安装版,不会添加两个右键菜单快捷键。二、注册 Gitlab 账户记住你的用户名和邮箱。官网注册链接:https://gitlab.com/users/sign_up/三、项目管理员给用户...
            0 0 960
            分享
          • 1.Android APP 内存不足时, 系统如何结束进程获得内存?系统优先结束被挂起(暂停)的进程,释放内存。2.APP 测试常见的严重问题有哪些? 分别引起的原因有哪些?常见的有 crash、ANR(应用无响应、卡死),一般由设备碎片化、网络波动大、内存泄 漏、代码编写错误。3.请简单介绍你曾使用过的一款 APP 自动化测试工具 ?开放性问题,带点主观意见 1.对比其他熟悉的自动化工具的优缺点 2.自动化的简要方案(简要的同时关键内容请具体)。(提示: appnium 等)4.Android 测试与 web 测试有什么区别?相同点:设计测试用例均依据等价类、边界值等方法,测试原理相同;大多...
            13 14 2800
            分享
          •   在天网查上看了一下全国软件公司有1000多万家,其中上市的公司有7万多家,也就是占比0.7%。  通过这个数据可以发现,大部分公司从实力和规模上都偏向中型或者小型,也就说其中的流程不一定很健全,甚至没有流程而言。  下图截取了两张数据的图片供参考:图1  全国软件公司数据图2  上市公司数量  为什么要指出这个问题?笔者目前在二线城市,工作10年经历过几家公司,很少有公司把流程制定得很正规和完善。  基本上的形式是:常规瀑布模式和敏捷模式相结合。赶上功能已上线再出现Bug,常见的状态开发快速定位问题进行修改,测试抓紧时间进行测试,测完后上线发布。  所以得出的结论是流程...
            0 0 1504
            分享
          • 1.2.计算机网络1.2.1.计算机通信网的组成计算机网络由通信子网和资源子网组成。其中通信子网负责数据的无差错和有序传递,其处理功能包括差错控制、流量控制、路由选择、网络互连等。其中资源子网:是计算机通信的本地系统环境,包括主机、终端和应用程序等,资源子网的主要功能是用户资源配置、数据的处理和管理、软件和硬件共享以及负载均衡等。计算机通信网就是一个由通信子网承载的、传输和共享资源子网的各类信息的系统。1.2.2.通信协议为了完成计算机之间有序的信息交换,提出了通信协议的概念,其定义是相互通信的双方(或多方)对如何进行信息交换所必须遵守的一整套规则。协议涉及到三个要素,分别为:语法:语法是用户...
            13 15 3169
            分享
          •   公共应用系统一般是指某个系统或平台最基本且重要的应用系统模块,作为系统或平台中基础服务系统为其他子系统提供统一的基础参数和公共功能,对整个系统或平台具有奠基作用,在测试过程中常会涉及到多个系统模块的联调测试和演练测试。常言道“基础不牢,地动山摇”,那么我们如何合理有效地设计公共应用系统的测试环境呢?以下分五个方面进行介绍:图1 系统或平台下公共应用系统与各子系统模块之间的功能关系  1、环境架构设计  原则上,在环境资源允许的情况下,要求统一规格的服务器和数据库,且测试环境配置尽量保证与生产环境一致。结合系统项目测试实践经验,给出系统或平台下公共应用系统环境与各子系统模块环境之间的架构设计...
            14 15 1130
            分享
      • 51testing软件测试圈微信