jmeter随机参数化不重复_接口测试参数化详解(Jmeter)
接口測試是目前最主流的自動化測試手段,它組合不同的參數(shù)向服務(wù)器發(fā)送請求,接受和解析響應(yīng)結(jié)果,通過測試數(shù)據(jù)的交換邏輯來驗(yàn)證服務(wù)端程序工作的正確性。我們在測試過程中需要考慮不同的輸入組合,來覆蓋不同的測試范圍;除此之外,系統(tǒng)中往往存在一些有唯一性校驗(yàn)的接口,不允許重復(fù)錄入關(guān)鍵字段(eg: 用戶名,身份證…),針對這些有唯一性校驗(yàn)的接口,需要在每次運(yùn)行時(shí)動態(tài)輸入不同的數(shù)據(jù)。
為了解決上述問題,Jmeter提供了一些參數(shù)化的工具,最常用的有RandomString函數(shù),CSVRead函數(shù)以及CSVDataSetConfig。
RandomString函數(shù)
Jmeter通過RandomString函數(shù)助手可動態(tài)生成字符串,它包括三個(gè)變量:
? Random string length:生成的String長度
? Chars to use for random string generation:用于生成String的字符集
? Name of variable in which to store the result (optional):可選,指定存儲生成的String變量名,供后續(xù)接口調(diào)用。
通過RandomString可以生成任意長度的指定字符集的字符串,除了生成隨機(jī)字符串,還可以基于RandomString拼接擴(kuò)展特定格式的字符串。
比如有些系統(tǒng)會校驗(yàn)手機(jī)號前三位,即可通過RandomString生成后8位數(shù)字,然后拼接滿足需求的前三位數(shù)字組合。
RandomString函數(shù)非常強(qiáng)大,幾乎可以實(shí)現(xiàn)接口單個(gè)請求參數(shù)的所有參數(shù)化工作,但在實(shí)際應(yīng)用中,有時(shí)候不同請求參數(shù)有一定的關(guān)聯(lián)性,此時(shí)無法通過RandomString來解決多請求參數(shù)之間的關(guān)聯(lián)性問題,需要引入CSV組件來解決。
CSVRead函數(shù)
CSVRead函數(shù)適用于一組關(guān)聯(lián)請求參數(shù)的場合,比如要選擇用戶的收獲地址,往往需要選擇省->市->區(qū),而省市區(qū)這三個(gè)請求參數(shù)之間有關(guān)聯(lián)性,此時(shí)可以通過自定義一組滿足關(guān)聯(lián)性要求的數(shù)據(jù),將其寫入CSV文件,然后在Jmeter中通過CSV函數(shù)來讀取CSV文件。
Jmeter中通過函數(shù)助手可引入CSVRead函數(shù)的支持,它有兩個(gè)參數(shù):
? CSV File to get Values from: 需要讀取的CSV文件
? CSV文件列號:從0開始
CSVRead函數(shù)有一些局限性,CSVRead不可指定編碼,跨系統(tǒng)調(diào)用時(shí)可能出現(xiàn)亂碼;另外多次循環(huán)同一個(gè)請求時(shí)會重復(fù)讀取第一行數(shù)據(jù),只有當(dāng)線程數(shù)設(shè)置為多個(gè)時(shí),才會讀取多行數(shù)據(jù)。
CSV Data Set Config配置元件
CSV Data Set Config 是CSVRead函數(shù)的升級版組件,它可以配置更多選項(xiàng)來控制讀取的過程:
? Filename:CSV文件路徑
? File Encoding:編碼格式,中文系統(tǒng)下生成的CSV文件編碼使用GBK (英文系統(tǒng)使用UTF-8)
? Variables Name:生成的變量名,通過順序和Excel列數(shù)據(jù)對應(yīng),指定變量名以后DebugSampler中可查看變量值
? Delimiter:分割符,CSV默認(rèn)的分割符是逗號,tab分割符用
? Allow quoted data: 是否允許雙引號內(nèi)的拆分,設(shè)置為Ture時(shí),“a,b”,c 會被解析為3列數(shù)據(jù),設(shè)置為False時(shí),會被解析為2列數(shù)據(jù),默認(rèn)False
? Recycle on EOF:參數(shù)文件是否循環(huán)遍歷,設(shè)置為False時(shí),文件遍歷完則終止提取,請求的參數(shù)值為EOF,默認(rèn)True。無論是設(shè)置多線程,還是多次迭代,都會循環(huán)遍歷CSV文件。
? Stop thread on EOF:參數(shù)值為EOF時(shí),是否停止執(zhí)行線程。當(dāng) Recycle on EOF 設(shè)置為 true 時(shí),此項(xiàng)不起任何作用。當(dāng)且僅當(dāng) Recycle on EOF? 為 false 時(shí),此項(xiàng)配置才生效。默認(rèn)為False
? Sharing mode:共享模式,All threads:參數(shù)文件對所有線程共享,包括同一測試計(jì)劃中的不同線程組;Current thread group:只對當(dāng)前線程組中的線程共享;Current thread:僅對當(dāng)前線程獲取。
以上三個(gè)組件基本涵蓋了接口自動化中參數(shù)化的絕大多數(shù)功能,對于更復(fù)雜的參數(shù)化需求,可通過編碼方式實(shí)現(xiàn)腳本,并通過Jar包的方式引入腳本支持。
作 者:Testfan Kitty
出 處:微信公眾號:自動化軟件測試平臺
版權(quán)說明:歡迎轉(zhuǎn)載,但必須注明出處,并在文章頁面明顯位置給出文章鏈接
總結(jié)
以上是生活随笔為你收集整理的jmeter随机参数化不重复_接口测试参数化详解(Jmeter)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: postman 安装失败_【Postma
- 下一篇: 命名空间不能直接包含_C++程序中可以命