解構與重構:自動化測試框架的進階認知之旅

目錄

一、自動化測試的介紹

(一)自動化測試的起源與發展

(二)自動化測試的定義與目標

(三)自動化測試的適用場景

二、什么是自動化測試框架

(一)自動化測試框架的定義

(二)常見自動化測試框架分類

(三)自動化測試框架的核心價值

三、自動化測試框架與普通測試代碼的區別

四、自動化測試框架需要具備的功能

(一)測試用例管理

(二)測試執行控制

(三)依賴管理與環境配置

(四)日志與錯誤處理

(五)結果分析與報告生成

(六)兼容性與可移植性

五、以 Pytest 為例解析自動化測試框架

(一)Pytest 的核心必備功能

(二)Pytest 的擴展功能

(三)Pytest 的架構原理圖

六、什么樣的測試框架才是好的自動化測試框架

(一)易用性

(二)可擴展性

(三)穩定性與可靠性

(四)社區與生態

(五)性能與效率


? 在軟件研發的高速迭代時代,自動化測試早已從 "錦上添花" 變為 "剛需標配"。對于日均接口調用量過億的互聯網服務,或是對穩定性要求苛刻的智能汽車軟件,手工測試的效率與覆蓋率已難以滿足需求。

? 自動化測試通過腳本替代重復勞動,讓測試工程師從 "點擊俠" 蛻變為 "代碼工匠",而自動化測試框架則是打造高效測試體系的核心基建。本文將與大家一起重新認識一下自動化測試框架了解一下自動化測試框架的本質與價值。

一、自動化測試的介紹


(一)自動化測試的起源與發展

在軟件行業發展初期,手工測試占據主導地位。隨著軟件規模的不斷擴大,功能日益復雜,項目迭代速度加快,手工測試在面對頻繁的回歸測試時,效率低下、人力成本高、測試結果不穩定等問題逐漸凸顯。于是,自動化測試應運而生。它最初只是一些簡單的腳本,用于重復執行一些繁瑣的測試任務。隨著技術的發展,自動化測試不斷演進,逐漸形成了成熟的體系和框架。

(二)自動化測試的定義與目標

自動化測試是通過編寫程序或使用工具,讓計算機自動執行測試用例,并對測試結果進行驗證和分析的過程。其核心目標主要有以下幾點:

  • 提高測試效率,減少重復勞動,讓測試人員從繁瑣的手工操作中解放出來,專注于更有價值的測試設計和分析工作。
  • 提升測試的準確性和穩定性,避免人為因素對測試結果的影響。
  • 實現對軟件的全面測試,尤其是在大規模、復雜系統的測試中,能夠覆蓋更多的測試場景和用例。
  • 支持持續集成和持續部署(CI/CD),確保軟件在每次變更后都能快速、可靠地進行測試,加快產品的發布周期。

(三)自動化測試的適用場景

并非所有的測試場景都適合采用自動化測試,它更適用于以下情況:

場景類型?

典型案例?

自動化收益?

重復執行?

每日接口冒煙測試?

節省 90% 執行時間?

數據敏感?

批量數據校驗?

避免人工誤判?

環境復雜?

多設備 UI 兼容性測試?

覆蓋 80% 以上設備組合?

性能壓測?

高并發接口測試?

精準定位吞吐量瓶頸?

以我在互聯網風控行業和汽車行業的項目經驗為例,在互聯網風控系統中,每天都需要對大量的風控規則進行驗證,這些規則的測試用例相對穩定且需要頻繁執行,自動化測試就發揮了巨大的作用;而在汽車行業的軟件測試中,針對車載 APP 的兼容性測試,需要在不同的車載系統和硬件設備上進行,自動化測試能夠高效地完成這些任務。


二、什么是自動化測試框架

(一)自動化測試框架的定義

自動化測試框架是一個集成了多種工具、庫和規范的軟件系統,它為自動化測試提供了一個結構化的環境,使得測試人員能夠更方便、高效地編寫、管理和執行測試用例。它不僅僅是一些測試腳本的集合,而是包含了測試用例管理、測試執行、結果分析、日志記錄、報告生成等多個功能模塊,形成了一個完整的測試體系。

(二)常見自動化測試框架分類

