微课堂第12期:移动互联网测试——你应该要掌握的技能树

原文贴:http://www.stuq.org/page/detail/488  

作者: monkey

移动互联网测试——你应该要掌握的技能树

陈晔(monkey)

大家好,很感谢大家能够晚上来参加这期微信的公开课,同时也感谢StuQ给予我们这样一个交流的平台。

我今天是通过PPT和文字的方式给大家直播。

虽然说是技能树,但是由于我们时间有限,所以其实我不能一个一个细节去扣,只能提高高度。

这个是我的个人介绍,为了避免很多人不了解。我还是要提醒一下,蚂蚁金服就是支付宝。。。我这两天都在通宵。。。

       

    

今天主要就说两点,第一点是移动互联网测试的一个发展,我们简单回顾下之前几年行业对于测试的需求。从这个点我们再引出下一个点就是这些硬性和软性的技能。

    

    

简单发展我都贴在这里了。我简单说下,在最早的两年,行业对于测试本身并没有什么要求,更多的仅仅只是愿意去做测试的,或者有一定测试经验的即可,没有任何关于技能上的要求。

顺便提一句,那个时候的北京的一些外企,对于只会测试的monkey就能够给出15k一个月的薪资,这点可能从现在看来很匪夷所思。

其实当初对于很多测试来讲是个很好的机会,但是其实好景不长,原因是很多企业当初觉得移动互联网能给自己带来很多的收入,但是最后发现只是不停的烧钱。

所以在2011年底的时候已经有了一波裁员,只是很少人知道。而且测试也是首当其冲被裁掉的。

2012年是一个分界线,2012年整个行业对于测试的要求突然具体化,monkey,monkeyrunner,xcode,instrumentation,robotium等等要求层出不穷,不过主要focus的点还在自动化上面,这是对整个从业人员是一个比较大的挑战。这个时候去面试,会发现很多公司会给出一些面试的试卷。比如软件工程,比如测试,算法,智力题等等,什么都有,感觉就是什么都要会,原因是当初的行业的公司根本还不知道测试到底要会什么,或者说自己企业到底要会什么。

截止到至今,依然还有很多公司走这样一种试卷的流程,其实现在很多公司还是不知道测试到底要会什么。测试和开发虽然都是技术岗,但是其实能力要求很不同。

2013年自动化还在继续,此时更多的关注点从native到了hybrid,hybrid的自动化给很多公司带来了很大的挑战。此时Appium也好,分层测试理念也罢,也都是从这个时间点开始火热起来。

相信现在用Appium的公司和人已经很多了。但是大家看看其实过了多久才真正的被使用,被重视,火热起来。这其中有框架的不稳定,也有行业对于新鲜事物的后知后觉所造成的。

2014年随着整个产品的自动化做起来,那么持续集成的需求开始来了。此时行业敏捷也很火热,那么各种BDD,ATDD也层出不穷。其实没有真正持续集成起来之前,都是伪自动化,只有持续集成了才能够说是真正的自动化。

我其实在我的第一本书中也提到过。就是说自动化这种不是说我们在eclipse,Android Studio,xcode上面跑跑,或者说用脚本run一下就叫自动化了。而是说你的一些脚本,自动化可以长期的在项目中去运行,而且不再需要人为的介入,形成真正的持续集成才是真正的自动化。

好,那么就说到2015年了。随着用户体验越来越重要,那么在功能和自动化之后,各个公司开始重视专项。但是专项这个东西和测试又有点不同。专项本身并不像传统的测试,不是0就是1,它更多的是缩小问题的范围和锁定问题。所以说专项就会对测试人员要求很高,以往很多测试人员都是参照PRD(需求说明书),对就是对,错就是错,然后去设计用例。而专项最多有一个标准,但是当不达标的时候,需要去找问题所在,就对技术有很大的要求。

好,那么接下来我们就要来说2016年了。明年会是各家关注移动安全的一年,不要问我为什么知道。。我就是知道了。

