51Testing專訪陳曄:暢談移動網際網路測試

晚來風急發表於2017-07-03

51Testing: 陳曄老師,您好,聽說您在工作期間創立了”移動測試會”免費公益沙龍,移動測試會,目前又和網易,cstqb,支付寶等都有深入合作,你是如何合理的分配您的時間,同時能完成這麼多事情?
  陳曄:說到這個我還是很慚愧的,行業中很多朋友都和我說,要多陪陪女兒,要多陪陪家裡,這點上面我的確做的不夠。不過關注我微信的都知道,我還兼職美食家,每天都在吃不同的東西,我還是有那麼一點點追求的。大家可以去看我自己寫的一年的行程,我幾乎每週雙休日都排滿,不是去大會演講就是去學校給學生公益的做技術指導。最忙的莫過於我開始寫書的時候也是我女兒剛出生的那個時間點,在這個過程中其實evernote給了我很大的幫助,我會把每天的事情列出來,然後每天逐個擊破。不過也和我小時習慣晚睡有吧,所以幾乎那個時候我都是每天2點左右睡的。因為真的有很多事情是晚上做效率比較高。
  51Testing: 作為國內Android與iOS最早的工程師之一,您有什麼成功的祕訣和我們分享嗎?
  陳曄:其實要說從我從公司走向行業到現在其實也就2年的時間,並不是很長。當然成功肯定不敢當,現在只是剛開始。至於祕訣的話。我個人總結出來以下幾條。
  1.考慮問題儘量目光放長遠,不要自己侷限自己
  很多人在公司,忙業務忙技術,但是看問題的角度並沒有跳出公司去看。往往最後都是盲人摸象,無法看到一個總體,從而自己在限制自己。
  2.定製短期的計劃
  可以有長期的目標,但是計劃肯定是短期的。一方面長期的話很多人無法堅持下去。另外一方面就是,在我整個經歷中我已經很強烈的感受到一點,”計劃趕不上變化”是有道理的。我們需要的就是很強的學習能力,然後去以不變應萬變。
  3.踏實點
  不要每天去聊qq,聊薪資,去聊點虛的,更不要想著出名賺外快。無論作為一個測試,你將來轉作什麼崗位,只要你還是做IT的,那麼你還是需要有技術基礎,否則都是紙上談兵罷了。現在行業的發展越來越快,對於技術的要求也越來越高。所以不要去問一些大而全的問題,先好好學習技術基礎才是王道。
  51Testing: 移動網際網路發展非常快,可以說是日新月異。作為移動網際網路測試的資深人士,您眼中目前移動網際網路的現狀是怎樣的?未來的發展趨勢又是如何?
  陳曄:首先第一點,不懂程式碼,不去看原始碼的還是不要來移動網際網路做測試了,很快就會被淘汰了。
  其實從現在來看,可能很多人會覺得大資料、智慧家居等會是未來的方向。但我覺得就測試而言,無論方向什麼,我們還是要抓住技術的基礎,也許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: 由於時間關係,本次訪談正式結束,非常感謝陳曄老師抽出寶貴時間參加我們的訪談和對小編工作的支援,讓小編對移動網際網路測試領域瞭解了不少,相信這次的內容也將會給測試員帶來頗多的收益。希望以後能有更多的機會,能讓您分享測試心得!

最新內容請見作者的GitHub頁:http://qaseven.github.io/


相關文章