參數化數據驅動 數據驅動測試也稱


pytest測試框架-數據驅動 yaml/excel/csv/json
測試驅動在自動化測試中的應用場景:
【參數化數據驅動 數據驅動測試也稱】 實現讀yaml文件,先創建env.yml文件配置測試數據
結果示例:
常用的讀取方式有:xlrd、xlwings、pandas、openpyxl
黑盒測試與白盒測試的區別?
雖然下面說的這么多,但只要能說出自己最理解的幾點就可以了! 白盒測試:依據:LLD(詳細設計)目的:利用不同的邏輯率到達某種程度的代碼覆蓋率(考慮全部程度的代碼覆蓋率會增加本) 步驟:靜態分析和動態分析優點:迫使測試人員去了解軟件的實現 檢測代碼中的每條路徑和分支 揭示隱藏在代碼中的錯誤 對代碼的測試進行比較徹底缺點:白盒測試投入較大,成本較高 白盒測試不驗證規格的正確性 無法檢查代碼中遺漏的路徑和數據敏感性錯誤黑盒測試:依據:SRS(Software requriement specification軟件需求說明書)目的:從質量特性的不同方面,對軟件進行測試,檢測該軟件是否實現了SRS中所有顯示和隱式的需求步驟:構造輸入和預期輸出,通過一定的操作步驟來測試軟件 。優點:對較大的代碼單元來說,黑盒測試比白盒測試的效率高 測試人員不需要了解實現得細節,包括特定的編程語言 測試人員和編程人員是相互獨立的 從用戶的角度進行測試,很容易被接受和理解 有助于暴露任何與閨閣不一致或者歧異的地方 測試用例可以在規格完成后馬上進行缺點:不能測試程序內部特定部位 如果程序未執行的代碼無法發現 沒有清晰的和簡明的規格,測試用例很難被設計
參數化數據驅動
在自動化測試中,經常會遇到如下場景:
這里只是隨意找了兩個典型的例子,相信大家都有遇到過很多類似的場景 。總結下來,就是在我們的自動化測試腳本中存在參數,并且我們需要采用不同的參數去運行 。
經過概括,參數基本上分為兩種類型:
然后,對于參數而言,我們可能具有一個參數列表,在腳本運行時需要按照不同的規則去取值,例如順序取值、隨機取值、循環取值等等 。
這就是典型的參數化和數據驅動 。
如需對某測試用例(testcase)實現參數化數據驅動,需要使用Parameters函數,定義參數名稱并指定數據源取值方式 。
參數名稱的定義分為兩種情況:
數據源指定支持三種方式:
三種方式可根據實際項目需求進行靈活選擇,同時支持多種方式的組合使用 。假如測試用例中定義了多個參數,那么測試用例在運行時會對參數進行笛卡爾積組合,覆蓋所有參數組合情況 。
使用方式概覽如下:
將參數名稱定義和數據源指定方式進行組合,共有 6 種形式 。現分別針對每一類情況進行詳細說明 。
對于參數列表比較小的情況,最簡單的方式是直接在 pytest 中指定參數列表內容 。
例如,對于獨立參數 password,參數列表為 ['aA123456','A123456',''],那么就可以按照如下方式進行配置:
進行該配置后,測試用例在運行時就會對 password 實現數據驅動,即分別使用 ['aA123456','A123456',''] 三個值運行測試用例 。運行日志如下所示:
可以看出,測試用例總共運行了 3 次,并且每次運行時都是采用的不同 password 。
對于已有參數列表,并且數據量比較大的情況,比較適合的方式是將參數列表值存儲在 CSV 數據文件中 。
對于 CSV 數據文件,需要遵循如下幾項約定的規則:
例如,password 的參數取值為"aA123456","A123456","" ,那么我們就可以創建 password.csv,并且在文件中按照如下形式進行描述 。
然后在 pytest 測試用例文件中,就可以通過內置的 Parameterize(可簡寫為 P)函數引用 CSV 文件 。
假設項目的根目錄下有 data 文件夾,password.csv 位于其中,那么 password.csv 的引用描述如下:
即 Parameters 函數的參數(CSV 文件路徑)是相對于項目根目錄的相對路徑 。當然,這里也可以使用 CSV 文件在系統中的絕對路徑,不過這樣的話在項目路徑變動時就會出現問題,因此推薦使用相對路徑的形式 。
對于沒有現成參數列表,或者需要更靈活的方式動態生成參數的情況,可以通過在 debugtalk.py 中自定義函數生成參數列表,并在 pytest 引用自定義函數的方式 。
例如,若需對 password 進行參數化數據驅動,那么就可以在 debugtalk.py 中定義一個函數,返回參數列表 。
然后,在 pytest 的 Parameters 中就可以通過調用自定義函數的形式來指定數據源 。
另外,通過函數的傳參機制,還可以實現更靈活的參數生成功能,在調用函數時指定需要生成的參數個數 。
對于具有關聯性的多個參數,例如 username 和 password,那么就可以按照如下方式進行配置:
進行該配置后,測試用例在運行時就會對 password 和 error_code 實現數據驅動,即分別使用
{"error_code": "0", "password": "aA123456"}、
{"error_code": "3007", "password": "A123456"}、
{"error_code": "3001", "password": ""}
運行 3 次測試,并且保證參數值總是成對使用 。
對于具有關聯性的多個參數,例如 username 和 password,那么就可以創建 username_password_errorCode.csv,并在文件中按照如下形式進行描述 。
然后在 pytest 測試用例文件中,就可以通過內置的 parameterize(可簡寫為 P)函數引用 CSV 文件 。
假設項目的根目錄下有 data 文件夾,username_password_errorCode.csv 位于其中,那么 username_password_errorCode.csv 的引用描述如下:
對于具有關聯性的多個參數,實現方式也類似 。
例如,在 debugtalk.py 中定義函數 get_account,生成指定數量的賬號密碼參數列表 。
那么在 pytest 的 Parameters 函數中就可以調用自定義函數生成指定數量的參數列表 。
完成以上參數定義和數據源準備工作之后,參數化運行與普通測試用例的運行完全一致 。
采用 hrun 命令運行自動化測試:
采用 locusts 命令運行性能測試:
區別在于,自動化測試時遍歷一遍后會終止執行,性能測試時每個并發用戶都會循環遍歷所有參數 。
自動化測試中,數據驅動是什么?
 數據驅動的自動化測試框架是這樣的一個框架,從某個數據文件(例如ODBC源文件、Excel文件、Csv文件、ADO對象文件等)中讀取輸入、輸出的測試數據,然后通過變量傳入事先錄制好的或手工編寫的測試腳本中 。其中,這些變量被用作傳遞(輸入/輸出)用來驗證應用程序的測試數據 。在這個過程中,數據文件的讀取、測試狀態和所有測試信息都被編寫進測試腳本里;測試數據只包含在數據文件中,而不是腳本里,測試腳本只是一個“驅動”,或者說是一個傳送數據的機制 。
