自動化測試里的數據驅動和關鍵字驅動思路的理解

🍅 視頻學習:文末有免費的配套視頻可觀看

🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快

初次接觸自動化測試時,對數據驅動和關鍵字驅動不甚理解,覺得有點故弄玄須,不就是參數和函數嘛!其實其也體現了測試所不同與開發的一些特點(主要指系統測試),以及和對技術發展的脈絡的展現。

1、錄制/回放的神話

實際上可以理解為一種自動測試腳本和測試用例的緊耦合,既有測試腳本維護的難度,也與系統測試中面向用戶的思路相抵制

每一家自動化測試工具廠商都會宣傳,他們的工具非常容易使用,沒有技術背景的測試人員只要簡單錄制測試的操作過程,然后播放錄制好的測試腳本,就可以輕松自動化所有的測試。這樣的說法是非常不負責的。

現在我們來分析一下自動化測試不能單單只依靠錄制/回放來完成的原因。

通過錄制建立的腳本,基本上都是用腳本語言以硬編碼的方式編寫的,當應用程序變動時,這些硬編碼也隨之需要更改。因此,維護這些錄制好的腳本,成本是非常高的,高到幾乎不能接受。

所有的測試腳本都必須是在應用程序可以正確執行時才能錄制,如果在錄制過程中發現缺陷.測試人員必須向缺陷管理機制報告,等到該缺陷修正了,整個錄制腳本的動作才能繼續下去。在這樣的情況下,如果僅僅依靠錄制腳本來進行測試,效率是十分低下的。

同時,這些錄制好的腳本不是非常可靠,甚至在應用程序完全沒有變動的情況下直接播放,也可能因為一些意外狀況而無法執行。如果錄制腳本時測試人員使用了錯誤的腳本語言,則腳本就必須重新錄制。

綜上所述,通過錄制的方式來建立自動化測試腳本的方式看似容易,但實際上會遇到下列問題:

  • 測試人員大多不具備技術背景,難以完全掌握測試工具;

  • 應用程序必須達到一定的穩定性,才能開始錄制測試腳本;

  • 錄制的測試腳本與測試數據耦合得太緊密;

  • 維護自動化測試腳本的成本非常高。

2、數據驅動的自動化測試框架

什么是數據驅動呢?很大一部分人肯定認為數據驅動就是把需要參數化的東西寫在EXCEL里,然后在跑腳本時調用。如果我告訴你,這其實不是數據驅動,而只是較高級的參數化,你肯定會很驚訝!現在我來解釋一下:首先為什么叫數據驅動呢,那么它肯定有驅動的含義,比如你用EXCEL可以控制測試的業務流嗎?回答是不能的。那又如何作到驅動呢?所以說我們將測試數據放在獨立的文件里只是高級的參數話。而數據驅動,你必須有數據來控制測試的業務流。比如你測一個WEB程序,有很多頁面,你可以通過一個數據來控制每次是在哪個頁面下工作的(即通過數據來導航到相應的頁面)。它是關鍵字驅動的低級版本,他控制的是函數級的,而關鍵字是控制動作級的。所以數據驅動應該是可以控制整個測試的。

在一些復雜的測試用例中,同一個用例包含了很多的測試流程,其中不同的測試流程采用不同的測試輸入數據,這個時候測試數據的輸入不僅僅是參數的輸入,還有業務流程的控制字段的輸入(可以理解為邏輯參數),這種情形會更深入的體現數據驅動的含義。

數據驅動的自動化測試是針對上述開發與測試之間緊密耦合問題提出的測試方法。通過建立測試與開發定義的軟件元數據的關聯——元數據映射表,在測試與開發之間建立松耦合關系。不論測試人員修改測試腳本,還是開發人員修改軟件,只需要修改元數據映射表,既可以滿足測試與開發同步進行。這樣,可以減少測試腳本調試的工作量,更好的實現自動化測試。

什么是數據驅動的自動化測試框架

