天天看點

如何做好移動網際網路應用測試

首先很高興的是移動測試會第八期在ucloud的贊助下非常非常圓滿的成功了。人真的越來越多,妹子也越來越漂亮了。同時感謝小a和永達以及小馬試駕創業公司的支援。移動測試會雖然最早是我個人創立的,但是一個人的能力畢竟有限,是以這第八期說明了團結就是力量:),也希望之後大家更多的來支援我們。

  11月8号支付寶上海要開始一天的專場招聘,是以最近我面試也非常的頻繁。之前我寫過一篇吐槽文章——《面試要求真的不高》。今天的活動我也碰見了一些朋友來咨詢我,是以在這裡我想小小的談論下如何進行移動無線應用的測試學習。

  為什麼我定位移動無線網際網路的測試,還是應用的測試呢,因為我個人就是做應用測試的,是以我系統測試也做過,不過不深入,是以我就不想去讨論自己不熟悉的領域了。其實在很久前我畫過一張技能樹的圖,也許比較粗糙,但是也還是有價值的。

  在之前的文章中也已經提到過了行業中的幾類人,那麼我們應該怎麼如何客觀的學習呢?請不要覺得自己已經工作很多時間就不願意往下看了,反正看了你也不少塊肉。請跟着以下的文字慢慢閱讀,問問自己達到幾點,不要自欺欺人就好。

  現在不會做測試的拼命到處問怎麼做測試,現在在手動測試的拼命問怎麼做自動化,現在做自動化的拼命問怎麼寫測試架構,現在寫測試架構的拼命讓團隊使用,現在寫架構并且讓團隊使用的拼命問除了維護架構還有什麼别的可以做,現在沒有事情做的拼命在問到底測試做什麼呢?

  不知道每天會有多少人,每秒鐘會有多少人會去問怎麼做自動化,多少人會去問自己發展方向是什麼,學習方向又是什麼。我很明确的說,你沒有方向原因在于你的無知,人最大的敵人就是恐懼和無知,兩者相輔相成,最終就是一事無成。你問那麼多有什麼用,踏踏實實的先開始學有什麼不好。

  比如你要學習移動網際網路的無線應用測試了,比如你要開始學習android的應用測試了。那麼首先第一步你先看google 提供的文檔吧,sdk文檔不說詳細,先浏覽一遍吧。然後既然你是一個做測試的,我們就說正常的道路,你至少先将文檔中與test這個關鍵字相關的工具也好,架構也好看一下吧。不懂的可以随時google或者百度來幫助我們閱讀完sdk的docs。什麼?你從來不看官方文檔?android是誰生的?你連親爹媽都不看,那麼你看啥?看後媽?然後抱怨怎麼看不懂?你怪誰?

  ok,假設你老老實實的看完了,然後你說你了解你們産品的業務了,你就可以做應用的功能測試了嗎?非也,試問大部分測試真的覺得自己夠資格去做功能測試嗎?覺得功能測試很簡單嗎?問起來很多人都很自信滿滿的說自己非常了解業務。ok,試問,你的app中每個功能對應哪些接口你知道嗎?這些接口會有什麼核心參數知道嗎?試問,你的産品的核心代碼你有閱讀過嗎?你的産品前端app對應的背景服務的代碼你有閱讀過嗎?你說你測試的産品有視訊是吧,視訊格式有哪些?常見分辨率有哪幾種?常見碼流有哪些?如果這些你都不知道并不代表你不回做功能測試或者業務測試,而是你根本無法深層次的去設計測試用例,那麼請問你這算會功能測試了嗎?還有的同學和我說使用者體驗測試,ok,繼續問,請問你看過google提供的android的ui design guide嗎?也許你沒有看過,也許你根本不知道,不管是哪條,那麼還談什麼使用者體驗呢?簡單來講,我們做一個測試很簡單,要深入做很困難,就如同今天移動測試會上茉莉說的wifi測試,也許讓也許人去測試wifi測試也會測試,但是深入呢?我們做測試要踏踏實實,不要浮躁,浮躁隻會讓你繼續sb,但是不會阻止别人nb。

  ok,假設功能測試的點你都清楚了,然後你說你技術多多少少知道點,然後你就可以去做應用的自動化測試了嗎?非也。我們一個一個來看。大部分先來做的是ui automation,ok,appium我在這邊就不說了,也許2w字都吐槽吐不完,我就說robotium。那麼你第一步是先看下robotium官方網站的sample和wiki,不要到處問例子或者直接上來就導入jar包去做。了解完畢之後,那麼可以繼續深入的去了解junit 和instrumentation,了解這兩者能夠讓你對robotium更了解并且在寫用例的時候更得心應手。然後你會寫了sample,能夠跑通就算ok了麼?非也,那麼接着碰見的問題就是如何管理suite,如何管理資料,比如testng,如何做參數配置,比如config.xml,如何進行用例的架構的維護,使用op等。接着如何将其內建到持續內建中?如果你仔細看過instrumentationtestrunner的官方文檔你就不會問了。接着除了native的,也許會碰見自定義控件的自動化,最後還有webview和h5的自動化等。那麼這些前提是你要先去了解這個自定義控件以及webview到底是什麼吧,而不是直接拿robotium自定義的api直接食用,然後抱怨說,啊呀這個怎麼跑不通。最後記得一定要結合業務去做設計和斷言。

  接着很多人還會覺得很牛逼的去找到bdd的架構,gem安裝,套用cucumber和robotium。但是又會發現各種問題,在做這個事情之前繼續試問,ruby gem管理你去學習了麼?cucumber是啥知道了麼?bdd架構源碼結構有看過嗎?step怎麼封裝知道嗎?官方的github的wiki和issue有過一遍嗎?都沒有?那麼你還問啥,先去看再做讨論。

  為什麼我那麼強調學習能力和态度,因為移動網際網路的測試已經不是一個工具或者平台能夠制霸的時代了。移動網際網路現在更多的是注重實用開源架構,注重靈活的使用工具和代碼來提升自己的效率,而不是拿來一個工具學會怎麼用,然後就給你一個結果告訴你缺陷在什麼地方。故而不是再去想什麼“怎麼做性能自動化測試”這種問題。無論你用360這種app也好,或者别的工具也罷,首先你拿到的資料并非是你公司團隊想要的,其次請問這個資料你知道是怎麼擷取的嗎?這個工具告訴你,cpu,記憶體,電量,流量,gpu繪制消耗,或者crash資訊你就信啊?那麼請問要你有啥用?你說你連資料怎麼來的如果都不知道這個資訊你敢用來作為測試報告嗎?我們至少得自己去學習一下怎麼擷取這些資料吧,然後你編寫service也好,使用shell也罷将這些做成自動化工具,那麼也是有理有據。否則請問你真的會做自動化測試嗎?最後記得一定要結合業務,那麼勢必要詳細的了解業務,請看上面。

  接着來說安全測試也是一樣。不要去想“有什麼工具能夠做安全測試啊?”。好了,這個問題我就不展開讨論了額,否則很多人肯定會覺得我在鄙視他們的智商。安全的測試和大部分人知道的測試根本就是兩個領域,不要妄想你連上面幾點都不知道的情況下就去做安全測試,真的不是我看不起你們。

  其實我們需要想象我們掌握的知識點是一個一個積木,而現在你先去看哪些積木你還沒有,你先去獲得。就比如java都不怎麼會,然後就說自己要去做自動化,android都不了解就說要做自動化。沒有太大必要。積木一個一個去搭,然後方向自然而然的就有了。目前學習移動無線的應用測試沒有什麼一定的路,每個人所在公司不同,所處業務不同,不要去問别人,最重要的是自己靜下心來,記住,是靜下心來問自己,自己真的不懂,如果自己是什麼都不懂,那麼就踏踏實實的從語言的學習,android本身的文檔,工具等一個一個去學,不要浮躁。隻要踏實了,不會沒有方向,方向永遠在你的心中。

  最後想強調一點的是,請眼光放長遠,站在更高的高度看問題,不要做了10年還在做ui自動化,而且還根本做的不深入。記住,ui隻不過是自動化中的冰山一角,你要去看的還有很多。不要局限自己,不要讓公司局限你,除非你一輩子就打算在這個公司養老了。如果你不贊同我,那麼随意,本來我就不指望所有人都點贊。

繼續閱讀