UI自動化測試一直都是如此的令人糾結,自動化測試初學者總是拿它入門,但有些經驗豐富者對其又是毀譽參半,抑或拋出分層自動化測試那個經典的「金字塔」,來說明UI自動化測試還是少做為好。
我在從事7年產品研發之後,臨危受命轉向測試領域,至今又7年有餘。期間最關注的一直是UI端/用戶端的自動化技術:從Web應用到移動App、從測試到RPA(機器人流程自動化)、從框架研發到應用推廣。
下面我就分享下為什麼要做UI自動化測試、UI自動化測試要點以及其他的心得體會,希望能給各位同行帶來思想上的碰撞。
1、首先,講講UI自動化測試的誤區吧
誤區一: UI自動化沒用
造成這個誤區的原因也很簡單。技術和業務拆解能力不足就直接去搞自動化了。所以自然就沒什麼好效果,然後總結出了一個結論--UI自動化沒有什麼用。
誤區二: UI自動化實現很簡單
之所以有這麼一個誤區原因也很簡單。UI自動化不論是selenium、rf還是TestWriter。平常用的API確實沒多少,很好學。稍微有代碼基礎的人就能很快上手,TestWriter更是0編碼都可以上手,所以覺得這真的很簡單。但其實,如果想要更長遠的發展,需要學習的東西還有很多。
2、自動化測試分層
測試金字塔:
單元自動化測試(數據處理層):指對軟體中最小的可測試單元進行檢查和驗證,一般需要藉助單元測試框架,如java的Junit、TestNG,python的unittest,常見的手段是code review等;
介面自動化測試(業務邏輯層):主要檢查驗證模塊間的調用返回以及不同系統、服務間的數據交換,常見的介面測試工具有postman、jmeter、loadrunner等;
UI自動化測試(GUI界面層):UI層是用戶使用產品的入口,所有功能通過這一層提供給用戶,測試工作大多集中在這一層,常見的測試工具有UFT、Robot Framework、Selenium、Appium等;
性價比:按照測試金字塔模型以及投入/產出比,越向下,回報率越高;
Google的自動化分層投入佔比:
小測試(Unit):佔比70%;
中測試(Service):佔比20%;
大測試(UI):佔比10%;
自動化測試面臨的挑戰:面臨的最大挑戰就是變化,因為變化會導致測試用例運行失敗,所以需要對自動化腳本不斷debug,如何控制成本、降低成本是對自動化測試工具以及人員能力的挑戰。
3、什麼樣的項目適合自動化測試
如上圖所示,真正工作中無法全部滿足以上條件,所以需要作出權衡,一般來說,只需要滿足以下幾點,就可以對項目開展自動化測試(圖中紅色框標註的選項):
①需求穩定,不會頻繁變更
自動化測試最大的挑戰就是需求的變化,而自動化腳本本身就需要修改、擴展、debug,去適應新的功能,如果投入產出比太低,那麼自動化測試也失去了其價值和意義;
折中的做法是選擇相對穩定的模塊和功能進行自動化測試,變動較大、需求變更較頻繁的部分用手工測試;
②多平台運行,組合遍歷型、大量的重複任務
測試數據、測試用例、自動化腳本的重用性和移植性較強,降低成本,提高效率和價值;
③軟體維護周期長,有生命力
自動化測試的需求穩定性要求、自動化框架的設計、腳本開發與調試均需要時間,這其實也是一個軟體開發過程,如果項目周期較短,沒有足夠的時間去支持這一過程,那自動化測試也就不需要了;
④被測系統開發較為規範,可測試性強
主要出於這幾點考慮:被測試系統的架構差異、測試技術和工具的適應性、測試人員的能力能否設計開發出適應差異的自動化測試框架;
4、常見的自動化測試工具簡介
UFT
即原來的QTP與ST合併而來,由HP公司開發,是一個企業級的商業自動化測試工具,提供了強大易用的錄製回放功能,
同時兼容對象識別模式與圖像識別模式,支持B/S和C/S兩種架構的軟體測試;
Robot Framework
一款基於python語言編寫的自動化測試框架工具,具備良好的擴展性,支持關鍵字驅動,支持多種類型的客戶端和介面,可進行分散式測試;
Selenium
應用於web的自動化測試工具,支持多平台、多瀏覽器、多語言來實現自動化,優點如下:
①開源、免費;
②多瀏覽器支持:chrome、Firefox、IE、Edge等;
③多平台支持:Linux、Windows、MAC;
④多語言支持:java、python、Ruby、C#、JavaScript、C++;
⑤對web界面有良好的支持;
⑥簡單(API簡單)、靈活(開發語言驅動);
⑦支持分散式測試用例執行;
5、做UI自動化測試,需要什麼技能
①前端相關技術
②一門編程語言
就像前面說的,selenium支持多種語言,根據個人情況以及項目的開發語言酌情選擇;
③合適的工具選型
比如selenium,比如UTF等;
④需求分析
項目類型,特質,生命周期,是否適合開展自動化測試等;
總結:
如果一個組織真正重視軟體質量,UI自動化測試是有必要做的。有如下幾點理由:
推薦閱讀:
TAG:自動化測試 | 軟體測試 | AndroidUI | UI開發 |