數據驅動的自動化測試框架是這樣的一個框架,從某個數據文件(例如ODBC源文件、Excel文件、Csv文件、ADO對象文件等)中讀取輸入、輸出的測試數據,然后通過變量傳入事先錄制好的或手工編寫的測試腳本中。其中,這些變量被用作傳遞(輸入/輸出)用來驗證應用程序的測試數據。在這個過程中,數據文件的讀取、測試狀態和所有測試信息都被編寫進測試腳本里;測試數據只包含在數據文件中,而不是腳本里,測試腳本只是一個“驅動”,或者說是一個傳送數據的機制。

數據驅動腳本

數據驅動腳本就是那些和應用程序相關聯的腳本。這些腳本通過錄制或手工編寫寫進自動化工具私有的語言,然后對其中的變量賦予合適的數值,作為測試數據的輸入。這些變量作為一些關鍵應用程序輸入的媒介,使腳本能通過外部的數據來驅動應用程序。

1) 可變數據,硬編碼組件標志

這些數據驅動的腳本經常包含硬編碼的數據,有時是一些窗口組件中非常脆弱的識別字符串。出現這種情況時,腳本很容易由于程序的更改而失去作用。

2) 高度技術化的、重復的測試設計

數據驅動腳本的另一個共同特點就是,所有在測試設計上所作的努力最終都體現在自動化工具的腳本語言中,或者復制到手工和自動化測試腳本中。這意味著每個和自動化測試開發或執行有關的人必須對測試環境和自動化工具的編程語言非常精通。

優點與缺點

1) 優點:

  • 在應用程序開發的同時就可以同步建立測試腳本,而且當應用功能變動時,只需要修改業務功能部分的腳本;

  • 利用模型化的設計,避免重復的腳本,減少建立或維護腳本的成本;

  • 測試輸入數據,驗證數據和預期的測試結果與腳本分開,存放在另外的數據文件里,利于測試人員修改和維護;

  • 透過判斷功能回傳值是“True”或“False”,可作錯誤處理,增加了測試腳本的健壯性;

  • 自動化測試開發人員創建數據驅動的測試過程,測試員創建測試數據;

  • 在測試的過程中收集測試結果,并在輸入數據的語境中表示測試結果,這樣可以簡化手工結果分析。

2) 缺點:

  • 對自動化測試工具里的腳本語言必須非常精通;

  • 每個腳本都會對應多個數據文件,這些數據文件需要根據腳本的功能類別存放在各自的目錄中,增加了使用的復雜性;

  • 測試人員除了需要根據具體測試數據維護相應的測試計劃,還要將這些數據寫入各個需求不同的數據文件中;

  • 在編輯數據文件時,必須注意測試腳本所要求的傳輸格式,否則會在處理腳本時產生錯誤。如由專門的技術人員對其進行維護,依賴于數據驅動腳本的自動化測試框架實現起來更簡單、快捷。但是,維護工作困難,而且還需要保持這種數據驅動的模式,這樣,即便長時間的維持也會導致失敗。

3、關鍵字驅動的自動化測試

關鍵字驅動的來源非常自然,從面向對象的思路出發,同樣的業務邏輯會自然的編寫成一個類或者函數作為關鍵字來被不同的測試腳本所調用。當測試框架發展到所有的測試過程都已經可以被寫好的函數和類所組合完成時,就進化到了關鍵字驅動的一個高級階段,這個時候測試用例的開發就變成了測試數據和關鍵字的組合,并把這種組合工作簡化為所有人都很熟悉的表格填寫任務,從而最終達到一個由數據和關鍵字驅動整個測試的效果。

在關鍵字驅動框架里,你可以創建一些關鍵字以及相關聯的一些方法和函數。然后你創建一個函數庫,它里面包含一個讀取關鍵字的邏輯,然后調用相關的動作。

關鍵字驅動的自動化測試(也稱為表驅動測試自動化),是數據驅動自動化測試的變種,可支持由不同序列或多個不同路徑組成的測試。它是一種獨立于應用程序的自動化框架,在處理自動化測試的同時也要適合手工測試。關鍵字驅動的自動化測試框架建立在數據驅動手段之上,表中包含指令(關鍵詞),而不只是數據。這些測試被開發成使用關鍵字的數據表,它們獨立于執行測試的自動化工具。關鍵字驅動的自動化測試是對數據驅動的自動化測試的有效改進和補充。

