軟件測試常用設計模式

設計模式的重要原則就是:高內聚、低耦合;通常程序結構中各模塊的內聚程度越高,模塊間的耦合程度就越低。

數據驅動測試: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天內學完,從軟件測試基礎到項目實戰一套全通關!

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

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

相關文章

基于 Fluent-Bit 和 Fluentd 的分布式日志采集與處理方案

#作者:任少近 文章目錄 需求描述系統目標系統組件Fluent BitFluentdKafka 數據流與處理流程日志采集日志轉發到 Fluentd日志處理與轉發到 KafkaKafka 作為消息隊列 具體配置Fluent-Bit的CM配置Fluent-Bit的DS配置Fluentd的CM配置Fluentd的DS配置Kafka查詢結果 需求…

正則表達式(Regular Expression,簡稱 Regex)

一、5w2h(七問法)分析正則表達式 是的,5W2H 完全可以應用于研究 正則表達式(Regular Expressions)。通過回答 5W2H 的七個問題,我們可以全面理解正則表達式的定義、用途、使用方法、適用場景等&#xff0c…

爬蟲獲取1688關鍵字搜索接口的實戰指南

在當今電商行業競爭激烈的環境下,數據的重要性不言而喻。1688作為國內領先的B2B電商平臺,擁有海量的商品信息,這些數據對于商家的市場分析、選品決策、價格策略制定等都有著重要的價值。本文將詳細介紹如何通過爬蟲技術獲取1688關鍵字搜索接口…

如何快速解決django存儲session變量時出現的django.db.utils.DatabaseError錯誤

我們在學習django進行web編程的時候,有時需要將一些全局變量信息存儲在session中,但使用過程中,卻發現會引起數據庫的報錯。通過查看django源碼信息,發現其對session信息進行了ORM映射,如果數據庫中不存在對應的表信息…

C語言復習--assert斷言

assert.h 頭?件定義了宏 assert() ,?于在運?時確保程序符合指定條件,如果不符合,就報錯終止運行。這個宏常常被稱為“斷?”。 assert(p ! NULL); 代碼在程序運?到這??語句時,驗證變量 p 是否等于 NULL 。如果確實不等于 NU…

STL新增內容

文章目錄 C11 中的 STL 新增內容容器算法 C14 中的 STL 新增內容容器算法 C17 中的 STL 新增內容容器算法 C20 中的 STL 新增內容容器算法 C11 中的 STL 新增內容 容器 std::array:這是一個固定大小的數組容器,和原生數組類似,但具備更好的…

C#測試Excel開源組件ExcelDataReader

使用微軟的com組件Microsoft.office.Interop.Excel讀寫Excel文件雖然可用,但是列多、行多的時候速度很慢,之前測試過Sylvan.Data.Excel包的用法,如果只是讀取Excel文件內容的話,還可以使用ExcelDataReader包,后者是C#開…

位置編碼匯總 # 持續更新

看了那么多還沒有講特別好的,GPT老師講的不錯關于三角函數編碼。 一、 手撕transformer常用三角位置編碼 GPT說:“低維度的編碼(例如,第一個維度)可以捕捉到大的位置差異,而高維度的編碼則可以捕捉到小的細…

Java 模塊系統深度解析

Java 模塊系統深度解析 Java 模塊系統(Java Platform Module System, JPMS)是 Java 9 引入的一項重要特性,它從根本上改變了 Java 應用程序的打包和依賴管理方式。本文將全面介紹 Java 模塊系統的核心概念、優勢及實際應用。 一、為什么需要…

藍橋杯杯賽-日期模擬

知識點 處理日期 1. 按天枚舉日期:逐天遍歷起始日期到結束日期范圍內的每個日期。 2. 處理閏年:正確判斷閏年條件。閏年定義為:年份 滿足以下任意一個條件:(閏年的2月只有29天) 滿足下面一個條件就是閏年 1> 是 400 的倍數…

.Net中對稱加密的實現

常見對稱加密算法及優缺點 1. DES(Data Encryption Standard) 優點:是最早被廣泛應用的加密算法,算法公開,實現簡單,效率較高。缺點:密鑰長度較短(56 位),在…

SQLMesh調度系統深度解析:內置調度與Airflow集成實踐

本文系統解析SQLMesh的兩種核心調度方案:內置調度器與Apache Airflow集成。通過對比兩者的適用場景、架構設計和操作流程,為企業構建可靠的數據分析流水線提供技術參考。重點內容包括: 內置調度器的輕量級部署與性能優化策略Airflow集成的端到…

centos線程數查看

查看當前最大支持的線程數 cat /proc/sys/kernel/threads-max當前用戶進程可以創建的最大線程數(包括子進程) [rootlocalhost tmp]# ulimit -u得到當前實際的線程數 [rootlocalhost tmp]# ps -eLf | wc -l統計每個進程的總線程數前20的數據 [rootloc…

【大模型】視覺語言模型:Qwen2.5-VL的使用

官方github地址:https://github.com/QwenLM/Qwen2.5-VL 目錄 Qwen家族的最新成員:Qwen2.5-VL 主要增強功能 模型架構更新 快速開始 使用Transformers聊天 Docker Qwen家族的最新成員:Qwen2.5-VL 主要增強功能 強大的文檔解析功能&am…

HDMI接口設計

1. HDMI簡介 HDMI(High Definition Multimedia Interface)高清多媒體接口,是首個支持在單線纜上傳輸,不經過壓縮的全數字高清晰度、多聲道音頻和智能格式與控制命令數據的數字接口。這個接口可以同時傳輸視頻信號、音頻信號和控制信號。 從上圖里面可以看到HDMI有3組數據信號…

C/C++ JSON 庫綜合對比及應用案例(六)

第六部分:C/C JSON 庫綜合對比及應用案例 📢 快速掌握 JSON!文章 視頻雙管齊下 🚀 如果你覺得閱讀文章太慢,或者更喜歡 邊看邊學 的方式,不妨直接觀看我錄制的 JSON 課程視頻!🎬 …

LXC 導入(Rockylinux,almalinux,oraclelunx,debian,ubuntu,openEuler,kail,opensuse)

前提要求 ubuntu下安裝lxd 參考Rockylinux下安裝lxd 參考LXC 源替換參考LXC 容器端口發布參考LXC webui 管理<

Spring MVC 頁面跳轉方案與區別

SpringMVC 的頁面跳轉方案主要分為 ?轉發&#xff08;Forward&#xff09;? 和 ?重定向&#xff08;Redirect&#xff09;? 兩類&#xff0c;具體實現方式和區別如下&#xff1a; 一、頁面跳轉方案 1. ?轉發&#xff08;Forward&#xff09;? 默認方式?&#xff1a;直…

基于Spring Boot的輕型卡車零部件銷售平臺的設計與實現(LW+源碼+講解)

專注于大學生項目實戰開發,講解,畢業答疑輔導&#xff0c;歡迎高校老師/同行前輩交流合作?。 技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;…

高性能計算面經

高性能計算面經 C八股文真景一面涼經自我介紹&#xff0c;介紹一下你做過的加速的模塊(疊噪&#xff0c;噪聲跟原圖有什么關系&#xff1f;)OpenGL和OpenCL有什么區別&#xff1f;**1. 核心用途****2. 編程模型****3. 硬件抽象****4. API設計****5. 典型應用場景****6. 互操作性…