自動化測試中的常見測試方法

自動化測試中的常見測試方法

在自動化測試中,除了數據驅動(Data-Driven Testing),還有多種主流方法,每種方法適用于不同場景和需求。以下是常見的自動化測試方法分類及詳解:

一、關鍵字驅動測試(Keyword-Driven Testing)

核心思想

將測試步驟封裝為關鍵字(如 “打開瀏覽器”“輸入文本”),通過關鍵字組合實現測試邏輯,與具體數據分離。

特點
  • 關鍵字:可復用的最小操作單元(如 Open Browser?Click Element),由工具或自定義實現。
  • 測試用例:通過表格或腳本組合關鍵字,不涉及代碼邏輯。
  • 適用場景:UI 自動化、重復步驟較多的測試(如表單提交、登錄流程)。
工具與示例
  • 代表工具Robot Framework(天然支持關鍵字驅動)、QTP/UFT。
  • 示例:在 Robot Framework 中通過關鍵字組合實現登錄測試:

*** Test Cases ***

用戶登錄測試

????Open Browser ???${URL} ???Chrome

????Input Text ?????id=username ???${USERNAME} ???# 關鍵字+數據

????Input Text ?????id=password ???${PASSWORD}

????Click Button ???id=submit

????Page Should Contain ???登錄成功

二、行為驅動測試(Behavior-Driven Development/Testing, BDD)

核心思想

通過自然語言描述測試場景(如 Gherkin 語法),讓技術與非技術人員共同參與測試設計,聚焦 “軟件應如何行為”。

特點
  • 場景描述:用 Given-When-Then?結構描述業務場景(如 “當用戶輸入無效密碼時,應顯示錯誤提示”)。
  • 跨團隊協作:產品、開發、測試用統一語言溝通,減少理解偏差。
  • 適用場景:功能測試、業務邏輯復雜的場景(如電商下單流程)。
工具與示例
  • 代表工具:Cucumber、Behave(Python)、SpecFlow(.NET)。
  • 示例(Gherkin 語法):

Feature: 用戶登錄功能

??Scenario: 輸入錯誤密碼登錄

????Given 打開登錄頁面

????When 輸入用戶名 "testuser" 和密碼 "wrongpass"

????And 點擊登錄按鈕

????Then 頁面應顯示 "密碼錯誤" 提示

三、模塊化測試(Modular Testing)

核心思想

將測試系統拆分為獨立模塊(如 “登錄模塊”“支付模塊”),每個模塊單獨設計自動化腳本,通過模塊組合實現復雜場景。

特點
  • 模塊獨立性:每個模塊可單獨維護、復用,修改不影響其他模塊。
  • 分層設計:通常分為基礎層(元素定位)、業務層(模塊邏輯)、場景層(用例組合)。
  • 適用場景:大型系統測試(如 ERP、電商平臺)、需頻繁迭代的項目。
示例
  • 分層結構
    1. 基礎層:封裝元素定位(如 get_username_input())。
    2. 業務層:實現模塊邏輯(如 login(username, password)?函數)。
    3. 場景層:組合模塊(如 “登錄→添加購物車→結算”)。

四、線性腳本測試(Linear Scripting)

核心思想

實際操作步驟逐行編寫腳本,無復用邏輯,類似 “宏錄制” 后的代碼。

特點
  • 簡單直接:新手易上手,腳本與操作步驟一一對應。
  • 維護成本高:步驟修改需逐個更新腳本,復用性差。
  • 適用場景:臨時測試、簡單場景(如單個頁面跳轉驗證)。
示例

# Selenium 線性腳本示例

from selenium import webdriver

driver = webdriver.Chrome()

driver.get("https://example.com/login")

driver.find_element("id", "username").send_keys("test") ?# 硬編碼步驟

driver.find_element("id", "password").send_keys("123")

driver.find_element("id", "submit").click()

driver.quit()

五、模型驅動測試(Model-Based Testing, MBT)

核心思想

