Android cts all pass 全攻略

來源:互聯網
上載者:User
文章目錄
  •         解決方案:
  •       解決方案:
  •        解決方案:
 
  android CTS ! Goodbye fails ! Goodbye timeout !

 

✿為什麼要進行cts測試

        Android相容性測試(CTS)和連帶的相容性定義文檔(CDD),是一個確保終端裝置與特定版本Android相容的自管理程式。CTS測試集包含大約24,000個在Android裝置上啟動並執行測試案例,這些用例分別針對電話、圖形、相機、GPS、觸控螢幕、無線網等功能。Google針對每個主要Android版本公布了CDD文檔,其中指出了對CTS中每類測試的具體要求。通過CTS測試是訪問Android軟體市場的必要條件之一。通過CTS測試之後便允許在裝置上使用Android商標,它標誌著該裝置能夠良好相容軟體市場中的數十萬應用程式。

      

✿常見問題和解決方案

      我在這裡不寫怎麼執行CTS,-p 是什麼意思 -t是什麼意思,我總結的是在執行  cts_host > start --plan CTS 之後,想all pass 的那些有營養的東西。

 

      ❀ testcase timeout

         測試某個testcase的時候一直出現 “........”,遲遲沒有pass或者fail,等良久出現一個血淋淋的timeout,很讓人傷心。有不少人笑嘻嘻的以為timeout 挺好,至少它不是fail。在我看來timeout 比 fail 還恐怖,因為它連進行測試到底是pass還是fail的權利都沒有。想不被硬體裝置廠商笑話,必須0 timeout ,然後再爭取0 fail 。

        timeout多數都是由於這個錯誤造成的:

        Exception in thread "Thread-XX" com.android.ddmlib.ShellCommandUnresponsiveException

                           at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:408)

                           at com.android.ddmlib.Device.executeShellCommand(Device.java:276)

                           at com.android.cts.TestDevice$1.run(TestDevice.java:1718)

 

        解決方案:

            這個錯誤是由於CTS和SDK版本不匹配造成的。倘若用android2.2 SDK 和 android2.2 cts -r6 還是出現了這個問題,那麼編譯自己工程的sdk (在整體m後,再make sdk),配套官方的cts一起,就可以百分百解決這個問題了。

           必須要注意的是,不要用自己的工程代碼編譯出來的cts(make cts),因為可能編譯出來的不是最新的(通常是r1版本)。而google提供的才是最新的,而硬體裝置廠商都會信賴最新版本的cts的測試結果。

 

 

      ❀Restarting device ...Restarting ADB...

         板子執行幾個測試項就停下,讓人很鬱悶

 

         CTS_INFO >>> Max ADB operations reached. Restarting ADB...

         CTS_INFO >>> Restarting device ...
         Device(xxxxxxxxxxxxxxxxxxxxxx) disconnected
         Test stopped.
         Device(xxxxxxxxxxxxxxxxxxxxxx) connected
                                  

         

      解決方案:

         其實重啟adb和板子是正常現象,如果不重啟會影響他們的正常工作。但是這樣頻繁的重啟,很影響工作效率。

         我們可以控制測試中重啟的頻率:

         修改android-cts/repository/host_config.xml中的 reboots value:     

          <!-- Number of tests executed between reboots. A value <= 0 disables reboots. -->
          <IntValue name="maxTestCount" value="200" />
        

         5000是我測試比較合理的數字,如果不跑全部的cts項23700個test的話,數量不多可以修改為-1,禁止重啟。

         如果數量過多,則還是重啟的好,否則中途adb會卡死停止test。自動化測試,你不會一直盯著它的對吧?

         

 

       ❀java.io.IOException: sad result from adb: closed

          倘若中途出現:

          java.io.IOException: sad result from adb: closed
         00:47 E/ddms: ADB rejected shell command (am instrument -w -e bundle true android.tests.devicesetup/android.tests.getinfo.DeviceInfoInstrument): closed

         CTS_ERROR >>> Failed to execute shell command am instrument -w -e bundle true android.tests.devicesetup/android.tests.getinfo.DeviceInfoInstrument on device 0xxxxxxxxxxxx         

         java.io.IOException: sad result from adb: closed

 

 

       解決方案:

          別擔心,重啟一下板子就好了。

 

 

✿其他fail

         因為各個項目差異,所以fail項不同,拋開硬體差異所決定的fail,還有系統工程師為了掩飾別的bug而新增的cts fail bug,我們還需要注意的是:

         1.Net相關的testcase ,記得開wifi \ 3G,保持網路聯通

         2.SMS相關的testcase,記得插SIM卡

         3.當I2C上某個裝置的testcase沒有過,試試禁掉I2C上其他的sensor服務,單一測試,也許會有意外收穫

        

 

                                                                                                                        

 

                         如果你還深陷cts fails 困擾 ,歡迎交流。

 

作者:yiyaaixuexi 發表於2011-7-26 1:56:07 原文連結 閱讀:1910 評論:29 查看評論

相關文章

聯繫我們

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