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自動化測試,需要什麼技能

①前端相關技術

HTML、XML、JavaScript、TCP/IP協議等

②一門編程語言

就像前面說的,selenium支持多種語言,根據個人情況以及項目的開發語言酌情選擇;

③合適的工具選型

比如selenium,比如UTF等;

④需求分析

項目類型,特質,生命周期,是否適合開展自動化測試等;

總結:

如果一個組織真正重視軟體質量,UI自動化測試是有必要做的。有如下幾點理由:

  1. 任何自動化工具都是在簡單、機械、重複的任務場景下最能發揮作用,UI測試非常符合這個特點。
  2. 對於很多組織來說,UI測試是當前耗費測試團隊人力最多的環節,大部分專職測試人員日常工作就是UI測試。「工欲善其事必先利其器」,測試人員也需要自動化工具來提升其日常工作效率。
  3. 無論後台多複雜、多重要,用戶接觸的終究還是前端界面。現在的軟體除了後台邏輯之外,還有很多前端腳本邏輯和樣式,單純靠後台介面/單元測試,無法證明用戶端的可用性。

推薦閱讀:

相关文章