【金陽光測試】Android自動化 -- 學習曆程:百度Cafe原理

來源:互聯網
上載者:User

標籤:

章節:自動化基礎篇——百度Cafe原理初步(第八講)

金陽光測試官網:

http://www.goldensunshine.cc/forum.php?mod=viewthread&tid=20&extra=page%3D2

 

主要講解內容及筆記:

一、Cafe原理

Cafe是一款自動化測試架構,解決問題:跨進程測試、快速深度測試

官網:http://baiduqa.github.io/Cafe/

Cafe provides the following benefits:

* You can develop test cases across processes by operating them via Cafe.

* You can get & set system state without changed tested application, such as open or close wifi.  ——利用android4.2的一個系統漏洞,4.2以上的版本補上了這個漏洞,該項功能應該就失效了

* You can get & set fields of tested objects even invoke functions by calling api.

* The framework can handle system running log for some non-ui check point.

* You can do application UI depth-first travel automated by invoking only one api.

* You can record hand-operations to cafe code and replay it even at another phone or others version android.

 

二、核心技術

1、跨進程——AIDL分析

AIDL(Android Interface Definition Language——安卓介面定義語言)

AIDL與其他的介面定義語言類似,它允許你定義編程介面,使用處理序間通訊(Interprocess Communication,簡稱IPC)來使得client和server之間能夠通訊。安卓系統中的進程之間不能共用記憶體,因此需要定義一些機制在不同進程間進行資料通訊。

建立AIDL服務的步驟(摘自百度,還得自己試一下,內容不理解)——————

建立AIDL服務要比建立普通的服務複雜一些,具體步驟如下:(1)在Eclipse Android工程的Java包目錄中建立一個副檔名為aidl的檔案。該檔案的文法類似於Java代碼,但會稍有不同。(2)如果aidl檔案的內容是正確的,ADT會自動產生一個Java介面檔案(*.java)。(3)建立一個服務類(Service的子類)。(4)實現由aidl檔案產生的Java介面。(5)在AndroidManifest.xml檔案中配置AIDL服務,尤其要注意的是,<action>標籤中android:name的屬性值就是用戶端要引用該服務的ID,也就是Intent類的參數值。 2、利用漏洞提升許可權 System許可權的應用情境:-設定系統時間、系統屬性-重啟adb、重啟手機 利用安卓簽名檢查漏洞(ZipFile.java)首先說明一下什麼是安卓簽名檢查漏洞?(具體見:http://www.isucc.me/390.html)其實就是zip壓縮包(apk本來就是zip壓縮包)允許統一路徑下存在多個同名檔案的特性導致的,然後程式檢查簽名呢,是會檢查最後一個,但是解壓程式,安卓系統負載檔案的時候又是走的前面的那個(只要保證新檔案在原來檔案的檔案流靠前的位置即可),危害很大,所以安卓4.2之後的系統就修複了這個漏洞 -在沒有platform簽名的情況下修改Settings.apk的代碼邏輯-普適性:安卓1.6-4.2都存在這個漏洞,可用作測試提權-zip允許同名檔案存在,第一個是修改的class.dex,第二個是原來的class.dex-利用安裝簽名校正時,同名檔案只會校正最後面那個 其他技術:架構用法-可以不啟動instrument,通過intent即可調用cafe.apk中的介面例子不懂,等自己試了回來補充 -get和set方法:擷取系統屬性,用到了java的反射機制(不懂,查!!!)-遍曆最佳化演算法:local.traveler() 三、demo示範這個要自己去跑,注意的就是:簽名要一致,否則就無法用,這個跟Robotium一致,就是說你所要測試的程式和testapk的簽名得一致,然後這個testapk才能在所測試的程式上跑 四、源碼分析1、com.baidu.cafe.remote——IRemoteArms.aidl(所有的跟安卓操作相關的都定義了擷取操作)2、com.baidu.cafe.local.traveler——AppTraveler.java(改進了monkey的遍曆演算法,避免了monkey裡面的死迴圈)3、錄製器(可以自己試一下,用自家程式試試,哈哈!!)-基於hook的錄製原理(windows上面有hook啊,而且現在很多程式會利用hook來寫驅動啥的,導致根本卸載不了)-UI遍曆測試4、com.baidu.cafe.local——LocalLib.java(searchTextFromParent,找到父控制項,然後就能找到所嵌套的子控制項,用的反射的原理:具體程式是com.baidu.cafe.remote裡的ReflectHelper.java)註:動態產生的視圖也是可以getview的5、產生報告(android-junit-report-x.x.x.jar)——這個我可以用在我的Robotium的程式裡,產生report啊6、因為對Robotium做了封裝,可以直接在裡面用Robotium的東西,solo啊solo啊 五、cafe的優點和缺點 優點:失敗時自動化的測試用例截取logcat日誌自動產生Junit Report Xml擷取應用當前的幀率(比如“英雄聯盟”的程式,在同等情況下,幀率越高程式效能越好,類似程式或者視頻的這種需要用到)擷取當前的tcp發送和接收流量(新聞、視頻啊之類的,尤其是在使用了3G流量的情況下)使用root許可權執行shell(在已root的系統上?root之後就可以提權) 缺點:安卓4.2以上系統反簽名有問題(最新版本也沒有修複?)指令碼編寫人會junit+java(java在學,junit其實用到了一點,系統的知識還是需要查一下)不去封裝穩定版本的uiautomator(所以還是需要看一下uiautomator的架構,熟悉和理解Uiautomator和Robotium的架構)  1、官網:www.goldensunshine.cc
2、百度搜:金陽光測試,找到金陽光學習資料和官網、視頻。
3、官方新浪微博:金陽光woody
4、官方qq:212260449
6、官方YY教育頻道:74894998
7、官方CSDN技術資料:http://blog.csdn.net/haorenmin2008

【金陽光測試】Android自動化 -- 學習曆程:百度Cafe原理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.