這種自動化測試的模型主要由核心數據驅動引擎、組件函數、支持庫和應用映射表組成。自動化測試首先由初始腳本開始執行,這個腳本把高層測試表傳遞給高層驅動器,高層驅動器在處理這些表的過程中,遇到中層測試表后就調用中層驅動器,中層驅動器處理中層表時也作類似的處理。當低層驅動器處理低層表時,它嘗試著使應用與測試保持同步。當低層驅動器遇到對某一個組件的低層關鍵字組件時,它判斷這個組件的類型并調用相應的組件函數模塊來處理這個指令操作。所有這些元素都要依靠映射表中的信息,它是自動化測試模型和被測應用程序的橋梁。支持庫主要完成一些文件處理,日志記錄和郵件發送等等的功能。

同時,在這我為大家準備了一份軟件測試視頻教程(含面試、接口、自動化、性能測試等),就在下方,需要的可以直接去觀看。

字節大佬,一周講完,自動化測試項目實戰,這套教程是怎么稱霸B站的?【2024最新版】

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13808.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13808.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13808.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GBDT、XGBoost、LightGBM算法詳解

文章目錄 一、GBDT (Gradient Boosting Decision Tree) 梯度提升決策樹1.1 回歸樹1.2 梯度提升樹1.3 Shrinkage1.4 調參1.5 GBDT的適用范圍1.6 優缺點 二、XGBoost (eXtreme Gradient Boosting)2.1 損失函數2.2 正則項2.3 打分函數計算2.4 分裂節點2.5 算法過程2.6 參數詳解2.7…

oracle中insert all的用法

1、簡述 使用insert into語句進行表數據行的插入,但是oracle中有一個更好的實現方式:使用insert all語句。 insert all語句是oracle中用于批量寫數據的 。insert all分又為 無判斷條件插入有判斷條件插入有判斷條件插入分為 Insert all when... 子句 …

利用 MongoDB Atlas 進行大模型語義搜索和RAG

節前,我們星球組織了一場算法崗技術&面試討論會,邀請了一些互聯網大廠朋友、參加社招和校招面試的同學. 針對算法崗技術趨勢、大模型落地項目經驗分享、新手如何入門算法崗、該如何準備、面試常考點分享等熱門話題進行了深入的討論。 匯總合集&…

基于英飛凌BGT60LTR11AIP E6327芯片具低功耗的脈沖多普勒操作模式常用于汽車應用的雷達上

芯片特征: 60 GHz收發器MMIC,帶一個發射器和一個接收器單元封裝天線(AIP)(6.73.30.56 mm3)低功耗的脈沖多普勒操作模式自主模式用于運動和運動方向的集成檢測器運動檢測信號的直接輸出目標檢測范圍的15個可配置閾值檢測…

Android14之Binder調試(二百一十一)

簡介: CSDN博客專家,專注Android/Linux系統,分享多mic語音方案、音視頻、編解碼等技術,與大家一起成長! 優質專欄:Audio工程師進階系列【原創干貨持續更新中……】🚀 優質專欄:多媒…

前端面試題日常練-day21 【面試題】

題目 希望這些選擇題能夠幫助您進行前端面試的準備,答案在文末。 AJAX 是什么的縮寫? a) Asynchronous JavaScript and XMLb) Asynchronous JavaScript and XHTMLc) Asynchronous Java and XMLd) Asynchronous Java and XHTML使用 AJAX 可以實現以下哪…

2024年5月20日優雅草蜻蜓API大數據服務中心v2.0.4更新

v2.0.4更新 v2.0.4更新 2024年5月20日優雅草蜻蜓API大數據服務中心v2.0.4更新-增加ai繪畫接口增加淘寶聯想詞接口底部增加聯系方式 更新日志 底部增加聯系方式 增加ai繪畫接口 增加淘寶聯想詞接口 增加用戶中心充值提示 用戶中心內頁顏色改版完成 截圖 部分具體更新接口信…

神經網絡優化器-從SGD到AdamW

優化器準則 凸優化基本概念 先定義凸集,集合中的兩個點連接的線還在集合里面,就是凸集,用數學語言來表示就是:對于集合中的任意兩個元素x,y以及任意實數 λ ∈ ( 0 , 1 ) \lambda \in (0,1) λ∈(0,1),有…

【NLP】詞性標注

