http://kongqingyun123.blog.163.com/blog/static/6377283520126294029822/
自從上次對Robotium和nativedriver這兩個工具做對比已經過去將近一年的時間了(上次內容見http://kongqingyun123.blog.163.com/blog/static/637728352011614111010446/),一年時間對于一個開源的工具來說變化肯定是很多的。同時很多當初對于工具的看法也會有些不同,當初選擇了NativeDriver來做一些手機上的自動化測試,但是在后續的使用過程中也發現了一些問題,現在主要是在用Robotium來寫一些測試用例。
Robotium:
http://code.google.com/p/robotium/
當前已經發布了最新的3.3版本,robotium的社區還是挺活躍的,會有很多人提問題,以及幫助你解決問題。可以加入groups,http://groups.google.com/group/robotium-developers?
先簡單說一下后面使用robotium的原因。
1、支持滑動操作,測試項目中很多地方只能通過滑動屏幕來實現,robotium支持,但是nativedriver不支持
2、robotium支持獲取toast的,nativedriver不支持
3、關于robotium需要為應用重簽名的問題,這個其實問題不大,實現的話也比較簡單,完全可以實現自動化來實現,windows下自動化為應用重簽名的bat腳本可以參考http://kongqingyun123.blog.163.com/blog/static/63772835201243143159515/
4、關于之前說的api中很多都使用index索引的問題,其實robotium也提供了通過R.java文件中的id來獲取元素,不過前提是你能夠獲取到被測應用的R.java文件,我們測試自己公司的應用,可以方便的讓開打打包時也保留一份和apk匹配的R.java文件即可
通過View button = solo.getView(R.id.button) ;? solo.clickOnView(button ); 來實現,只要開發不更改空間id的名稱,每次只需要使用最新的R.java文件覆蓋即可,對于后續的測試用例維護會方便一些。
當然每個工具你在使用的過程中也會發現一些不好用的地方:
關于下面的具體實習方式,后續寫一篇文章介紹一些我們基于Robotium的用例,外圍在PC端寫了一套框架來解決這些問題,同時可以通過簡單的配置來實現自動化的運行不同版本模擬器上的自動測試。
關于PC端的框架可以實現原理可以參考:http://kongqingyun123.blog.163.com/blog/static/63772835201262534056673/
1、robotium在運行測試用例的時候有時候會crash,直接導致測試停止,然后你的測試結果也收集不到了。
關于這個問題個人的解決方案是運行測試用例的時候通過cmd發送adb shell am instrument 命令, 每次只執行一個測試用例,然后通過獲取cmd的返回值來判斷是否是crash了,如果crash的話則重跑用例
2、測試用例運行不穩定的問題
有時候你用例寫完了沒有問題,但是在模擬器上跑的時候還是偶爾的會出現運行失敗,當前的解決方案也是按照測試結果返回值獲取檢測到失敗則繼續重跑,當前定義的重跑三次。(這里使用了一個開源的android-junit-report工具)
3、不支持WebView控件。(Robotium不支持,Calabash支持)
NativeDriver:
http://code.google.com/p/nativedriver/
具體查看這里http://kongqingyun123.blog.163.com/blog/static/637728352011614111010446/
Nativedriver是google日本的團隊開發的,但是團隊人員已經去做其它項目,所以NativeDriver基本上已經是不更新了,社區的活躍度也已經是很低。nativedriver存在的一些bug估計也都還沒有修復掉。
Calabash:
https://github.com/calabash
calabash-android是Robotium+cucumber實現的,最底層還是用的robotium,加入了對于WebView的支持
這個工具剛開源不久,社區還是挺活躍的,有問題提問的話開源的作者也會很積極的幫助你解決。
該工具的具體效果如果還沒實踐過,不過支持android和IOS,以及使用cucumber的方式來編寫測試用例還是會比較感興趣,另外還支持webview控件