根據不同的測試對象和場景,自動化測試框架可以分為多種類型:

  • 單元測試框架:主要用于測試軟件中的最小可測試單元,如函數、類等。在 Python 技術棧中,常見的單元測試框架有 unittest、pytest 等。
  • 接口測試框架:用于測試軟件系統的接口,包括 HTTP 接口、RPC 接口等。通常會結合 requests、urllib3 等庫來實現,例如可以基于 pytest 搭建接口測試框架。
  • UI 自動化測試框架:針對軟件的用戶界面進行測試,模擬用戶在界面上的操作,如點擊、輸入、滑動等。在 APP 自動化測試中,常用的框架有 Appium;而對于 Web 界面,Selenium 是廣泛使用的工具,結合 pytest 可以構建功能強大的 UI 自動化測試框架。
  • 性能測試框架:用于評估軟件系統的性能指標,如響應時間、吞吐量、并發能力等。常見的性能測試框架有 JMeter、Locust 等,在 Python 中也可以使用 Locust 來編寫性能測試腳本。

(三)自動化測試框架的核心價值

一個好的自動化測試框架能夠為測試工作帶來諸多好處:

  • 標準化和規范化:提供統一的測試編寫規范和流程,確保測試用例的一致性和可維護性。例如,規定測試用例的命名規則、斷言方式、日志記錄格式等。
  • 復用性和擴展性:通過封裝公共的功能模塊,如數據庫操作、網絡請求、頁面元素定位等,使得測試人員無需重復編寫代碼,提高開發效率。同時,框架的架構設計應具備良好的擴展性,方便添加新的功能和支持新的測試場景。
  • 降低測試成本:雖然搭建自動化測試框架需要一定的前期投入,但從長遠來看,它能夠大大減少測試人員的重復勞動,提高測試效率,降低人力成本和時間成本。
  • 提升測試質量:框架提供的豐富功能,如詳細的日志記錄、準確的錯誤定位、全面的結果分析等,有助于測試人員更快地發現和解決問題,提升軟件的質量。

三、自動化測試框架與普通測試代碼的區別


為了更清晰地理解自動化測試框架的特點,我們將其與普通測試代碼進行對比,如下表所示:

對比維度

普通測試代碼

自動化測試框架

可維護性

通常是針對單個測試場景編寫的腳本,結構松散,缺乏統一的規范和組織。隨著測試用例的增加,代碼會變得難以維護,修改一個地方可能會影響多個測試用例。

具有清晰的架構和模塊劃分,遵循一定的設計模式和規范。測試用例、公共函數、配置文件等分開管理,便于維護和更新。當需求發生變化時,只需在相應的模塊中進行修改,不會對整個框架造成太大影響。

復用性

代碼復用率低,很多公共功能需要在每個測試腳本中重復編寫,例如數據庫連接、登錄操作等。

高度封裝公共功能,形成可復用的模塊或庫。測試人員可以直接調用這些公共模塊,避免重復開發,提高開發效率。例如,在接口測試框架中,登錄功能可以封裝成一個公共函數,供所有需要登錄的測試用例調用。

擴展性

擴展性較差,當需要增加新的測試功能或支持新的測試場景時,需要對現有代碼進行大量修改,甚至重新編寫。

設計時考慮了擴展性,提供了插件機制或擴展接口,方便添加新的功能模塊。例如,pytest 框架可以通過安裝插件來擴展其功能,如生成測試報告、支持分布式測試等。

功能完整性

通常只包含簡單的測試邏輯和斷言,缺乏測試用例管理、日志記錄、報告生成等功能。測試結果的分析和定位需要手動進行,效率低下。

集成了豐富的功能模塊,具備測試用例管理(如分組、排序、過濾)、測試執行控制(如并行執行、重試機制)、日志記錄(詳細記錄測試過程中的信息)、結果分析(自動判斷測試結果是否通過)、報告生成(生成美觀、詳細的測試報告)等功能,形成了一個完整的測試生態系統。

團隊協作

適合個人或小規模團隊使用,代碼風格和規范因人而異,團隊成員之間的協作成本較高。

提供了統一的開發規范和協作機制,便于團隊成員共同開發和維護。例如,框架中規定了代碼提交的流程、分支管理策略、單元測試的要求等,確保團隊成員能夠高效協作。

通過以上對比可以看出,自動化測試框架是普通測試代碼的升級和擴展,它解決了普通測試代碼在可維護性、復用性、擴展性和功能完整性等方面的不足,是實現高效、高質量自動化測試的關鍵。