好吧,还是告诉大家吧。每年都会有很多公司找我去做企业内训,我开始的时候也说过了。虽然不是什么大数据,但是我接触的有你们看,tx,百度,工信部,私企,银行什么企业都有。行业的趋势取决于行业中的企业,企业的发展取决于里面的决策层和员工。那么这些公司关心什么,势必就是行业未来的趋势。这点大家应该都认可,只不过我正好有这个渠道去知道。

    

    

当要求已经多到没有办法去衡量的时候,就物极必反,就那么简单了——全栈。

那么我们的测试工程会是一个什么样的需求呢?大家都知道这个词——全栈工程师。是的,接下来就是这样一个定义。但是全栈或者说这里说的全能并不是什么都要会,什么都要懂,什么黑锅都要背,而是能够去面对各种难点和挑战。

举个例子,我们面临的问题可能涉及各种技术,各种框架,前后端,中间件等。但是我们需要有能力去协调资源,去有能力最终定位问题在什么地位,让问题最终解决掉。毕竟最终只有产品本身的质量,体验提升了才是真正的有所谓的落地的价值。

关于能力,这里我列了几个点,我们一个一个来讲。

    

     

第一个代码能力我就不说了,已经老生常谈了。这一点会随着移动互联网的发展越来越被重视起来,不要再去纠结测试和开发的关系,这层关系接下来也会越来越模糊。也不要纠结测试要不要会代码这样basic的问题了。。。

    

   

第二个快速的学习能力,是在这个移动互联网时代不可获取的。简单来讲,快速学习中很主要的一个点就是所谓的学习方式和学习习惯。比如技术上,灵活使用Google、stackoverflow等网站,另外一方面就是要去躲交流。这都是学习的方法。

昨天其实在StuQ的另外一个分享上,也有同学问现在测试面试看重什么。其实现在测试招聘,10年以下的看的就是潜力以及你现在的能力是不是和你工作年限成正比。做了10年还不如人家2,3年那么就不要丢人现眼了。

希望大家不要对号入座哈=。=

10年以上的,那么就看积累以及影响力了。经验和技术积累我就不说了。影响力是个很重要的点,其实更多的就是侧面看出来一个人在工作之外的一种积累,言行举止,人脉,察言观色等。毕竟单打独斗是做不好事情的,没有一定的个人魅力,那么是走不远的。

简单来讲,现在和未来的行业无论是你manager还是技术leader,你最终还是需要不停的学习技术,这点是不变的。以往的这种纯靠经验吃饭,纯靠管理吃饭的慢慢的已经在这个行业吃不开了。

所以说现在面试,其实技术不match,或者不够格对于很多公司而言根本不是什么问题,主要看的是潜力。而一个人,你过去的经历会说明你的潜力,会映射出来你的未来,所以要怪只能怪自己了。

    

    

接下来还有就是定位问题。测试现在更多开始偏向开发,那么缺陷不能简单的去描述现象以及获取日志那么简单了。大家看到我的定义,公司对我的定义是全栈,但是全栈不是说什么都要会,而是说要有能力去hold住不同类型,不同技术实现的被测产品。

我这里给大家一张大图。

   

    

我们现在面临的有native,hybrid,reactnative,各种架构,各种分布式系统,各种自定义容器等各种不同技术组合起来的产品。那么用户这里看到一个错误,对于用户而言是一个错误,但是对测试来讲,我们需要知道这个错误的源头在哪里并定位。

蚂蚁金服在今年开始主推就是“一专多能”,这个一专多能的意思就是我刚刚所表达的,你需要有专长,但是不代表你只需要,只能去做你会做的事情。

其实在很多场合讲这个点的时候,很多人是不认同的。当然其实我想表达的是,无所谓你认同不认同,这些是一个方向,一个趋势,你没有能力去改变行业方向的时候你只能遵守,不是么?你能够定位问题一方面避免了开发与测试,开发与开发之前的扯皮,前端说后端,后端T给前端这样的问题。

