文章目錄
- 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. 項目環境設置
- 新建項目環境
先對測試環境進行配置
- 配置環境—HTTP配置
在HTTP配置中配置域名或IP,設置請求頭的參數,比如Authorization對應的值設置為 ${Authorization},變量${Authorization}的結果是從登錄腳本中獲得,在登錄后,從響應結果中提取token的值,賦值給Authorization變量
- 配置環境—通用配置
將登錄的賬號和密碼設置為全局變量,其它的自動化腳本都可以引用這個賬號和密碼,靈活性更好。后續若要調整系統登錄的賬號和密碼直接修改這兩個變量即可
在登錄接口的后置操作中,添加提取參數,選擇JSONPath,提取響應中的token,設置變量名為Authorization
3. 創建接口
創建接口:接口創建完畢后,可以在接口自動化時直接引用或復制已經寫好的API或CASE,提高編寫自動化腳本的效率,更加方便的維護接口
3.1 創建接口API
- 創建模塊
選擇左側接口測試,點擊創建模塊及子模塊
- 創建接口
選擇創建的模塊,點擊創建接口
- 接口信息配置
輸入下面這些信息:名稱、模塊、狀態、請求類型、請求URL、請求頭、請求體等
選擇運行環境,點擊保存
3.2 測試接口API
選擇test,測試創建的API,可以設置斷言,對接口響應進行校驗
- 控制臺:如果設置的前置腳本或后置腳本,腳本中有打印的日志的操作(log.info()),就可以在控制臺中查看打印內容
- 提取:如果在后置操作中設置提取參數,那么就可以在提取這里查看參數的值
- 請求內容:在這里可以查看一個完整的請求信息,包括請求類型、URL、請求提、身份信息等
3.3 設置接口case
接口中傳參是有必填和選填的,參數組合的情況不同,導致接口適用的場景也不同,所以就可以設置給接口傳入不同參數的case
設置接口case 的目的:后面在做場景接口自動化時,可以直接引用case,這樣更方便
- 點擊添加case
- 修改case參數
設置用例名稱,設置請求體參數,加上后置操作,斷言等,再點擊執行
最后點擊保存case
4. 場景接口自動化
4.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體是才可以
腳本是比較通用的,不論哪種情況都可以用寫腳本來斷言
文本就比較局限了,下面會進行說明
- JSONPath斷言(使用頻率最高)
只要接口響應是JSON格式,那么一般選JSONPath斷言,
MS平臺,提供了非常便捷的JSON斷言功能,可以直接從響應結果中選取需要斷言的內容
還有一種情況就是需要斷言的值是變量,或者是從其他接口響應中提取出來的,那么下面就可以使用這種方式進行獲取${xxxx}
這里的值${xxx},一般有這幾種獲取途徑
(1)從場景變量中獲取
(2)從當前接口的后置操作中獲取
(3)從其他響應結果的后置操作(提取變量)中獲取
(4)從整個項目的環境配置變量中獲取
- 腳本斷言(使用頻率一般)
腳本斷言雖相比與JSONPath方式斷言較麻煩,但是好處是通用性更好,任何情況都可以用腳本斷言完成
比如斷言篩選24小時內的數據,但是直接用JSONPath就不能斷言這種情況了,所以需要用腳本來實現時間的校驗
- 文本斷言(使用頻率低)
文本斷言主要分為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 代碼模板
腳本中提供了一些比較會經常用到的代碼模板
下面簡單介紹幾種使用頻率比較高的模板,這個不區分編程語言,是通用的
- 在控制臺打印信息:log.info(“xxx”)
- 設置環境參數
第一步提取token
第二步設置環境變量(全局):vars.put(${__metersphere_env_id}+“key”,“value”);
- 設置變量:vars.put(“variable_name”, “variable_value”)
下面看一下這個例子
提取用戶id,在腳本中通過${id}方式使用提取的值,下面通過log.info(auth)在控制臺打印獲取的auth值,通過vars.put(“auth”, auth),設置變量auth,后面的所有步驟都可以提取到auth的值,通過${auth}使用上面設置的變量
- 插入自定義代碼片段
設置經常會用到的代碼模板,每次點擊“插入自定義代碼片段”使用設置的好的代碼模板
a. 項目設置,點擊自定義代碼片段
b. 創建代碼片段
c. 輸入代碼片段的名稱,選擇編程語言,編寫腳本后保存
d. 在場景化中使用前面設置的代碼片段模板,切換編程語言
注意這里只有切換到前面編寫腳本使用到的編程語言后,這個代碼片段中才會出現對應模板
e. 選取代碼片段模板
6.4 腳本代碼細節說明
下面這個代碼片段中用if判斷,當條件不滿足時會執行if里面代碼,需要注意的是,下面這個代碼在斷言腳本中必須出現,這個是斷言腳本執行不通過時,會提示的信息,一般這三行代碼中,我們只需要修改msg里面的內容即可
7. 設置測試計劃
創建測試計劃,將編寫的所有場景化腳本都添加進去,可以一鍵執行,同時一鍵執行也可以暴露出腳本編寫的一些問題,比如多個腳本之間是否會沖突導致執行失敗,參數是否設置不合理等等
進入剛剛創建的計劃,點擊左側場景用例,關聯接口測試用例,設置完成后
點擊一鍵執行,在報告中查看執行的結果