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

weixin_33782386發表於2015-02-01

   為什麼我定位移動無線網際網路的測試,還是應用的測試呢,因為我個人就是做應用測試的,所以我係統測試也做過,不過不深入,所以我就不想去討論自己不熟悉的領域了。其實在很久前我畫過一張技能樹的圖,也許比較粗糙,但是也還是有價值的。blog連結見:http://blog.sina.com.cn/s/blog_7022adbf0101b31w.html

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

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

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

  比如你要學習移動網際網路的無線應用測試了,比如你要開始學習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也罷將這些做成自動化工具,那麼也是有理有據。否則請問你真的會做自動化測試嗎?最後記得一定要結合業務,那麼勢必要詳細的瞭解業務,請看上面。可詳見:https://github.com/monkeytest15/AndroidPerformanceTest_Python

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

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

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

相關文章