这样测试就间接的去加快了bug被修复的速度,即体现了所谓的价值:)

另外一方面你也需要积累定位问题的经验和能力,否则就提出缺陷并不能对最终解决问题有什么本质上的帮助,不是吗?测试需要在这个当中使用自己的技术,埋点,监控等各种技能来尽快的定位问题和找到对应的message,然后推动问题快速的解决,这才是真正的落地,真正的价值。

所以我一直会说。现在一个自动化,专项,安全测试,在一次项目迭代中去发了很多的bug。然后非常自豪的说自己发了多少多少bug。这已经没有什么用了。用bug来证明的时代早就过去了。说的实在点,最终bug修复了多少,产品提升了多少才是真正的价值,发现了多少bug有用。

    

      

好了,接下来要说一个很重要的软技能了。沟通表达。其实技术是硬要求没有错,但是一个人不是万能的,我们需要依赖群体去完成很多事情,一个人能做的毕竟有限。当你用技术可以到达level5的时候,你想再往上走,那么需要依靠团队的力量。其实软技能才是真正能决定你走多远的。

你的气质,你的谈吐决定了你的人缘,你的人脉,你的未来。这就是根本,其实无论你现在在小公司还是大公司,只要未来你想去做点什么,只要你想达到更高的level,那么就必须去和人打交道,与各种各样的人打交道,其中有很多你不喜欢的。当你不够强大之前,你没有选择的能力。

技术要接地气,社交也同样要接地气。智商要有,情商要更高。但是光有情商还是不够的,你需要这个时代的一些特点,这样才能够和大家在一个频道上。所以才要不停的去学习,新闻,娱乐,八卦,只要这个行业热的东西都需要。

    

      

接下来就是很重要的一点——高度。只要大家去一些大公司,你们就会听到你们领导和你们说,做事情要有高度,思考问题要有高度,解决问题要有高度。其实每种高度的意义都不是很一样。

我之前一直举一个例子,两个相差不大的人,一个去一家小公司,一个去一个大公司。一个是百万量级的产品,一个是亿量级的产品。那么经过几年之后这两个人的差别在什么地方?大家不妨想想看(前提是两个人都很积极主动)。

小公司的这位同学会对各个岗位都比较了解,在小公司是多面手,技术上也有很大的提升,这点都毫无疑问的。大公司这个人技术的深度和其他各个岗位了解广度都会相比第一个人欠缺

但是第二个同学的优势是决定性的,而且是有长期影响的。这就是看问题的角度,高度以及解决问题的思路会很不同,而且养成了一种习惯。我们可以想想,比如我们要做一个UI自动化,当你面对一个单纯的app和一个很复杂架构的app会有什么不同?

你先要考虑的是不同技术点上应该怎么攻克,不是什么element都可以识别的。其次就是怎么打包,怎么将很复杂架构的,拥有很多子模块的应用成功的打出包,然后如何去过滤不同组件的日志,如何有指定的给不同团队的人发出报告或者报警。这都是第二个人会去考虑的,但第一个人不会。

这就是所谓的环境上的区别。我微信上也一直说,人有时候真的被逼出来的,以为不可能的事情在压力下总能够成为可能,同时也会给予自己不同的视角。

其他我们都可以想想看,如果要做功能、专项,持续集成,线上监控等等。你面临几个团队和几十个团队,你面临几百万用户和几亿用户的话,你现在的解决方案可用吗?很多时候这就是所谓的高度上的差异。

很多时候我们面试的时候往往会发现自己所答的答案都没有什么太大的问题,但却最终没有得到面试官或者公司的青睐,很大的原因就是你们两个的高度不在一个level。你所思考的问题在对方看来根本不是问题,才会导致这样的结果。其实就如同一个在level 10练级的主人公和在level100练级的主人公看区域怪物和boss感觉不同一样的道理。通俗的说不在一个频道上。

