当下软件测试岗位越来越火,然后很多人对软件测试岗位,和技能都很迷糊,下面浅谈一下当下软件测试岗位和需掌握的技能。
一、什么是软件测试
很多小伙伴只知道软件测试这个岗位,不明白它到底是什么,软件测试到底是做什么呢?
测试(test)最早是出自古拉丁字,它有罐或者容器的含义。在一般的工业生产中,被当做一个常规的检查去做的。而软件测试的经典定义是:在规定条件下,对程序进行操作,以发现错误,对软件质量进行评估。
总结:软件测试的初衷就是为了发现软件自身存在的缺陷(BUG),而设定的一个岗位,不管从事软件测试任何一个岗位,初衷都应该以发现BUG为初衷的去测试。
二、国内现状
中国软件测试研究起步在‘六五’期间,一直到1990年国家蔡成立的中国软件评测中心。(国外1957年就对软件测试和软件调试区别开)国内由于起步较晚,与国际先进水平相比差距较大,而国际主流谷歌网站,访问时网(qiang)络(le)不好,导致大部分小伙伴无法与先进技术“面对面”交流。所以在国内,入行软件测试岗位,相对于开发而言要‘简单些’,想在软件行业有所‘成就’,相比较开发而言要相对‘困难’些。
三、各个岗位的职责和基本技能
初级测试工程师:
岗位技能:测试基本理论,如:了解计算机原理,测试基本方法(边界值、等价类、正交、错误推断、因果图…),前端基础,了解基本开发和测试模型(V、W、H…),编写测试用例,编写测试报告,会主流的BUG管理工具,和项目管理工具。如:jira、Testlink、禅道等。
岗位职责:测试用例编写执行(测试行业中的‘点点点’技能),软件缺陷管理(BUG)。测试报告输出,以及阶段自己负责模块的测试总结。
中级测试工程师:
岗位技能:会初级所有技能,熟悉整个软件开发、测试流程,会不同操作系统(windows、linux),会使用接口测试工具(postman、jmeter…)做接口测试工作。关系型数据库(mysql、oracle…)增删改查,重点是查询。会抓包(工具fiddler、httpwatch…)分析。
岗位职责:更多的做一些接口测试类的工作,功能与数据库交互等,不在停留在‘点点点’的工作中。这时候的你,已经是一些中小型类型公司的中流砥柱。
高级测试工程师:
岗位技能:会中级所有技能,会测试环境搭建(一般是运维干的活,不过高级应该是需要会的技能),会自动化测试(非代码级),如:用postman做接口自动化测试,用一些录制软件录制脚本,你要明白工具中那些事冗余、无效的代码,做一些简单的增删改!会性能测试(工具:jmeter、loadrunner…),做性能测试。对整个软件开发流程了如指掌!!软件质量把控的同时,可以预测软件风险,对软件、开发测试提出宝贵建议。
岗位职责:社会主义一块砖,哪里需要哪里搬。功能、接口、性能、自动化、服务器搭建样样精通!
测试开发工程师:
这个岗位也是目前分歧最大的一个岗位。我这儿将重点分析一下。其实测试开发工程师还可以分成,自动化测试开发工程师和测试开发工程师。现在很多企业,把是否会写代码定义成是否是测试开发,所以导致了很多小伙伴认为,测试开发工程师就是自动化测试开发工程师。其实我个人认为这样划分还是缺点意思的。其实自动化测试开发仅仅是测试开发中一个技能而已。
自动化测试开发工程师,主要是通过代码代替人去工作。一般这些代码,是需要专人去维护,而专人最基本的就是要懂相同语言的代码。如果测试脚本是用python编写的,维护人员必须要懂Python语言才能够去维护。为什么要维护,在后期版本迭代中,产品不可避免的会出现产品需求变更,这时候你的测试脚本就需要重新编写了。而这项工作,维护成本较高。重点!重点!重点!圈起来要考,仅适用于较成熟、需求变更不频繁、项目周期长的产品做回归测试或兼容测试使用!!
说到这儿,很多小伙伴会问,自动化测试脚本开发以及维护成本这么高,还不如手工点点点呢,为什么还要写?减少人工不断去做重复的操作。
A产品版本迭代周期7天,7天之内加了一个小需求,这时候的可能测试时间只有2天,这时候你不可能把所有的功能在进行一波回归测试。从而就可以用到测试脚本了。如果A产品是WEB产品,需要适配IE,火狐,谷歌浏览器,这时候你不可能去每个浏览器都去做兼容的,所以用到测试脚本。
重点!重点!重点!自动化测试脚本开发,目的是为了减少人工成本的,千万不要为了自动化而自动化!!!!
在来说说测试开发:其实测试开发就是开发,只不过测试开发需要了解测试知识,对开发技术要求不是太高(因为都是内部测试使用的,没那么多乱七八糟的需求),他们主要工作职责开发测试工具,服务所有测试人员,目的是减少人工成本。比如上述所说,自动化测试工作不管是开发还是维护,成本都比较高。如果将它把主要的一些功能实现代码给放在后台,让一些具体case放在前端可视化去维护,然自动化测试不在那么的难!
测试开发:
工作技能:中级所有技能,高级大部分技能,至少会一门开发语言,熟悉主流开源的测试框架(如selenium、appium…),熟悉开发(什么叫开发,自行百度这就不做过多讲解了)
工作职责:提高测试效率,较少人工成本,尽可能发现软件缺陷,去开发以测试为目的的工具或者平台。
测试专家:
能够成为测试专家,不但要拥有过人的天分,还需要用勤劳的汗水浇灌而来!如果把整个测试行业看成一个金字塔,那么,他就是金字塔最顶端的男(女)人。走在行业的最前端。他就是岗位的终极目标,同样也是咱奋斗的目标。有生之年在此岗位待过,不枉此行!!!
测试主管:
其实测试主管的技能可参照中高级软件测试工程的技能标准,而此岗位不在是专于技术,更多的是对整个测试流程的把控。跟多关心的应该是:多久?这么做?哪些人去做?但是能够成为主管的,对测试技能还是有几把刷子的!!!
测试经理:
测试经理标准也是可以参考测试主管,一个管理大流程,一个管理小流程,其实目的就是对测试流程把控。当工作人员配备不足情况下,也可以充当测试人员使用。测试经理一般要求较高,不管是对于测试技能,还是测试管理,都要出类拔萃。
测试总监:
此岗位如测试专家平级,唯一区分就是一个偏管理,一个偏技术,同样都对测试有独到的见解,同样也是我辈楷模。
总结:
个人见解,如有见解不同的小伙伴,可以下方留言评论。只有交流才有成长!!不管哪个行业,用心去做,肯定能够成功的!
作者:郭大侠在测试