持續集成與自動化測試不再是新概念,而且持續集成與自動化測試在很多企業內部已開展實施,在開發與測試之間,開發團隊注重CI而很難實踐的是Unit Test,測試團隊則更注重CT而很難實踐是UI automatic Tests。

持續集成與自動化測試不再是新概念,而且持續集成與自動化測試在很多企業內部已開展實施,在開發與測試之間,開發團隊注重CI而很難實踐的是Unit Test,測試團隊則更注重CT而很難實踐是UI automatic Tests。說到持續集成就不得不說自動化測試金字塔模型:

Unit Tests:一般情況下由開發團隊完成,當然,如果有測試開發團隊,這部分的內容會有開發團隊與測試開發團隊一同完成。
API Tests:由測試團隊完成。這是重點,當下提供比較多的都是HTTP API,相對穩定,適合自動化測試。
UI Tests:GUI測試,由測試團隊完成。在這個模型中該部分所占比例最少。
在金字塔模型中,是要告訴我們幾個道理越底層,越穩定,越高效,越低成本,但是越底層越難實施,越底層的實現對技術專業性要求越高往往越專業的人才也意味着人力成本越高。
綜合金字塔模型,提出了橄欖模型,如下圖:提高api測試的比例,該部分投資回報率最高,有空可以專門的說說API測試今天的重點是UI automatic Tests,它的投資回報率不如API測試但是它又是整個持續集成中不可缺少的環節。

現在進入正題吧,UI自動化測試面臨的第一個問題,多技術,多平台。傳統技術如Native、Hybrid和Web,還有新興的技術如驅動原生跨平台技術(Primeton Mobile),多平台如appium、selenium等等。

通常我們會有pc端,移動端的應用,要學習多種的測試框架,成本太高了。Macaca的出現解決了該問題。
macaca支持主流的移動技術平台iOS,Android,以及兩大平台的混合運行時Webview,也支持以往的桌面端瀏覽器。macaca提供Node.js, Java, Python 三大主流的語言棧,方便工程師和所在團隊選擇合適的開發語言。Macaca 提供了標准化的驅動層,消除了各技術平台測試技術棧的差異。用戶只需要遵從 W3C webdriver 標准 標准即可多端無憂,理解成本降低。
官網(https://macacajs.com/)
Window7安裝(http://www.jianshu.com/p/42849b3e428a)
官網示例鏈接(https://github.com/macaca-sample/sample-python)
接下來簡單的說下示例:
import unittestfrom macaca import WebDriver
Macaca 使用python開發使用的是python的unittest 這個unit test framework,底層驅動使用WebDriver。這兩個是必不可少的。
入參示例:

用例示例:

該用例是百度的搜索,通過id定位搜索框輸入macaca,通過id定位確認按鈕,執行點擊,等待3s,獲取到結果界面,判斷搜索結果是否有macaca。
底層驅動webdevice可以執行查找定位元素(通過id,class,xpath等)可以執行各種的模擬人工的操作(點擊、輸入,拖動,下拉等),而unittest則承擔着用例執行、斷言、報告等。
那么該如何執行用例呢?執行是很簡單的,首先開啟macaca的服務:
macaca server --verbose
執行測試:
python macaca-desktop-sample.test.py
到此你可能對macaca有一定的了解了,以上只是一個簡單的示例,在實際的過程中我們需要對macaca做一個簡單的分層,例如最簡單的分層模型,基礎操作層(對device操作的封裝擴展)、頁面對象層(存放前端的元素對象,方便統一管理)、用例層(testsuit、testcase的組織),如果你的應用更加的復雜那可能會在做細分4層更甚至5層。
作者:_夏兮
鏈接:https://www.jianshu.com/p/ec527b2d919e
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。