您的位置:軟件測試 > 開源軟件測試 > 開源性能測試工具 > Jmeter
如何使用Jmeter模擬爬蟲測試?
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2017/6/20 9:34:00 ] 推薦標(biāo)簽:性能測試工具 Jmeter

  在構(gòu)建Web應(yīng)用程序負(fù)載壓力測試時(shí),您可能需要模擬一組用戶“抓取”網(wǎng)站并隨機(jī)單擊鏈接。 特別是對于動(dòng)態(tài)網(wǎng)站,如博客,新聞門戶,社交網(wǎng)絡(luò)等,新內(nèi)容被頻繁添加或甚至實(shí)時(shí)添加。 這種形式的測試能確保用戶將獲得流暢的瀏覽體驗(yàn),并檢查斷開的鏈接或任何意外錯(cuò)誤。
  本文介紹了模擬網(wǎng)站“爬網(wǎng)”的3種常用的方法:點(diǎn)擊網(wǎng)頁中找到的所有鏈接、使用HTML鏈接解析器和高級spidering測試計(jì)劃。
  1.單擊網(wǎng)頁中找到的所有鏈接
  使用正則表達(dá)式提取得到的鏈接的過程在 JMeter的使用正則表達(dá)式 一文被描述。算法如下:
  1a。 從響應(yīng)中提取的所有鏈接 正則表達(dá)式提取 并將它們存儲(chǔ)到JMeter的變量。 相關(guān)的正則表達(dá)式將是:
  <a [^>] * href =“([^”] *)“
  不要忘記設(shè)置 匹配編號No. 為 -1 提取所有的鏈接。 如果將其留空,則只返回第一個(gè)匹配項(xiàng)。

  1b。 使用 的ForEach控制器 迭代提取的鏈接。
  1c。 使用HTTP請求取樣器點(diǎn)擊選擇URL,在   Output Variable  輸出變量名中  。
  演示

  優(yōu)點(diǎn)
  配置簡單。
  穩(wěn)定性。
  故障轉(zhuǎn)移和恢復(fù)能力。
  缺點(diǎn)
  正則表達(dá)式很難開發(fā),對標(biāo)記變化敏感,因此很脆弱。
  實(shí)際上不是“爬蟲”或“蜘蛛”,只是對鏈接進(jìn)行請求。
  2.使用HTML鏈接解析器
  JMeter的提供了一個(gè)特殊的測試元件,  HTML解析器的鏈接 。 此元素設(shè)計(jì)用于提取HTML鏈接和表單,并使用提取的值替換匹配的HTTP請求采樣器相關(guān)字段。 因此,HTML鏈接解析器可用于模擬使用少配置抓取網(wǎng)站。 方法如下:
  2a。 把HTML解析器鏈接放入  Logic Controller   邏輯控制器  下
  2b。 把HTTP請求取樣器放入邏輯控制器下,配置 服務(wù)器名稱或IP地址 和 路徑 字段提取值限制在一個(gè)“有趣”的范圍。 您可能希望專注于屬于被測試應(yīng)用程序的域,并且不希望它在Internet上爬網(wǎng),因?yàn)槿绻膽?yīng)用程序有任何鏈接到外部資源; JMeter會(huì)去外面抓爬。 Perl5風(fēng)格的正則表達(dá)式可以用來設(shè)置提取的鏈接范圍。

  演示

  優(yōu)點(diǎn)
  易于配置和使用。
  行為像一個(gè)“蜘蛛”。
  缺點(diǎn)
  零誤差公差; 任何從響應(yīng)中提取鏈接的失敗將導(dǎo)致后續(xù)請求的級聯(lián)失敗。
  3.高級“Spidering”測試計(jì)劃
  假設(shè)上述方法的局限性,您可能想要一個(gè)解決方案,它不會(huì)因?yàn)殄e(cuò)誤而崩潰,并且將爬行整個(gè)被測試的應(yīng)用程序。 下面你可以找到一個(gè)參考測試計(jì)劃大綱,可以用作你的“蜘蛛”的骨架:
  3a。 打開主頁面。
  從中提取所有鏈接。
  點(diǎn)擊隨機(jī)鏈接。
  如果返回值有“good”的 MIME類型 (如果圖片或PDF文件或任何鏈接提取鏈路結(jié)果將被跳過); 從響應(yīng)中提取所有鏈接

  所用元素的說明:
  While Controller   是用來設(shè)置請求的大額,所以測試不會(huì)永遠(yuǎn)持續(xù)下去。 如果您透過排程scheduling限制,可以略過。
  Once Only Controller   用于執(zhí)行調(diào)用的主網(wǎng)頁只有一次。
  XPath Extractor   用于過濾掉不屬于該應(yīng)用程序下測試不感興趣例如 mailto,   callto  ,等等。一個(gè)示例XPath查詢將看起來像網(wǎng)址等各個(gè)環(huán)節(jié):
  //a[starts-with(@href,'/') or starts-with(@href,'.') or contains(@href,'${SITE}') and not(contains(@href,'mailto'))]/@href
  使用XPath不是必須的,在某些情況下,它可能是非常內(nèi)存密集型。 您可能需要考慮從響應(yīng)中提取鏈接的其他方法。 它用于演示目的,因?yàn)橥ǔPath查詢比CSS / JQuery,特別是正則表達(dá)式更加人性化。
  __javaScript() function   實(shí)際上做了三件事:
  從XPath提取器提取的選擇一個(gè)隨機(jī)鏈接。
  從URL的開始刪除 ../。
  將HTTP請求標(biāo)題設(shè)置為當(dāng)前隨機(jī)URL。
  Regular Expression Extractor   用于從響應(yīng)中提取Content-Type頭
  If Controller   使得它使下一輪從響應(yīng)中提取鏈接,如果響應(yīng)已匹配的內(nèi)容類型才啟動(dòng)。

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