1. 程式人生 > >關於自動化測試框架設計的幾點思考

關於自動化測試框架設計的幾點思考

對於自動化測試的好處和重要性,相信大家都已經瞭解。自動化測試可以讓我們在有限的時間內儘可能多的覆蓋所涉及到的測試場景,減少測試人員的的重複性工作,提高測試效率以及覆蓋率。

其實很多測試同學都非常積極嘗試自動化,但最終又選擇放棄,很重要的原因是沒有感受到自動化帶來的收益。

實際上,自動化的效率高低很大程度上取決於你的自動化框架設計得是否合理,下面就以如何設計高效的自動化框架來談談自己的理解。

 

什麼是自動化測試框架

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

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

 

自動化測試框架的設計

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

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的物件,不管是創新性的技術還是傳統技術,我們的目的是為了高效率的保證測試質量。

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

 

本文作者:徐彥卿 電商旅遊測試負