之前我們的用例數(shù)據(jù)都是配置在 Jmeter Http 請(qǐng)求中,每次需要增加,修改用例都需要打開 jmeter 重新編輯,當(dāng)用例越來越多的時(shí)候,用例維護(hù)起來就越來越麻煩,有沒有好的方法來解決這種情況呢?

  其實(shí)我們可以將用例的數(shù)據(jù)存放在 csv 文件中,然后通過 csv 文件配置來讀取用例中的數(shù)據(jù),執(zhí)行測(cè)試。用例數(shù)據(jù)如下圖所示:

  用例設(shè)計(jì)

  這里以 httpbin 接口為例,創(chuàng)建用例文件:jmeter-testcase.csv

  用例名稱變量含義:

  ${caseSeq}:用例編號(hào)

  ${apiType}:api 類型

  ${apiSeq} :api 版本號(hào)

  ${apiName}:api 名稱

  ${priority}:優(yōu)先級(jí)

  ${url}:api 路徑

  ${methods}:請(qǐng)求方法

  ${parameter}: 請(qǐng)求參數(shù)

  ${expectValue}:期望值,用于斷言

  Jmeter 設(shè)置步驟:

  1.新建一個(gè)線程組,命名為:數(shù)據(jù)驅(qū)動(dòng)

  2.創(chuàng)建一個(gè) http 請(qǐng)求默認(rèn)值,設(shè)置如下:

  3.添加一個(gè)循環(huán)控制器 步驟為:線程組——添加——邏輯控制器——循環(huán)控制器。 循環(huán)控制器的作用可以控制整個(gè)用例循環(huán)執(zhí)行的次數(shù)。默認(rèn)值是 1 根據(jù)用例數(shù)量可以修改為 4

  4.在循環(huán)控制器節(jié)點(diǎn)下創(chuàng)建 CSV 文件設(shè)置,具體配置內(nèi)容如下:

  5.創(chuàng)建一個(gè) if 控制器,步驟為:線程組——添加——邏輯控制器——if 控制器

  if 控制器的作用為根據(jù)不同條件執(zhí)行不同的用例,例如這里根據(jù)不同的接口請(qǐng)求類型,分別創(chuàng)建了 GET 和 POST 兩個(gè)控制器。

  GET 設(shè)置的條件語(yǔ)句如下:

  條件語(yǔ)句為:"${methods}"=="GET"其中 ${methods}表示引用 csv 中的 methods 中的值。

  參數(shù):

  Interpret Condition as Variable Expression?:如果這個(gè)選項(xiàng)被選中,將不會(huì)使用 js 解析;條件表達(dá)式的值必須是 true(忽略大小寫),這里我們?nèi)∠催x狀態(tài)。

  Evaluate for all children:如果選中這一項(xiàng),在每個(gè)子結(jié)點(diǎn)執(zhí)行前都會(huì)計(jì)算表達(dá)式

  POST 條件語(yǔ)句設(shè)置為:"${methods}"=="POST"

6.創(chuàng)建 GET 請(qǐng)求類型的用例如下

  用例名稱格式:${caseSeq}_ ${apiSeq}_${apiName}

  斷言設(shè)置如下:${expectValue}引用 csv 中對(duì)應(yīng)的值。

最后添加查看結(jié)果樹,然后運(yùn)行可以看到如下運(yùn)行結(jié)果:

  7.POST 用例設(shè)置和 GET 類似,不過參數(shù)請(qǐng)求不一樣,是在 body 中,如果發(fā)送的是json格式的參數(shù),需要添加http信息頭管理器。另外請(qǐng)求方式為:POST

運(yùn)行結(jié)果如下:

  8.最后在線程組添加一個(gè)查看結(jié)果樹,執(zhí)行可以查看全部用例執(zhí)行情況。

  小結(jié)

  通過這樣的數(shù)據(jù)驅(qū)動(dòng),當(dāng)面對(duì)大量用例時(shí)在 jmeter 設(shè)置就非常方便,后續(xù)的用例維護(hù)也非常高效,因?yàn)椴挥迷趈meter 一個(gè)個(gè)去單獨(dú)修改用例了。