什么是自動化測試框架

首先說說什么是自動化測試。自動化測試就是讓被測試的軟件自己可以運行起來,代替人去執行軟件的功能;或者是讓其他的工具自己運行起來,去檢查軟件的內部和外部。自動化測試可以看成是一個自動執行的過程。

自動化測試框架則是可以讓自動化測試實現的一系列組合封裝的庫或工具,來幫助我們進行自動化測試的配套設施。

 

自動化測試框架的設計

實際上,不管是手工測試還是自動化測試,最核心的工作不外乎編寫測試用例、執行測試用例、處理運行結果、維護用例。因此,如何提高自動化測試的效率,也就拆解成了如何提高自動化「編寫、執行、維護」測試用例上效率的問題。

01 選擇自動化測試方式

目前比較常見的自動化測試方式主要分為「數據驅動框架」和「關鍵字驅動框架」兩種。

a. 數據驅動 (DDT)

數據驅動指的是從某個數據文件(例如Excel文件、Xml文件、Json文件等)中讀取輸入測試數據,然后通過變量傳入編寫的測試腳本中。

在這個過程中, 數據文件的讀取、測試狀態和所有測試步驟都被編寫進測試腳本里;測試數據只包含在數據文件中,而不是腳本里,測試腳本只是一個“驅動”,或者說是一個傳送數據的機制。

一般用來存放數據的文件有:

  • Excel 數據文件

  • XML 數據文件

  • JSON 數據文件

  •  Text 數據文件

  •  YAML 數據文件

  •  數據庫等

數據驅動的方法主要用于需要通過不同數據來保證測試覆蓋率的場景,比如被測系統業務邏輯固定不變或變動較小,即測試用例步驟是固定的,但是所需要的測試數據是變化的情況。通常來說,數據都是保存在外面文件或數據庫中,運行時自動獲取。即測試框架中要支持數據與腳本分離,一個測試腳本可以驅動執行多個相似測試場景。

那么,數據與腳本分離是自動化的必要因素,如圖所示:

 

上圖是將測試數據與腳本獨立,頁面元素與腳本獨立,測試同學只需要獨立維護測試數據與頁面元素,且數據與頁面元素是共享的,任何測試人員均可調用,減少了編寫與維護的成本。

b. 關鍵字驅動

關鍵字驅動是將數據與關鍵字結合來描述如何執行測試。也就是將測試用例腳本中的步驟提取出來,放在獨立的數據文件中,變成簡單編寫的方式。這種方法具備數據驅動的優勢,同時非編程人員也能建立測試。

關鍵字驅動的模式是建立在數據驅動手段之上,關鍵字驅動文件包含指令(關鍵詞),而不只是數據。

 

02 提高執行效率:分布式

測試用例的執行效率也是自動化測試需要注意的重點。設想一下,一個早晨,你手捧一杯咖啡,在電腦旁開啟了一天的工作,這時收到一封提測郵件,首先你開啟了自動化冒煙或回歸當前需求,當你在本地開啟運行UI自動化測試用例的時候,當前執行的用例已經占據了你整個電腦,你啥也干不了。

如果通過一種簡單的機制可以讓測試用例在其他機器或手機上運行,不需要你本機,也不需要復雜的操作,在你忙碌其他事情的時候,而多臺遠程機器也在同時為你執行測試用例,不僅提高了你的工作效率,節省人工成本,也同時提高了測試用例的執行效率。

這里我們說的分布式執行是指將數條測試用例在多臺遠程機器上執行:

 

03 常見的自動化測試框架

不管是接口層也好,還是UI層也好,目前應用最多的工具或者語言如:

①Java+Selenium/Appium+TestNG/Junit+Maven/Ant+Git+Jenkins

②Python+Selenium/Appium+Unittest/Pytest+Git+Jenkins

至于需要使用哪種選型,根據自己的團隊需要而定,那種選型都可以搭建一個擁有好的設計模式的框架。目前在電商團隊中的測試框架中支持的自動化主要有:

 

小結

一個好的自動化的框架一定是靈活易用的,因為測試對象的不確定性以及多變性對于框架來說是一個最大的挑戰。

在未來的測試發展趨勢中,也許可以有更加簡便的方式去包容豐富多變的測試場景,可以自動生成自動化測試用例,其實近來也有人嘗試機器學習(AI+大數據的方式)來識別GUI的對象,不管是創新性的技術還是傳統技術,我們的目的是為了高效率的保證測試質量。

以上是個人關于自動化測試框架的一些見解,歡迎各位測試小伙伴們一起探討。