Jmeter接口自動(dòng)化測試從入門到放棄

有個(gè)檸檬班的同學(xué)留言說,探討下jmeter接口自動(dòng)化以及CI。
那么今天我們就jmeter接口自動(dòng)化探討一下。
在討論jmeter接口自動(dòng)化之前,我覺得先要討論一下接口自動(dòng)化。
我的觀點(diǎn),一切代替手工測試的均為自動(dòng)化。而接口又無法像UI那樣,可以觸碰,所以接口測試在筆者觀點(diǎn)看來就是自動(dòng)化測試。而接口自動(dòng)化在筆者看來,是一次可執(zhí)行多個(gè)接口用例,并非只可執(zhí)行一個(gè)接口測試用例。
既然是一次要執(zhí)行多個(gè)測試用例,那么我們是不是應(yīng)該不局限自動(dòng)化本身,比如說,在開展測試工作前,是不是應(yīng)該準(zhǔn)備一些測試數(shù)據(jù),在測試工作完成之后,是不是要準(zhǔn)備一份漂亮的報(bào)告。

舉個(gè)例子,簡單的寫一條登錄頁面的手工測試用例:
用例標(biāo)題
在注冊界面輸入正確的賬號密碼,注冊成功,當(dāng)前url跳轉(zhuǎn)至xxx
前置條件
網(wǎng)絡(luò)正常,該賬號未注冊
用例步驟
1、在賬號輸入框輸入正確的賬號,xxx
2、在密碼輸入框輸入正確的的密碼,xxx
3、點(diǎn)擊注冊按鈕
預(yù)期結(jié)果
注冊成功,正確跳轉(zhuǎn)至xxx
實(shí)際結(jié)果
我們先來想一下,上面這條用例如何通過接口測試方式去實(shí)現(xiàn)。用jmeter測試工具舉例:
1、新建一個(gè)測試計(jì)劃
2、新建一個(gè)線程組
3、新建一個(gè)HTTP請求
4、增加一個(gè)斷言
5、增加一個(gè)查看結(jié)果樹
具體實(shí)現(xiàn)如下:

這樣看來,是沒問題的,那么這個(gè)時(shí)候我們新加一個(gè)HTTP請求呢?
比如加一個(gè)新建文章接口測試。

可以看到,注冊失敗。為什么注冊失???
因?yàn)槟阒耙呀?jīng)執(zhí)行過注冊接口測試,數(shù)據(jù)庫已經(jīng)存在你注冊的賬號,你再次注冊,會提示該賬號已注冊之類等等。
有的同學(xué)會說,這還不簡單嗎,Ctrl + T 把注冊接口給禁用了或者設(shè)置變量不就行了嗎?
是的,沒錯(cuò),那么如果一個(gè)系統(tǒng)內(nèi)有幾百個(gè)接口,其中有一半接口類似注冊接口,執(zhí)行第二次的時(shí)候會報(bào)錯(cuò),是不是每次測試前先禁用一波?

設(shè)置變量的話,是可行的。但是有些變量是jmeter不好模擬的,比如認(rèn)證和簽名。
所以在筆者看來,jmeter缺點(diǎn)之一,在接口自動(dòng)化測試中,較難給測試接口快速提供可測試環(huán)境,或者說較難提供自己想要的測試環(huán)境。

筆者認(rèn)為,測試報(bào)告應(yīng)該分兩種,一種是給自己看的,一種是給別人看的。
比如給自己看的應(yīng)該是那種可以根據(jù)測試報(bào)告快速定位哪些測試用例出了問題。給領(lǐng)導(dǎo)看的應(yīng)該是你一共寫了多少條接口測試用例,并且這些測試用例沒有任何報(bào)錯(cuò),一片綠的那種,同時(shí)較為美觀。
Jmeter是可以做測試報(bào)告的,但是無法卻無法滿足我的要求,試想一下,一次測試幾百個(gè)接口,如果有幾個(gè)接口出現(xiàn)了問題,我還得一個(gè)一個(gè)去翻,想想都麻煩,所以筆者認(rèn)為這是 jmeter第二缺點(diǎn)。
所以我的觀點(diǎn)不建議使用jmeter做接口自動(dòng)化功能測試。
推薦使用每次用例執(zhí)行之前可以快速初始化接口測試環(huán)境的、可快速定位問題的、可模擬認(rèn)證或者簽名的。
Sorry,筆者能力有限,只能想到代碼了。推薦使用python+unittest+requests。
知識都是貫通的,上篇文章提到如何自學(xué)UI自動(dòng)化,如果你想用python做接口自動(dòng)化的話,只要學(xué)習(xí)一下requests庫,學(xué)習(xí)成本相對而言較低。
在這里建議學(xué)習(xí)不要急功近利,不要看到j(luò)ava牛x,python牛x,前端牛x,就什么都學(xué),什么都去了解。這樣導(dǎo)致的結(jié)果就是什么都知道一點(diǎn),但是什么都不精。知道自己想做什么,一步一個(gè)腳印,一定比別人走的穩(wěn),走的快。
最后的最后,如果是調(diào)試接口,推薦使用postman,簡單,快速,高效。
以上觀點(diǎn)基于作者能力編寫,如有不到之處,還望海涵。