四、自動化測試框架需要具備的功能


一個完整的自動化測試框架需要具備以下核心功能,這些功能相互協作,共同構成了框架的基礎:

(一)測試用例管理

  • 用例組織與分類:能夠按照不同的維度對測試用例進行組織和分類,如按照功能模塊、測試類型(冒煙測試、回歸測試、性能測試等)、優先級等。例如,在框架中可以創建不同的目錄結構來存放不同模塊的測試用例,每個測試用例文件中可以通過標簽或注釋來標記測試類型和優先級。
  • 用例編寫與維護:提供方便的測試用例編寫方式,支持多種斷言方式和數據驅動測試。數據驅動測試可以通過讀取外部文件(如 Excel、JSON、YAML 等)中的數據來生成多個測試用例,提高測試用例的復用性。例如,使用 pytest 的參數化功能,可以輕松實現數據驅動測試。
  • 用例篩選與執行:能夠根據不同的條件篩選出需要執行的測試用例,如按標簽、模塊、優先級等。在持續集成環境中,通常只需要執行冒煙測試用例或本次變更相關的測試用例,通過框架的用例篩選功能可以快速實現。

(二)測試執行控制

  • 執行流程管理:控制測試用例的執行順序,支持順序執行、并行執行等多種執行方式。并行執行可以提高測試效率,尤其是在測試用例之間相互獨立的情況下。例如,pytest 可以通過插件實現多線程或多進程并行執行測試用例。
  • 重試機制:對于一些偶發失敗的測試用例,框架應具備重試機制,自動重新執行失敗的用例,減少人為干預。可以設置重試的次數和間隔時間,避免因環境不穩定等因素導致的誤判。
  • 斷點調試:方便測試人員在測試執行過程中進行斷點調試,查看變量值、調用棧等信息,快速定位問題。例如,在 Python 中使用 pdb 調試器結合自動化測試框架,可以實現對測試腳本的調試。

(三)依賴管理與環境配置

  • 環境配置管理:能夠輕松配置不同的測試環境,如開發環境、測試環境、生產環境等。通過讀取環境配置文件,框架可以自動加載相應的配置信息,如數據庫連接參數、接口地址、瀏覽器驅動路徑等。
  • 依賴注入:在測試用例中,經常需要依賴一些外部資源,如數據庫、文件系統、網絡服務等。框架應提供依賴注入機制,方便測試人員管理這些依賴,降低測試用例與依賴資源之間的耦合度。例如,使用 fixture(夾具)機制來管理測試用例的前置條件和后置清理操作,這是 pytest 框架的一個重要特性。
  • 環境清理:在測試用例執行完畢后,能夠自動清理測試過程中產生的垃圾數據和臨時文件,確保測試環境的一致性和純凈性。例如,在數據庫測試中,每個測試用例執行完畢后,應刪除測試過程中創建的測試數據,避免影響其他測試用例的執行。

(四)日志與錯誤處理

  • 詳細日志記錄:記錄測試執行過程中的詳細信息,包括測試用例的開始和結束時間、輸入輸出數據、異常信息等。日志可以幫助測試人員在測試失敗時快速定位問題,分析測試過程中的行為。例如,在框架中可以使用 Python 的 logging 模塊來實現日志功能,將日志輸出到文件或控制臺。
  • 異常捕獲與處理:能夠捕獲測試執行過程中出現的異常,并進行適當的處理,如記錄異常信息、跳過當前測試用例、終止測試執行等。同時,框架應提供友好的錯誤提示信息,幫助測試人員理解異常發生的原因。
  • 錯誤定位:當測試用例失敗時,框架應能夠準確地定位到失敗的代碼行,并提供相關的上下文信息,如變量值、調用棧等,方便測試人員進行調試和修復。

(五)結果分析與報告生成

  • 結果判斷:自動判斷測試用例的執行結果是否通過,根據斷言條件來驗證測試預期是否滿足。斷言是自動化測試中非常重要的環節,它決定了測試用例的正確性。
  • 統計與分析:對測試結果進行統計和分析,如計算測試用例的通過率、失敗率、執行時間等指標。通過這些指標,測試人員可以了解測試的整體情況,評估軟件的質量。
  • 報告生成:生成美觀、詳細的測試報告,報告應包含測試基本信息(如測試時間、環境、執行人員等)、測試結果統計、失敗用例詳細信息(如錯誤信息、日志截圖等)。常見的測試報告格式有 HTML、XML、JSON 等,例如 pytest 可以通過 pytest - html 插件生成 HTML 格式的測試報告,通過 allure 插件生成更美觀、功能更強大的報告。

