接口測試包含單接口測試和多接口測試,經過組合多個接口實現一組功能的驗證稱爲多接口測試,單接口重在單個接口多種請求組合的響應斷言,多接口重在組合不一樣接口,實現流程的串聯和驗證。多接口測試涉及到接口之間參數的傳遞,好比AB兩個接口協同完成一個功能,A接口的響應要做爲B接口的輸入,此處就須要用到Jmeter的關聯功能。本文提供兩個接口的串聯示例,展現如何應用Jmeter實現多接口的參數傳遞。正則表達式
關聯就是把應用中動態變化的數據獲取到,將它保存爲參數,提供給後面須要用到的地方進行使用,經過關聯能夠實現多接口之間的參數傳遞。Jmeter經常使用兩種關聯組件:測試
正則表達式提取器spa
Json Extractordebug
接口示例blog
接口A:輸入用戶名,密碼建立用戶,返回新增用戶id接口
接口B:輸入用戶id,用戶名,密碼等信息實現編輯用戶(B接口基於A接口返回的新增用戶id實現數據修改)字符串
正則表達式提取器io
正則表達式提取器是一種後置處理器,它能夠經過正則的方式提取請求中的響應數據,Jmeter的正則表達式提取器有以下選項模板
引用名稱:存儲匹配結果的變量名稱,能夠是一個值也能夠是一組值變量
正則表達式:匹配的正則表達式,正則表達式裏面能夠有多個正則
正則貪婪模式和非貪婪模式匹配:貪婪模式會盡量多的匹配內容,非貪婪模式會盡量少的匹配內容,貪婪模式和非貪婪模式的區別是在正則匹配後是否有?
模板:正則表達式提取器類型,樣式爲:$n$,模板可自由組合,拼接組成新的字符串內容。
模板爲$0$,則爲整個表達式匹配到的內容;
模板爲:$1$,則對應正則表達式中的第一個小括號內()匹配的內容;
模板爲$2$,則對應正則表達式中的第二個小括號()匹配的內容;
模板爲$1$$2$,則把2個()所匹配的內容拼接起來,$1$aa$2$拼接兩個變量的內容,並在中間加上aa
匹配數字:-1表明取所有數據,0表明隨機取值,1表明取第1個數據,2表明取第2個數據
缺省值:找不到匹配時的值
正則表達式提取實例
獲取接口A的響應報文
基於Jmeter正則表達式提取器編寫以下所示後置處理器,提取出響應報文的id
經過debugSampler查看變量的提取結果
在接口B(修改用戶)中使用接口A返回(新增用戶)的參數
Json提取器
Json提取器是一種後置處理器,它能夠經過解析Json報文的方式提取請求中的響應數據,Jmeter的Json提取器有以下選項
變量名:存儲提取的變量名字
Json Path Expressions:Json Path 表達式
Match Numbers: 匹配的數量,0表明隨機獲取,1表明獲取第1個數據,-1表明獲取全部數據
Compute concatenation var (suffix_ALL):是否統計全部,即將匹配到的全部值保存爲變量_ALL。
Default Values: 沒有匹配值時的提示信息
Json Extractor 提取到的值會存儲在變量裏,使用方法和普通變量同樣,經過${}引用Json Extractor 的變量便可。Json Extractor存儲的變量名是基於提取器中變量名稱擴展的,建議經過添加DebugSampler獲取Json Extractor實際存儲值的變量名。
Json提取器實例
獲取接口A的響應報文
基於Jmeter Json提取器編寫以下所示後置處理器,提取出響應報文的id
經過debugSampler查看變量的提取結果
在接口B(修改用戶)中使用接口A返回(新增用戶)的參數
經過上述示例能夠看到,正則表達式提取器和Json提取器的處理流程是一致的,只是提取方式不一樣。Jmeter經過添加相應的後置處理器能夠解析到請求的返回結果,而且存儲爲參數供後續接口使用,經過這種方式實現多請求的參數傳遞,從而實現接口的串聯測試。