關(guān)于自動化測試框架設(shè)計的幾點思考
什么是自動化測試框架
首先說說什么是自動化測試。自動化測試就是讓被測試的軟件自己可以運行起來,代替人去執(zhí)行軟件的功能;或者是讓其他的工具自己運行起來,去檢查軟件的內(nèi)部和外部。自動化測試可以看成是一個自動執(zhí)行的過程。
自動化測試框架則是可以讓自動化測試實現(xiàn)的一系列組合封裝的庫或工具,來幫助我們進行自動化測試的配套設(shè)施。
自動化測試框架的設(shè)計
實際上,不管是手工測試還是自動化測試,最核心的工作不外乎編寫測試用例、執(zhí)行測試用例、處理運行結(jié)果、維護用例。因此,如何提高自動化測試的效率,也就拆解成了如何提高自動化「編寫、執(zhí)行、維護」測試用例上效率的問題。
01 選擇自動化測試方式
目前比較常見的自動化測試方式主要分為「數(shù)據(jù)驅(qū)動框架」和「關(guān)鍵字驅(qū)動框架」兩種。
a. 數(shù)據(jù)驅(qū)動 (DDT)
數(shù)據(jù)驅(qū)動指的是從某個數(shù)據(jù)文件(例如Excel文件、Xml文件、Json文件等)中讀取輸入測試數(shù)據(jù),然后通過變量傳入編寫的測試腳本中。
在這個過程中, 數(shù)據(jù)文件的讀取、測試狀態(tài)和所有測試步驟都被編寫進測試腳本里;測試數(shù)據(jù)只包含在數(shù)據(jù)文件中,而不是腳本里,測試腳本只是一個“驅(qū)動”,或者說是一個傳送數(shù)據(jù)的機制。
一般用來存放數(shù)據(jù)的文件有:
-
Excel 數(shù)據(jù)文件
-
XML 數(shù)據(jù)文件
-
JSON 數(shù)據(jù)文件
-
Text 數(shù)據(jù)文件
-
YAML 數(shù)據(jù)文件
-
數(shù)據(jù)庫等
數(shù)據(jù)驅(qū)動的方法主要用于需要通過不同數(shù)據(jù)來保證測試覆蓋率的場景,比如被測系統(tǒng)業(yè)務(wù)邏輯固定不變或變動較小,即測試用例步驟是固定的,但是所需要的測試數(shù)據(jù)是變化的情況。通常來說,數(shù)據(jù)都是保存在外面文件或數(shù)據(jù)庫中,運行時自動獲取。即測試框架中要支持數(shù)據(jù)與腳本分離,一個測試腳本可以驅(qū)動執(zhí)行多個相似測試場景。
那么,數(shù)據(jù)與腳本分離是自動化的必要因素,如圖所示:

上圖是將測試數(shù)據(jù)與腳本獨立,頁面元素與腳本獨立,測試同學只需要獨立維護測試數(shù)據(jù)與頁面元素,且數(shù)據(jù)與頁面元素是共享的,任何測試人員均可調(diào)用,減少了編寫與維護的成本。
b. 關(guān)鍵字驅(qū)動
關(guān)鍵字驅(qū)動是將數(shù)據(jù)與關(guān)鍵字結(jié)合來描述如何執(zhí)行測試。也就是將測試用例腳本中的步驟提取出來,放在獨立的數(shù)據(jù)文件中,變成簡單編寫的方式。這種方法具備數(shù)據(jù)驅(qū)動的優(yōu)勢,同時非編程人員也能建立測試。
關(guān)鍵字驅(qū)動的模式是建立在數(shù)據(jù)驅(qū)動手段之上,關(guān)鍵字驅(qū)動文件包含指令(關(guān)鍵詞),而不只是數(shù)據(jù)。

02 提高執(zhí)行效率:分布式
測試用例的執(zhí)行效率也是自動化測試需要注意的重點。設(shè)想一下,一個早晨,你手捧一杯咖啡,在電腦旁開啟了一天的工作,這時收到一封提測郵件,首先你開啟了自動化冒煙或回歸當前需求,當你在本地開啟運行UI自動化測試用例的時候,當前執(zhí)行的用例已經(jīng)占據(jù)了你整個電腦,你啥也干不了。
如果通過一種簡單的機制可以讓測試用例在其他機器或手機上運行,不需要你本機,也不需要復雜的操作,在你忙碌其他事情的時候,而多臺遠程機器也在同時為你執(zhí)行測試用例,不僅提高了你的工作效率,節(jié)省人工成本,也同時提高了測試用例的執(zhí)行效率。
這里我們說的分布式執(zhí)行是指將數(shù)條測試用例在多臺遠程機器上執(zhí)行:

03 常見的自動化測試框架
不管是接口層也好,還是UI層也好,目前應(yīng)用最多的工具或者語言如:
①Java+Selenium/Appium+TestNG/Junit+Maven/Ant+Git+Jenkins
②Python+Selenium/Appium+Unittest/Pytest+Git+Jenkins
至于需要使用哪種選型,根據(jù)自己的團隊需要而定,那種選型都可以搭建一個擁有好的設(shè)計模式的框架。目前在電商團隊中的測試框架中支持的自動化主要有:

小結(jié)
一個好的自動化的框架一定是靈活易用的,因為測試對象的不確定性以及多變性對于框架來說是一個最大的挑戰(zhàn)。
在未來的測試發(fā)展趨勢中,也許可以有更加簡便的方式去包容豐富多變的測試場景,可以自動生成自動化測試用例,其實近來也有人嘗試機器學習(AI+大數(shù)據(jù)的方式)來識別GUI的對象,不管是創(chuàng)新性的技術(shù)還是傳統(tǒng)技術(shù),我們的目的是為了高效率的保證測試質(zhì)量。
以上是個人關(guān)于自動化測試框架的一些見解,歡迎各位測試小伙伴們一起探討。