(六)兼容性與可移植性

  • 多平臺支持:能夠在不同的操作系統(如 Windows、Linux、macOS)上運行,支持不同的瀏覽器(如 Chrome、Firefox、Edge)和設備(如手機、平板、車載終端等)。例如,Appium 框架可以同時支持 iOS 和 Android 系統的 APP 自動化測試。
  • 多語言支持:對于一些大型團隊或復雜項目,可能需要支持多種編程語言的測試腳本。雖然我們這里主要討論 Python 技術棧,但優秀的自動化測試框架通常具有良好的開放性,能夠與其他語言的工具和庫進行集成。
  • 版本兼容性:能夠兼容不同版本的開發框架、測試工具和依賴庫,確保在軟件版本升級時,框架能夠穩定運行,減少因版本不兼容導致的問題。

五、以 Pytest 為例解析自動化測試框架


Pytest教程可移步我的專欄:?https://blog.csdn.net/weixin_40025666/category_12080951.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12080951&sharerefer=PC&sharesource=weixin_40025666&sharefrom=from_link

(一)Pytest 的核心必備功能

????????1.簡潔的測試用例編寫

Pytest 采用非常簡潔的語法,不需要像 unittest 那樣創建測試類和繼承 TestCase 類,只需要編寫普通的函數即可,函數名以 "test_" 開頭,測試方法中的參數可以直接使用 fixture。以下是一個簡單的 Pytest 測試用例示例:

def test_addition():result = 1 + 1assert result == 2, "加法運算失敗"

????????2.強大的 fixture 機制

fixture 是 Pytest 的一大特色,它用于管理測試用例的前置條件和后置清理操作,實現了測試用例之間的依賴管理和資源共享。fixture 可以通過 @fixture 裝飾器來定義,然后在測試用例中直接作為參數傳入。例如,以下是一個用于數據庫連接的 fixture:

import pytest
import psycopg2@pytest.fixture(scope="module")
def db_connection():connection = psycopg2.connect(dbname="test_db",user="user",password="password",host="localhost")yield connectionconnection.close()def test_query_data(db_connection):cursor = db_connection.cursor()cursor.execute("SELECT * FROM users")data = cursor.fetchall()assert len(data) > 0, "查詢結果為空"

在這個示例中,db_connection fixture 在模塊級別(scope="module")創建數據庫連接,所有使用該 fixture 的測試用例共享同一個連接,測試結束后關閉連接,實現了資源的高效管理。

????????3.靈活的參數化測試

Pytest 支持通過 @parametrize 裝飾器實現參數化測試,允許使用不同的輸入數據運行同一個測試用例,大大提高了測試用例的覆蓋率。例如,測試一個加法函數:

import pytest@pytest.mark.parametrize("a, b, expected", [(1, 2, 3),(0, 0, 0),(-1, 1, 0),
])
def test_add(a, b, expected):assert a + b == expected

這樣,一個測試用例就可以覆蓋多種輸入情況,減少了重復編寫測試用例的工作量。

????????4.測試發現與執行控制

Pytest 能夠自動發現項目中的測試用例,無需手動配置測試套件。它會在指定的目錄下查找所有以 "test_" 開頭的文件和函數。同時,支持通過命令行參數靈活控制測試用例的執行,如指定執行某個文件、某個測試函數、按標簽篩選等。例如,執行所有標記為 "smoke" 的測試用例:

pytest -m smoke

(二)Pytest 的擴展功能

????????1.豐富的插件生態

Pytest 擁有龐大的插件生態系統,通過安裝不同的插件可以擴展其功能,滿足各種不同的測試需求。以下是一些常用的插件:

  • pytest-html:生成美觀的 HTML 格式測試報告,包含測試結果統計、失敗用例詳細信息、日志記錄等。
  • pytest-allure:生成更強大的測試報告,支持豐富的可視化效果,如趨勢圖、餅圖等,還可以集成到 CI/CD 系統中。
  • pytest-xdist:實現測試用例的并行執行,提高測試效率,尤其適合大規模測試套件。
  • pytest-mock:用于模擬和補丁對象,方便在測試中處理依賴關系,例如模擬數據庫連接、網絡請求等。
  • pytest-django:專門用于 Django 框架的測試,提供了對 Django 模型、視圖、表單等的支持。

