MeterSphere平臺,接口自動化腳本編寫常用操作

文章目錄

  • 1. 前置準備
  • 2. 項目環境設置
  • 3. 創建接口
    • 3.1 創建接口API
    • 3.2 測試接口API
    • 3.3 設置接口case
  • 4. 場景接口自動化
    • 4.1 創建自動化場景
    • 4.2 場景化操作說明
      • 4.2.1 設置腳本場景變量
      • 4.2.2 接口列表導入
      • 4.2.3 場景導入
      • 4.2.4 自定義請求
      • 4.2.5 事務控制器
      • 4.2.6 等待控制器
      • 4.2.7 循環控制器
      • 4.2.8 條件控制器
  • 5. 操作說明
    • 5.1 前置操作
    • 5.2 后置操作
    • 5.3 斷言規則
  • 6. 編寫腳本
    • 6.1 腳本規則
    • 6.2 選擇編譯語言
    • 6.3 代碼模板
    • 6.4 腳本代碼細節說明
  • 7. 設置測試計劃

1. 前置準備

MeterSphere 是基于JMeter核心引擎實現的開源持續測試平臺,全面兼容 JMeter、Selenium 等主流開源標準,能夠進行接口測試、UI測試、性能測試等

MeterSphere官網:https://metersphere.io

下載及安裝教程:https://metersphere.io/docs/v3.x/installation/offline_installation/#41

當前所使用的版本是V2.10

2. 項目環境設置

  1. 新建項目環境

先對測試環境進行配置

  1. 配置環境—HTTP配置

在HTTP配置中配置域名或IP,設置請求頭的參數,比如Authorization對應的值設置為 ${Authorization},變量${Authorization}的結果是從登錄腳本中獲得,在登錄后,從響應結果中提取token的值,賦值給Authorization變量
在這里插入圖片描述

  1. 配置環境—通用配置

將登錄的賬號和密碼設置為全局變量,其它的自動化腳本都可以引用這個賬號和密碼,靈活性更好。后續若要調整系統登錄的賬號和密碼直接修改這兩個變量即可

在登錄接口的后置操作中,添加提取參數,選擇JSONPath,提取響應中的token,設置變量名為Authorization

3. 創建接口

創建接口:接口創建完畢后,可以在接口自動化時直接引用或復制已經寫好的API或CASE,提高編寫自動化腳本的效率,更加方便的維護接口

3.1 創建接口API

  1. 創建模塊

選擇左側接口測試,點擊創建模塊及子模塊

  1. 創建接口

選擇創建的模塊,點擊創建接口

  1. 接口信息配置

輸入下面這些信息:名稱、模塊、狀態、請求類型、請求URL、請求頭、請求體等

選擇運行環境,點擊保存

3.2 測試接口API

選擇test,測試創建的API,可以設置斷言,對接口響應進行校驗

  1. 控制臺:如果設置的前置腳本或后置腳本,腳本中有打印的日志的操作(log.info()),就可以在控制臺中查看打印內容
  2. 提取:如果在后置操作中設置提取參數,那么就可以在提取這里查看參數的值
  3. 請求內容:在這里可以查看一個完整的請求信息,包括請求類型、URL、請求提、身份信息等

3.3 設置接口case

接口中傳參是有必填和選填的,參數組合的情況不同,導致接口適用的場景也不同,所以就可以設置給接口傳入不同參數的case

設置接口case 的目的:后面在做場景接口自動化時,可以直接引用case,這樣更方便

  1. 點擊添加case

  1. 修改case參數

設置用例名稱,設置請求體參數,加上后置操作,斷言等,再點擊執行

最后點擊保存case

4. 場景接口自動化

4.1 創建自動化場景

  1. 創建場景模塊和子模塊

  1. 設置場景信息

a. 填寫腳本名稱、選擇模塊、選擇狀態、責任人、用例登記

b. 點擊右下角的+號,有這幾種操作選取

c. 選擇接口列表導入

接口導入彈窗中,先選擇要使用的是哪個模塊的API或CASE,在列表中勾選對應CASE,點擊復制/引用

