51Testing專訪陳曄:暢談移動互聯網測試
陳曄:說到這個我還是很慚愧的,行業中很多朋友都和我說,要多陪陪女兒,要多陪陪家里,這點上面我的確做的不夠。不過關注我微信的都知道,我還兼職美食家,每天都在吃不同的東西,我還是有那么一點點追求的。大家可以去看我自己寫的一年的行程,我幾乎每周雙休日都排滿,不是去大會演講就是去學校給學生公益的做技術指導。最忙的莫過于我開始寫書的時候也是我女兒剛出生的那個時間點,在這個過程中其實evernote給了我很大的幫助,我會把每天的事情列出來,然后每天逐個擊破。不過也和我小時習慣晚睡有吧,所以幾乎那個時候我都是每天2點左右睡的。因為真的有很多事情是晚上做效率比較高。
51Testing: 作為國內Android與iOS最早的工程師之一,您有什么成功的秘訣和我們分享嗎?
陳曄:其實要說從我從公司走向行業到現在其實也就2年的時間,并不是很長。當然成功肯定不敢當,現在只是剛開始。至于秘訣的話。我個人總結出來以下幾條。
1.考慮問題盡量目光放長遠,不要自己局限自己
很多人在公司,忙業務忙技術,但是看問題的角度并沒有跳出公司去看。往往最后都是盲人摸象,無法看到一個總體,從而自己在限制自己。
2.定制短期的計劃
可以有長期的目標,但是計劃肯定是短期的。一方面長期的話很多人無法堅持下去。另外一方面就是,在我整個經歷中我已經很強烈的感受到一點,"計劃趕不上變化"是有道理的。我們需要的就是很強的學習能力,然后去以不變應萬變。
3.踏實點
不要每天去聊qq,聊薪資,去聊點虛的,更不要想著出名賺外快。無論作為一個測試,你將來轉作什么崗位,只要你還是做IT的,那么你還是需要有技術基礎,否則都是紙上談兵罷了。現在行業的發展越來越快,對于技術的要求也越來越高。所以不要去問一些大而全的問題,先好好學習技術基礎才是王道。
陳曄:首先第一點,不懂代碼,不去看源碼的還是不要來移動互聯網做測試了,很快就會被淘汰了。
其實從現在來看,可能很多人會覺得大數據、智能家居等會是未來的方向。但我覺得就測試而言,無論方向什么,我們還是要抓住技術的基礎,也許Android和iOS哪天都會倒,也許將來又是新的語言和技術,但作為一個移動互聯網的測試,我們必須用最快的速度去接收和學習,為什么我一直強調學習能力很重要,就是這個道理。如果作為移動互聯網測試的你,每天還是渾渾噩噩,只會用工具,覺得不看代碼就能夠寫測試用例,那么我勸你要么快點努力學習,要么就快點轉行業吧,不用多久肯定淘汰。
隨著發展,測試人員需要提升自己的技術,讓自己八面玲瓏。我個人覺得移動互聯網測試未來的戰斗就是和數據以及新事物的戰斗。任何測試都需要用數據來說,性能、壓力、用戶體驗等,而如何獲取更準確的、顆粒度更細的數據來反映問題也是對測試的一種挑戰。而隨著移動互聯網飛速的發展,每天都會有新的技術、新的語言出現,我們隨時要用120%的熱情和專注去接收這一切。
最后我想說兩點。第一點,請客觀的認清自己的能力,不要浪費時間在聊天上,請花時間在學習上面,不要覺得好像測試的要求不應該那么高。不是國內要求高,而是大部分測試都在非正常的要求下工作,現在一旦要求回歸正軌之后就出現各種抱怨,抱怨不能改變任何事情,請記住。第二點,站在盡量高的高度去看問題,然后給自己做規劃吧。不要回頭看,自己花了10年一直在重復工作。
51Testing:在您從事移動互聯網測試的工作過程中,是否遇到過什么困難?要如何解決?
陳曄:工作過程中遇到的最大的困難莫過于要接觸很多自己不懂的東西。移動互聯網現在發展非常快,開發技術快,測試技術更快。在學習一個新技術的時候,我建議大家盡量先去看官方網站,畢竟官方網站的消息是最新的,不要去到qq上去毫無目的的去問。目前國內上google不是很方便,但我依然很推薦大家遇見問題,自主的能夠多上google、stackoverflow和github等網站看看。這樣慢慢的培養自己自主解決問題的能力,自然而然學習能力就會有提升。
51Testing:如果要做好關于APP的自動化測試,需要注意些什么呢?
陳曄:APP的自動化我就一句話,一定要分層,而且要分的細。不要把所有的風險都壓在UI自動化或者手工測試上看,或者說壓在打好包的APP上面。分層要講就非常多了。從界面到代碼,可能還涉及到一些軟硬件結合。從前端的功能到后端的接口。界面上細分我們還可以看到natvie的測試和webview的測試方式很不同,從接口層面來講,我們用python的requests或者java的httpclient直接測試接口,和我們去調用開發的接口去做測試又是兩個層面。所以總而言之,一定要分層,將風險平均化,才能夠在快速迭代的移動互聯網的項目各個階段保證好質量。
51Testing: 您認為APP測試區別與其他應用測試需要特別關注的內容有哪些?
陳曄: APP的測試目前相對傳統互聯網的測試需要特別關注的點我覺得有如下一些:
1. 平臺特性
Android、iOS,WP等平臺各自有各自的特性,不僅僅是表面大家知道的分辨率,還有就是應用每個操作在系統內部有什么變化,這些我們都需要去了解
2. 網絡變化
移動的網絡變化很大,弱網絡情況下我們的應用的邏輯是否會有問題這個很重要。昨天的工作中我還發現我們自己的應用在弱網絡下js重復加載的問題。
3. 碎片化
這個就是我第一點中提到的特性,不過還是需要單獨拿出來列一下。
4. 移動無線的安全
移動無線的安全隨著發展,越來越變的重要。對于APP而言,除了網絡層面的安全以外,還有很多和自身特性有關的安全,比如Activity啟動參數注入,contentprovider的數據共享,iOS遠程ssh登陸等。這些對測試而言挑戰也很大
5. 移動無線的性能
很多人在最初很容易就覺得移動無線的性能和服務器的并發是一個東西,很多人都在問一個應用很多人在用的時候怎么測試性能,這個其實還是服務器上的性能問題。而這里我要說的是APP本身的性能問題。其關注點很多,比如電量,流量等,深入的話還有內存泄漏,界面渲染,h5和自定義控件性能等
6. 自動化和持續集成
雖然以前測試也都是有自動化和持續集成。但是為什么我要列在這里呢。原因在于移動互聯網的測試中自動化和持續集成要求很高,沒有持續集成的項目根本在移動互聯網是沒有辦法很好的運作起來的。而移動互聯網目前涉及到的語言和技術又比較雜,故而對測試又是一個很大的挑戰。
51Testing: 在移動互聯網測試的過程中,往往會用到很多測試工具,目前安卓端和IOS端比較普遍使用的自動化工具是什么? 可以給我們推薦點比較實用的小工具嗎?
陳曄: 這個問題,工具實在太多太多了,已經列舉不過來了。比較實用的小工具的話,我倒是可以推薦幾個:
抓包:fiddler,charles,burpsuite
Android自動化框架:APPium,Robotium,Calabash
iOS:APPium,Calabash,KIF,GHUnit,instruments
51Testing: 很多手機測試人員都會比較困惑,手機APP怎么去做壓力測試比較好?您能說一下您的看法嗎?
陳曄: 手機APP的壓力測試,其實壓力測試在這個過程中我覺得分成兩部分。一個是實用壓力的方式去測試APP的穩定性,這個在Android的monkey和iOS中使用js編寫monkey都可以進行ANR和NPE的測試。另外一方面就是和場景緊緊相關的壓力測試,這種壓力測試就需要自動化去支持。往往對應用施加壓力之后,查看應用的使用流暢度、逼近系統分配內存峰值時候的情況,包括控件是否能夠正常渲染等。
51Testing:對于APP測試,您有什么獨到的區別于教科書的見解?
陳曄: 我不敢說區別于教科書,但我能說下區別于很多人YY中的想法的見解。移動APP的測試現在根本不存在什么全自動化,也不存在非常好的錄制回放的工具。要測試好移動APP需要扎實的技術基礎,任何抱著"有什么工具,有什么框架能夠做自動化,做安全,做性能,做壓力測試"想法的都是流氓。在移動APP測試目前更多的是需要用開源的工具和框架,然后結合自己團隊的情況以及自己對于被測產品的技術和業務理解去二次開發,最后投入到項目團隊和持續集成中去,這是現在很流行的做法,也是我個人覺得最好的做法。也許將來會有好的平臺,好的工具,但是多學點來豐富自己也不是什么壞事。
51Testing: 聽說您最近也有負責公司測試人員的招募工作,應該對面試方面應該也有一定的經驗了,對于正在找工作的測試新人,您有什么面試經驗要和他們分享嗎?
陳曄: 最近是一直在招聘,基本上這段時間沒有停過。其實我覺得移動互聯網的測試面試與其他可能還是有點差別的,但是注意點還是一樣的。
1. 簡歷要真實
不要動不動就精通,動不動就各種工具和框架或者語言都往簡歷上寫,簡歷上寫的太多未必是好事兒。我建議還是把真實的情況寫上去比較好。所以不要老抱怨面試官問一些不切實際的問題,先看看自己簡歷寫的如何。
2. 技術要扎實
不要太浮躁,對一些技術和業務不能只知其一,覺得了解了一些就很了不起。目前移動互聯網僅僅這樣肯定是不行的。
3. 了解清楚需求以及知道自己要什么
不要只看到公司名字就覺得高大上,僅僅知道公司是不夠的,好好確認自己要去的部門、項目、團隊。大公司也有爛部門,小公司也有好項目和好團隊。這些都不是固定的,而是需要自己去了解的。
51Testing: 作為一名有豐富經驗的測試員,您對想從事手機測試新人有哪些建議?怎么樣做可以讓新手做的更好,更迅速的成長為這個領域的高手?
陳曄: 1. 不要道聽途說。比如什么公司好啦,什么工資高了,什么行業有前景等。別人說終究就是別人說的,要是真的想了解,那么盡量通過自己去體驗去感受去了解,要做到不要聽風就是雨。
2. 好好學習code基礎。在移動互聯網做測試,不寫code可以,但是要懂,要會。否則對于被測應用的實現都不了解,還談什么測試呢?我們有一句話"先學開發,后學測試"
3. 鍛煉自己的學習能力。包括看原生文檔,學習開源工具和代碼。不要看到英文就退縮,這樣你是無法在移動互聯網的路上走出屬于自己的路的。
以上這些就是一些前提,如果這些前提做不到,那么就不用談后面或者其他的事情了。接著我們談下要怎么做。比如你要開始做android和iOS的應用測試了,那么基本上你要根據如下的順序。
1). 先看官方文檔中的系統介紹,對于平臺有一個全面的了解
2). 仔細的查看文檔中和測試有關的工具和框架,并自己實踐(文檔理論上是非常詳細的)
3). 學習相關平臺的開發技術
4). 仔細了解自己產品項目的需求
5). 仔細審視自己產品的代碼(不要說看不到代碼什么的,不看代碼等于瞎子在測試)
6). 好好看看一些流行框架的原理和實現
7). 用分層的思想好好設計測試策略
簡單來講這樣的路線是最好的,目前這些是移動互聯網測試的基礎要求,代碼能力,編寫腳本能力,靜態分析能力等。我希望大家了解一點,如果你們覺得這些要求很高,那是因為大部分人在國內長期低要求或者被叫獸忽悠已經習慣了,當拿出正常的要求的時候,很多人就會覺得很高。事實是這只是基礎要求。
51Testing: 由于時間關系,本次訪談正式結束,非常感謝陳曄老師抽出寶貴時間參加我們的訪談和對小編工作的支持,讓小編對移動互聯網測試領域了解了不少,相信這次的內容也將會給測試員帶來頗多的收益。希望以后能有更多的機會,能讓您分享測試心得!
posted on 2014-12-03 13:46 順其自然EVO 閱讀(326) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