通過建立系統模型(如狀態機、流程圖)描述系統行為,由工具自動生成測試用例,驗證模型與實際系統的一致性。

特點
  • 模型抽象:用圖形或數學模型表示系統輸入、輸出和狀態轉換。
  • 自動化生成:工具根據模型自動生成測試用例,覆蓋更多場景。
  • 適用場景:復雜狀態系統(如通信協議、嵌入式軟件)、回歸測試。
工具
  • 代表工具:Selenium IDE(簡單模型)、GraphWalker、IBM Rational Rhapsody。

六、探索性測試自動化(Exploratory Testing Automation)

核心思想

結合探索性測試(邊測試邊設計用例)與自動化,通過腳本快速驗證臨時想法,無需預先設計完整用例。

特點
  • 靈活性高:針對測試中發現的疑點,用自動化腳本快速復現和驗證。
  • 輕量腳本:腳本簡潔,聚焦單次驗證(如接口異常場景測試)。
  • 適用場景:漏洞驗證、邊界條件測試、臨時場景驗證。
示例

# 臨時驗證接口超時場景

import requests

def test_api_timeout():

????try:

????????response = requests.get("https://api.example.com", timeout=1)

????????assert response.status_code == 200

????except requests.exceptions.Timeout:

????????print("接口超時驗證通過")

七、關鍵字 - 數據混合驅動(Hybrid Testing)

核心思想

結合關鍵字驅動數據驅動的優勢,用關鍵字封裝邏輯,用數據文件動態傳入測試數據,兼顧復用性和靈活性。

特點
  • 邏輯與數據分離:關鍵字定義 “怎么做”,數據文件定義 “測試什么數據”。
  • 高復用性:一套關鍵字可搭配多組數據,覆蓋不同場景。
示例
  • Robot Framework 中結合關鍵字與外部數據文件(CSV/Excel):

*** Test Cases ***

多用戶登錄測試

????[Template] ???執行登錄測試 ???# 模板關鍵字

????user1 ???pass1 ???登錄成功 ?????# 數據行1

????user2 ???wrong ???密碼錯誤 ?????# 數據行2

*** Keywords ***

執行登錄測試

????[Arguments] ???${user} ???${pwd} ???${expected}

????Open Browser ???${URL} ???Chrome

????Input Text ?????id=username ???${user}

????Input Text ?????id=password ???${pwd}

????Click Button ???id=submit

????Page Should Contain ???${expected}

八、按測試對象劃分的專項自動化

除了上述方法論,自動化測試還可按測試對象分類,每種對象對應特定技術:

  1. UI 自動化:模擬用戶操作界面元素(Selenium、Appium)。
  2. 接口自動化:直接調用 API 驗證數據交互(Postman、REST Assured)。
  3. 單元自動化:測試代碼單元(如函數、類,JUnit、pytest)。
  4. 性能自動化:模擬高并發場景(JMeter、Locust)。

不同方法的選擇建議

測試方法

核心優勢

適用場景

推薦工具

數據驅動

用數據覆蓋多場景

輸入輸出明確的場景(如表單驗證)

TestNG DataProvider

關鍵字驅動

步驟復用、低代碼

UI 自動化、重復流程測試

Robot Framework

行為驅動

跨團隊協作、業務聚焦

功能測試、復雜業務場景

Cucumber、Behave

模塊化測試

分層維護、高擴展性

大型系統、頻繁迭代項目

Selenium + 自定義框架

模型驅動

自動生成用例、覆蓋全狀態

狀態復雜系統、回歸測試

GraphWalker

選擇時需結合項目規模、團隊技術棧和測試目標:小型項目可從線性或關鍵字驅動入手,大型復雜項目建議采用模塊化或混合驅動,業務導向項目優先考慮 BDD。

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

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

相關文章

口語01-don‘t judge a book by its cover

Dont judge a book by its cover 不要以貌取人1 the most advanced thing2 stack3 right4 frantically5 be annoyed with sb6 Get your stuff off my desk7 But today I came to class and was running a few minutes late.8 take my seat:占我座位 / 坐我的位置9 s…