自我认识是我一直强调的,所谓客观的看待自己就是抛开你的title,你的背景,你的过去,就直接来审视你自己真正学到了什么,真正的掌握了什么,哪些已经是你的技能了。

同时我们不要去被别人影响,每个人都有自己的道路和自己的规划。不要做随风摆,这样几年很快的,过去之后会发现很多东西都知道,但是很浅,自己也没有积累,就一事无成。

自我认识的高度在于不要太过看重眼前的东西,很多人会比较现在拿多少钱,现在什么title,现在什么level。这些都是眼前的,真正高度自我要求的人都是去看未来,看长远的发展。也许你现在很牛逼,但是10年后,20年后你还能保证牛逼么?谁也不知道。

相对的,自己现在牛逼了,将来不一定牛逼。沾沾自喜可以,但是需要客观的去审视自己,给自己定计划,去长远的规划,不要计较短期的得失。拿我做例子,大家都看到了最早我给大家看的履历了。其实从我走出公司,想到行业中和大家交流开始到现在无非3年的时间。我如果计较当初的那些得失,那么也没有魄力会裸辞单独的到行业这样一个大家庭中去闯荡,也就没有了现在。

所以我想说的是,其实几年的时间可以改变很多,不要以为时间过的很快,你的时间也许过的很快,但对于很多人他们过的很慢。是因为他们有很多的target需要去完成。共勉。

人脉的积累是很有必要的,尤其是现在在学校的学生。很多人其实会问,现在行业中扯淡的人太多了,我应该怎么分辨。我有两个方法,其一,测试相关的可以来问我,我几乎都认识。其二就是你尽可能的去认识更多的人。

我们千万不要以为自己看到的就是全部,也不要认为圈子就那么大,等你真的走到行业中去了,你就会知道自己那么渺小,高手如云,还有很多东西需要去学,而且到时候你会发现技术是最好学的。当你认识1000,2000人的时候可能还没有感觉。等你认识更多的人,达到一个质变的时候,你自然就会知道哪些人值得去深交,哪些人会拉低你的level,哪些人就是忽悠,你会一目了然。

最后想要讲的就是传说中的高调。很多人觉得高调不好。其实任何事情没有好不好,关键是你怎么做,你做的策略是怎么样的。很多相同的事情,也许换种形式,也许换个时机就能够达到截然相反的效果。

尤其当你在一家大公司,在一个大团体中,你必须高调。千万不要去想着有一个伯乐来找你,或者说也千万不要想着有一个好的mentor来带自己。这种概率其实就和自己中500w一个概率,你觉得概率有多少。

所以说需要我们发声音的时候需要发声音,需要我们高调的就应该高调。有策略的去高调是不变的法则,将来很多人就会明白。之前微信有一个分享,说土豪和贵族的区别,其实不要让别人觉得自己就是个炫耀的人(暴发户),而是既有技术,也会实干,也有内涵的人(贵族)。

好了,我现在再来举一个例子,比如说移动互联网。大家觉得移动互联网是什么?现在很多人在做Android,iOS,在做很多别的。这真的是移动互联网么?

我们刚刚说了要看的长远,那么这一切肯定就不是终点。

    

    

但是要问未来是什么?我也不知道,没有人知道。但是这个未来是可以预见的。怎么预见?就我刚刚说的这些,多学习,多接触行业,多积累人脉,多分享,多交流。那么慢慢的趋势在你的脑中会有清晰的方向。

    

        

所有我写的东西都在这里:https://testerhome.com/monkey/topics

好的,最后感谢大家能来。我这里插播一个广告。我和其他几个人所创立的Testerhome.com是一个针对高端测试技术做的一个测试社区。我希望大家多多能够在这里分享自己的经历,经验,技术等。另外也希望大家多多支持,多多分享,也能从中获取自己想要的。感谢。

        

