最近一直在學習python,正好部門技術結構調整,就開始了點工向UI自動化測試的轉變,我要說瞌睡來了就掉枕頭么?
不過還好,可以將python的學習成果在自動化測試中實踐。。。
1、about自動化測試
定義:把人為驅動的測試轉化為機器執行的一種過程,重點在於持續集成這個概念;
優勢:節約人力和時間成本;
測試金字塔:
如上圖所示,敏捷大師Mike Cohn提出該概念,然后由Martin Fowler大師在此基礎上提出了測試分層概念,以區別於傳統的自動化測試。
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(Unified Functional Testing)
即原來的QTP(Quick Test Professional Software)與ST(Service Test)合並而來,由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自動化測試,需要什么技能
①前端相關技術
HTML、XML、JavaScript、TCP/IP協議等
②一門編程語言
就像前面說的,selenium支持多種語言,根據個人情況以及項目的開發語言酌情選擇;
③合適的工具選型
比如selenium,比如UTF等;
④需求分析
項目類型,特質,生命周期,是否適合開展自動化測試等;