做Android 系統/應用開發怎麼可以不懂自動化測試

來源:互聯網
上載者:User

       接觸Andorid有幾個月了,一直認為做系統,應用開發根本不需要懂Android自動化測試之道,認為那都是測試人員需要掌握的東西,我們只要懂開發,只要讀懂系統,根據客戶的需求可以做相應的更改就可以了,只要熟悉了API,寫出的應用可以實現某功能就可以了。其實不是的。

     舉個例子說,我們偉大的客戶,瘋狂地更換硬體設定,那麼我們的驅動就跟著來回換,相關功能的c實現也要換,上層java對應稍作修改,碰上膩歪點的客戶提出膩歪的需求,那麼只有Good Luck了……幸運的整完了,好使了。Google及時發布Android的高版本,客戶要跟風要升級,這時候突然發現,自己修改的系統相對於原生Android並非只是最佳化和添加XX功能,4個字:傷筋動骨。這個時候,完美升級幾乎等於重寫。避免這個悲劇的發生其實很簡單,就是在完成開發工作單位之後,用cts測試一下符合不符合Android相容性規範。倘若全部pass那麼OK謝天謝地歡天喜地,若有fail項(不影響系統編譯和相關功能實現,只是不符合相容性規範),就要及時查看相關檔案可以不可以修改,將其實現迴歸到Android正道。如若實在困難 ,就要提前和客戶打好招呼,避免日後被他們扔回來,自己不好收拾。

     Android自動化測試不單單只是cts,還有Monkey,ASE,Robotium,Instrumentationd ......都是非常實用的工具。比如應用中的UI測試,單個Activity測試,Instrumentationd就是最大的功臣。

 

 

    

android.test為我們提供了些什嗎?

 

 

 

 

 舉個例子來誇誇ActivityInstrumentationTestCase2<T extends Activity>

 

public T getActivity() { </p><p> Activity a = super.getActivity(); </p><p> if (a == null) { </p><p> // set initial touch mode </p><p> getInstrumentation().setInTouchMode(mInitialTouchMode); </p><p> final String targetPackage = getInstrumentation().getTargetContext().getPackageName(); </p><p> // inject custom intent, if provided </p><p> if (mActivityIntent == null) { </p><p> a = launchActivity(targetPackage, mActivityClass, null); </p><p> } else { </p><p> a = launchActivityWithIntent(targetPackage, mActivityClass, mActivityIntent); </p><p> } </p><p> setActivity(a); </p><p> } </p><p> return (T) a; </p><p> } </p><p>  

 

 

 

     通過getActivity()可以輕鬆的獲得activity,肆意使用其中的方法,迴避了無法執行個體化對象使用不了某類的方法的問題。在get之前, setActivityIntent(Intent) and/or setActivityInitialTouchMode(boolean), provide custom setup values to your Activity 。

 

 

      我最近時間在接觸camera這塊,解決了幾個bug,測了一下cts,意外的發現cts中,camera 的hardware test這塊原來不符合相容規範的fail項,全部都pass了。所以頓時很悔恨,為什麼開始不先針對cts的結果來找bug出口,這個目標就鎖定的很快,解決的效率會提高一倍。

 

     簡單說一下cts吧

$ make cts                                 //android源碼編譯好後,在編譯cts

解壓上一步產生的android-cts.zip  然後就可以進行測試了。詳細的操作搜一下資料,網上相關資源很多。

CTS測試會自動產生相應的測試包,該包位於如下目錄:
android-cts/repository/results
每個測試包中包含了如下檔案;
cts_result.css
cts_result.xsl
logo.gif
newrule-green.png
testResult.xml
該包的測試情況都在  testResult.xml 檔案中,通過查看該檔案可以知道,那些是和 Android相容的

 

還有一點,特別需要注意,隨著android版本的更新,cts也在不斷更新。

如果你夠好奇,可以試一試,同一系統的同一裝置,用從r1到r5不同版本的cts都來測試一遍,會有意外的收穫!


 

     不懂測試,就不要說自己是優秀的開發人員。尤其,Android為我們提供方便的自動化測試機制,還有什麼理由說不需要。

   

作者:yiyaaixuexi 發表於2011-5-13 1:02:00 原文連結 閱讀:526 評論:12 查看評論

聯繫我們

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