致網友Wonderfei的一封信(如何選擇自動化架構的幾點拙見),wonderfei拙見

來源:互聯網
上載者:User

致網友Wonderfei的一封信(如何選擇自動化架構的幾點拙見),wonderfei拙見

註:本來這封信要發給Wonerfei網友的,但是因為每次只能發200字,所以乾脆貼到部落格上,叫Wonderfei同學到這上面來看,也算是我自己的一個臨時總結吧。同時也希望大家給予Wonderfei相應的協助,畢竟我自己的觀點不一定正確和完整。

Hi Wonderfei,

你好,由於我是部落格新手,所以沒有留意到你給我發的私信,不好意思。


首先由於我自己也是個新手,也是在學習各種架構然後給公司項目選定相應自動化架構,研究移動自動化測試架構也就近段時間而已,所以我只能從我自己今天為止的認知角度給各個架構抒發我自己的拙見,你看是否能從中接納一二吧(對於我自己的話還需要再花一段時間去學習各個架構才能確定哪個/些是適合我們項目的了,也許到時我會寫個正式的總結)。

根據你的要求,應該不會考慮MonkeyRunner和Robotium,但我還是想跟你說下其實Robotium還是挺不錯的,如果你沒有考慮跨進程調用其他APP的話。至於MonkeyRunner我就不大推薦了,你可以看下我對金陽光老師的一個評論的回複《MonkenRunner通過HierarchyViewer定位控制項的方法和建議》(文章最後我乾脆也貼出來了)。至於Robotium,你對比下本人部落格裡面各個架構編寫的Note的測試樣本就可以看出來Robotium相對其他架構會簡介很多,況且發展的比UIAutomator和Appium長久很多,所以也應該會更成熟,和Eclipse整合調試起來也很方便。比起後兩者如果有不足的話我覺得就以下幾點吧:

  • 1. 所有的操作抽象到一個Solo類裡面,缺乏物件導向的編程思想,有時會讓人不適應。如果你熟悉C語言等面向過程的語言思想的話應該沒有問題。
  • 2. 擷取控制項的方法比較缺乏,大概就幾種:通過Text,ID, ClassName,Index。沒有後兩者的多種多樣
  • 3. 跨進程:因為底層使用Instrument架構,測試包和被測應用程式套件打包在一起作為一個進程運行而線程間通過instrumentaiton進行通訊,導致了逃不出這個進程設沙箱(sandbox)
  • 4. 做不了類比鍵盤的測試(但同時這個也是Robotium非常巨大的優點,因為不像後兩者那樣需要調用鍵盤導致輸入的各種各樣的問題),因為Robotium輸入讀出其實是直接對控制項的text屬性進行操作沒有通過鍵盤驅動的,你如果做過UI編程應該就明白我的意思了,因為記住你的測試代碼和目標應用是打包在同一個進程中的,同一個進程中想訪問另外一個線程的某個變數,運用相應的IPC(Interprocess Communication)機制當然是沒有問題的了。

然後到了你問的主題UIAutomator和Appium的對比,我個人是這樣看的:
  • 1. UIAutomator是親爹(google)生的,所以可以保證後續的開發維護力量,除非google倒閉(這裡我有點不懂的是為什麼google對Monkeyrunner的態度這麼讓人摸不著頭腦,具體請看以上我說的對MonkeyRunner的評論)
  • 2. Appium雖然不是親爹生的,但是乾爹實力雄厚把它武裝的無所不能(android,ios,firefox,browser通殺),單單以android來說,底層用得還是UIAutomator,所以只要它能及時跟上UIAutomator的更新,功能上面我不是很擔心。
  • 3. 但是也這是Appium的這種架構:UIautomator/seledroid<->Appium Server<->Selenium/AppiumDriver<->Test Case (《Appium架構架構圖整理》),導致架構有點複雜,當問題出現的時候調試起來比較難以定位,不知道哪個模組出錯了。但是說道調試,總比UIAutomator好,起碼Appium可以直接整合到eclipse上面進行debug,UiAutomator卻每次都要push到目標機器然後再去執行,怎麼調試呢?到現在為止我知道的只能原始的print了。
  • 4. 向下相容問題:Appium可以通過底層UIAutomator/Selendroid(不記得是不是這名字了)通殺;UIAutomator只能在API Level 17(包含)以上使用
  • 5.語言支援:appium基本通殺,UIAutomator用java足矣
  • 6.跨平台:如你所說的只是android兩者都沒有問題,如果往後需要擴充到ios,那麼建議appium
  • 7.bug數量:UIAutomator有的問題Appium都會有,UIAutomator沒有的問題Appium也有可能有^_^(不過我還是很看好Appium的)
  • 8. 輸入問題,都有bug,具體請查看我相應blog,特別是中文輸入,這就是為什麼我剛才特意提出Robotum的原因之一
  • 9. WebView支援:UIAutomator據說今年年初已經開始支援,個人沒有這方面要求所以沒研究;Appium的架構用的Selenium本身就是PC上最流行的開源Web測試架構,所以必然支援了。注意這你你要有點android編程知識了,WebView指的不僅是WebView控制項還包含如用sencha+phonegap把webview封裝成一個跨平台app的情況了,具體如果不清楚請google。