詞 詞是自然語言處理的基本單位,自動詞法分析就是利用計算機對詞的形態進行分析,判斷詞的結構和類別。 詞性(Part of Speech)是詞匯最重要的特性,鏈接詞匯和句法 詞的分類 屈折語:形態分析 分析語&#…

k8s 1.24.x之后如果rest 訪問apiserver

1.由于 在 1.24 (還是 1.20 不清楚了)之后,下面這兩個apiserver的配置已經被棄用 了,簡單的說就是想不安全的訪問k8s是不可能了,所以只能走安全的訪問方式也就是 https://xx:6443了,所以需要證書。 - --ins…

Git系列:git rm 的高級使用技巧

💝💝💝歡迎蒞臨我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:「stormsha的主頁」…

【go項目01_學習記錄15】

重構MVC 1 Article 模型1.1 首先創建 Article 模型文件1.2 接下來創建獲取文章的方法1.3 新增 types.StringToUint64()函數1.4 修改控制器的調用1.5 重構 route 包1.6 通過 SetRoute 來傳參對象變量1.7 新增方法:1.8 控制器將 Int64ToString 改為 Uint64ToString1.9…

【數據結構】棧和隊列的相互實現

歡迎瀏覽高耳機的博客 希望我們彼此都有更好的收獲 感謝三連支持! 1.用棧實現隊列 當隊列中進入這些元素時,相應的棧1中元素出棧順序與出隊列相反,因此我們可以使用兩個棧來使元素的出棧順序相同; 通過將棧1元素出棧,再…

Databend 倒排索引的設計與實現

倒排索引是一種用于全文搜索的數據結構。它的主要功能是將文檔中的單詞作為索引項,映射到包含該單詞的文檔列表。通過倒排索引,可以快速準確地定位到與查詢詞相匹配的文檔列表,從而大幅提高查詢性能。倒排索引在搜索引擎、數據庫和信息檢索系…

matlab實現繪制煙花代碼

下面是一個簡化的示例,它使用MATLAB的繪圖功能來模擬煙花爆炸的視覺效果。請注意,這個示例是概念性的,并且可能需要根據您的具體需求進行調整。 % 初始化參數 num_fireworks 5; % 煙花數量 num_particles_per_firework 200; % 每個煙花…

前端 CSS 經典:3D 漸變輪播圖

前言&#xff1a;無論什么樣式的輪播圖&#xff0c;核心 JS 實現原理都差不多。所以小伙伴們&#xff0c;還是需要了解一下核心 JS 實驗原理的。 效果圖&#xff1a; 實現代碼&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta chars…

MySQL —— 復合查詢

一、基本的查詢回顧練習 前面兩章節整理了許多關于查詢用到的語句和關鍵字&#xff0c;以及MySQL的內置函數&#xff0c;我們先用一些簡單的查詢練習去回顧之前的知識 1. 前提準備 同樣是前面用到的用于測試的表格和數據&#xff0c;一張學生表和三張關于雇員信息表 雇員信息…

優化數據查詢性能:StarRocks 與 Apache Iceberg 的強強聯合

Apache Iceberg 是一種開源的表格格式&#xff0c;專為在數據湖中存儲大規模分析數據而設計。它與多種大數據生態系統組件高度兼容&#xff0c;相較于傳統的 Hive 表格格式&#xff0c;Iceberg 在設計上提供了更高的性能和更好的可擴展性。它支持 ACID 事務、Schema 演化、數據…

leetcode-設計LRU緩存結構-112

題目要求 思路 雙鏈表哈希表 代碼實現 struct Node{int key, val;Node* next;Node* pre;Node(int _key, int _val): key(_key), val(_val), next(nullptr), pre(nullptr){} };class Solution { public: unordered_map<int, Node*> hash; Node* head; Node* tail; int …

普源DHO924示波器OFFSET設置

一、簡介 示波器是電子工程師常用的測量工具之一&#xff0c;能夠直觀地顯示電路信號的波形和參數。普源DHO924是一款優秀的數字示波器&#xff0c;具有優異的性能和易用性。其中OFFSET功能可以幫助用戶調整信號的垂直位置&#xff0c;使波形更清晰易讀。本文將詳細介紹DHO924…