????????2.與其他工具的集成

Pytest 可以輕松與其他測試工具和庫集成,形成強大的自動化測試解決方案。例如,在接口測試中,可以結合 requests 庫發送 HTTP 請求,使用 pytest 進行測試用例的管理和執行;在 UI 自動化測試中,可以與 Selenium、Appium 等工具結合,實現對 Web 和 APP 界面的自動化測試。

????????3.自定義標記與鉤子函數

通過自定義標記(mark),可以對測試用例進行分類和標記,方便后續的篩選和執行。同時,Pytest 提供了豐富的鉤子函數(hook function),允許用戶在測試執行的不同階段(如測試開始前、測試用例收集時、測試執行后等)插入自定義的邏輯,實現對框架的高度定制化。例如,可以通過鉤子函數修改測試報告的內容,或者在測試用例失敗時自動截圖保存。

(三)Pytest 的架構原理圖

為了更清晰地理解 Pytest 的工作原理,我們繪制了以下架構原理圖:


在這個架構中,Pytest 首先收集項目中的測試用例,然后根據 fixture 的定義初始化相關的資源和前置條件,接著執行測試用例并進行斷言,最后記錄日志和生成測試報告。插件在各個環節中發揮了重要作用,擴展了框架的功能。


六、什么樣的測試框架才是好的自動化測試框架

(一)易用性

  • 學習成本低:好的測試框架應該具有簡潔明了的文檔和示例,方便新手快速上手。例如,pytest 的文檔非常詳細,并且提供了大量的示例代碼,使得測試人員能夠快速掌握其基本用法。
  • 語法簡潔:測試用例的編寫語法應簡潔易懂,避免繁瑣的代碼結構。像 pytest 不需要復雜的類定義,直接編寫函數即可,大大提高了測試用例的編寫效率。
  • 工具鏈完善:提供配套的工具和插件,方便測試人員進行開發、調試、運行和維護。例如,Pytest 的插件生態系統非常豐富,幾乎可以滿足各種測試需求。

(二)可擴展性

  • 插件機制:支持通過插件或擴展接口添加新的功能,而無需修改框架的核心代碼。這樣可以讓框架隨著技術的發展和項目的需求不斷進化,保持長久的生命力。
  • 開放的架構:框架的架構設計應具有良好的開放性,能夠方便地與其他工具和庫進行集成。例如,能夠輕松集成持續集成工具(如 Jenkins、GitLab CI)、缺陷管理系統(如 Jira、Bugzilla)等。
  • 自定義能力:允許用戶自定義測試流程、斷言方式、報告格式等,滿足不同項目的特殊需求。例如,通過 Pytest 的鉤子函數,用戶可以自定義測試用例的收集規則、執行流程和結果處理方式。

(三)穩定性與可靠性

  • 健壯的核心:框架的核心代碼應經過充分的測試和驗證,能夠處理各種異常情況,避免在測試執行過程中出現框架本身的錯誤。
  • 兼容性強:能夠兼容不同版本的開發框架、測試工具和運行環境,確保在項目的不同階段都能穩定運行。
  • 準確的結果判斷:斷言機制應準確可靠,能夠正確判斷測試用例的執行結果,避免誤判和漏判。

(四)社區與生態

  • 活躍的社區:擁有龐大的用戶群體和活躍的社區,能夠及時獲得技術支持和解決方案。當遇到問題時,可以通過社區論壇、技術博客、問答平臺等獲取幫助。
  • 豐富的生態系統:周邊生態豐富,包括大量的插件、教程、最佳實踐等,能夠降低框架的使用成本和學習成本。例如,Pytest 的社區非常活躍,相關的教程和示例隨處可見,插件數量也非常多。
  • 持續的更新與維護:框架的開發團隊應持續對框架進行更新和維護,修復漏洞,添加新功能,以適應技術的發展和用戶的需求。

(五)性能與效率

  • 快速的執行速度:在處理大規模測試套件時,能夠高效地執行測試用例,支持并行執行、增量測試等功能,減少測試的等待時間。
  • 資源利用率高:合理管理測試過程中的資源,如內存、CPU、網絡連接等,避免資源泄漏和浪費,確保測試環境的穩定和高效。