《Uniapp-Vue 3-TS 實戰開發》自定義預約時間段組件

這個組件可以直接在 uniapp 項目中使用,提供了 24 小時時段選擇功能,支持單選 / 多選、預設時段選擇、隨機選擇等功能。 html版本: <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="vi…

《Uniapp-Vue 3-TS 實戰開發》自定義環形進度條組件

引言 在UniApp中使用Vue3和TypeScript開發環形進度條組件,我們可以考慮三種技術:Canvas、SVG和純HTML(利用CSS)。考慮到兼容性、實現難度和效果,SVG是較好的選擇。它可以輕松實現環形進度條,支持漸變色,并且可以通過屬性精確控制進度,同時在不同分辨率屏幕上清晰顯示…

MybatisPlus-17.擴展功能-JSON處理器

一.JSON處理器數據庫中有的字段會以JSON格式來進行存儲。類型為json類型。但是在java中我們沒有這樣的數據類型&#xff0c;一般會以字符串接收&#xff0c;這樣就會導致如果想要從數據庫中獲取json格式中的key和value的話會比較麻煩&#xff0c;還要進行字符串操作。那么有沒有…

【Web】DASCTF 2025上半年賽 wp

目錄 phpms 再短一點點 澤西島 phpms dirsearch請求太快會報429&#xff0c;要設置一手--delay&#xff0c;掃出來.git 跑一下githacker git stash list git stash show -p 注釋的繞過參考&#xff1a;從國賽想到的一些php繞過注釋符trick 發現很多函數都被disable了 這…

STM32-USART串口配置教程和printf函數實現(寄存器版)

本章概述思維導圖通信介紹通信介紹概況通信&#xff0c;至少是需要兩個對象&#xff0c;一個收一個發數據。根據數據通信的傳輸時序協調方式&#xff0c;可分為&#xff1a;同步通信和異步通信&#xff1b;根據數據通信的傳輸線路可分為&#xff1a;串行通信和并行通信&#xf…

4種靈活的方法從POCO手機中刪除聯系人

許多POCO用戶經常需要清理聯系人列表&#xff0c;刪除重復或過時的條目&#xff0c;或者在出售或贈送手機之前刪除個人或敏感聯系人。無論是為了隱私、組織管理&#xff0c;還是僅僅是為了管理存儲空間&#xff0c;高效地刪除POCO手機中的聯系人是至關重要的。本文將介紹4種智能…

航段導航計算機 (Segment_Navigator) 設計與實現

航段導航計算機 (Segment_Navigator) 設計與實現 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家&#xff0c;覺得好請收藏。點擊跳轉到網站。 1. 引言 航段導航計算機是現代航空電子系統中的關鍵組件&a…

input.1是onnx輸入的名稱,但是依然警告不是

導出動態軸的時候發現&#xff0c;明明input.1就是onnx的名字&#xff0c;但是依然有警告說不是&#xff1b;/miniconda3/envs/py38/lib/python3.8/site-packages/torch/onnx/utils.py:2078: UserWarning: Provided key input.1 for dynamic axes is not a valid input/output …

生成式人工智能展望報告-歐盟-02-技術方面

原文地址 摘要 本章的重點是GenAI的技術層面&#xff0c;首先是對其能力和局限性的評估。它強調了部署GenAI系統所帶來的網絡安全挑戰。會議討論了新出現的技術趨勢&#xff0c;為決策者和利益攸關方提供了前瞻性的視角。關鍵問題包括確保GenAI應用程序的安全性和可靠性所需的…

人工智能與云計算雙輪驅動:元宇宙如何重構全球產業生態

一、人工智能在元宇宙中的核心應用1. 內容生成與虛擬世界構建生成式AI&#xff08;AIGC&#xff09;&#xff1a;通過AI算法自動生成3D模型、虛擬場景和角色&#xff0c;顯著降低內容制作成本和時間。例如&#xff1a;聯想晨星元宇宙平臺&#xff1a;利用AIGC技術實現低成本、高…

