在本文中,您將瞭解如何使用 Azure 負載測試,從測試腳本中的逗號分隔值 (CSV) 檔案讀取數據。 使用來自外部 CSV 檔案的數據,讓您的 JMeter 或 Locust 測試腳本可設定。 例如,您可能會逐一查看 CSV 檔案中的所有客戶,將客戶詳細數據傳遞至 API 要求。
在 JMeter 中,您可以使用測試腳本中的 CSV 數據集 Config 元素 ,從 CSV 檔案讀取數據。 在 Locust 中,您可以在測試腳本中開啟 CSV 檔案、讀取所需的數據,並將它傳遞給要求。
若要從 Azure 負載測試中的外部檔案讀取數據,您必須將外部檔案與負載測試中的測試腳本一起上傳。 如果您跨多個平行測試引擎實例相應放大測試,您可以選擇將這些實例平均分割輸入數據。
從 GitHub 複製或下載範例項目開始。
先決條件
- 具有有效訂閱的 Azure 帳戶。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
- Azure 負載測試資源。 若要建立負載測試資源,請參閱建立和執行負載測試。
- Apache JMeter 測試腳本 (JMX) 或 Locust 腳本。
- (選用) Apache JMeter GUI 用於撰寫測試腳本。 若要安裝 Apache JMeter,請參閱 Apache JMeter 快速入門。
更新測試文本以讀取 CSV 數據
在本節中,您會設定測試腳本來參考外部 CSV 檔案。 您可以使用 CSV 資料集 Config 元素 ,從 CSV 檔案讀取資料。
這很重要
Azure 負載測試會在單一資料夾中上傳 JMX 檔案和所有相關檔案。 當您在 JMeter 文稿中參考外部檔案時,請確認測試腳本中沒有檔案路徑參考。
針對以 JMeter 為基礎的測試,請使用 Apache JMeter GUI 修改 JMeter 腳本:
選取測試文本中的 CSV 數據集組態 專案。
更新 檔名 資訊,並移除任何檔案路徑參考。
選擇性地,當您將 CSV 檔案分割到測試引擎時,請在 [變數名稱] 中輸入 CSV 功能變數名稱。
分割 CSV 檔案時,Azure 負載測試不會保留標頭數據列。 在 CSV 資料集 Config 元素中提供變數名稱,而不是使用標頭數據列。
針對文本中的每個 CSV 數據集組態 元素重複上述步驟。
儲存 JMeter 腳本,並將腳本上傳至負載測試。
針對以 Locust 為基礎的測試,請開啟 Locust 腳本,以更新它作為您選擇的編輯器。
在開啟檔案的 區段中,更新 Filename 資訊,並移除任何檔案路徑參考。
儲存 Locust 腳本,並將腳本上傳至負載測試。
將 CSV 檔案上傳至負載測試
當您從測試腳本參考外部檔案時,請務必將所有這些檔案連同測試腳本一起上傳。 負載測試啟動時,Azure 負載測試會將所有檔案複製到每個測試引擎實例上的單一資料夾。
這很重要
分割 CSV 檔案時,Azure 負載測試不會保留標頭數據列。 將 CSV 檔案新增至負載測試之前,請先從檔案中移除標頭數據列。
若要使用 Azure 入口網站將 CSV 檔案新增至負載測試:
在 Azure 入口網站中,移至您的 Azure 負載測試資源。
在左窗格中,選取 [ 測試 ] 以檢視測試清單。
選取複選框,從清單中選取您的測試,然後選取 [ 編輯]。
在 [ 測試計劃] 索引標籤上,從您的電腦選取 CSV 檔案,然後選取 [ 上傳 ] 以將檔案上傳至 Azure。
如果您使用 URL 型負載測試,您可以在 [ 變數 ] 資料行中輸入變數名稱做為逗號分隔清單。
如果 CSV 檔案的大小大於 50 MB,請壓縮檔案。 ZIP 檔案的大小應小於 50 MB。 Azure 負載測試會在測試回合時自動解壓縮檔案。 最多只能有五個 zip 成品,每個 zip 不得超過 1000 個檔案,且未壓縮的總大小為 1 GB。
選取 [套用 ] 以修改測試,並在重新執行時使用新的組態。
小提示
如果您使用 URL 型負載測試,您可以使用 語法,從 HTTP 要求 $(variable) 中的 CSV 輸入資料檔案參考值。
跨測試引擎分割 CSV 輸入數據
根據預設,Azure 負載測試會複製並處理所有測試引擎執行個體中未修改的輸入檔案。 根據預設,每個測試引擎都會處理整個 CSV 檔案。 或者,Azure 負載測試可讓您將 CSV 輸入數據平均分割到所有引擎實例。 如果您有多個 CSV 檔案,則會平均分割每個檔案。
例如,如果您有大型客戶 CSV 輸入檔,而且負載測試會在 10 個平行測試引擎上執行,則每個執行個體都會處理 1/10 的客戶。
若要設定負載測試以分割輸入 CSV 檔案:
故障排除
測試狀態失敗,且測試記錄具有 File {my-filename} must exist and be readable
當負載測試以 [失敗] 狀態完成時,您可以 下載測試記錄。
當您在測試記錄檔中收到錯誤訊息 File {my-filename} must exist and be readable 時,在執行測試腳本時找不到輸入 CSV 檔案。
Azure 負載測試會將所有輸入檔案與測試腳本一起儲存。 當您在測試文本中參考輸入 CSV 檔案時,請務必 不要 包含檔案路徑,但只使用檔名。
下列代碼段顯示 JMeter 檔案的擷取,該檔案會使用 CSVDataSet 元素來讀取輸入檔案。 請注意, filename 不包含檔案路徑。
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="Websites CSV" enabled="true">
<stringProp name="filename">websites.csv</stringProp>
<stringProp name="fileEncoding">UTF-8</stringProp>
<stringProp name="variableNames">CustomerId,CustomerName,Url</stringProp>
<boolProp name="ignoreFirstLine">true</boolProp>
<stringProp name="delimiter">,</stringProp>
<boolProp name="quotedData">false</boolProp>
<boolProp name="recycle">false</boolProp>
<boolProp name="stopThread">true</boolProp>
<stringProp name="shareMode">shareMode.all</stringProp>
<stringProp name="TestPlan.comments">Read all records from the CSV file - stop thread at end of file</stringProp>
</CSVDataSet>