🍅 視頻學習:文末有免費的配套視頻可觀看
🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快
初次接觸自動化測試時,對數據驅動和關鍵字驅動不甚理解,覺得有點故弄玄須,不就是參數和函數嘛!其實其也體現了測試所不同與開發的一些特點(主要指系統測試),以及和對技術發展的脈絡的展現。
1、錄制/回放的神話
實際上可以理解為一種自動測試腳本和測試用例的緊耦合,既有測試腳本維護的難度,也與系統測試中面向用戶的思路相抵制
每一家自動化測試工具廠商都會宣傳,他們的工具非常容易使用,沒有技術背景的測試人員只要簡單錄制測試的操作過程,然后播放錄制好的測試腳本,就可以輕松自動化所有的測試。這樣的說法是非常不負責的。
現在我們來分析一下自動化測試不能單單只依靠錄制/回放來完成的原因。
通過錄制建立的腳本,基本上都是用腳本語言以硬編碼的方式編寫的,當應用程序變動時,這些硬編碼也隨之需要更改。因此,維護這些錄制好的腳本,成本是非常高的,高到幾乎不能接受。
所有的測試腳本都必須是在應用程序可以正確執行時才能錄制,如果在錄制過程中發現缺陷.測試人員必須向缺陷管理機制報告,等到該缺陷修正了,整個錄制腳本的動作才能繼續下去。在這樣的情況下,如果僅僅依靠錄制腳本來進行測試,效率是十分低下的。
同時,這些錄制好的腳本不是非常可靠,甚至在應用程序完全沒有變動的情況下直接播放,也可能因為一些意外狀況而無法執行。如果錄制腳本時測試人員使用了錯誤的腳本語言,則腳本就必須重新錄制。
綜上所述,通過錄制的方式來建立自動化測試腳本的方式看似容易,但實際上會遇到下列問題:
-
測試人員大多不具備技術背景,難以完全掌握測試工具;
-
應用程序必須達到一定的穩定性,才能開始錄制測試腳本;
-
錄制的測試腳本與測試數據耦合得太緊密;
-
維護自動化測試腳本的成本非常高。
2、數據驅動的自動化測試框架
什么是數據驅動呢?很大一部分人肯定認為數據驅動就是把需要參數化的東西寫在EXCEL里,然后在跑腳本時調用。如果我告訴你,這其實不是數據驅動,而只是較高級的參數化,你肯定會很驚訝!現在我來解釋一下:首先為什么叫數據驅動呢,那么它肯定有驅動的含義,比如你用EXCEL可以控制測試的業務流嗎?回答是不能的。那又如何作到驅動呢?所以說我們將測試數據放在獨立的文件里只是高級的參數話。而數據驅動,你必須有數據來控制測試的業務流。比如你測一個WEB程序,有很多頁面,你可以通過一個數據來控制每次是在哪個頁面下工作的(即通過數據來導航到相應的頁面)。它是關鍵字驅動的低級版本,他控制的是函數級的,而關鍵字是控制動作級的。所以數據驅動應該是可以控制整個測試的。
在一些復雜的測試用例中,同一個用例包含了很多的測試流程,其中不同的測試流程采用不同的測試輸入數據,這個時候測試數據的輸入不僅僅是參數的輸入,還有業務流程的控制字段的輸入(可以理解為邏輯參數),這種情形會更深入的體現數據驅動的含義。
數據驅動的自動化測試是針對上述開發與測試之間緊密耦合問題提出的測試方法。通過建立測試與開發定義的軟件元數據的關聯——元數據映射表,在測試與開發之間建立松耦合關系。不論測試人員修改測試腳本,還是開發人員修改軟件,只需要修改元數據映射表,既可以滿足測試與開發同步進行。這樣,可以減少測試腳本調試的工作量,更好的實現自動化測試。
什么是數據驅動的自動化測試框架
數據驅動的自動化測試框架是這樣的一個框架,從某個數據文件(例如ODBC源文件、Excel文件、Csv文件、ADO對象文件等)中讀取輸入、輸出的測試數據,然后通過變量傳入事先錄制好的或手工編寫的測試腳本中。其中,這些變量被用作傳遞(輸入/輸出)用來驗證應用程序的測試數據。在這個過程中,數據文件的讀取、測試狀態和所有測試信息都被編寫進測試腳本里;測試數據只包含在數據文件中,而不是腳本里,測試腳本只是一個“驅動”,或者說是一個傳送數據的機制。
數據驅動腳本
數據驅動腳本就是那些和應用程序相關聯的腳本。這些腳本通過錄制或手工編寫寫進自動化工具私有的語言,然后對其中的變量賦予合適的數值,作為測試數據的輸入。這些變量作為一些關鍵應用程序輸入的媒介,使腳本能通過外部的數據來驅動應用程序。
1) 可變數據,硬編碼組件標志
這些數據驅動的腳本經常包含硬編碼的數據,有時是一些窗口組件中非常脆弱的識別字符串。出現這種情況時,腳本很容易由于程序的更改而失去作用。
2) 高度技術化的、重復的測試設計
數據驅動腳本的另一個共同特點就是,所有在測試設計上所作的努力最終都體現在自動化工具的腳本語言中,或者復制到手工和自動化測試腳本中。這意味著每個和自動化測試開發或執行有關的人必須對測試環境和自動化工具的編程語言非常精通。
優點與缺點
1) 優點:
-
在應用程序開發的同時就可以同步建立測試腳本,而且當應用功能變動時,只需要修改業務功能部分的腳本;
-
利用模型化的設計,避免重復的腳本,減少建立或維護腳本的成本;
-
測試輸入數據,驗證數據和預期的測試結果與腳本分開,存放在另外的數據文件里,利于測試人員修改和維護;
-
透過判斷功能回傳值是“True”或“False”,可作錯誤處理,增加了測試腳本的健壯性;
-
自動化測試開發人員創建數據驅動的測試過程,測試員創建測試數據;
-
在測試的過程中收集測試結果,并在輸入數據的語境中表示測試結果,這樣可以簡化手工結果分析。
2) 缺點:
-
對自動化測試工具里的腳本語言必須非常精通;
-
每個腳本都會對應多個數據文件,這些數據文件需要根據腳本的功能類別存放在各自的目錄中,增加了使用的復雜性;
-
測試人員除了需要根據具體測試數據維護相應的測試計劃,還要將這些數據寫入各個需求不同的數據文件中;
-
在編輯數據文件時,必須注意測試腳本所要求的傳輸格式,否則會在處理腳本時產生錯誤。如由專門的技術人員對其進行維護,依賴于數據驅動腳本的自動化測試框架實現起來更簡單、快捷。但是,維護工作困難,而且還需要保持這種數據驅動的模式,這樣,即便長時間的維持也會導致失敗。
3、關鍵字驅動的自動化測試
關鍵字驅動的來源非常自然,從面向對象的思路出發,同樣的業務邏輯會自然的編寫成一個類或者函數作為關鍵字來被不同的測試腳本所調用。當測試框架發展到所有的測試過程都已經可以被寫好的函數和類所組合完成時,就進化到了關鍵字驅動的一個高級階段,這個時候測試用例的開發就變成了測試數據和關鍵字的組合,并把這種組合工作簡化為所有人都很熟悉的表格填寫任務,從而最終達到一個由數據和關鍵字驅動整個測試的效果。
在關鍵字驅動框架里,你可以創建一些關鍵字以及相關聯的一些方法和函數。然后你創建一個函數庫,它里面包含一個讀取關鍵字的邏輯,然后調用相關的動作。
關鍵字驅動的自動化測試(也稱為表驅動測試自動化),是數據驅動自動化測試的變種,可支持由不同序列或多個不同路徑組成的測試。它是一種獨立于應用程序的自動化框架,在處理自動化測試的同時也要適合手工測試。關鍵字驅動的自動化測試框架建立在數據驅動手段之上,表中包含指令(關鍵詞),而不只是數據。這些測試被開發成使用關鍵字的數據表,它們獨立于執行測試的自動化工具。關鍵字驅動的自動化測試是對數據驅動的自動化測試的有效改進和補充。
這種自動化測試的模型主要由核心數據驅動引擎、組件函數、支持庫和應用映射表組成。自動化測試首先由初始腳本開始執行,這個腳本把高層測試表傳遞給高層驅動器,高層驅動器在處理這些表的過程中,遇到中層測試表后就調用中層驅動器,中層驅動器處理中層表時也作類似的處理。當低層驅動器處理低層表時,它嘗試著使應用與測試保持同步。當低層驅動器遇到對某一個組件的低層關鍵字組件時,它判斷這個組件的類型并調用相應的組件函數模塊來處理這個指令操作。所有這些元素都要依靠映射表中的信息,它是自動化測試模型和被測應用程序的橋梁。支持庫主要完成一些文件處理,日志記錄和郵件發送等等的功能。
同時,在這我為大家準備了一份軟件測試視頻教程(含面試、接口、自動化、性能測試等),就在下方,需要的可以直接去觀看。
字節大佬,一周講完,自動化測試項目實戰,這套教程是怎么稱霸B站的?【2024最新版】