企業信息管理系統開發實戰:基于 Spring Boot+MyBatis+Thymeleaf

引言&#xff1a;企業信息管理系統的核心價值在企業日常運營中&#xff0c;高效的信息管理是提升效率的關鍵。本文將手把手教你開發一套企業信息管理系統&#xff0c;涵蓋用戶登錄、信息增刪改查、權限控制等核心功能。系統采用 Spring Boot 作為后端框架&#xff0c;MyBatis 處…

NLP自然語言處理的一些疑點整理

PyTorch評估模式&#xff08;torch.no_grad和model.eval&#xff09;差異在PyTorch中&#xff0c;model.eval()和torch.no_grad()是模型評估和推理階段的兩個關鍵工具&#xff0c;它們各自扮演著不同的角色&#xff0c;但常常被一起使用以確保模型行為的正確性和計算效率。理解…

物流倉儲自動化升級:Modbus TCP與DeviceNet的協議融合實踐

一、項目背景在我們物流廠的日常運營中&#xff0c;分揀效率和倉儲精準度一直是瓶頸。傳統人工分揀不僅速度慢&#xff0c;還容易因疲勞出錯&#xff1b;倉儲區域的貨物定位全靠人工記錄&#xff0c;時常出現找貨難、盤點耗時的問題。生產線的核心控制依賴施耐德PLC&#xff0c…

產品動態 | 同創永益IStorM Chaos 混沌工程平臺V4.0震撼發布:智能驅動,筑牢系統穩定性防線

當混沌工程從試點走向企業級大規模推廣&#xff0c;標準化缺失、專家依賴高、實施效率低等痛點成為阻礙系統穩定性升級的 “攔路虎”。此刻&#xff0c;同創永益重磅推出IStorM Chaos 混沌工程平臺 V4.0&#xff0c;以智能技術為核心驅動力&#xff0c;為企業構建更高效、更靈活…

C++中的反向迭代器

C中的反向迭代器 為啥反向迭代器的講解要單獨拎出來講&#xff0c;沒有在講各個容器的時候順手講了呢&#xff1f; 主要是因為c中的反向迭代器和正向迭代器的實現不太一樣。 它思想不復雜&#xff0c;主要是巧。來&#xff0c;我們按照我們剛剛的想法把代碼寫出來 #pragma once…

【一步步ai】數據增強與預處理

提升NL2SQL系統性能是一個復雜的多維度優化問題&#xff0c;涉及數據工程、模型架構、訓練策略和評估方法等多個層面。以下是一些有效的提升方向和具體方法&#xff1a; 一、數據增強與預處理 多樣化數據生成 模板擴展&#xff1a;基于SQL語法模板自動生成多樣化的NL-SQL對&am…

站在哪個肩膀上開始學習卡爾曼濾波

站在哪個肩膀上開始學習卡爾曼濾波前言從自適應濾波的角度正交性原理到維納解kalman濾波的提出innovation process新息過程kalman濾波算法Kalman 自適應濾波器算法初始條件輸入觀測向量過程已知參數計算&#xff1a;n1&#xff0c;2&#xff0c;3&#xff0c;..參考前言 不知道…

什么是FCR,如何提升FCR?

? FCR&#xff08;First Call Resolution&#xff0c;首次呼叫解決率&#xff09;&#xff0c;意思是指客戶首次聯系客服時&#xff0c;問題在單次交互中被完全解決的比率。? ?FCR &#xff08;首次解決的通話量 / 總首次通話量&#xff09; 100%一、關鍵要點&…

【瀏覽器插件沖突】Edge瀏覽器加載不出來CSDN創作者中心

【瀏覽器插件沖突】Edge瀏覽器加載不出來CSDN創作者中心寫在最前面報錯GPT的全部回復&#xff0c;可以參考&#x1f50d; 具體錯誤解釋&#xff1a;1. **CORS錯誤**2. **XHR 請求失敗**3. **ReaderArticleFinder / Readability**&#x1f6e0;? 為什么頁面沒有內容顯示&#x…