• 0
  • 0
分享

  有这么个普遍现象

  测试招聘者,特别是一、二线互联网公司的招聘者最苦恼的事儿就是招人。想找到一个合适的人难于上青天,每天各种撒网,简历看几百份,面大几十人,能捞到一个中意的小伙伴就谢天谢地了。但同时很多测试小伙伴发现找工作很难,特别是进大一点的厂,他们特别挑:代码要会写,要有软件架构能力,问一大坨平时根本用不到的技术问题,还挑经验,挑沟通能力,挑这挑那,有时候还特么挑学历、挑年龄。。。供求总难以匹配起来,造成了双方都很痛苦。

  Why?

  能力要求不匹配是最核心的问题。软件、互联网近 20 年来飞速成长,其实也经历了很多阶段。行业软件兴盛阶段和外包兴盛阶段(2000-2010 年)行业进入了大量的测试人员,当时最主流的测试实践是:重心放在系统验收阶段。测试人员的主要工作基本都投入在了基于业务的黑盒测试上,对代码能力、系统理解的能力要求不多。2010 年后,互联网行业的真正兴起让国内软件开发模式开始缓慢调头,快速迭代的模式逐步兴起,开发周期越来越短,迭代越来越快,但系统越来越越庞大、复杂。原来的测试工作模式和工作范围越来越无法满足要求了。但大量从业人员技能范围转变是一件很难的事情,行业是有巨大惯性的。从宏观上看大量 QA 技能转变跟不上需求转变是造成市场供求不匹配的主要原因。

  So What?

  三个观点:

  1、只做手工测试,不懂系统实现的测试工程师的职业发展会越来越受限。

  2、能够转型成适应市场需求的同学将在近几年的时间获得超额回报(因为市场供不应求,企业不得不抬高价格来寻找这样的人)。

  3、对于个体来说,自我成长永远最重要,自己永远要对自己的发展负责,别依赖外部环境,自己想办法变成市场的香饽饽才靠谱。

  到底什么样的人抢手?

  按照我一点理解讲一讲什么样子的人会抢手吧,限于篇幅会偏重技术角度来讲。个人之见,欢迎讨论和拍砖。

  测试的底子-项目经验 有比较复杂系统的测试实战经验,你就超过了 50%以上的应聘者。什么叫做比较复杂系统呢?投入 50 人年开发出来的系统就可以称作一个复杂系统了。因此,复杂系统并不是很罕见。但是,如果你只接触一个简单的模块,甚至只是测试一个稳定模块的维护性开发,而不是通盘理解,不能说是测试过复杂系统。有从头到尾接触一个完整项目的经历很宝贵。

  测试的底子-基础知识 对照三本书:《ISTQB 基础教程》 《高级软件测试设计》 《高级软件测试管理》(后两本是 ISTQB 的高级认证教程)。这里边的内容你都能熟练应用(真的是熟练应用,而不只是有概念),你就能超过 80%以上的应聘者了。面试过数百人,我经常会问几个问题:如果测试时间不够,你会怎么办?如果让你去测试一个你完全不熟悉的系统,你会怎么办?你平时会使用那些测试设计方法?看似很稀松平常的问题,非常考验人。因为大部分从业者都没有经受过系统训练和学习,工作多年,依然技能不足,意识跑偏。

  熟练使用一门主语言 满足这条,你就超过了 70%的应聘者。什么叫做熟练呢?拿 Python来说吧:系统学习过 Python 的教程,高频面试 50 题 这样的题可以自测一下,可以回答上 35 个以上;熟悉最主流的 Spring 框架,能够写出一个简单的网站,实现基础的 Restful 服务;读懂过一个测试框架,如 mockito 或者 Junit 的源码;能够熟练实施接口测试(基于一些测试框架 如:rest-assured+Junit);能够读懂开发的业务代码,对他们的代码进行 Code Review;

  对一门语言有比较深入了解 满足这条,你就超过了 90%的应聘者。什么叫有深入了解呢?还拿Python来说吧:熟练使用 Python 的常见 API;深入理解基于语言特性/系统特性的知识,如 Collections 的实现机制、类型系统、I/O、网络、多线程等;熟知设计模式(广义范围的设计模式,不局限于 GOF 的设计模式);熟悉 JVM 的工作模式;熟练使用调试排查工具解决性能问题;熟练掌握市面上常见的脚手架;熟练掌握周边知识(OPs 相关,网络知识相关)有不错的实战开发经验(做过真正被生产检验的东西);对于测试开发,AOP,Python 字节码技术是很重要的知识。。。这是一个很长的学习 list,需要几年时间来养成。做到这点,其实你可以胜任普通的开发岗位了,这也是高级测试开发岗位的技术底子。

  在一个领域知识有不错的了解 人不可能什么都懂,但工作几年之后,会在工作的域内一定要有积累才行。例如,你测试一个核心电商系统的交易模块三年了,业务上你一定要熟练讲出来:商品列表、购物车、下单、退单、废单、支付、发货、库存、退款、优惠使用等等一坨业务流程,和可能出现的常见的坑(各类问题产生的资损、各类问题产生的服务不可用、逻辑矛盾),不然根本无法体现你经验沉淀和深入思考;技术角度上,你要能够画得出来系统的交互图,熟悉最核心的接口和最核心的参数,能够读懂开发的代码,熟练使用 trace 和监控工具,诊断定位线上问题到代码行。

  用技术保障质量的能力 测试开发岗一定会问到一个问题:你能够举一个你用技术手段提高测试效率,增强测试能力的例子么?这是面试时最大的一个坎。 很多人会讲一些自动化测试回归的例子,但是真正成功的例子非常少,因为为什么做,怎么做都没有想好就照网上一个教程攒了一个,结果变成了玩具。做好自动化,不仅仅是会使用工具、框架,其实要对被测物特性,软件生命周期有很深的理解并且有很强的开发知识才行。实际上,在环境、CI、数据、测试用例生成、数据比对的很小的一些点上,都能有不错的提效产出,从这些点能够做得好,会得到不错的加分。有一个不错的成功案例,你胜出的几率就超过了 80%,没有短板,就十拿九稳了。

  技能以外的东西- 实战案例 以前的工作印证了你的能力。能够讲清楚一件特别拿得出手的工作,证明你能力的案例是面试时候最有用的投名状。

  技能以外的东西 - 你的个人特质 一般有如下特质会大大加分:快速学习、系统性学习、学以致用、系统性思考、强大的推动力、技术思维、突出的沟通能力、条理性、抗压性、乐观精神、抗挫折能力、迅速调整的能力、迭代改进的意识、ownership、团队合作、愿景和规划。这些特性体现人的内核,有强大内核的人,做什么都行,技能暂时不足,也一定能补足。所以,在招聘的时候往往对是否录用的判断起决定性作用

  高段位要求(高级职位需求)

  计算机领域知识的通盘理解 这条范围非常大,人不可能什么都懂。但最最基础的知识是不能有盲点的:操作系统工作基础原理与基础操作:如 linux,要通读过 linux 操作系统的书,熟悉最基本的概念,基本命令要熟悉,shell 要能写和读;网络知识特别是 TCP/IP, HTTP 知识:推荐两本书 《图解 tcp/ip》 《图解 Http》这两本书里的东西要懂。数据库知识:市面常见数据库(redis,mysql,oracle)的常见 DBA 操作,问题排查;SQL 的熟练使用;Web 及移动端知识:能够懂 HTML,CSS,能够读懂 Javascript 代码,能够读懂 Android 或者 iOS 的代码,做简单开发最好。安全知识:常见的安全防护方法、工具使用;基本的安全攻防原理;软件工程/开发过程管理:实战中各种磨练,建议系统的学习 PMP,敏捷开发的一些认证课程。

  在一个域的深耕 人不可能什么都懂,但在一个领域是需要深耕的。比如,在做了四、五年移动端测试以后。android 和 iOS 都要具备一定的开发能力了,能读懂开发的业务代码是最基础的,能够代替开发实现部分业务功能,完成部分组件开发是个非常好的自检点。能够对移动端自动化工具栈、监控工具栈(如友盟、bugly、newrelic 等)、内存泄露检测、卡顿检测、耗电量、弱网、流量、埋点、灰度、版本控制、兼容性、用户体验、安全等等的质量保障方案有通盘搞定能力。什么叫搞定呢?举个例子:比如,使用多种手段把崩溃率降低到千分之一以下。对于一个小团队,这是个很不容易实现的坎。做到这点,你需要了解如何收集崩溃率,如何使用一系列工具来定位核心问题,如何推动开发改动,并且预防(静态代码扫描工具引入,阻止乱用第不成熟的第三方插件,代码 reivew 防止常见 pattern 如空指针引发的崩溃,推动开发养成良好的 log 习惯,推动移动端防御性编程编程开发习惯,推动后端开发按照规范吐接口,帮助开发引入内存泄露、卡顿工具,趋势报表,警钟长鸣,各种灰度方式设置,线上监控。。。一个数据的改观,背后要有大量的质量相关工作)。

  使用综合手段来保障软件质量提升效能的能力。

  听起来很抽象,举几个例子吧。

  例子 1:你所在的 team 总在被开发抱怨测试用的时间太长。如何能缩短一下测试时间呢?通过调研,发现测试小伙伴诟病的最多的就是环境不可用。环境到底多不可用呢?你基于 Grafana 和 Prometheus 做了一个环境可用的监控报表,使用后,发现环境在工作日整体可用率只有 35%左右,主要原因是:几个核心热点应用经常挂了没人管。你拉了整个 team,明确了部署责任人,约定了部署规则:只能中午饭和晚饭时间部署,并且部署后要自己看一下是不是 OK。一周后,环境可用度上升到了 65%。再深入分析,发现 2 个同学不守规矩,总是他们在破坏规则,你去找他们单独谈话。一周后,环境可用度上升到了 80%。还是有少量人不守规矩。你找 SRE 的同学提需求,做了部署卡点,非部署时间部署必须 TL 审批。一周后,环境可用度上升到了 85%。有些 TL 也不守规矩。你建了个报警,环境乱部署,坏掉了,在大团队的群里@全体,告知谁搞坏了环境。一周后,环境可用度达到了 92%。你加了一个 feature:应用挂了一段时间无人响应,自动重启服务功能,仍然有问题,就自动回滚上一版本。你推动了开发解决了某个应用启动时间过长的问题。你推动了环境分组。你推动了测试环境版本上线的规范流程实施。你推动了冒烟自动化用例卡点。你推动了环境部署人备份机制。你推动了全员基础环境部署培训。你总结了部署手册。你做了。。。。。最后,环境可用度稳定到了 97%以上。你为测试节省了 60%以上 block 时间(原来可用度未 35%)

  例子 2:上面的问题,除了环境,还有一个槽点:开发提测质量不高。测试的头几天,很多主流程都走不通,导致测试总是在等待,或者是跟着开发一起联调。而这段时间,已经被习惯性的认为是测试时间了,因为:提测了。

  你推动了:测试提供冒烟用例,开发必须完成一定程度的自测才能提测。你推动了:测试和开发做自动化同期共建,在开发过程中,核心功能就被自动化用例保护起来了。你推动了:开发切分 feature 提测,而不是攒一个大招一下子提一坨。你推动了:代码 Codereview 变成团队常规活动,QA 在早期跟进核心代码,把问题坑杀在萌芽阶段。你推动了:外部资源联调非常早的进行,不会让它在测试后期成为测试 blocker。。。。

  例子 3:你发现测试时间长,QA 自己也有问题。

  你推动了:有明确的测试计划,并让所有干系人都有明确的预期。你推动了:测试依据风险测试,最大的风险得到最快的 cover,科学分配时间,明显缩短 bug 反馈时间弧。你推动了:bug 严格管理,所有重要 bug 都及时修复。你推动了:良好的沟通和汇报机制,每天让团队主要干系人清晰的知道,距离发布还差多远。你推动了。。。。

  你能讲出自己做过 5 个以上这样的成功例子,我敢保障,你会被 1 线大厂疯抢。职级基本都是专家起。


