公司前段时间有过人事变动,一个新来的测试工程师(还未转正)被公司裁了。因为之前是我在和这位测试合作,因此他找到我希望我和他谈谈他在工作中有什么问题。
实话实说,这位测试老哥是不配“工程师”这个称呼的——就像只会画画原型图的人不配被称为产品经理一样。我想人家都要离职了,况且都是做技术的,也不妨给了点建议,希望他在以后的职业生涯中能走得顺利点。
测试工程师之路的开始
我对技术人员的定义的一个核心观点是:他的工作是否能够被非技术人员替代。比如说,一个不懂技术但是能说会道的产品经理(又黑产品)能否让一个经验老道的销售或者运营替代?测试时只会点点画面看看结果是否正确的测试人员能否拉一个知晓这块需求的运营来兼任?问题的关键就在这里,你的职位叫做“测试工程师”,那你就必须有胜任“工程师”这个称号的能力。
就我有限的观察而言,我所见到的、听说的创业公司的测试人员无非就是写写测试用例、点点画面、看看结果,能力稍强的会用一下Postman做一下模拟请求、抓个包看一下应用的接口返回结果,但是也就止步于此了,况且抓包和模拟请求只是对工具的应用而已,还远远谈不上会一门手艺。话说回来,在培训班大行其道的今天,你都不能指望你们团队的Android开发人员会抓包。
因此,对于一个测试人员来说,学会使用工具是成为一个“工程师”的开始,你可能还不知道GET请求有长度限制、不知道签名验证是怎么回事,但是不重要,起码你知道怎样才是测试的正确姿势了,而不是一昧的点击应用上的按钮。
●
描述问题的能力
●
大部分学习理工科并且工作内容也与理工科相关的人都有一个特点:说话办事都喜欢遵循一定的逻辑,譬如我们目前谈论的这件事发生问题的场景是怎样的,前置条件是什么,后置操作会产生怎样的副作用。这样的沟通模式下,问题可以得到很快的定位,解决方案的大致雏形也会在沟通中慢慢形成。
对于测试工程师来说也是,程序是人写的难免会出Bug,但是也是因为是某个程序员写的,他对于内在的逻辑、可能发生问题的地方会有一个大致的判断。测试工程师的工作就是,告诉他发生问题数据的ID、发生问题的场景、当时的测试数据是怎样的等等。而不是,把一个截图甩给程序员,说:“这地方出错了啊。”
●
基础代码能力
●
如何增强对逻辑思维的锻炼?写代码啊,又学一门手艺又得到了大脑的锻炼,岂不是美滋滋?
貌似很多测试工程师都喜欢去学Python这门语言,确实这是一门对于代码入门者非常友好的语言,但是包括那位测试小哥在内都有一个困惑:学了Python能干嘛?我的建议是从写爬虫开始,学习爬虫的编写可以接触到网络请求的基本知识、可以学习到正则表达式,需要爬取大量数据时还可以顺便学习一下数据库的使用,当然了对于爬虫来说学习一下非关系型数据库就可以了。这一方面是为自己学习自动化测试铺路,一方面也可以为以后转岗提供换一个后路:不做测试了我干脆去写代码好了。
●
乐观的心态
●
测试工程师每天面对的是程序中的“错误”,而程序员每天都在创造代码。起码我作为一个垃圾代码的创造者,是很讨厌去排错的。因此就我而言,测试时你很难保证心态的平和,因为你不知道什么时候会出一个莫名奇妙的错误。
假设这么一个场景,你测试出了一个bug,但是程序员自测之后发现无法复现,你的第一反应不应该是脱口而出:“不可能!”而应该是比对两个人的测试用例,发现可能存在的问题。
测试可以做什么
谈到测试人员的发展,首先再回过头来看看整个项目期间测试人员做的事情或者说能够做的事情吧以及需要具备的对应的能力吧!
1、版本或者产品的规划阶段:
作为一个测试人员,这个时候可以从一个更高的角度对产品的规划提出自己的想法,来更好的帮助产品取得成功。
需要具备的能力或者知识:对于产品的商业理解以及整个行业和市场的理解都比较深入,实际上这个时候我们可以将自己看成是一个产品经理。
好的,看了这么多图片了,我们先来个彩蛋!
2、版本的需求阶段:
测试人员已经能够开始做需求阶段的缺陷预防,保证需求是能够满足用户的原始需求,并且整个需求都是非常清晰和合理的,版本后期没有需求不合理或者需求不清晰的问题。
需要具备的能力或者知识:对于客户的使用场景非常清楚,能够在客户角度上面思考问题;有自己的一套需求分析的方法,最好是模型或者checklist之类的;非常好的分析能力,能够通过需求文档分析到可能潜在的问题。
3、设计阶段:
测试人员开始做设计阶段的缺陷预防,能够对于研发的整个设计方案非常清楚,能够根据研发设计文档里面的业务逻辑图自己能够站在测试的角度来画出一份让测试人员更加容易理解的业务逻辑图,并且能够发现研发在设计方案上存在的一些问题,并且指导研发进行修改。
需要具备的能力或者知识:比较深入的业务背景知识;熟悉开发使用的语言;业务分析和转换的能力;
4、编码阶段:
测试人员开始编写单元测试、接口测试用例、测试工具或者自动化测试用例,并且开始思考后面如何去更好的测试(更高的效率,更好的保证质量),并且帮助研发提前做好编码阶段的缺陷预防,甚至做得测试驱动开发。
需要具备的能力或者技能:熟悉开发使用的编码语言、能够对开发的代码进行静态走读、熟悉开发使用的编码语言的单元或者接口测试方法和框架、具备测试工具开发的能力、具备自动化的能力,良好的代码分析能力和用例设计能力。
5、测试阶段:
测试人员开始制定测试策略和测试计划、执行测试用例、发现和定位bug、跟踪和回归bug,质量分析,有效的探索性测试等等,目的是花更短的时间来更好的保证质量。
当然,以上这些能力测试人员不用每一项都掌握的非常熟练,可以根据职业发展方向归纳为如下几项:
1、产品经理
2、白盒测试工程师(叫开发测试工程师其实更加合适)
3、自动化开发工程师
4、资深的测试工程师或者测试专家(可能需要包括以上超过10个技能并且能力都要达到一定级别)
5、项目经理
其他的几点就不说了,这里重点说下达到资深的测试工程师或者测试专家(其实就是测试界的大牛)级别需要的一些条件吧!这个也是笔者一直比较欣赏的一个职业,可是目前这方面的人确实比较少,很多人半路走上了管理岗位!
1.1、看下自己是否真的适合这样的职业(很享受去发现一些bug,特别是经过自己思考后发现的一些别人没有发现的bug),这个可以在刚进入测试行业就看出来
1.2、一个好的平台:从目前来看,很多公司是没有办法给一个测试人员提供学习以上能力的机会的,建议是能够尽量找到这样的一个平台(当然也需要不断的证明自己是一个人才)
1.3、在一线测试呆尽量长的时间,并且反复磨练自己上面的一些能力(没有最高只有更高),这就是所谓的十年磨一剑,这样需要很大的勇气,但是在这个浮躁的行业里面做到坚持实际上是很难的,很多人都是耐不住寂寞的。如果你做到了你就赢了
1.4、不断的积累的和总结(总结是自己获得经验一个非常宝贵的方法,也是让自己进步更快的一个方法)
1.5、开始将自己的一些方法抽象出来,形成一些比较通用的方法,并且不断的尝试运用到实践中,证明这个方法是ok的,形成一些理论
1.6、完善,实践,推广,再完善,再实践,再推广。相信这个时候,你已经是数一数二的高手了,再加上自己的一些推销自己的方法,提升自己的品牌意识,剩下的就不用说了,当然,学习无止境。
最后:【可能给予你助力的教程】
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
关注我的微信公众号【软件测试小dao】免费获取~
我的学习交流群:644956177 群里有技术大牛一起交流分享~
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!