接口測試的工具postman和jmeter


 

接口:什么是接口呢?接口一般來說有兩種,一種是程序內部的接口,一種是系統對外的接口。

系統對外的接口:比如你要從別的網站或服務器上獲取資源或信息,別人肯定不會把數據庫共享給你,他只能給你提供一個他們寫好的方法來獲取數據,你引用他提供的接口就能使用他寫好的方法,從而達到數據共享的目的,比如說咱們用的app、網址這些它在進行數據處理的時候都是通過接口來進行調用的。 程序內部的接口:方法與方法之間,模塊與模塊之間的交互,程序內部拋出的接口,比如bbs系統,有登錄模塊、發帖模塊等等,那你要發帖就必須先登錄,要發帖就得登錄,那么這兩個模塊就得有交互,它就會拋出一個接口,供內部系統進行調用。

現在我們最常用的兩種接口就是webservice接口和http api接口

webService接口是走soap協議通過http傳輸,請求報文和返回報文都是xml格式的,我們在測試的時候都用通過工具才能進行調用,測試。

http api接口是走http協議,通過路徑來區分調用的方法,請求報文都是key-value形式的,返回報文一般都是json串,有get和post等方法,這也是最常用的兩種請求方式。

接口測試的目的是測試接口,尤其是那些與系統相關聯的外部接口,測試的重點是要檢查數據的交換,傳遞和控制管理過程,還包括處理的次數。

接口測試是測試系統組件間接口的一種測試。

接口測試就和普通功能測試沒什么區別,區別就是功能測試是在頁面上點點點,在頁面上輸入值,提交數據看結果,而接口測試沒有頁面,通過接口規范文檔上的調用地址、請求參數,拼接報文,然后發送請求,檢查返回結果。

接口測試的必要性

一、可以發現很多在頁面上操作發現不了的bug

二、檢查系統的異常處理能力

三、檢查系統的安全性、穩定性

四、前端隨便變,接口測好了,后端不用變

接口測試流程

一、需求評審,熟悉業務和需求

二、開發提供接口文檔

三、編寫接口測試用例

四、用例評審

五、提測后開始測試

六、提交測試報告

接口測試的前提:測接口的話,必須得有接口文檔,知道 url的請求方式 參數 以及參數的說明

接口文檔至少包括:

1、接口說明 2、調用url 3、請求方法(get\post) 4、請求參數、參數類型、請求參數說明 5、返回參數說明

http://doc.nnzhp.cn/index.php?s=/5&page_id=7

為什么要做接口測試呢? 我們知道,其實接口也是app端或者說是web前端進行調用的,那我們直接在app或者web端直接測試不就好了,反正它都是調用的接口,app和web端功能測試通過了,那接口不就是好使的嘛。 真的是這樣嗎?說的好像很有道理,其實不然,要是真的是這樣的話,那我還講啥接口測試。 思考一個問題,假如現在在京東app上買東西,支付訂單,訂單金額是500元,支付的話,那肯定要調用支付接口,你在頁面上操作的話,訂單金額是修改不了的,那如果你想測試一下服務端有沒有校驗訂單的金額,我想把訂單金額改成5元,那在頁面上點是測試不了的,這個時候我們就可以直接用接口來調用,修改一下訂單金額的值,然后再發請求就可以了。 當然這只是我舉個例子,接口測試當然不只是這一點原因,總的來說還是為了更好的提高我們產品的質量。

怎么來測接口-http接口

get請求:

接口請求報文拼接 1、url?param=value&param2=value 這種是最簡單的一種,問號前面是請求url,后面是請求的參數名和參數值,多個參數用&來連接 https://api.douban.com/v2/book/search?q=鄒偉偉

單個參數:http://api.nnzhp.cn/api/user/stu_info?stu_name=小黑

多個參數用&符連接:

 

接口測試工具:Postman

 

 

簡要描述:

 

  • 獲取學生信息接口

 

請求URL:

 

  • http://api.nnzhp.cn/api/user/stu_info

 

請求方式:

 

  • get

 

參數:

參數名 必選 類型 說明
stu_name string 學生姓名

 

 

返回參數說明

參數名 類型 說明
error_code int 錯誤編碼,0為操作成功
stu_info object 學生對象信息
id int 學生id
name string 學生姓名
sex string 學生性別
age int 年齡
addr string 家庭住址
phone string 手機號
grade string 班級
gold int 金幣

 

 

 

 

 

 

 

 

