不知道从什么时候开始,出现了测试开发工程师这个称呼,以前的测试是测试工程师,开发是开发工程师,可究竟什么时候出现的测试开发工程师呢?怎么才算得上是测试开发工程师呢?其实虽然我做测试开发,高级测试开发,以及资深测试开发很久了,但是不能给出一个准确的定义。但是从以往的工作,招聘面试等经验中,可以分析一下,究竟什么是测试开发?
测试开发,其实是要求从事测试工作的测试工程师们要有以下几种能力或是思维:
一,快速学习新知识的能力
互联网行业的技术发展可谓日新月异,这就要求相关的从业人员要具备快速学习的能力。学习新知识,结合具体的业务或是遇到的问题,能快速实施落地。遇到工作中需要使用新知识的时候,能快速学习掌握并能解决问题。其实大家应该感觉得到,工作以后学习东西和当初上学的时候完全不一样的了。我们以学习语言为例,编码语言是测试人员的工具,所以在遇到问题的时候,不能说你会什么语言就用什么语言来解决,应该是什么语言解决起来效率高,就用什么语言。如果这种语言你不会,就需要去学习,此时再像学校的时候,买本书一章节一章节地看,显然是不行的。需要在解决问题的过程中,带着问题去学习,如果一门语言你需要学习上几个月,那就失去了意义。必须能快速学习,积极解决问题。
二,使用知识解决实际问题的能力
不管你是学习语言,测试工具,测试框架还是各种自动化测试,必须有解决实际问题的能力。从平时工作中遇到了难以解决的问题,然后提炼出通用的问题解决方案,使用代码技术手段去解决它,这个才是正途,不能为了学习而学习。比如说学习自动化测试,首选根据自己的业务需要,调研一下接口自动化,服务自动化,页面自动化和 App 自动化哪个才是能解决问题的方案;然后围绕着工作需要,去选择测试框架,设计自动化用例架构,用例管理方案,用例集执行策略,报告及日志管理,问题分析等等,而后再去做持续化集成。
通过解决具体的问题,来去引进和学习相应的技术,一是能得到领导的支持,获取时间和资源;二来能增加自信和获取相应的肯定,报酬等等。自己一个人学习的时候,没有任务就没有动力,最后变成了调试一下示例,慢慢的就是只看书,最终是从入门到放弃。
三,全面考虑问题的能力
我们通过了快速学习,能从解决问题的角度来提升自己,并可以将技术落实到实处。这个阶段会持续一段时间,此时你应该处于测试开发的初中级水平,如果想往高级上发展,就需要培养考虑问题的全面性。但是往往这方面不太容易提升,一个人的思维习惯,思考高度等等很难改变的。举个例子来说明一下:给你一个全新的 App 让你来设计测试方案,你能考虑到哪些儿?App 一直以来就有 “胖服务端,瘦客户端” 一说,所以我们在测试的时候,需要引入接口或是服务的自动化测试,以保证后端接口或是服务的功能测试,功能回归和监控;同时分析接口的使用场景,来确定是否需要引入压力和安全测试;App 客户端需要手工测试进行功能和兼容性的测试,借助于工具来进行 app 压力测试,使用 Appium UI 自动化测试来进行用户级的自动化测试与回归。同时,根据以后的迭代节奏和业务发展的需要,可以考虑引入持续化集成等等。
四,新技术敏感度与技术危机感
一个优秀的测试开发人员,需要对社会上出现的新技术保持高度的敏感。此技术出现后,会影响到哪些方面,如果影响到了开发人员,测试技术和方案是否也需要相应的改变?如果能直接使用到测试工作中,应该如何实施等等。同时,自己也要时刻保持着技术危机感,不能学会了自动化测试,就沾沾自喜,认为自己已经是测试开发了,或是做了持续化集成就是高级测试开发。技术更新换代相当速度,如果不时刻有危机感,不断地提升自己,你引以为傲的技术马上就会变成被人不屑的东西。在面试的时候,四处碰壁,那种失落感是可想而知的。
五,团队协作与共同进步意识
一个人的英雄主义的年代已经过去,现在做什么事情都是团队协作的。所以一个优秀的测试开发人员,要有团队协作能力,能与团队中的任何人合作共同完成工作。同时,如果你的技术能力较强,要有对团队人员进行培训,大家共同进步的意识。因为你一个再强,也不如一个团队强,通过培训自己的团队成员,大家共同进步,才能更好地完成工作。一个人默默发展,不与其他成员交流,一意孤行,到最后不管你的贡献再大,能力再强,公司也会为整体而丢弃你的,千万不要让这种情况发生在自己身上。现在的企业招聘的时候,也会很重视这方面的考察,不要因为自身的原因而影响发展。
测试开发不仅仅是职称,而是社会对测试人员的一个要求和认可。你从事测试工作了多少年,应该达到什么水平,具备什么能力,解决问题的思路和方案是什么?如果你达不到这个水平,即使你说自己的高级测试开发,照样让你面试通不过。社会不相信眼泪,互联网相关行业不相信工作年限,你工作的时间久不能说明你能力强,同样的工作重复多少年都没有用。个人见解,亲测有用,希望能帮到你!