其他區別我現在就沒有想到了,希望能協助到你,從我自己的角度來看,我覺得UIAutomator繼續往前發展是必然的了,但是它不可能最終支援ios。至於Appium我同樣有很大的信心它會繼續往好的方向發展,且考慮到它的跨平台支援,基於node.js(現在非常流行哦),相容性等,我如果是你的話我會考慮用Appium的(拋開Robotium不說,如果你又要考慮的話就需要你根據我之前說的再總結下了^_^)。

我覺得這個可以類比之前的微軟和Borland的關係,API是Windows,但是IDE是Borland的,各專所長了。可惜(或者慶幸)後來微軟發力一下把Borland打得滿地找牙一蹶不振,不過這是題外話了,略過......

對了,我有可能會對這封郵件整理下發到部落格了,也希望其他網友能評點一二給你出主意。今晚本來想看下easy_monkey的知識了,給你寫這個email變成臨時性總結了。^_^

給金陽光老師評論的回複如下(關於MonkeyRunner的個人觀點)

-----------------------------------------------------------------------------------------------------------------

回複haorenmin2008:首先膜拜下,金老師大駕光臨蓬蓽生輝啊!
對於後者,確實如此,UIAutomator需要API Level17(包含)以上。
對於前者,因為還沒有MonkeyRunner的項目經驗,所以是否很強大我就不敢妄加評論了,但是在我近來的tryout過程中,鄙人有以下的一些不成熟的認知:

  • 1. 感覺功能不是很穩定,之前嘗試一個MonkeyDevice的getProperty方法,竟然有時成功有時失敗。
  • 2. 效能不好,特別是當我們要用到hierarchyviewer的功能的時候很明顯。
  • 3. 只能用MonkeyImage的sameAs做截屏的對比,雖然加上hierarchyviewer後可以用它的getText,但還是很有限。
  • 4. 控制項定位方面主要是座標點和HierarchyViewer提供的根據ID。前這兒在UI布局稍微有調整位置的話就需要跟著變動,沒有像其他控制項類架構那樣做高層抽象除非換控制項不然都不需要怎麼變動;後者的話很多控制項是沒有id或者是有多個控制項id相同的。
  • 5. 可調試性也不強(起碼我摸索了這幾天沒有發現一個很好的調試方法,比如IDE Ecilpse等的整合調試方法)
  • 6. HierarchyViewer的穩定性也讓我擔憂,碰到過幾次取控制項資訊的時候報exception的。
  • 7. 資料稀缺,不僅百度,google也一樣
  • 8. Google支援讓人覺得摸不著頭腦,sdk給出的API和官方提供的API竟然不一致,以MonkeyDevice為例子,而sdk多出來的API竟然還不能用,google出來的資訊不超過10個page,還要很多都是重複的石沉大海的網友報的問題。
  • 9. 再一個的我真心搞不懂為什麼本身java寫的庫非要搞個jython來調用,首先我不說效能損耗(這點肯定是有的,native庫當然用native語言調用效率最好嘛),我想在eclipse上對以下的"device."做自動補全是做不到的“device = MonkeyRunner.waitForConnection()\n device.",而只有直接調用個建構函式執行個體化的device = MonkeyDevice(xxx)才能做到,這個我不相信是我配置的問題,換了個jython標準編譯器以調用標準庫問題同樣存在。
當然它也有它的優點了,不詳談

Best Regards
Kevin Zhu
-------------------------------------------------------------------------------------------------------------------
wonderfei : 你好,我看到你寫了很多Android的自動化測試相關的文章,我最近準備在項目中實施Android的UI自動化測試,主要用來做迴歸測試,當前比較流行的robotium和appium,你認為哪一個更推薦使用以及未來使用?




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.