post請求:

 還有一種post請求,入參是json串的

添加學生信息

添加學生信息

簡要描述:

  • 添加學生信息,這個接口是用來講入參是json類型的

請求URL:

  • http://api.nnzhp.cn/api/user/add_stu

請求方式:

  • post

  • 入參是json類型

參數:

參數名 必選 類型 說明
name string 學生姓名
grade string 班級
phone int 電話
sex string 性別,如果不傳默認為男
age int 年齡,如果不傳默認為18
addr string 地址,如果不傳默認為北京市昌平區

 

 

 

 

 

 

返回參數說明

參數名 類型 說明
error_code int 錯誤編碼,0為操作成功
msg string 提示信息

 

 

 

 

 

 

 

 

 

 

GET和POST請求: 如果是get請求的話,直接在瀏覽器里輸入就行了,只要在瀏覽器里面直接能請求到的,都是get請求,如果是post的請求的話,就不行了,就得借助工具來發送。 GET請求和POST請求的區別: 1、GET使用URL或Cookie傳參。而POST將數據放在BODY中。

get:

 

 POST:

2、GET的URL會有長度上的限制,則POST的數據則可以非常大。

3、POST比GET安全,因為數據在地址欄上不可見。

4、一般get請求用來獲取數據,post請求用來發送數據。

其實上面這幾點,只有第一點說的是比較靠譜的,第一點post請求也可以把數據放到url里面,get請求其實也沒長度限制,post請求看起來參數是隱式的,稍微安全那么一些些,但是那只是對於小白用戶來說的,就算post請求,你通過抓包也是可以抓到參數的。所以上面這些面試的時候你說出來就行了。

HTTP狀態碼

 1、200 2開頭的都表示這個請求發送成功,最常見的就是200,就代表這個請求是ok的,服務器也返回了。

2、300 3開頭的代表重定向,最常見的是302,把這個請求重定向到別的地方了,

3、400 400代表客戶端發送的請求有語法錯誤,401代表訪問的頁面沒有授權,403表示沒有權限訪問這個頁面,404代表沒有這個頁面

4、500 5開頭的代表服務器有異常,500代表服務器內部異常,504代表服務器端超時,沒返回結果

接口測試用例模板

1、項目 是哪個項目的

2、模塊 這個接口是屬於哪個功能模塊的

3、用例id

4、接口名稱

5、用例標題 用例是干嘛的

6、請求方式 GET/POST

7、請求url url地址

8、請求參數

9、前置條件 有依賴的時候,比如說要測登錄失敗3次的

10、結果驗證 預期結果

11、請求報文

12、返回報文 1

3、測試結果 通過/失敗 1

4、測試人員

Jmeter-http接口腳本

1、添加線程組

2、添加http請求

3、在http請求中寫入接口url、路徑、請求方式、參數

4、添加查看結果樹 5、調用接口、查看返回值

Jmeter-http接口腳本添加header

 

Jmeter-http接口腳本添加header

 

Jmeter-webservice腳本

1、在soapui中新建已經soap項目,導入wsdl地址,獲取到請求報文、SOAPAction和請求url(在soapui的raw中能找到)

2、打開jmeter新建一個線程組

3、新建一個SOAP/XML-RPC Request

4、把url、soapaction和請求報文寫到soaprequest中

5、調用接口、查看返回值

Jmeter-參數化

參數化是干嘛的呢,咱們在調用接口的時候,有入參,那參數里面的值如果經常變化的話,就得每次去改了,很麻煩,這時候咱們就把需要經常變的值,改成可以變化的或者是咱們提前設置好的一些值,這樣的話,調用的時候就不用每次都改它的值了。

Jmeter參數化的方式有三種

1、用戶定義的變量 這種就是為了方便管理參數,只能有一個值,比如說ip地址不經常變化的

在線程組中添加一個用戶定義的變量,然后寫key和value就可以了,key就是這個參數的名稱,也就是你在腳本里面取的值,value就是具體值了。在取參數化的值的時候,使用${name}這樣去取值,name就是你取的變量名稱。

 

 

2、函數生成器 函數生成器可以參照一定的規則生成數據,這樣的比如說生成一些隨機數

函數助手的話,可以按照規則生成一些參數,比如說隨機數取當前時間,最常用的就是這兩種。 隨機數__Random,可以在你指定的一個范圍內取隨機值 取當前時間__time,如果在有一些需要傳時間的情況下可以使用,日期格式是: yyyy-MM-dd HH:mm:ss 年-月-日-小時:分鍾:秒 取唯一id,__UUID,這個就是每次會生成一個隨機的uuid,都是唯一的

 

 

 

