首页 > 代码库 > 陈烨大神在群里发言,忠实记录并写下自己的一些感悟

陈烨大神在群里发言,忠实记录并写下自己的一些感悟

下面是陈烨讲的一些,非测试的网友可以右上角叉叉,这些话里的错别字都是陈烨本人所写

目前移动无线的测试分这样几类

UI--》native接口--》app到server端测试--》server端接口测试--
》底层测试--》单元测试--》app性能--》安全测试--》持续集成。

但是这其中不是所有的都是自动化,更多的只是工具,作为测试的辅助

然后先说UI,UI的东西目前大家也都知道,迭代很快。UI本身实现的ROI酒很
低。然后appium,robotium,ActivityInstrumentationTestCase2,
UIAutomator,UIAutomation都是UI自动化,但是其实UI只不过是所有测试中
很小的一部分。

接着说native的接口,这层目前很多公司比较少去做。这层呢就是说类似于
Android juint test以及OCunit直接去走单元测试的方式,但是测试的用例
设计和策略是从功能和业务上出发。我举个例子。比如contact的搜索框,要
测试搜索算法,不能通过UI走,否则时间很长。那么我们可以input大数据到
算法,然后看output

这类属于native的接口测试

然后继续先说server,server的api其实很多方式可以做。大部分公司也有自
己的框架。比如说httpclient,比如说python的requests,urllib2等。那么
这层其实做的还是不错的,robotframework,testng很多很多。这层我就不多
说了

然后说下app到server端测试这个。这个的话其实主要为了让server接口测试
和app关联起来。因为server的api测试就算100%过了,app本身不一定是对的
。那么可以从junit test或者OCunit的方式去调app的RPC请求方法,关键是要
调用app本身的请求方法去做请求,然后再用app自己的方法去解析json或者
xml。这样的话我们至少能够知道app层面的请求以及解析对不对。而不是只是
自己去mock的请求


当然,这个我插一句,所以我一直强调,移动无线的测试,拿不到app或者OS
的源码,那么根本就是皮毛的测试。。=

接着说底层。其实还有中间件,比如jni,比如测试.so,比如测试sdk。那么
这些是属于app的一部分,但是大部分都是没有界面。这部分测试的话目前两
种方式。一种就是直接走单元测试的方式,一种就是测试自己根据业务写一些
mock的界面,然后通过界面去做.so,sdk等的测试。第二种用的会比较多

再插一句,任何时候要有分层的思想。比如说现在webview其实很多,那么我
们需要去分开去测试,比如oc,java怎么与js互调,然后比如界面上面是不是
有h5的界面,那么是不是还有h5的特性。然后看看是不是兼容各种webkit,然
后界面本身的js调用消耗多少,css加载消耗多少等。不能全部说放在UI一层
去测试,这种测试效率低并且也不是一种正确的测试方法

嗯。。app性能这个东西回比较麻烦,其实会涉及到OS的性能。如果我们不太
去看硬件的话。。当然碎片化这种问题。我就不去提了。关注点会有电量,流
量,GC消耗,crashes,ANR,界面启动时间,屏幕帧数,包括代码层面的cpu
消耗,os层面的cpu消耗,然后webview的加载消耗,api总消耗时间,内存泄
漏等。其实还有很多。这些目前的做法一种是通过官方提供的方式,比如
dumpsys,instrments等。还有一种就是调用os本身的方法,自己做service进
行监控

没有编程知识的话,需要尽快去补。否则根本无法跟上移动互联网以及后面智
能家居,大数据,金融等新一代互联网一波的发展

安全测试的话大方向分成两部分。其一是网络层面的,其实和app关系不大。
网络层面和传统互联网的安全一样。那么网络层面的话sql注入,xss注入,钓
鱼等。当然这些我也只是皮毛。然后app层面的话分成两种方式,一种是正向
的,比如加固和混淆,签名,包括各种api,session数据验证,加密等。一种
是逆向的,比如消息的监听,反编译,重新编译,数据篡改等

嗯。。基本上其实大家看下来喔说的这些,其实测试可以做的,可以深挖的还
有很多。。UI真的只是其中很小很小的一部分。。不要太浪费生命在UI上面。
。最终很容易失去自己的竞争力。。= =

框架是死的,你是活的。最终你的value在哪里。就在于你怎么灵活的去分层
,然后将所谓的功能业务流程拆分到各个层面去做测试,有的是手工,有的是
自动化,有的持续集成。最终整合起来完整的保证业务功能流程

如果说我说几个框架好。大家用。都很好,就能够保证业务流程。。那么体现
不出我们本身的value啊