數據驅動測試的介紹
數據驅動測試,即黑盒測試(Black-box Testing),又稱為功能測試,是把測試對象看作一個黑盒子 。利用黑盒測試法進行動態測試時,需要測試軟件產品的功能,不需測試軟件產品的內部結構和處理過程 。數據驅動測試注重于測試軟件的功能性需求,也即數據驅動測試使軟件工程師派生出執行程序所有功能需求的輸入條件 。數據驅動測試并不是白盒測試的替代品,而是用于輔助白盒測試發現其他類型的錯誤 。

請問軟件測試中的黑盒、白盒測試指的是什么呢?
 白盒測試:
也稱結構測試或邏輯驅動測試,它是知道產品內部工作過程,可通過測試來檢測產品內部動作是否按照規格說明書的規定正常進行,按照程序內部的結構測試程序,檢驗程序中的每條通路是否都有能按預定要求正確工作,而不顧它的功能 。
 白盒測試常用方法
基本覆蓋標準:邏輯驅動、循環、基路測試等,主要用于軟件驗證 。
“白盒”法全面了解程序內部邏輯結構、對所有邏輯路徑進行測試 。
“白盒”法是窮舉路徑測試 。在使用這一方案時,測試者必須檢查程序的內部結構,從檢查程序的邏輯著手,得出測試數據 。貫穿程序的獨立路徑數是天文數字 。但即使每條路徑都測試了仍然可能有錯誤 。
黑盒測試:
也稱功能測試、數據驅動測試,它將被測軟件看作一個打不開的黑盒,主要根據功能需求設計測試用例,進行測試 。
概念:黑盒測試是從一種從軟件外部對軟件實施的測試,也稱功能測試或基于規格說明的測試 。其基本觀點是:任何程序都可以看作是從輸入定義域到輸出值域的映射,這種觀點將被測程序看作一個打不開的黑盒,黑盒里面的內容(實現)是完全不知道的,只知道軟件要做什么 。因無法看到盒子中的內容,所以不知道軟件是如何實現的,也不關心黑盒里面的結構,只關心軟件的輸入數據和輸出結果 。
檢測軟件功能能否按照需求規格說明書的規定正常工作,是否有功能遺漏;
檢測是否有人機交互錯誤,是否有數據結構和外部數據庫訪問錯誤,是否能恰當地接收數據并保持外部信息(如數據庫或文件)等的完整性;
檢測行為、性能等特性是否滿足要求等; 檢測程序初始化和終止方面的錯誤等 。
關于數據驅動測試和數據驅動測試也稱的內容就分享到這兒!更多實用知識經驗,盡在 m.apearl.cn