自動化測試框架是軟件自動化測試的核心支撐,它不僅僅是一個工具,更是一種測試思想和方法論的體現。從最初的簡單腳本到如今功能強大、架構完善的框架,自動化測試框架在不斷發展和演進。

在實際項目中,選擇和搭建適合自己團隊和項目的自動化測試框架至關重要。我們需要根據項目的需求、技術棧、團隊成員的技能水平等因素綜合考慮,選擇易用性好、可擴展性強、穩定性高的框架。同時,要充分利用框架的功能和生態,結合實際項目經驗,不斷優化和完善測試框架,提高自動化測試的效率和質量。

隨著軟件行業的不斷發展,自動化測試框架也將面臨新的挑戰和機遇。未來,自動化測試框架可能會更加智能化,結合人工智能和機器學習技術,實現測試用例的自動生成、缺陷的智能定位等功能;同時,在云計算、大數據、物聯網等新興技術的推動下,自動化測試框架需要支持更多復雜的測試場景和分布式測試環境。

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

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

相關文章

跑不出的循環 | LoveySelf 系列定位

最近開始陷入一輪一輪的循環狀態,無奈,只能自我整理一下。23年暑假,在計算機系折騰了一年后,重新打開博客,回想在數學系摸索博客寫作的日子,思緒涌上心頭,我們決定拾起這份力量。當時覺得 hexo …

Redis最新入門教程

文章目錄 Redis最新入門教程1.安裝Redis2.連接Redis3.Redis環境變量配置4.入門Redis4.1 Redis的數據結構4.2 Redis的Key4.3 Redis-String4.4 Redis-Hash4.5 Redis-List4.6 Redis-Set4.7 Redis-Zset 5.在Java中使用Redis6.緩存雪崩、擊穿、穿透6.1 緩存雪崩6.2 緩沖擊穿6.3 緩沖…

一文讀懂Python之requests模塊(36)

一、requests模塊簡介 requests模塊是python中原生的一款基于網絡請求的模塊,功能強大,簡單便捷且高效 ,該模塊可以模擬瀏覽器發送請求,主要包括指定url、發起請求、獲取響應數據和持久化存儲,包括 GET、POST、PUT、…

WPF之布局流程

文章目錄 1. 概述2. 布局元素的邊界框3. 布局系統原理3.1 布局流程時序圖 4. 測量階段(Measure Phase)4.1 測量過程4.2 MeasureOverride方法 5. 排列階段(Arrange Phase)5.1 排列過程5.2 ArrangeOverride方法 6. 渲染階段(Render Phase)7. 布局事件7.1 主要布局事件7.2 布局事件…

uniapp|獲取當前用戶定位、與系統設定位置計算相隔米數、實現打卡簽到(可自定義設定位置、位置有效范圍米數)

基于UniApp闡述移動應用開發中定位功能的實現全流程,涵蓋實時定位獲取、動態距離計算與自定義位置、有效范圍設定等功能。文章提供完整的代碼示例與適配方案,適用于社交簽到、課堂教室打卡等場景。 目錄 引言定位功能在移動應用中的價值(社交、導航、O2O等場景)UniApp跨平臺…

Yii2.0 模型規則(rules)詳解

