初次接觸自動化測試時,對數據驅動和關鍵字驅動不甚理解,覺得有點故弄玄須,不就是參數和函數其嘛!其實其也體現了測試所不同與開發的一些特點(主要指系統測試),以及和對技術發展的脈絡的展現。
01錄制/回放的神話
實際上可以理解為一種自動測試腳本和測試用例的緊耦合,既有測試腳本維護的難度,也與系統測試中面向用戶的思路相抵制。
每一家自動化測試工具廠商都會宣傳,他們的工具非常容易使用,沒有技術背景的測試人員只要簡單錄制測試的操作過程,然后播放錄制好的測試腳本,就可以輕松自動化所有的測試。這樣的說法是非常不負責的。
現在我們來分析一下自動化測試不能單單只依靠錄制/回放來完成的原因。通過錄制建立的腳本,基本上都是用腳本語言以硬編碼的方式編寫的,當應用程序變動時,這些硬編碼也隨之需要更改。因此,維護這些錄制好的腳本,成本是非常高的,高到幾乎不能接受。
所有的測試腳本都必須是在應用程序可以正確執行時才能錄制,如果在錄制過程中發現缺陷,測試人員必須向缺陷管理機制報告,等到該缺陷修正了,整個錄制腳本的動作才能繼續下去。在這樣的情況下,如果僅僅依靠錄制腳本來進行測試驅動級腳本能被檢測嗎,效率是十分低下的。
同時,這些錄制好的腳本不是非常可靠,甚至在應用程序完全沒有變動的情況下直接播放,也可能因為一些意外狀況而無法執行。如果錄制腳本時測試人員使用了錯誤的腳本語言,則腳本就必須重新錄制。
綜上所述,通過錄制的方式來建立自動化測試腳本的方式看似容易,但實際上會遇到下列問題:
02數據驅動的自動化測試框架
“什么是數據驅動呢?
很大一部分人肯定認為數據驅動就是把需要參數化的東西寫在EXCEL里,然后在跑腳本時調用。如果我告訴你,這其實不是數據驅動,而只是較高級的參數化,你肯定會很驚訝!
現在我來解釋一下:首先為什么叫數據驅動呢,那么它肯定有驅動的含義,比如你用EXCEL可以控制測試的業務流嗎?回答 是不能的。那又如何作到驅動呢?所以說我們將測試數據放在獨立的文件里只是高級的參數話。而數據驅動,你必須有數據來控制測試的業務流。比如你測一個 WEB程序,有很多頁面,你可以通過一個數據來控制每次是在哪個頁面下工作的(即通過數據來導航到相應的頁面)。它是關鍵字驅動的低級版本,他控制的是函 數級的驅動級腳本能被檢測嗎,而關鍵字是控制動作級的。所以數據驅動應該是可以控制整個測試的”。
在一些復雜的測試用例中,同一個用例包含了很多的測試流程,其中不同的測試流程采用不同的測試輸入數據,這個時候測試數據的輸入不僅僅是參數的輸入,還有業務流程的控制字段的輸入(可以理解為邏輯參數),這種情形會更深入的體現數據驅動的含義。
數據驅動的自動化測試是針對上述開發與測試之間緊密耦合問題提出的測試方法。通過建立測試與開發定義的軟件元數據的關聯——元數據映射表,在測試與開發之間建立松耦合關系。不論測試人員修改測試腳本,還是開發人員修改軟件,只需要修改元數據映射表,既可以滿足測試與開發同步進行。這樣,可以減少測試腳 本調試的工作量,更好的實現自動化測試。
數據驅動的自動化測試框架是這樣的一個框架,從某個數據文件(例如ODBC源文件、Excel文件、Csv文件、ADO對象文件等)中讀取輸入、輸出 的測試數據,然后通過變量傳入事先錄制好的或手工編寫的測試腳本中。其中,這些變量被用作傳遞(輸入/輸出)用來驗證應用程序的測試數據。在這個過程中, 數據文件的讀取、測試狀態和所有測試信息都被編寫進測試腳本里;測試數據只包含在數據文件中,而不是腳本里,測試腳本只是一個“驅動”,或者說是一個傳送數據的機制。
數據驅動腳本就是那些和應用程序相關聯的腳本。這些腳本通過錄制或手工編寫寫進自動化工具私有的語言,然后對其中的變量賦予合適的數值,作為測試數據的輸入。這些變量作為一些關鍵應用程序輸入的媒介,使腳本能通過外部的數據來驅動應用程序。
優點:
缺點:
03關鍵字驅動的自動化測試
關鍵字驅動的來源非常自然,從面向對象的思路出發,同樣的業務邏輯會自然的編寫成一個類或者函數作為關鍵字來被不同的測試腳本所調用。當測試框架發展到所有 的測試過程都已經可以被寫好的函數和類所組合完成時,就進化到了關鍵字驅動的一個高級階段,這個時候測試用例的開發就變成了測試數據和關鍵字的組合,并把 這種組合工作簡化為所有人都很熟悉的表格填寫任務,從而最終達到一個由數據和關鍵字驅動整個測試的效果。
在關鍵字驅動框架里,你可以創建一些關鍵字以及相關聯的一些方法和函數。然后你創建一個函數庫,它里面包含一個讀取關鍵字的邏輯,然后調用相關的動作。
關鍵字驅動的自動化測試(也稱為表驅動測試自動化),是數據驅動自動化測試的變種,可支持由不同序列或多個不同路徑組成的測試。它是一種獨立于應 用程序的自動化框架,在處理自動化測試的同時也要適合手工測試。關鍵字驅動的自動化測試框架建立在數據驅動手段之上,表中包含指令(關鍵詞),而不只是數 據。這些測試被開發成使用關鍵字的數據表,它們獨立于執行測試的自動化工具。關鍵字驅動的自動化測試是對數據驅動的自動化測試的有效改進和補充。
這種自動化測試的模型主要由核心數據驅動引擎、組件函數、支持庫和應用映射表組成。自動化測試首先由初始腳本開始執行,這個腳本把高層測試表傳遞給高層驅 動器,高層驅動器在處理這些表的過程中,遇到中層測試表后就調用中層驅動器,中層驅動器處理中層表時也作類似的處理。當低層驅動器處理低層表時,它嘗試著 使應用與測試保持同步。當低層驅動器遇到對某一個組件的低層關鍵字組件時,它判斷這個組件的類型并調用相應的組件函數模塊來處理這個指令操作。所有這些元 素都要依靠映射表中的信息,它是自動化測試模型和被測應用程序的橋梁。支持庫主要完成一些文件處理,日志記錄和郵件發送等等的功能。
推薦學習
推薦碼同學精選好課8月8日開課《高級測試經理管理課》課程。碼同學聯合曾帶領某一線互聯網壓測團隊50人+,且擅長測試團隊搭建、測試體系建設,另外對職場思維、情商培養方面也有豐富的經驗的互聯網新貴公司測試總監。講師與課程內容100%好評!
不想錯過就把我們設為星標吧!
第一步:點擊頂部藍字“自動化軟件測試”,進入公眾號主頁
第二步:點擊右上角“···”
第三步:點擊“設為星標”