Jmeter(七)Jmeter腳本優化(數據與腳本分離)

 

 

 

  午休時間再來記一記,嗯。。回顧着使用Jmeter的歷程,想着平常都會用到的一些功能、一些組件;敲定了本篇的主題----------是的、腳本優化。服務器

  提及腳本優化,爲何要優化?又怎麼優化?是個永恆的話題。由於畢竟每一個人的精力不一樣、業務不一樣、須要不一樣;可是能夠確定的是,但凡是有作自動化之類(騷操做),那麼便離不開一個概念。什麼呢?-------腳本與數據分離優化

  何謂「腳本與數據分離」?編碼

  所謂腳本與數據分離,能夠舉一個簡單例子,2016年,具體不清楚是什麼時間,在逛微博的時候,看到德國的一條殺雞流水生產線,以一小時殺5000多隻雞的速度而聞名(具體是否是世界第一,就不糾結了,只是舉個例子),而工做人員只須要在生產線的開始階段將活雞扔進去,直接就能夠去流水線的結束段收穫成果,質量是很是之高,活雞進去,出來的都是一塊一塊的雞腿、雞脖子、雞頭、雞爪(固然是洗乾淨的,哈哈);OK,回到本主題,腳本與數據分離也是這個道理,流水線我不動,至於它是怎麼工做的,提早設計好就OK,只須要扔原料便可,所以,此處的腳本即可以理解成流水線、而數據源即可以理解成雞啦。怎麼動數據無所謂,流水線(腳本)都是按照設計來進行執行的(哈哈、可能舉的例子有點抽象,可是大概意思明白就OK)。插件

  固然,現今,腳本與數據進行分離已經成爲自動化的基本要求;除此以外,還有一個「業務與腳本分離」,這個概念之後再記。線程

  那麼Jmeter如何實現「腳本與數據分離」呢?設計

  Jmeter通過這麼多年的發展,豐富的組件徹底能夠知足此要求。3d

  OK,仍是百度的例子!blog

  

 

  能夠看到,我模擬了一個參數user並傳入123進行請求;it

  

 

  請求中user參數以及傳入的123是發過去了,暫時忽略請求的成功與失敗。自動化

  那麼,我再添加一個請求,baidu--首頁--2;給user的參數傳入321;

  

  其餘的協議,服務器名稱,端口號,路徑都一致;

  

  能夠看到321也傳成功了;

  那麼,在請求中那些一直的部分很繁瑣,一個兩個請求能夠進行手動寫,那麼幾百個呢?

  放心、Jmeter有處理這方面的組件。

  

  是的,就是它嘍,能夠看到它和HTTP請求的界面幾乎通常無二,可是實現的功能確實徹底不同的;

  咱們將baidu--首頁--1和baidu--首頁--2,兩個HTTP請求中共同的地方提取了出來,放入HTTP請求默認值中,惟一沒變的是它的傳參,請求一下試試,看看監聽器的內容

  

  

   吶、都是POST請求,https://www.baidu.com/

  所以,徹底能夠實現,簡化腳本、簡化工做量的目標。

  截止此步,一個http協議的Jmeter腳本優化便完成了。

  那麼,又回到剛剛的問題,不是「數據與腳本分離」麼?這麼看來也並無實現數據與腳本分離嘛。。

  Jmeter讀取本地的文件(支持最好的是csv文件)也有很豐富的插件,暫且提一種方式進行讀取外部文件,其他的後續會作逐一記錄。

  

  是的,就是它CSV Data Set Config

  

  Filename:文件名(包含路徑)

  Fileencoding:文件編碼格式

  variable name(comma-delimited):變量名---默認如下方的逗號分隔符進行分隔

  Ignore first line (only used if variable names is not empty):忽略第一行(僅在變量名稱不爲空時使用);忽略CSV文件的第一行,只有在變量名不爲空時才使用,若是變量名爲空,則第一行必須包含標題。

  Delimiter(user【\t】for tab):分隔符

  Allow quoted data?:CSV文件是否應該容許引用值?若是啓用,則值能夠被括在「 - 雙引號 - 容許值包含分隔符。

  Recycle on EOF?:文件是否應該從EOF開始從新讀取?(是否循環讀取)(默認是true)

  stop thread on EOF?:在EOF中止線程?若是回收錯誤,則再EOF處中止線程

  sharing mode:共享模式;全部線程 - (默認)文件在全部線程之間共享;

              當前線程組 - 每一個文件爲其中顯示該元素的每一個線程組打開一次
              當前線程 - 每一個線程分別打開每一個文件
              標識符 - 共享相同標識符的全部線程共享相同的文件。所以,例如,若是您有4個線程組,則可使用兩個或多個組的共同ID來共享它們之間的文件。或者,您可使用線程號在不一樣線程組中的相同線程號之間共享文件。

  不少人會忽略這部份內容,固然具體的用法,以及場景後續記。

  

  外部csv文件內容

  

  HTTP請求默認值、HTTP請求中引用方式

  

  

OK,看運行結果

  

  與上方是徹底一致的,如此呢,咱們就達到了一個「數據與腳本分離」,雖說簡單了點,沒有業務邏輯的處理、判斷條件等,可是目的也已經達到了。

  服務器配置信息,協議、地址、端口號、請求參數、等等均可以進行在外部文件中進行更改,徹底能夠不用更改腳本;雖然此處的腳本可能太過於簡單了點,可是無非就是說明一個道理,Jmeter是能夠完成這部分工做的,相信在特別大的系統中,你能看到Jmeter這部分效果的。

  OK,還有大把大把的工做等着俺處理、、、、今天就先記到這塊。

相關文章
相關標籤/搜索