作者:程序员阿沐    

来源:http://www.51testing.com/html/62/n-7795562.html

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   2018 年,Google首席执行官桑达尔·皮查伊 (Sundar Pichai) 曾要求苹果首席执行官Tim Cook (Tim Cook) 在 iPhone 上预装Google搜索应用,但库克最终并未采纳这个想法。 该信息来自Google正面临美国司法部正在进行的反垄断诉讼。  在库克表示希望苹果与Google成为“深度合作伙伴”后,皮查伊向库克提出了这个想法。 他告诉库克,预装Google搜索应用程序将为Google带来更多流量,从而为苹果带来更多收入。 苹果和Google长期以来一直有搜索引擎交易,Google每年支付 18 至 200 亿美元,成为苹果设备上的默认搜索引擎,但在 ...
            0 0 721
            分享
          •   3个月时间,如何从一个功能测试进阶自动化测试的,我整理了一份1000字的超全学习指南。  一、学习自动化之前,我们应该先了解自动化测试是什么?  自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。  二、自动化测试如何学习,自动化测试又有那些类型  1.自动化测试的类型  什么可以自动化?实际上很多,但是通常容易误解这个问题。  有两个主要类型,功能性和非功能性:  · 功能性:测试...
            10 11 1619
            分享
          • 一、代码覆盖率通常我们在做单元测试的时候会接触到代码覆盖率的概念,通过在单元测试的过程中收集代码覆盖率去判断测试用例是否充分,去更精准的定位问题。而对于功能测试或者接口测试比较少的去关注覆盖率数据,功能测试时覆盖率的收集也是比较困难的。然后对于功能测试而言进行代码覆盖率的收集有利于测试工程师去判断哪些分支没有被覆盖,判断是否是设计用例的时候没有做到覆盖,又或者是由于存在bug使得无法覆盖到,从而更精准的去定位bug的位置,去分析问题,节省时间。二、工具简介对于java的代码覆盖率的收集,比较常用的工具有emma、jacoco,它们都是免费的代码覆盖率工具。emma目前已经不维护,EclEmma...
            0 0 2179
            分享
          • 作为一名多年的测试人员,对测试这个岗位的存在,也有自己的一点拙见。纵观现在的互联网公司,不管是国际巨头,行业巨头,或初创型公司,测试的岗位都必不可少。但不同的公司之间,却又有很多的差异性,拿测试开发比来说:在 Google 公司,测试开发比为 1:10;但微软则能达到 1:1 甚至更高;笔者现在所在的公司,大概是到 1:3 左右。其实每个公司的配比,都是视本公司的业务形态/协作方式决定的,单纯靠配比来决定什么,也是不科学的。微软的一些测试人员需要写单元测试,相当于测试开发的角色,写出来的东西去测试开发写出来的代码,加之微软产品性质比如复杂操作系统,服务器产品之类的,需要的测...
            0 0 1934
            分享
          •   在奇瑞昨日晚间举行的“讯飞星火认知大模型首搭星纪元 ES”发布会上,奇瑞汽车执行副总经理、汽车工程技术研发总院院长高新华接受 21 世纪经济报道采访,对奇瑞与华为的合作进行正面回应。  高新华表示,当日首发亮相的星途星纪元品牌车型主打舒适,相当于电动化的“奔驰”,而奇瑞与华为合作打造的新品牌 LUXEED 智界,则相当于电动化的“宝马”,两个品牌将针对不同人群。  奇瑞汽车今年 4 月重新梳理旗下品牌,形成奇瑞、捷途、星途和 iCAR 四大品牌布局。IT之家此前报道,奇瑞与华为的“baby”已经在工信部完成申报,悬挂 LUXEED 车标,车型名称为智界 S7。  工信部数据显示,这款新车拥...
            0 0 1110
            分享
      • 51testing软件测试圈微信