復制:就是把這個API或CASE直接復制過來,復制過來后,就可以對API或CASE進行修改參數等其他操作,這里的修改操作不影響原本的API或CASE

引用:只能使用API或CASE,不能進行修改操作,這個引用操作的好處就是,在接口定義中修改這個API或CASE時,這里引用就會同步修改

d. 選擇運行環境,點擊保存

在這里選擇前面配置的項目環境后,點擊保存,點擊調試,運行腳本

4.2 場景化操作說明

場景化腳本一般有這幾種操作方式:接口列表導入、場景導入、自定義請求、場景斷言、等待控制器、事務控制器、循環控制器、條件控制器、自定義腳本

4.2.1 設置腳本場景變量

設置場景變量,這個變量的作用域就是這個腳本

場景變量當前使用頻率比較高的就是常量和隨機數

設置變量后,如果要使用這個變量那么就可以這樣${user_name}來使用,非常的方便

a. 常量:比如要隨機生成一個用戶名,那么可以設置變量名和值,這個值一般寫的是函數去隨機獲取值

點擊下面這個,里面有很多常用的函數,比如取隨機數,獲取當前時間等

b. 隨機數:按照對應操作輸入數即可

4.2.2 接口列表導入

接口列表導入其實就是把前面在接口定義中寫的API或CASE在這里來選擇使用

選擇要導入的哪個API或CASE,然后選擇復制或引用

選擇CASE和復制,在腳本步驟中也會體現出來

4.2.3 場景導入

場景導入就是將其它場景化腳本拿過來使用,當前場景導入主要用來導入賬號登錄

如下例子,登錄場景的導入選擇的是引用,這樣好處是:

后面比如要修改所有腳本中登錄的賬號和密碼,那么不用一個一個去修改,只需要修改這一個登錄的腳本即可,維護性更好

4.2.4 自定義請求

自定義請求這個一般用于臨時只用一次的接口請求(如果是后面會多次用到,還是建議在接口定義中創建API或CASE),當前自定義請求使用頻繁不高

填寫這個請求的信息后點擊保存即可

4.2.5 事務控制器

事務控制器適用的情況是,如果腳本中許多步驟都是為了某一步驟來服務的,那么這里就建議使用事務控制器,好處是腳本步驟條理更加清晰、并且維護性更好

如下例子,添加新用戶這個腳本,主要就是為了驗證添加3個不同的角色是否能添加成功,但是添加完成后為了保證系統數據不會冗余,就要刪除添加的這個新用戶,所以這里使用事務控制器,將對這個一個角色的賬號操作放在一起,使結構更加清晰

4.2.6 等待控制器

等待控制器適用的情況是,某些接口不能頻繁請求或執行該接口后等幾秒才會有數據,所以需要使用等待控制器

