本次測試的是基于HTTP協(xié)議的接口,主要是通過Jmeter來完成接口測試,借此熟悉Jmeter的基本操作。
本次實(shí)戰(zhàn),我是從網(wǎng)上找的接口測試項(xiàng)目,該項(xiàng)目提供了詳細(xì)的接口文檔,我們可以通過學(xué)習(xí)接口文檔來設(shè)計(jì)測試用例,最后再使用Jmeter進(jìn)行實(shí)戰(zhàn)??偟膩碚f,這個項(xiàng)目很適合用來練手,項(xiàng)目網(wǎng)址:http://doc.nnzhp.cn/index.php?s=/6&page_id=8
所有設(shè)置如下:

1.獲取學(xué)生信息(GET請求)
從接口文檔中,我們可以看到獲取學(xué)生信息用到的是GET方式的請求,入?yún)⒅?stu_name 為必填項(xiàng),返回參數(shù)太多,在此就不詳細(xì)說明了。我們先創(chuàng)建一個線程組,在線程組下添加一個HTTP請求和察看結(jié)果樹,如下:


上面的是請求正確的結(jié)果,如果請求錯誤,比如填寫一個系統(tǒng)數(shù)據(jù)庫中 stu_name 沒有的值,那么返回結(jié)果如下:

2.登錄(POST)
在登錄接口中,接口文檔中提供了一個測試用戶,我們可以利用該用戶來模擬測試。

登錄接口用到的是POST請求方式,入?yún)?username 和 passwd 為必填項(xiàng),我們再創(chuàng)建1個線程組,在線程組下添加一個HTTP請求和察看結(jié)果樹,如下:


當(dāng)我們填寫的是錯誤的入?yún)r,返回結(jié)果如下:

3.添加學(xué)生信息(POST請求,JSON類型)
在添加學(xué)生信息的接口中,用到的也是POST請求方式,但與登錄接口不同的是,它的入?yún)⑹荍SON類型的,接口文檔中有1個JSON請求示例,我們可以直接復(fù)制過來,簡單修改一下即可。在這里,我們再創(chuàng)建1個線程組,在線程組下添加一個HTTP請求和察看結(jié)果樹,如下:


在這里,由于這個學(xué)生信息已存在系統(tǒng)中了,因此返回添加失敗的結(jié)果。所以,我需要添加1個新的學(xué)生信息,另外,這里需要調(diào)整下編碼格式為utf-8,否則添加的學(xué)生信息會出現(xiàn)中文亂碼。


在這里,大家可以設(shè)計(jì)不同的測試用例來進(jìn)行測試,但操作方式都是一樣的,只是返回結(jié)果不同而已。
4.學(xué)生充值金幣(POST請求,添加cookie)
這個接口有權(quán)限驗(yàn)證,需要admin用戶登錄成功后才可以進(jìn)行充值,另外,在入?yún)?stu_id 和 gold 中,我們發(fā)現(xiàn) stu_id 指的是學(xué)生ID,這里其實(shí)就是最開始 獲取學(xué)生信息 接口返回結(jié)果中的id字段,如下:

因此,我們創(chuàng)建一個線程組,在線程組下依次添加登錄請求、學(xué)生充值金幣請求、察看結(jié)果樹,在登錄請求下添加JSON提取器,用于提取cookie,在學(xué)生充值金幣請求下添加HTTP Cookie管理器,如下:






在JSON提取器中,我們通過 $.login_info.sign 來提取登錄的cookie,并在HTTP Cookie管理器中進(jìn)行引用,如果沒有關(guān)聯(lián)cookie,那么將充值失敗,提示未登錄。

5.獲取所有學(xué)生信息(GET請求,添加header)
從接口文檔中,我們了解到,要獲取所有學(xué)生信息,需要添加請求信息頭,因此,我們創(chuàng)建一個線程組,在線程組下依次添加HTTP信息頭管理器、HTTP請求、察看結(jié)果樹,如下:



這里需要說一下,我們在返回的結(jié)果中看到,有些學(xué)生信息中有很多“???”,這是因?yàn)樵谔砑訉W(xué)生信息的時候,我們傳入中文數(shù)據(jù)導(dǎo)致亂碼,因此在添加學(xué)生信息接口中,我特意說明讓大家設(shè)置utf-8編碼,這樣添加的學(xué)生信息就不會出現(xiàn)亂碼了。
6.文件上傳(POST請求)
在上傳文件接口中,需要注意的是這里的入?yún)⑹莊ile類型的,因此,我們需要準(zhǔn)備一個待上傳的文件。

最后,我們創(chuàng)建一個線程組,在線程組下依次添加文件上傳請求、察看結(jié)果樹,如下:


OK,以上就是通過Jmeter對這個接口項(xiàng)目進(jìn)行接口測試的過程,比較基礎(chǔ),適合新手用來練習(xí)操作Jmeter,另外,我發(fā)現(xiàn)還有另外一個接口項(xiàng)目:抽獎項(xiàng)目api(http://doc.nnzhp.cn/index.php?s=/5&page_id=7),感覺和本次測試項(xiàng)目差不多,大家有興趣的可以嘗試下,后續(xù)有時間的話,將考慮通過Python對本項(xiàng)目進(jìn)行接口測試。
最后,通過本項(xiàng)目,可以看到,Jmeter上手起來挺快的,即使不懂代碼的同學(xué)學(xué)會Jmeter的基本操作后,也可以很快進(jìn)行接口測試實(shí)踐。
如有錯誤,歡迎指出!
作者:wintest
簡書:http://www.itdecent.cn/u/9bf1825a10bb
博客園:https://www.cnblogs.com/wintest
文章為本人原創(chuàng),歡迎轉(zhuǎn)載,但必須在文章頁面明顯位置給出原文鏈接,并保留此段聲明,否則保留追究法律責(zé)任的權(quán)利。