物竞天择
在西游记里面,有背景的妖怪,都被神仙带回去了。没有背景的妖怪,都被孙悟空打死了。有能力的孙悟空,无论在什么场景下,都能解决问题,因此地位是不可撼动的。想想你的能力又如何呢?是被人碾压,还是不可替代?
短跑的赢家,可能仅仅比第二快半个身位,或者仅仅比第二快一根头发丝,赢家不是你跑得多快,而是你要比第二名的快。想想职场中的竞争又是如何?大家都很辛苦,你也很努力,但机会可能只属于那个比你多付出一点点的人。
机不可失,失不再来
随着Android和Iphone智能机的出现,掀起了一波移动互联网热潮,给我们这些IT从业者带来了很多的机会。能抓住这个机会的,可能已经财务自由。如果加入一些创业公司,跟随着公司一起奋斗成长,说不定等到上市那一天,也就是你辉煌的一天。这也是每一个IT屌丝奢求的梦想,而机会有很多,但又有多少人能获得这个机会呢?少之又少,为什么呢?能力不够,无法成为一个不可替代的角色。
根据某一机构的资料,从事测试行业的,仅有2%能做自动化测试。这是多么可悲又可喜的事情!可悲,这个领域貌似一直得不到重视;可喜,这个领域是一个尚未完全开发的领域,如果先进入这个领域,并努力成为引领者,那么等待你的机会就很多。
据统计,可能数据不准,但至少也代表一方的观点。2013年以前从事测试领域非管理岗位,月薪超过25k的少之又少,而2013年以后呢,比例逐渐升高。25k,就当前来说,是有前途还是没前途呢?如果说测试没有前途,只能说是我们还没做到。该资料给出这样的分析:收入在 5k 以下的人群主要集中在 3年以下工作经验,职位是测试工程师或初级/助理工程师,85 后的本科或专科生。而高薪人群多数是学历高、工作年限长或处在管理岗位。说明软件测试人员可凭借技术的不断积累、岗位的晋升来提升自身价值,也说明测试人员职业寿命其实也很长,还是有很大发展空间的。
我们不看他的分析,只看薪酬的话,测试有没有前途?从分析里,我们看到,高薪的是处于管理岗位的,而管理岗位的一般都要求具备自动化能力,工作中管理者可能不会从事自动化的工作,但是他必须具备这项能力和思维,如果今天选择了自动化,就为自己未来从事管理打下了基础。如果你还未为明天做好准备,下次裁员的大潮,可能就有你。
看到这篇文章朋友,一定对个人就业方向和职业生涯了已经有了思考。学习自动化,我们获得的是一项技术能力,而个人的职业发展呢,是由这些能力来奠定基础的。就个人职业发展,我们有两个选择。管理和技术。无论你选择走技术,还是管理,前提条件都需要具备自动化测试的能力。有的同学可能说了,我不具备这项能力,我现在已经是管理者了啊!相信你离天花板也不远了。如果走技术,方向就是高级测试工程师、测试专家,选择走管理的话,方向是经理、高级经理。测试专家这样的角色一般公司是不需要的,像微软有测试专家这一岗位。阿里有测试专家的岗位。大部分的选择,可能是管理。而管理岗位,在一个公司里又有几个呢?
有人说了,我是做自动化的是不是就有机会做测试经理啊?有,但是也未必。
为什么啊?因为自动化仅是所有应该具备的能力中的一方面而已。如果会写自动化就可以当经理,那岂不是所有自动化工程师、开发同学都可以去做经理了。 那怎么从不能到能呢?
要有全局观。全局观是个啥?全局观,就是思考问题要系统化,那系统化又是啥啊?就是具备的知识要系统化,在一方向的测试领域,能给出解决方案。
可参考面试课程的体系内容:https://coding.imooc.com/class/182.html
技术的重要性
我在面试新人的时候,除了考量新人技术能力外,还会特别关注一点。是什么呢?学习能力和解决问题的能力。衡量一个人的能力不是从代码行数来判断,是从解决问题来判断的。正在测试的项目你能搞定,那么再给你一个全新项目的时候,你是否还能搞定呢?你就保证正在测试项目,不会被停了么?你就保证,自己不会被调到其他项目么?你说,有师傅带我。有师傅带是一件幸福的事,万事不灵,问师傅。可是你想过,你从此以后就成为师傅的徒弟了么?如何跳出这个圈,不要过于依赖师傅,那就得强迫自己提高学习的能力,提高解决问题的能力。反过来,如果师傅也在向你这个徒弟请教问题,如果有新的项目,这个机会就有可能是你的。
2015年的时候,有幸参加腾讯的质量管理大会,两天听了很多个分会场的报告内容,内容都是自动化平台相关的。有针对红包压测策略的,有ios自动化的,有android异常分析的。不得不说,腾讯做了很多的研究。就拿他们做的FPS测试来说吧,他们一个团队在做,做了5~6年,效果确实很牛。如果今天大家都去研究那一套FPS测试,学了也无处去施展,为什么呢?当前的移动互联网公司能活过5年的都不多,我们如果再花精力去做这样一件事,首先没有公司会养着你,其次,对当前的小产品来说没有意义。但是呢,我在性能测试部分,还是会和大家讲讲FPS测试,不需要一个团队来完成,一个人就能完成,包括可以不写代码都可以完成。这样的手段,才具有实用性!对于知识,我一直的观点是,从解决问题出发,必须实用。
如果从事移动互联网测试,那都需要具备哪些技能呢?我们一起来看一个大纲。
《移动自动化测试大纲》
- Android ADB、Monkey、Monkey Script、MonkeyRunner
- App性能,流量、电量、CPU、内存、FPS、过渡渲染
- 测试框架,UnitTest、DDT
- API接口测试,Fiddler、Postman、python requests、DDT实现API接口的参数化。
- 持续集成 Git、Github、Jenkins
- Android Native App自动化
- Android Hybrid App自动化
乍看去涉及的知识面,非常的广,但这些也仅是测试领域中,一小块内容。学懂其中的任何一方面,都需要花费大量的精力。曾经期望,某一本书能涵盖所有这些内容,因此买了不下20本移动端自动化相关的书籍,发现都很片面,这也促使我去整理所有的知识,使其系统化。如果能整理出来,不仅可以提高自己的能力,同时也可以帮助更多的从业者,少走一些弯路。有同学说,你哪来的高尚?如果说,刚毕业时,走的弯路,受到的藐视等,这次刺激的事还不能让我醒悟的话,那我也就没救了。有的同学说了,那你分享出来了,你的竞争力,就没有了啊。关于这件事,我思考过,我的竞争力是不断学习的能力,10年来,我每天都在学习。
为什么要学习自动化?
自动化测试那么多,为啥非得学习移动自动化呢?潮流,跟随潮流才能不被淘汰,跟随潮流才能抓住机会,才能有肉吃。
面试的时候,当面试官问你,这是一款app产品,来说一下,怎么来测?
有的人,上来,不加思考的就说,点击一下这个,点一下那个,看到输入框了,设计了一堆边界值,是这样吧?
你说了,如果不是这样,还要闹哪样?
假如一个小伙这么说,你们看看怎么样哈?公司的产品呢,都是产品驱动的,首先呢产品同学,会提需求,由开发工程师来实现,我依据需求呢,设计功能性测试用例。在开发提测后,首先是进行功能性测试。由于市面的手机厂商众多,三星、华为、小米啊,每个厂商都会对android系统进行二次开发,由于实现上的差异,导致产品在不同的平台表现存在差异,同时呢,anroid平台有不同的版本,从2.3到6.0有很多版本,每个版本对原有的API都会有改动,因此需要进行兼容性的测试。使用app的产品用户呢,都是用手做投票的,产品好用,下次还会用,产品不好用,直接卸载。
有一天某一个用户反馈了,说我们的产品经常白屏、卡死,啥也不能干。我们一听这是个噩耗啊,测试不过关啊,饭碗是不是要砸了。问用户,你是怎么遇到的,用户告诉你,不知道。这事,我们要不要管?要管,咋管?对产品进行稳定性测试。咋做?
我会心中暗喜,这小伙不错么,上来说的是大框架,提到了功能性、兼容性和稳定性。
还没等想完呢,小伙可能会接着说,由于产品在不断的迭代开发,后端的server也在不断的开发新的功能,有的时候呢,后端可能会提供一些错误的数据,客户端可能直接就挂了。还有的时候,客户端返回了一些异常的请求,或者第三方有人黑你,把服务弄挂了。所以呢需要针对客户端和服务器端进行API的测试。
这样一个产品是否很好了呢?不是,用户在使用产品的过程中,发现,我用手机百度看小说,电池可以用5个小时,用你们的产品仅能用3个小时,说明啥?我们的产品可能在资源消耗上有问题,因此需要引入性能测试,针对性能方面呢,包括CPU、内存、耗电量、流量等。接着又说了,测试过程中,发现有一些操作可以不用人来完成,可以用工具来替代的。因此呢,进行自动化测试,主要应用于冒烟测试和回归测试。写代码的过程中呢,发现维护代码的成本有点高,因此呢对代码进行了封装,把一些公用的方法抽离出来形成了公共函数,进行复用。同时发现产品的迭代周期特别短,如果把所有的任务都留到测试阶段来做呢,有些晚了,因此需要提前,如何提前呢?采用持续集成测试。
好吗,听到此,这样一个人,要不要呢?首先呢,我至少会给他打3分以上,5分满。说了这么多,会这个会那个,你能操作一下么?小伙,大笔一挥,写了一段代码出来。
来我们看一下,这个小伙都会啥,功能性、兼容性、稳定性、性能、自动化、框架、持续集成,还能现场写代码。大家觉得这样的一个人,要不要。想不想也成为这样的一个人呢?
如何脱颖而出
App上线后出现了CRASH。
老大看到了,说,小李你来,你看一下这个问题,怎么处理?好,我看看,小李试了几次,发现没复现。小李告诉老大,经理,我试了几次没复现啊。你觉得,老大满意么?如果没有对比,老大也不会说啥。
小张,听见了。说者无意,听者有心。小张,试了10000次,没复现,走到经理面前,说我了10000次,没有复现,说明这个问题是一个小概率的事件,低于万分之一,我觉得可以忽略。你觉得老大,会怎么说?老大会说,别忽悠我,你试了10000次,怎么做到的?
来,让我们看一下他是怎么做到的。
首先呢,小张呢,找了一台和报问题相同型号的手机,并和pc连上了,用数据线连的。连上了后,手机没反应啊。当然没反应了,因为你啥也没干啊。此时数据线连上了,就算连上了么?我们执行一行命令看一下,adb devices。一看啥也没有,这时为啥?首先呢,在开发者权限里,将开发者权限打开。打开后,再次执行adb devices。好,这次,我们看到了手机。
然后呢?小张写个简单的monkey脚本,重复了跑了10000次。
只会完成任务的同学,永远只能做执行任务的工作。
共同学习,写下你的评论
评论加载中...
作者其他优质文章