就是面试到现在有应届生--工作15年不等的。。同样的都有做自动化的,但
是希望大家明白一点。工作时间短的时候你的自动化经验是加分的。但是工作
时间一长,比如3年以上。自动化仅仅是一个must to have的skill,basic的
skill,然后就是看你的积累多不多。经验多不多了。我碰见过很多10年的。
。还是和我说robotium,说UI。其他的不知道。怎么说团队和公司都不会要这
样的人。。大家明白其中point就好。而且移动互联网发展很快,了解的多没
有坏处

其实他在讲这些的时候我刚好被禁言了,没能参与讨论。。这里说些我想说的
吧。。

我刚接触测试也不是很久,一直停留在非常皮毛的地方,正如上面说的,UI只
是测试的很少很少的一部分,不要太浪费生命在这上面,否则很容易使自己失
去竞争力。。他的意思自然不是UI自动化不需要学习,而是说UI仅仅是一个很
简单并且在整个测试环节来说只是不太重要的一块。而现在的我,正是处在学
习UI自动化测试的阶段,并且为自己一个月来取得的一些成绩而沾沾自喜。我
相信也一定很多测试同人和我有过类似的情绪,甚至很多人就此一步不前,正
如上面说的十年经验仅仅在谈robotium,我相信一个十年经验的人年纪肯定比
26岁的monkey要大,但是面试官却是年纪小的monkey,这便是差距,不知不觉
,一点一滴产生的。

第二点,monkey说话真的非常的高屋建瓴,毕竟他的技术高度确实是现在的我
难以企及的。。上面的这些技术,说实话,除了UI自动化那一块我听过用过,
其他的真的是看的一脸茫然。在之前的日子,我一直以为测试仅仅是一些界面
性的测试,就是UI,也就是所谓的黑盒测试。然而从上面的记录看得到,测试
的水真的非常的深,你所要了解的技术广度远远不是程序员可以相比的,就如
你所了解的技术深度远远比不上程序员一样。从UI自动化的robotium(小弟不
才用了一个最简单的monkeyrunner入门),到单元测试以及持续集成,越是细
思这些,越是觉得自己的沾沾自喜是如此的可怜可笑。如monkey所说,如果你
不了解编程,迟早会被时代的洪流淘汰。所谓逆水行舟,不进则退,对这句话
的理解又加深了一点。并且我在这里也对我们测试领域的很多书籍表示非常的
鄙视,书中仅仅是介绍了一些测试的规范化流程,黑盒白盒概念等对实际测试
没有任何帮助的东西,而一些真正对测试人员会产生很大影响的地方却完全没
有解释。

第三点,其实我在看完monkey讲的这些东西之前,还是对自己的道路规划的比
较有自己理解的。。我最开始是很不想在测试这一行深挖下去的,而是对数据
库这块的知识比较感兴趣,测试在更多时候仅仅是当做我以后工作的过渡和跳
板而已,因为我觉得测试做到很深也仅仅是自动化和性能测试,我感觉没什么
好深挖的。所以我学Python,看ruby。但是看完monkey说的这些东西之后,我
感觉,之前的这些想法确实太傻太天真。确实,按照monkey所说,app性能测试已经算是测试中比较高深的一个阶段了,再往后走便是安全测试和持续集成(说实话,我还是不太懂什么叫持续集成),不过在这之前我对于性能测试真的没什么概念,只知道它是自动化测试学会之后的一个发展方向。现在看来,其实这个说法也不正确。UI自动化测试之后应该是接口测试,单元测试等白盒相关的测试,再之后才是性能测试。而如果你想要掌握好这些东西,要学的东西未必会比数据库方向发展所要掌握的知识少!所以我感觉这些话对我未来的规划产生了一点影响,有可能会改变我最后的决定也未可知!

说起来本来是昨天就要把这些记录下来,留待十年之后有资格去嘲笑尚还稚嫩的自己,奈何昨天公司停电,来电之后就在忙公司的事情,所以只能在今天发表了。。掐指一算这些已经是两天前发生的事情了,思之仍觉难眠不已,有自己急于找到工作匆匆入行的无知,有自己找到工作却不认真对待的晃晃!总之这几个月来,发生的一些事情总算是让自己对于未来的路看的稍微更明白一点了!可能下决定依然需要一个很长的时间,但是我想我也希望真正做出决定的时候自己不会后悔。

第一篇博客,借用了大神的一些东西,非常感谢monkey,这里推广一下自动化测试的群 75284006Android自动化测试,里面潜伏了非常多大神。并推广一下自己的QQ727665171,测试同行可以找我这个菜鸟交流,大神如果有兴趣指点一二,我更是万分感激

陈烨大神在群里发言,忠实记录并写下自己的一些感悟