3、從文件中讀取 文件讀取就是事先寫好一些數據,然后從文件中讀取,這樣的話,比如說登錄接口,賬號和密碼都是我們事先注冊好的

 

從文件中讀取的話,三個步驟 1、讀取文件 2、取文件內容里面的參數,給它一個名字 3、使用值 從文件讀取的話,需要在線程組里面添加一個CSV Data Set Config,它就是做前面兩步的操作的

 

Jmeter斷言

斷言是什么呢,它是用來檢查返回結果對不對的。 用來驗證結果是否正確,如果正確的話,就代表這個請求的返回是正確的,如果沒有的話就代表這個請求的結果和我們預期的不一致,這樣我們就可以通斷言來檢查返回結果,測試是否通過。

Jmeter關聯

我們知道斷言是從返回結果中檢查有沒有預期的值,現在有一個問題,有一個購買商品的接口,必須要先登錄才能夠購買商品, 那么你調用接口的時候怎么知道是否已經登錄了,一般這樣的都會在調用的時候傳一個token的參數,服務端判斷token是否過期或者token是否正確,如果正確的話,那就是登錄成功了就可以買東西了。 那么這樣的話,你就要先獲取到token,token是從呢來的呢,肯定是從登錄接口返回的,因為要先登錄嘛,那這樣就得先調用登錄接口, 獲取到token,然后把獲取到的token傳給購買商品的這個接口。 關聯就是做這個事的,它就是獲取到返回的值,然后保存起來,給別的請求使用,或者做一些其他的處理。

 

Jmeter操作mysql

1、導入jdbc的jar包,因為jmeter本身不能直接連接mysql,所以需要導入第三方的jar包,來連接mysql(網上下載mysql-connector-java-5.1.7-bin.jar)

 

 

2、創建數據庫連接配置,mysql的url、端口號、賬號、密碼

Jmeter配置mysql連接

1、添加一個JDBC Connection Configuration

2、配置mysql連接池的名稱,后面發sql請求的時候指定連接哪里

3、數據庫的url:jdbc:mysql://118.24.3.40:3306/jxz?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true

4、數據庫驅動:這里就是指定連接什么類型的數據庫,mysql、oracle、SqlServer等等

5、賬號密碼  :jxz  123456

 

 

3、寫sql,執行sql 4、查看結果

 

 查詢語句:

 

 insert語句

delete語句:

 

 update語句

 jmeter添加壓力機

我們在壓測的時候,可能並發比較大, 一台機子已經啟動不了那么多並發了,這個時候我們就要使用多台機子一起來發壓力,就要添加壓力機,添加壓力機怎么添加呢,首先要在做壓力機的機子上啟動jmeter的代理,然后做為控制機的機子上添加上壓力機的ip即可。 Jmeter的bin目錄下有一個jmeter-server,啟動它即可,windows機子作為壓力機的話,運行jmeter-sever.bat,linux作為壓力機的話,運行jmeter-server。 然后在作為控制機的jmeter配置文件里添加壓力機ip即可,jmeter的配置文件在bin目錄下jmeter.properties,添加壓力機的時候,在配置文件里面找到remote_hosts添加ip,然后重啟jmeter就可以看到遠程壓力機了

1、其它的電腦上也有安裝jmeter,你的電腦就是master 其他的壓力機就是slave

2、和其他的電腦能ping通

3、啟動其他電腦上的jmeter-sever

4、在master上修改jmeter的配置文件,找到remote_hosts,在后面加上對於ip即可remote_hosts=192.168.1.109:1099,192.168.1.107:1088(添加完需要重啟jmeter才能實現)

 在LINUX下面運行JMETER

1、首先在windows下面做好腳本

2、傳到LINUX上面

3、操作步驟:

cd xxx/jmeter/bin

./jmeter-n -t ~Desktop/baidu.jmx -l ~/Desktop/baidu.jtl  (linux)

windows:/jmeter-n -t ~Desktop/baidu.jmx -l ~/Desktop/baidu.jtl 

如果windows想通過cmd進去哪個目標只需要在地址欄直接輸入cmd

dir查看當前目前的內容

 

 /jmeter-n -t ~Desktop/baidu.jmx -l ~/Desktop/baidu.jtl 

 

 打開jmeter添加線程組然后通過聚合報告和查看結果樹來看運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM