最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

90%測試猿都想學(xué)的Jmeter技能,你get嗎?

2021-08-28 16:18 作者:土豆聊軟件測試  | 我要投稿


01.

前言

jmeter 這個工具既可以做接口的功能測試,也可以做自動化測試,還可以做性能測試,其主要用途就是用于性能測試。但是,有些公司和個人,就想用 jmeter 來做接口自動化測試。

你有沒有想過呢?

下面我就給大家講講,用 jmeter 如何做接口自動化測試。


02.

jmeter 與接口自動化測試


如果要你用 jmeter 來做接口自動化測試,你是不是把幾乎每一個測試用例,都是用一個取樣器來實現(xiàn)?

相信很多人都是這么想的,也是這么干的。


但是,很遺憾,你這種,是初級入門做法。你能實現(xiàn)所有的測試用例都被執(zhí)行,但是,你寫腳本和維護腳本的時間,可能比你用手工執(zhí)行所有的測試用例時間還要長,而且還可能長很多。


因為,只要開發(fā)人員改了接口一個地方,你得從所有取樣器中,找出與這個接口相關(guān)的所有取樣器,然后一一修改,萬一有遺漏,哪出現(xiàn)的失敗,不是 bug,而是你腳本的問題。所以說,這是入門級人干的事情。


那有沒有更好的辦法呢?


平時寫功能測試用例的時候,習(xí)慣用 Excel 的同學(xué),可能就會想,我能把自動化測試用例每個信息都寫在 Excel 表格中,然后,使用 jmeter 的 CSV 數(shù)據(jù)文件讀取功能,把它讀取出來執(zhí)行,是不是就可以呢?


這種方法,就比前面的方法好了很多,用例還是用 Excel 來維護,只是使用 jmeter 來讀取,執(zhí)行就可以了。整體的可維護性要好很多很多,工作量也要少很多。


但是,在真正動手去做的時候,我們又會發(fā)現(xiàn),困難重重。


寫過自動化測試用例的同學(xué),應(yīng)該會有這樣的經(jīng)歷,就是做接口測試時,我們通常會先對某個接口各種參數(shù)進行測試,這樣,接口地址相同,但是參數(shù)不一樣,校驗的接口也一樣。


在做完單個接口之后,我們還會做由多個接口構(gòu)成的業(yè)務(wù)測試,這個時候,每個接口地址都不一樣,接口請求的方法也可能不一樣,最后的校驗點,也可能變化,這樣的自動化腳本,應(yīng)該要怎么寫呢?


第一個對單接口,編寫自動化測試腳本,可能還好實現(xiàn),因為接口相同,那么他的請求方法肯定相同,雖然,請求頭、請求體、校驗信息可能不同,但是,至少還有共同點。


而第二個,對業(yè)務(wù)編寫自動化測試腳本,那就很難了,因為幾乎所有的都可能不同,請求的協(xié)議、方法、請求頭、請求體,全都可能不同,而且請求頭和請求體還可能要有動態(tài)值,這個怎么做呢?


萬事開頭難,只怕去實踐。只要你想好了,真正去動手做了,這很多問題,就不那么難了。


有很多事情,我們可以加條件判斷,和循環(huán)控制等邏輯控制器,就可以實現(xiàn)的。


靠我一篇文章,就把它全部寫出來,這是不現(xiàn)實的,所以,今天,主要講一個,被很多同學(xué)問到,難倒了一大片好漢的問題。


03.

實操案例


如果你在 jmeter 中,每個接口寫一個取樣器,這個問題很好解決,直接使用參數(shù)引用就可以解決,但是,這個同學(xué)的做法是把測試用例寫在 CSV 文件中,然后使用 jmeter 去讀取 CSV 文件,執(zhí)行測試用例,如何來實現(xiàn)動態(tài)參數(shù)呢?

肯定,有的同學(xué)已經(jīng)想到了,使用變量引用,在 CSV 中,按照 jmeter 的寫法,寫引用變量。

好了,給大家一個看一個參考:


我們用 jmeter 寫個腳本,來運行下,看能否成功。


從腳本來運行情況來看,我們可以取到名稱,地址,和請求體,但是,因為請求體在 CSV 中寫了 jmeter 函數(shù),結(jié)果讀取出來運行時,還是原樣運行,并沒有對請求體中的函數(shù)進行執(zhí)行。

怎么辦呢?

很多人,就卡在這了,不知道怎么辦了。

其實,我們想一下,現(xiàn)在是內(nèi)容讀取出來了,但是內(nèi)容是原樣進行請求,沒有對內(nèi)容中的函數(shù)進行執(zhí)行,現(xiàn)在的問題,只需要解決 body 中的函數(shù),能被運行就可以了。

我們再想下,在 jmeter 中,有哪些可以運行函數(shù)的方法?jexl3 函數(shù)可以,groovy 函數(shù)可以。

04.

Exl3 函數(shù)


jexl3 函數(shù),是要運行一段代碼,返回代碼結(jié)果,我們的 body 是 JSON 格式,顯然不能直接運行,要想運行,還得寫 Java 代碼調(diào)用 JSON 運行才可以,非常復(fù)雜。

groovy 函數(shù),是要運行一個表達式,顯然,也不行。

那還有沒有其他的函數(shù)呢?eval 函數(shù),這個函數(shù),返回的是字符串表達式運行的結(jié)果。

此時,我們修改下我們 jmeter 中取樣器的請求體。


看,運行結(jié)果,函數(shù)被執(zhí)行了,注冊的賬號動態(tài)變化了。

接下來,我們就把第 2 條用例,使用了關(guān)聯(lián),也寫出來。

現(xiàn)在,我們已經(jīng)實現(xiàn),在 jmeter 中,使用一個取樣器執(zhí)行 2 個不同接口,并且動態(tài)參數(shù)值的自動化運行了。

現(xiàn)在,我們再把斷言加上。

注意:斷言中,如果有中文,就要特別注意文件編碼

現(xiàn)在,我們再加大難度,在 CSV 文件中寫個 GET 接口。

我們發(fā)現(xiàn),多個接口請求方法不一樣,jmeter 肯定不能用 1 個取樣器了, get 請求沒有 body 參數(shù),但是,請求頭要添加一個 Token 參數(shù)。

是不是一下楞圈了,不知道怎么動了?看懂下面的圖,你就知道怎么做了。

在取樣器的前面增加一個條件判斷,判斷是請求方法,根據(jù)請求方法,執(zhí)行 POST 取樣器或 GET 取樣器

然后,把循環(huán)次數(shù)設(shè)置為 CSV 文件條數(shù)一致,其他的地方,應(yīng)該就比較容易理解了。


05.

END

看最后,多條測試用例,只用 2 個取樣器就搞定了。以后,改動 CSV 文件,可能都不用動 jmeter 腳本,增加測試用例,改下循環(huán)控制器數(shù)量就可以了。

當然,這還不是最完美的,里面還有諸多不足。給想用 jmeter 做接口自動化測試的同學(xué)開了個頭,更多的,還需要同學(xué)們自己動手,也歡迎同學(xué)們,在文章后面留言討論。

注意,這篇文章的技術(shù),只適合在自動化中,不能用這個腳本進行性能測試。

90%測試猿都想學(xué)的Jmeter技能,你get嗎?的評論 (共 條)

分享到微博請遵守國家法律
扬州市| 石嘴山市| 聂拉木县| 邵东县| 隆化县| 宁德市| 周至县| 商都县| 济源市| 上犹县| 青神县| 文化| 海门市| 巫山县| 武乡县| 汶上县| 都昌县| 商城县| 临城县| 安溪县| 安阳市| 集贤县| 吴忠市| 焉耆| 南川市| 甘肃省| 安西县| 陕西省| 汤原县| 合肥市| 卓资县| 肥西县| 汝阳县| 安泽县| 漠河县| 邢台县| 丰镇市| 克什克腾旗| 吴江市| 富裕县| 鲜城|