Q&A

1. 09-12年至今有一段空白时间,这段时间学习了什么?怎么给自己充电的?似乎积蓄很久,突然爆发了。

首先很感谢大家能够这么晚过来听课。

之所以以前有一段空白时间,因为那段时间都没有学什么。我之所以这么讲,一来那段时间刚开始工作对测试不是很了解也是在慢慢摸索,然后也是比较low什么都不懂慢慢学。第三方面在一家创业公司也比较忙,更偏向于业务一直忙啊忙,现在我看来那会多数都是重复工作也没有什么真正意义上的个人经验积累。

在那个时间点,学习的文档还是很少的,更多的是看源码和框架、开源文档。不像现在,有那么多博客,或者像我写的这种中文资料,那个时候资料多数还是英文的。我在我第一本书也有提到,前两年过年回家我都是在家看源码,虽然确实是看不懂,但看不懂又不能不看啊,就逼自己看呗。

其实,也不能说积蓄很久,那个时候真的很忙更确切的说是盲目的忙了很久。然后,回过头才发现,可能不能在继续这么观望,所以才到行业中来。当初,我也没想给大家讲什么,我也什么都不懂。更希望是大家给我讲,所以我才裸辞到行业当中来,与各种各样的人做交流,就是这个样子。

2. 当你把问题定位出来之后,还是提交给开发修改吗

基本别的公司流程我也都了解,修复问题肯定是开发这面来修复这是毫无疑问的,我们不要把责任或者说工种混淆了,这点是毋庸置疑。但是,对于测试来说,定位问题肯定应该更加仔细。或者当开发也不知道如何修复问题的时候,我们尽量给出修复的建议。

我举一个例子来说,你说专项这方面,比如算法来说开发更加擅长。但是你说静态扫描和动态扫描这些东西或者说我们可能有些内存泄漏,测试在这面可以给出更多的建议。一旦你测试做多了以后,你自己其实知道一些通用的common错误就那么几类。

   

3. 请问老师,一个工作两年的人应该有什么样的技能才算跟自己的工作年限匹配?

工作两年的人,其实我觉得是这样子的,你工作两年如果按照我们这个规定去面试。首先一点就说你对于现在比较流行的框架你都要有了解,并且你得会用,这是个硬性技能,然后从软性技能的角度来讲,你应该对整个行业包括你测试的产品很熟悉,我举个例子,假设你测试优酷或者土豆中视频的app,那么我们会让你去说明一下就说你对这个产品到底是怎么看的,那么你需要达到那个高度是什么?你看这产品不能尽看它的前端,也不能只看它的后端,你得对于它的前端这边的一些交互,包括功能所对应的接口,包括它每个功能之后对应那些服务端时序,等等都要有一个初步的了解。那么简单来讲,作为架构师,是能够架构或者真的做出一套架构。我觉得对于你来讲的话,不是要你去做出架构,而是你做一个测试,你得去了解你说对吧!所以说。你如果仅仅还是focus在功能,或者是业务上。那么我们会觉得你两年的这工作,不是很有高度。从而能推出你这个人潜力不大,然后就pass掉。

4. 什么叫后移动互联网。

后移动互联网的概念这样的,就说移动互联网基本上是属于智能机这一波所带来的。那么前移动互联网指的是说以前的那些互联网公司在移动互联网当中的一些作为。像你们所知道熟悉的那些公司要么是互联网转移动互联网,要么就是纯移动互联网出身,无非就这两种,而后移动互联网指的是什么,从本质上来讲本身就不是互联网的公司,比如传统行业!传统行业会从明年开始真正在移动互联崛起,那么这就是真正的后移动互联网。

5. 你之前也说过测试也需要一些代码能力,但是在外界看来测试对于编程的要求似乎不是那么的高。如果以后往全栈方向发展的话,对于编程能力的侧重点或者方向在于哪里?