一、基本語法結構 public function rules() {return [// 規則1[[attribute1, attribute2], validator, options > value, ...],// 規則2[attribute, validator, options > value, ...],// 規則3...]; }二、規則類型分類 1、核心驗證器(內置驗證器&#xff0…

數據結構(三)——棧和隊列

一、棧和隊列的定義和特點 棧:受約束的線性表,只允許棧頂元素入棧和出棧 對棧來說,表尾端稱為棧頂,表頭端稱為棧底,不含元素的空表稱為空棧 先進后出,后進先出 隊列:受約束的線性表&#xff0…

SQL Server 存儲過程開發三層結構規范

以下是《SQL Server 存儲過程開發三層結構規范》的正式文檔結構,適用于企業級數據庫應用開發場景,有助于團隊協作、代碼審查與自動化運維: 📘 SQL Server 存儲過程開發三層結構規范 一、架構設計總覽 三層結構簡介 層級命名約定…

接上篇,解決FramePack啟動報錯:“httpx.ReadError: [WinError 10054] 遠程主機強迫關閉了一個現有的連接。“的問題

#工作記錄 FramePack部署(從PyCharm解釋器創建和使用開始)保姆級教程-CSDN博客 上篇我們記錄到FramePack從克隆到啟動調試的保姆級教程,關于啟動時會報以下錯誤的問題,已作出解決: 報錯摘錄: (.venv) PS F…

ping_test_parallel.sh 并行網絡掃描腳本

并行網絡掃描腳本分析:提高網絡探測效率 引言腳本概述核心代碼分析顏色定義與初始化并行處理機制并行執行與進程控制結果處理與統計 技術亮點性能分析結論附錄:完整腳本 引言 在網絡管理和運維過程中,快速檢測網段內主機的在線狀態是一項常見…

leetcode 3342. 到達最后一個房間的最少時間 II 中等

有一個地窖,地窖中有 n x m 個房間,它們呈網格狀排布。 給你一個大小為 n x m 的二維數組 moveTime ,其中 moveTime[i][j] 表示在這個時刻 以后 你才可以 開始 往這個房間 移動 。你在時刻 t 0 時從房間 (0, 0) 出發,每次可以移…

關于vue-office在vue3工程中的引用報錯問題

在vue3項目工程中,根據vue-office文檔在vue2中的引用: //引入VueOfficeDocx組件 相關樣式import VueOfficeDocx from vue-office/docx;import vue-office/docx/lib/index.css; 報錯信息: [plugin:vite:import-analysis] Failed to resolve …

【macOS常用快捷鍵】

以下是 macOS 最常用快捷鍵列表,按使用頻率由高到低分類整理,涵蓋日常操作、效率工具及系統控制,助你快速提升使用效率: 一、基礎高頻操作 快捷鍵功能說明Command C復制選中內容Command V粘貼Command X剪切Command Z撤銷上一…

mdadm 報錯: buffer overflow detected

最近跑 blktest (https://github.com/osandov/blktests) 時發現 md/001 的測試失敗了 單獨執行,最后定位到是 mdadm 命令報錯: buffer overflow detected 這個 bug 目前已經修復: https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id827e1870f3205…

查看jdk是否安裝并且配置成功?(Android studio安裝前的準備)

WinR輸入cmd打開命令提示窗口 輸入命令 java -version 回車顯示如下:

STM32智能刷卡消費系統(uC/OS-III)

一、項目概述與開發背景 本系統是一款基于STM32微控制器的智能刷卡消費終端,集成RFID識別、OLED顯示、Flash存儲、藍牙通信等核心模塊。項目采用uC/OS-III實時操作系統實現多任務并發處理,適用于校園一卡通、企業食堂等小額支付場景。系統支持定額扣款、…

[人機交互]以用戶為中心的交互設計

一.以用戶為中心設計的兩個特征 ? 理解和指定產品的使用上下文 ,并用于指導設計 ? 用戶參與式開發 ? 參與 評估研究 (第十 — 十四章) ? 參與 設計過程 :用戶作為合作設計人員 二.用戶參與設計的重要性 ? 需求的獲取主要來源…

Abaqus學習筆記

目錄 Abaqus介紹 學習資源 ?編輯Abaqus/CAE abaqus下載安裝 abaqus基本操作 Abaqus啟動 新建模型 ?編輯 ?編輯修改界面背景 ?編輯?編輯結果信息的顯示與否 ?編輯計算結果信息字體設置 ?編輯允許多繪圖狀態 單位量綱 視圖操作 事前說明 ODB文件 本構關系…

論壇系統開發(0-1) (上 前置知識介紹)

前置知識 1. 軟件的生命周期 生命周期: 對事物進行定義(描述) -> 創建 -> 使用 -> 銷毀的過程 軟件?命周期中以劃分為可?性研究、需求分析、概要設計、詳細設計、實現、組裝(集成)測試、確認測試、使?、維護、退役10個階段,如下圖: a. 可…

架構師面試(三十七):監控系統架構模式

題目 監控是在產品生命周期的運維環節,能對產品的關鍵指標數據進行【實時跟蹤】并對異常數據進行【實時報警】。 一句話描述,監控系統可以幫我們【主動預防和發現】業務系統中的問題。 我們常說,監控系統是 “糧草”,業務系統是…