設計模式的重要原則就是:高內聚、低耦合;通常程序結構中各模塊的內聚程度越高,模塊間的耦合程度就越低。
數據驅動測試:Data Driven Testing,簡稱DDT;
數據驅動指的是從數據文件(如數據庫、Excel文件、Csv文件等)中讀取輸入數據并將數據以參數的形式輸入腳本測試,這些變量被用作傳遞(輸入/輸出)用來驗證應用程序的測試數據。不同的測試用例使用不同類型的數據文件。數據驅動模式實現了數據和腳本分離,相對于錄制與回放測試技術,數據驅動測試極大地提高了腳本利用率和可維護性,但是對于界面變化較大的情景不適合數據驅動測試。
數據驅動的設計步驟:
編寫測試腳本,腳本需要支持程序對象、文件或數據庫讀入測試數據
將測試腳本使用的測試數據存入程序對象、文件或者數據庫等外部介質中
運行腳本,循環調用存儲在外部介質的測試數據。
驗證所有的測試結果是否符合期望結果
如:pytest 測試框架快速搭建 的 搜索接口測試實例,就是數據驅動設計模式。
數據驅動測試的多行測試數據對應一個測試腳本(或者說對應于一個關鍵字的實現,例如登錄功能的測試,可以有用戶名長度、密碼長度、密碼字符類型、大小寫等多條測試用例,但是都是對應登錄一個關鍵字),然后用不同的測試數據反復運行腳本(即每一行數據的處理邏輯是一樣的)。如果需要做不同類型的測試,需要新增測試腳本(往往意味著新的測試數據格式)或者沿用同一個測試腳本,但是要做邏輯判斷來確定執行哪一種測試。
核心:就是讓測試與數據分離。
關鍵字驅動測試:Keyword Driven Testing,簡稱KDT;
關鍵字驅動的自動化測試(也被稱為表驅動測試或基于動作詞的測試),是數據驅動自動化測試的變種,關鍵字驅動的自動化測試框架建立在數據驅動手段之上,表中包含指令(關鍵詞),而不只是數據。這些測試被開發成使用關鍵字的數據表,它們獨立于執行測試的自動化工具。關鍵字驅動的自動化測試是對數據驅動的自動化測試的有效改進和補充;關鍵字驅動將數據域與腳本分離、界面元素與內部對象分離測試過程與實現細節分離。關鍵字驅動的測試邏輯為按照關鍵字進行分解得到數據文件,常用的關鍵字主要包括三類:被操作對象(Item)、操作(Operation)和值(value),用面向對象形式可將其表現為Item.Operation(Value);將測試邏輯按照這些關鍵字進行分解,形成數據文件。測試框架低層負責解釋這些關鍵字,并完成相應的指令操作。 ?
將測試用例的步驟(元素)和用例分離。關鍵字驅動表示把項目中的一些邏輯封裝成關鍵字(一個函數名)。例如login、 register、點擊、打開瀏覽器、等待、輸入,進行設置變量, 調用不同的關鍵字組合實現不同的業務邏輯,從而驅動測試用例的執行。
關鍵字驅動的框架基本工作是將測試用例分成4個不同的部分,測試步驟、測試對象、測試對象執行的動作、測試數據。
示例:
testCase:testName:#正確地注冊用戶pretc:step:open 'http://localhost:8080/register'click id=reginput id=username value='zhangsan'input id=password value='abcdefg'input id=checkpass value='abcdefg'click class=regbuttonexpected: #預期結果code 200message 注冊成功
KDT:
關鍵字:Item.Operation(Value)
Operation:input、click、drag、move等
Item:元素的標簽、元素的定位方式;
value:數據
本質是面向對象編程思維的一種體現,其實就是將代碼,基于業務的實際使用場景,通過合理的封裝,然后基于封裝好的函數,通過調用這些函數驅動業務的執行。沒有固定形式,
頁面對象模式:Page Object Model,簡稱POM;
selenium在測試一個web頁面時,通常是針對一個個頁面進行測試的,基于此前提,我們可以把一個頁面中的對象和操作進行封裝,這就是POM;不難理解,POM本質就是將頁面對象和操作進行封裝,作為一個對象庫而存在,這樣在測試腳本中直接調用方法來進行相關操作并傳遞相應的參數即可。
核心:就是讓操作與元素分離。
單例模式:大力魔獸指在程序的生命周期中,只做一次實例化,只分配一塊內存空間,以確保所有操作和調用在同一塊內存空間發生。例如:selenium的webdriver每實例化一次,都會打開一個新的瀏覽器,如果要對多個模塊進行測試,不可能把所有的測試腳本放到同一個類中,因此需要使用單例模式。
單例模式代碼示例:
from selenium import webdriverclass utility:driver = None #定義類級變量,#單例模式,確保只有一個實例在運行#classmethoddef get_webdriver(cls,borwser='chrome'):#如果沒有被實例化,則實例化,否則直接返回;傳參數做瀏覽器兼容if cls.driver is None:if browser=='chrome'cls.driver = webdriver.chrome()return cls.driver
基于組件的測試:Component Based Testing,簡稱CBT;
業務流程測試:Business Process Testing,簡稱BPT;
同時,在這我為大家準備了一份軟件測試視頻教程(含面試、接口、自動化、性能測試等),就在下方,需要的可以直接去觀看。
【2025最新版】字節大牛講的最全最細的自動化測試全套教程!永久白嫖,拿走不謝,全程干貨無廢話!逼自己15天內學完,從軟件測試基礎到項目實戰一套全通關!