如下例子,從列表中提取xxx_id,因為有時候數據會等待幾秒才生成完畢,需要等待幾秒才可以。(強制等待

也可以使用循環控制器來實現軟等待,就是設置比如每1秒請求一次,直到獲取到數據才結束等待。

4.2.7 循環控制器

循環控制器適用的場景就是,在滿足某些條件后,循環執行該步驟多少次

循環控制器有3種使用方式:次數循環、ForEach循環、While循環

次數循環就是固定的設置某個步驟執行多少次

While循環就是在滿足某個條件后,循環執行多少次,但是注意設置超時時間

如下例子,While循環,必須滿足${xx_num}值小于100時,才循環執行,直到${xxx_num}為100時,結束循環

4.2.8 條件控制器

條件控制器適用的情況是,某些步驟執行需要滿足一些條件,所以這里用條件控制器來判斷,保證條件滿足后才執行該步驟,否則不執行

如下例子,查詢數據列表,提取xxx_id,只有當xxx_id非空有值的時候,下面的下面的步驟才可以執行,否則就不執行

5. 操作說明

5.1 前置操作

前置操作:執行該接口之前要執行的操作

前置操作分為3種:前置腳本、前置SQL、等待控制器

前置操作主要使用前置腳本和等待控制器,后面會在目錄6中詳細介紹腳本編寫

5.2 后置操作

后置操作:執行步驟后,需要執行的操作

后置操作分為3種:后置腳本、后置SQL、提取參數

后置腳本和前置腳本類似,這里說明一下提取參數

提取參數主要有這三種,當前接口響應主要是JSON格式的,所以一般選擇JSONPath

要提取參數,需要先運行該步驟,也就是需要先有響應結果,才能提取值

5.3 斷言規則

場景化腳本每一步執行完成后,需要添加斷言,這是為了驗證接口的響應結果是否為預期結果

腳本斷言一般分為7種:文本、正則、JSONPath、Xpath、響應時間、腳本、文檔結構校驗

當前斷言一般會用到:JSONPath、文本、腳本

JSONPath適用的情況是,只有當接口響應為JSON體是才可以

腳本是比較通用的,不論哪種情況都可以用寫腳本來斷言

文本就比較局限了,下面會進行說明

  1. JSONPath斷言(使用頻率最高)

只要接口響應是JSON格式,那么一般選JSONPath斷言,

MS平臺,提供了非常便捷的JSON斷言功能,可以直接從響應結果中選取需要斷言的內容

還有一種情況就是需要斷言的值是變量,或者是從其他接口響應中提取出來的,那么下面就可以使用這種方式進行獲取${xxxx}

這里的值${xxx},一般有這幾種獲取途徑

(1)從場景變量中獲取

(2)從當前接口的后置操作中獲取

(3)從其他響應結果的后置操作(提取變量)中獲取

(4)從整個項目的環境配置變量中獲取
在這里插入圖片描述

  1. 腳本斷言(使用頻率一般)

腳本斷言雖相比與JSONPath方式斷言較麻煩,但是好處是通用性更好,任何情況都可以用腳本斷言完成

比如斷言篩選24小時內的數據,但是直接用JSONPath就不能斷言這種情況了,所以需要用腳本來實現時間的校驗

  1. 文本斷言(使用頻率低)

文本斷言主要分為3種:

確定斷言內容后,選擇斷言條件,輸入斷言的值

比如斷言接口響應的code等于200,或者斷言請求頭中是否包含application/octet-stream的情況

6. 編寫腳本

編寫腳本主要出現在這幾種情況,前置操作腳本、后置操作腳本、斷言規則腳本、場景化自定義腳本

腳本的編寫方法是通用的,下面介紹如何快速編寫腳本

6.1 腳本規則

只有斷言腳本和其他腳本有所不同,這里多了變量名稱和值,這是MS為了方便生成斷言腳本提供的功能,輸入變量名稱選擇等于或其他選項,輸入預期值,然后MS就可以自動生成對應代碼

變量名稱和值不是必須要填寫,也可以直接編寫代碼

6.2 選擇編譯語言

腳本的編譯語言有4種:beanshell、python、groovy、javascript

使用python時,需要注意的是MS V2.10中內置的Python解釋器是2.7的版本,而2.7版本是不支持中文的,所以在出現或使用中文的時候需要指定 utf-8"

6.3 代碼模板

腳本中提供了一些比較會經常用到的代碼模板

下面簡單介紹幾種使用頻率比較高的模板,這個不區分編程語言,是通用的

  1. 在控制臺打印信息:log.info(“xxx”)
  2. 設置環境參數

第一步提取token

第二步設置環境變量(全局):vars.put(${__metersphere_env_id}+“key”,“value”);

  1. 設置變量:vars.put(“variable_name”, “variable_value”)

下面看一下這個例子

提取用戶id,在腳本中通過${id}方式使用提取的值,下面通過log.info(auth)在控制臺打印獲取的auth值,通過vars.put(“auth”, auth),設置變量auth,后面的所有步驟都可以提取到auth的值,通過${auth}使用上面設置的變量

  1. 插入自定義代碼片段

設置經常會用到的代碼模板,每次點擊“插入自定義代碼片段”使用設置的好的代碼模板

a. 項目設置,點擊自定義代碼片段

b. 創建代碼片段

c. 輸入代碼片段的名稱,選擇編程語言,編寫腳本后保存

d. 在場景化中使用前面設置的代碼片段模板,切換編程語言

注意這里只有切換到前面編寫腳本使用到的編程語言后,這個代碼片段中才會出現對應模板

e. 選取代碼片段模板

6.4 腳本代碼細節說明

下面這個代碼片段中用if判斷,當條件不滿足時會執行if里面代碼,需要注意的是,下面這個代碼在斷言腳本中必須出現,這個是斷言腳本執行不通過時,會提示的信息,一般這三行代碼中,我們只需要修改msg里面的內容即可

7. 設置測試計劃

創建測試計劃,將編寫的所有場景化腳本都添加進去,可以一鍵執行,同時一鍵執行也可以暴露出腳本編寫的一些問題,比如多個腳本之間是否會沖突導致執行失敗,參數是否設置不合理等等

進入剛剛創建的計劃,點擊左側場景用例,關聯接口測試用例,設置完成后

點擊一鍵執行,在報告中查看執行的結果

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

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

相關文章

C 語言介紹

C語言是由Dennis Ritchie開發的,用于創建與硬件設備(例如驅動程序,內核等)直接交互的系統應用程序。C編程被認為是其他編程語言的基礎,這就是為什么它被稱為母語。C是一種功能強大的通用編程語言。它可以用于開發操作系…

AI產品經理面試寶典第48天:產品設計與用戶體驗優化策略

1. 用戶體驗分析與產品設計邏輯 1.1 問:如何通過用戶反饋優化AI產品體驗? 答: 建立反饋閉環機制:通過應用內評分、用戶訪談、行為埋點三維度收集數據,例如某語音助手產品通過NLP分析用戶糾錯語句,發現"誤喚醒"問題占比37%; 優先級排序模型:采用Kano模型量化…

基于springboot的在線教育系統(源碼+論文)

一、開發環境 本在線教育系統主要采用以下技術棧進行開發: B/S結構:基于瀏覽器/服務器模式,便于用戶通過互聯網訪問系統,無需安裝客戶端軟件。Spring Boot框架:簡化了新Spring應用的初始搭建及開發過程,提…

Ubuntu 系統上部署禪道

在 Ubuntu 系統上部署禪道可以按照以下步驟進行,以下是基于禪道開源版的部署流程: 1. 安裝必要依賴 首先安裝禪道運行所需的環境(以 Ubuntu 20.04/22.04 為例): bash # 更新系統包 sudo apt update && sudo…

【vue-8】Vue3 Options API 生命周期函數全面解析

在 Vue.js 開發中,理解組件的生命周期是構建健壯應用程序的關鍵。雖然 Vue3 引入了 Composition API,但 Options API 仍然是許多開發者的首選,特別是對于從 Vue2 遷移的項目或更喜歡基于選項的代碼組織的團隊。本文將深入探討 Vue3 中 Option…

周志華《機器學習導論》第8章 集成學習 Ensemble Learning

目錄 8.1 個體與集成 8.2 Boosting Ada(Adaptive)Boost 8.3 Bagging 8.4 隨機森林 8.5 結合策略 8.5.1 平均法 8.5.2 投票法 8.5.3 學習法 8.6 多樣性 8.6.1 誤差-分歧分解 error-ambiguity 8.6.2 多樣性度量 8.6.3 多樣性增強 8.1 個體與集…

Embassy實戰:Rust嵌入式異步開發指南

嵌入式異步框架 Embassy 實例 以下是關于嵌入式異步框架 Embassy 的實用示例,涵蓋常見外設操作、多任務協作和硬件交互場景。示例基于STM32和Raspberry Pi Pico等平臺,使用Rust語言編寫。 GPIO 控制 use embassy_stm32::gpio::{Input, Output, Pull, Speed}; use embassy_…

ChatGPT桌面版深度解析

ChatGPT桌面版深度解析:功能、安裝與高效使用全攻略 一、核心功能全景解析 (一)全場景交互體系 全局熱鍵喚醒 支持MacOS(Option空格)與Windows(Alt空格)全局快捷鍵,實現跨應用無縫調…

RLVR的一種擴展方案--RLPR論文閱讀

論文鏈接:RLPR: EXTRAPOLATING RLVR TO GENERAL DOMAINS WITHOUT VERIFIERS 文章目錄簡介RLPRRLVR概率獎勵/Probability Reward獎勵設計標準差過濾總結簡介 可驗證獎勵的強化學習(Reinforcement Learning with Verifiable Rewards, RLVR)在提升大語言模型&#xff…

odoo歐度小程序——添加用戶

odoo歐度小程序添加登錄用戶 1. 直接在登錄用戶頁面添加用戶點擊 添加登錄用戶輸入用戶和密碼,點擊登錄驗證進入odoo頁面2. 在用戶切換頁面添加用戶點擊選擇切換用戶點擊域名彈出菜單點擊添加新用戶輸入用戶和密碼,點擊登錄驗證進入odoo頁面

Docker 應用數據備份、遷移方案

一、為什么要做Docker數據備份1、保障數據與配置的安全性防止數據丟失:Docker 容器本身是 “臨時性” 的(基于鏡像創建,刪除后數據默認丟失),但容器中運行的應用(如數據庫、日志服務)會產生持久…

【PTA數據結構 | C語言版】強連通分量

本專欄持續輸出數據結構題目集,歡迎訂閱。 文章目錄題目代碼題目 本題請你編寫程序,輸出給定有向圖中的各個強連通分量,并統計強連通分量的個數。 輸入格式: 輸入首先在第一行給出 2 個整數,依次為有向圖的頂點數 n&…

idea部署新項目時,用自定義的maven出現的問題解決

出現這個問題是因為maven版本和idea版本不兼容,例如圖示是maven3.9和idea2021.3的版本不兼容,maven換成3.8.x即可解決

OCR 身份識別:讓身份信息錄入場景更高效安全

在銀行柜臺開戶、線上平臺實名認證等場景中,身份信息錄入是基礎環節,OCR 身份識別產品正成為提升效率與安全性的關鍵。?傳統人工錄入身份證信息,不僅耗時久,還易因手誤導致姓名、號碼出錯,影響業務辦理進度。而 OCR 身…

Web 服務器和Web 中間件

一、什么是 Web 中間件 Web 中間件(Web Middleware)是運行在 Web 服務器與實際業務程序之間的一層“膠水”軟件,用來統一處理公共事務,讓開發者專注寫業務邏輯。常見職責: 請求/響應攔截(鑒權、日志、跨域、…

Paimon的部分更新以及DeleteVector實現

背景 本文基于 Paimon 0.9 出于對與Paimon內部的DeleteVctor的實現以及部分更新的實現進行的源碼閱讀。 關于 DeleteVector的介紹可以看這里 說明 對于Paimon來說無論是Spark中使用還是Flink使用,后面的邏輯都是一樣的,所以我們以Spark為例來說。所以…

Redis 的事務機制是怎樣的?

Redis 的事務機制 Redis支持事務機制,其主要目的是確保多個命令執行的原子性,即這些命令會作為一個不可分割的操作單元執行。 需要注意的是,Redis事務不支持回滾操作。從Redis 2.6.5版本開始,服務器會在命令累積階段檢測錯誤。在執行EXEC命令時,若發現錯誤則會拒絕執行事…

網安學習NO.17

1. VPN 概述定義:在公用網絡(如 Internet、幀中繼、ATM 等)中,通過技術手段虛擬出的一條企業內部專線,能像私有網絡一樣提供安全性、可靠性和可管理性。核心特征:利用公共網絡構建,具備 “虛擬性…

MCU芯片AS32S601在衛星光纖放大器(EDFA)中的應用探索

摘要:本文聚焦于國科安芯推出的AS32S601型MCU芯片在衛星光纖放大器(EDFA)中的潛在應用,探討其技術特性、抗輻射性能及適用性。通過分析其在單粒子效應脈沖激光試驗中的表現,結合EDFA系統對控制芯片的要求,評…

Hexo - 免費搭建個人博客02 - 創建個人博客

導言我的博客:https://q164129345.github.io/ 開始一步一步地完成博客的創建。 一、初始化Hexo博客以上所示,運行以下指令在myCode文件夾里初始化一個hexo博客。 hexo init myblog二、安裝依賴如上所示,完成依賴的安裝。 cd myblog npm insta…