我刚刚已经说了,就是说从外界看来要求不是那么高,其实很简单:外界所看到的东西第一,你看的是有局限性的。第二,本来行业就是有delay的。当你等外界反应过来,你才反应过来你就延迟滞后了。所以说外面看来不这么高是很正常的,我今天所说的就是一个未来的趋势。

那么我们再回过说编程的侧重点和方向,其实我觉得首先第一点你都有一个主语言,比如java和c!然后你得有个熟悉的脚本比如ruby、python、Go等。但是还有一点是说:方向在于哪里,并没有什么方向, 也就说你学的东西,并没有说哪个一定好, 一定不好,但是你要看你到底想往哪条路上面走。我打比方的说你如果从事android那就Java,你要是IOS就是object-c,如果将来想要做虚拟化、服务、云计算或者做大数据啊,那么可能有对应的a语音或者其他对应的语言。

所以说侧重点,并没有绝对的侧重点,真正存在于你学的语言是不是真的能给你带来价值,薪资上的、title上的或者你想要的一切,关键在这地方。

   

6. 虽然未深刻展开,但很多观点听了后真的是有振聋发聩的作用。我想问一点,看Monkey的朋友圈和履历表,感觉他非常的忙,请问他平常是如何抽出时间来做提升自己技术学习的?或者说他是如何做好时间管理的?有什么技巧没有?

Teambition,关于这个问题我这里给了一个工具,我这面主要使用这个工具来管理我自己的一些计划,包括testerhome的计划,支付宝这面的计划等很多。这个工具,我觉得是可以给你们带来一定的帮助的。

另外,我觉得关键是每天习惯的要养成。比如说我,早上八点到十点,刷朋友圈是最多的。晚上十一点到十二点刷朋友圈是最多的,但是我刷的时候我会把我想看的东西先收藏起来包括我公司里面看的好东西,到晚上十点或者十二点再慢慢把今天的东西过一遍。也就是你自己去形成你自己的一套习惯,但是关键你的有这个东西沉淀下来。你可以定期的半个月一周给自己定一些东西,去学习消化掉,而不是说看完就结束了。

7. 持续集成虽然一直在提,但是在一般公司却最不起来,请问老师有什么建议吗?

其实集成这个东西或者测试也好质量也好现场监控也好,包括你将来会做很多别的事情,做这些东西其实不是一个测试或者说一个测试team能做好的。绝对是需要一个产品经理、项目经理或者说testteam一起合作,更重要的是你的老板得要从下往下push的能力。我的建议就是,你要尽可能的从上往下push把各个team结合起来。你也可能觉得你做不到,这个无所谓,你要往这个方向去努力。如果说你推动不了,你可以让别人去推动。如果别人也推动不了,这个事就不要去做。可能说你做不起来是吧,可千万别给自己挫败感。因为这个不是一个的问题或者一个team问题,要正确认识到这一点。

   

8. 现在一家创业小公司,测试仅2个,平时基本只做功能测试,自动化 测试是否有必要开展,该如何开展?

我以前和你一样在三家创业公司待过,你测试仅两个,比我好我只有一个。自动化测试有没有必要展开,我不能给你明确回答。这个要看你公司现状、公司产品现状、公司开发现状,等等上下文我并不知道。但是,我可以和你讲如何展开,如何展开并不是说的是公司展开而是你如何去学。

首先,你一定要去学。第二点,一定要去把每个自动化框架每个simple跑通,在本机全部做一次demo跑起来,自己做一些小修改。这些事情都是要去做的,不要说我现在只用一个robotium、uiautomator就结束了。这样的话,你只能看到一个点,不能看到所有的点。然后只能问每个框架有什么区别,你只能被别人左右,所以自己很多东西都要走一遍。不管你所在公司有没有展开,你自己都要去学习。 

猜你喜欢

转载自blog.csdn.net/QingLang0213/article/details/50013987