您的位置:軟件測試 > 開源軟件測試 > 開源性能測試工具 > Jmeter
JMeter中對于Json數(shù)據(jù)的處理方法
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2015/7/30 13:55:38 ] 推薦標簽:測試管理工具 軟件測試工具

  Json 作為一種數(shù)據(jù)交換格式在網(wǎng)絡(luò)開發(fā),特別是 Ajax 與 Restful 架構(gòu)中應(yīng)用的越來越廣泛。而 Apache 的 JMeter 也是較受歡迎的壓力測試工具之一,但是它本身沒有提供對于 Json 數(shù)據(jù)的響應(yīng)處理。本文中假設(shè)需要從 HTTP 的響應(yīng)頭中返回的 Json 格式的數(shù)據(jù)流中抽取某些特定的數(shù)據(jù),數(shù)據(jù)格式如下:
{
"name":"Simpsons family",
"members":[
{"firstName":"Homer", "lastName":"Simpson"},
{"firstName":"Marge", "lastName":"Simpson"},
{"firstName":"Bart", "lastName":"Simpson"},
{"firstName":"Lisa", "lastName":"Simpson"},
{"firstName":"Maggie", "lastName":"Simpson"}
]
}
  下面我們使用不同的方法來進行數(shù)據(jù)的抽取工作:
  正則表達式提取
  JMeter 安裝了正則表達式插件之后,可以按照固定的格式從字符串中提取數(shù)據(jù),而本例中正則表達式如下所示:
  "firstName":"(.+?)"
  使用了該表達式之后會返回所有服從表達式的字符串,但是只有一個表達式是我們所關(guān)注的?梢允褂$1$ 來作為模板,而 3 則會返回第三個數(shù)據(jù)。

  當偶爾需要對Json數(shù)據(jù)進行處理時,正則表達式是一個合適的選擇,它的一個優(yōu)勢在于JMeter本身內(nèi)置了Json處理模塊。但是,閱讀處理正則表達式卻是比較復(fù)雜的,特別是對于某些復(fù)雜的Json數(shù)據(jù)。
  JMeter JSON 插件
  另一種處理 Json 數(shù)據(jù)的方法是使用 JMeter 的插件,該插件可以使用 JSONPath 來獲取 JSON 數(shù)據(jù)中特定位置的數(shù)據(jù)。類似于 XML 文件中的 XPath , JSONPath 可以使用簡單的表達式來操作 Json 對象。 JSON Path Extractor 是一個開源的增加了 post處理器的插件,可以將該插件的 Lib 文件拷貝到 JMeter 的 lib 目錄下即可。
  而上文中提及的需要定位的數(shù)據(jù)可以使用如下的JSONPath 進行描述:
  $.members[2].firstName
  在 JMeter 中,只需要從 PostProcessor 菜單中打開 JSON Path Extractor 然后輸入變量名與默認值即可,如下所示:

  JSONPath 表達式較短并且易于閱讀,能夠有效提高測試腳本的易維護性,該插件并不隨著標準的 JMeter 一起安裝。
  BeanShell Post Processor
  后一種方法即是借用了 JMeter 的對于 BeanShell 支持的特性, BeanShell 是一個輕量級的面向 Java 的腳本語言。 BeanShell Post Processor 允許使用標準的 Java 語法來處理 Json 數(shù)據(jù),使用方法如下圖所示:

  總結(jié)
  本文列舉出了三種可用的從 Json 格式的返回值中提取數(shù)據(jù)的方法,正則表達式對于簡單的 Json 格式的數(shù)據(jù)的快速標準化非常占優(yōu)勢。而 JsonPath 插件可以用于創(chuàng)建能夠被維護修改的腳本,但是需要額外的插件安裝工作。而后的帶 JSON 庫的BeanShell 確實非常詳細并且依賴于 Java 語言的靈活性可以進行進一步的開發(fā)。

軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd