2 回答

TA貢獻2012條經驗 獲得超12個贊
1、CTS,CTS 測試基于Android instrumentation 測試, 其又基于JUnit 測試。說白了, CTS 就是一堆單元測試用例。這也是Java 語言的擅長部分。
2、 Monkey工具,Monkey是Android中的一個命令行工具,可以運行在模擬器里或實際設備中。它向系統發送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對正在開發的應用程序進行壓力測試。Monkey測試是一種為了測試軟件的穩定性、健壯性的快速有效的方法。
3、ASE,ASE 意思為Android 腳本環境, 即我們可以通過腳本(比如Python)調用Android 的功能,從而定制一些測試。比如打電話,發短信,瀏覽網頁,等。我們可以擴充它的API(Java 部分), 并用python 腳本調用這些API, 從而實現豐富的測試功能。用于API 部分可以訪問到Android 全部API, python 又能靈活部署測試,所以ASE 的擴展性非常好。
4、Robotium,該工具用于黑盒的自動化測試??梢栽谟性创a或者只有APK 的情況下對目標應用
進行測試。Robotimu 提供了模仿用戶操作行為的API,比如在某個控件上點擊,輸入Text
等等。 http://mag.big-bit.com/
分層的自動化測試
這個概念最近曝光度比較高,傳統的自動化測試更關注的產品UI層的自動化測試,而分層的自動化測試倡導產品的不同階段(層次)都需要自動化測試。
相信測試同學對上面的金字塔并不陌生,這不就是對產品開發不同階段所對應的測試么!我們需要規范的來做單元測試同樣需要相應的單元測試框架,如java的Junit、testNG,C#的NUnit ,python 的unittest、pytest 等,幾乎所有的主流語言,都會有其對應的單元測試框架。
集成、接口測試對于不少測試新手來說不太容易理解,單元測試關注代碼的實現邏輯,例如一個if 分支或一個for循環的實現;那么集成、接口測試關注的一是個函數、類(方法)所提供的接口是否可靠。例如,我定義一個add()函數用于計算兩個參數的結果并返回,那么我需要調用add()并傳參,并比較返回值是否兩個參數相加。當然,接口測試也可以是url的形式進行傳遞。例如,我們通過get方式向服務器發送請求,那么我們發送的內容做為URL的一部分傳遞到服務器端。但比如 Web service 技術對外提供的一個公共接口,需要通過soapUI 等工具對其進行測試。
UI層的自動化測試,這個大家應該再熟悉不過了,大部分測試人員的大部分工作都是對UI層的功能進行測試。例如,我們不斷重復的對一個表單提交,結果查詢等功能進行測試,我們可以通過相應的自動化測試工具來模擬這些操作,從而解放重復的勞動。UI層的自動化測試工具非常多,比較主流的是QTP,Robot Framework、watir、selenium 等。
為什么要畫成一個金字塔形,則不是長方形 或倒三角形呢? 這是為了表示不同階段所投入自動化測試的比例。如果一個產品從沒有做單元測試與接口測試,只做UI層的自動化測試是不科學的,從而很難從本質上保證產品的質量。如果你妄圖實現全面的UI層的自動化測試,那更是一個勞民傷財的舉動,投入了大量人力時間,最終獲得的收益可能會遠遠低于所支付的成本。因為越往上層,其維護成本越高。尤其是UI層的元素會時常的發生改變。所以,我們應該把更多的自動化測試放在單元測試與接口測試階段進行。
既然UI層的自動化測試這么勞民傷財,那我們只做單元測試與接口測試好了。NO! 因為不管什么樣的產品,最終呈現給用戶的是UI層。所以,測試人員應該更多的精力放在UI層。那么也正是因為測試人員在UI層投入大量的精力,所以,我們有必要通過自動化的方式幫助我們“部分解放”重復的勞動。
在自動化測試中最怕的是變化,因為變化的直接結果就是導致測試用例的運行失敗,那么就需要對自動化腳本進行維護;如何控制失敗,降低維護成本對自化的成敗至關重要。反過來講,一份永遠都運行成功的自動化測試用例是沒有價值。
至于在金字塔中三種測試的比例要根據實際的項目需求來劃分。在《google 測試之道》一書,對于google產品,70%的投入為單元測試,20%為集成、接口測試,10% 為UI層的自動化測試。
添加回答
舉報