接口測試參數化詳解(Jmeter)


簡介

接口測試是目前最主流的自動化測試手段,它組合不同的參數向服務器發送請求,接受和解析響應結果,通過測試數據的交換邏輯來驗證服務端程序工作的正確性。我們在測試過程中需要考慮不同的輸入組合,來覆蓋不同的測試范圍;除此之外,系統中往往存在一些有唯一性校驗的接口,不允許重復錄入關鍵字段(eg: 用戶名,身份證…),針對這些有唯一性校驗的接口,需要在每次運行時動態輸入不同的數據。


為了解決上述問題,Jmeter提供了一些參數化的工具,最常用的有RandomString函數,CSVRead函數以及CSVDataSetConfig。


RandomString函數

Jmeter通過RandomString函數助手可動態生成字符串,它包括三個變量:

• Random string length:生成的String長度

• Chars to use for random string generation:用於生成String的字符集

• Name of variable in which to store the result (optional):可選,指定存儲生成的String變量名,供后續接口調用。


通過RandomString可以生成任意長度的指定字符集的字符串,除了生成隨機字符串,還可以基於RandomString拼接擴展特定格式的字符串。

比如有些系統會校驗手機號前三位,即可通過RandomString生成后8位數字,然后拼接滿足需求的前三位數字組合。


RandomString函數非常強大,幾乎可以實現接口單個請求參數的所有參數化工作,但在實際應用中,有時候不同請求參數有一定的關聯性,此時無法通過RandomString來解決多請求參數之間的關聯性問題,需要引入CSV組件來解決。


CSVRead函數

CSVRead函數適用於一組關聯請求參數的場合,比如要選擇用戶的收獲地址,往往需要選擇省->市->區,而省市區這三個請求參數之間有關聯性,此時可以通過自定義一組滿足關聯性要求的數據,將其寫入CSV文件,然后在Jmeter中通過CSV函數來讀取CSV文件。

Jmeter中通過函數助手可引入CSVRead函數的支持,它有兩個參數:

• CSV File to get Values from: 需要讀取的CSV文件

• CSV文件列號:從0開始



CSVRead函數有一些局限性,CSVRead不可指定編碼,跨系統調用時可能出現亂碼;另外多次循環同一個請求時會重復讀取第一行數據,只有當線程數設置為多個時,才會讀取多行數據。


CSV Data Set Config配置元件

CSV Data Set Config 是CSVRead函數的升級版組件,它可以配置更多選項來控制讀取的過程:

• Filename:CSV文件路徑

• File Encoding:編碼格式,中文系統下生成的CSV文件編碼使用GBK (英文系統使用UTF-8)

• Variables Name:生成的變量名,通過順序和Excel列數據對應,指定變量名以后DebugSampler中可查看變量值

• Delimiter:分割符,CSV默認的分割符是逗號,tab分割符用

• Allow quoted data: 是否允許雙引號內的拆分,設置為Ture時,“a,b”,c 會被解析為3列數據,設置為False時,會被解析為2列數據,默認False

• Recycle on EOF:參數文件是否循環遍歷,設置為False時,文件遍歷完則終止提取,請求的參數值為EOF,默認True。無論是設置多線程,還是多次迭代,都會循環遍歷CSV文件。

• Stop thread on EOF:參數值為EOF時,是否停止執行線程。當 Recycle on EOF 設置為 true 時,此項不起任何作用。當且僅當 Recycle on EOF? 為 false 時,此項配置才生效。默認為False

• Sharing mode:共享模式,All threads:參數文件對所有線程共享,包括同一測試計划中的不同線程組;Current thread group:只對當前線程組中的線程共享;Current thread:僅對當前線程獲取。


以上三個組件基本涵蓋了接口自動化中參數化的絕大多數功能,對於更復雜的參數化需求,可通過編碼方式實現腳本,並通過Jar包的方式引入腳本支持。

 

作  者:Testfan Kitty

出  處:微信公眾號:自動化軟件測試平台

版權說明:歡迎轉載,但必須注明出處,並在文章頁面明顯位置給出文章鏈接

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM