一、什么是接口測試
接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關系等。 --百度百科
接口測試就是功能測試,沒太大區別
二、接口測試的必要性
1.bug越早發現成本越低
2.能發現普通功能測試所發現不到的問題。(比如普通功能測試發送請求不能修改頁面固定數值,接口可以,牛牛老師的栗子:假如現在在京東app上買東西,支付訂單,訂單金額是500元,支付的話,那肯定要調用支付接口,你在頁面上操作的話,訂單金額是修改不了的,那如果你想測試一下服務端有沒有校驗訂單的金額,我想把訂單金額改成5元,那在頁面上點是測試不了的,這個時候我們就可以直接用接口來調用,修改一下訂單金額的值,然后再發請求就可以了。)
3.檢查系統的安全性、穩定性(服務端的一個缺陷可能會引起客戶端的幾個甚至十幾個缺陷,更可怕的是服務端的缺陷有可能引起系統的崩潰,這對整個系統來說,損失將是不可估量的,因此服務端接口的質量將直接影響到系統的正確和穩定)
三、接口分為對內的(服務器端)和對外的(客戶端)
1.對外的接口就是你在客戶端獲取信息,所調用的別人寫好的方法,比如你點擊功能按鈕,跳轉頁面所展示的信息,就是你調用接口所獲取到的
2.對內的接口就是客戶端內各個功能板塊之間交互的接口
四、常見的接口類型:webservice接口和http api接口(忽略)
1.webService接口是走soap協議通過http傳輸,請求報文和返回報文都是xml格式的,我們在測試的時候都用通過工具才能進行調用,測試。
2.http api接口是走http協議,通過路徑來區分調用的方法,請求報文都是key-value形式的,返回報文一般都是json串,常用請求有get和post等。
注:現在大部分都在用http api接口,比較流行的原因,參考:https://www.cnblogs.com/crafts/p/3941625.html
五、http api接口常用請求方法get和post的區別(唯一,gat寫入url,post寫入body(入參若是json,就要寫json串))
1)get直接在瀏覽器上就能調用,不用借助其他工具
2)get用來向服務端獲取數據的,post向服務端發送數據的
注:1.get在url沒有長度限制,在從前瀏覽器技術不成熟時是有限制的
2.post並不比get安全,都一樣的,抓包都能看見,都是明文傳輸
3.一般情況下get使用url或Cookie傳參,post數據放在body里面(可以當做區別,post數據也可以放在url里面)
參考:1.http://www.cnblogs.com/nankezhishi/archive/2012/06/09/getandpost.html
2.http://www.cnblogs.com/ldp615/archive/2012/07/27/http-get-post.html
六、HTTP狀態碼
每發出一個http請求之后,都會有一個響應,http本身會有一個狀態碼,來標示這個請求是否成功,常見的狀態碼有以下幾種:
1、200 2開頭的都表示這個請求發送成功,最常見的就是200,就代表這個請求是ok的,服務器也返回了。
2、300 3開頭的代表重定向,最常見的是302,把這個請求重定向到別的地方了,
3、400 400代表客戶端發送的請求有語法錯誤,401代表訪問的頁面沒有授權,403表示沒有權限訪問這個頁面,404代表沒有這個頁面
4、500 5開頭的代表服務器有異常,500代表服務器內部異常,504代表服務器端超時,沒返回結果
常見的404和5開頭的
七、get和post借助Postman操作
1.get請求方法
1.1直接填入發出(請求url后添加參數方法,url+?+參數=值,多個參數間用&連接)

1.2 添加header信息,點擊headers,在key,value填入對應信息,再發出即可

2.post請求方法
2.1參數要寫在body里

2.2入參是json類型,則在raw輸入

2.3添加cookie,value是從登陸獲取接口簽名

2.4上傳文件,圖中位置,從test選成file

八、webservice接口測試
一般不需要自己去拼報文,通常會給webservice的地址,或者wsdl文件,導入SoapUI即可考到webservice里的所有接口和報文,再直接填入參數調用,能看到返回報文就行了
注:拼報文之后要看看
打開SoapUI,點擊File-New SOAP Project

Project Name 名稱隨意
WSDL填入webservice的地址,或者導入wsdl文件,點擊OK。(例如webservice的地址:http://www.webservicex.net/globalweather.asmx?wsdl)

九、jmeter應用
安裝簡單,只需解壓,但windows系統,需要先安裝JDK,並且配置環境變量
1.線程組,添加及介紹
首先需要添加線程組


①線程數:並發數量
②
指在某秒內啟動,啟線程,一般寫0就行了
③循環次數:想要循環多少次就寫多少
④調度器:使用時需要勾選循環次數的永遠
2.HTTP請求,添加及介紹
在線程組下添加HTTP請求


①名稱:隨意更改,什么接口請求就可以改成什么名稱
②服務器名稱或IP:
服務器名稱
IP例如130.162.3.108 需要填端口號
③方法:什么類型請求方法就選什么
④路徑:
⑤content enconding:中文時填入utf-8,有助於識別中文亂碼、‘’???‘’等情況
⑥parameters:寫參數用
⑦body data:入參是json類型時在此輸入
⑧files upload:傳輸文件用
3.查看結果樹,查看返回結果用的,可以放在線程組下,也可以放在http請求下

4.HTTP請求-操作
①簡單參數,get請求方法

②簡單參數,post請求方法

③post請求方法,入參類型為json

④需要cookie,在請求下添加,


名稱:用戶名
值:接口簽名
域:請求里的服務器名稱
⑤添加header信息


⑥上傳文件

5.關聯(正則表達式、jp@gc - JSON Path Extractor)

①jp@gc - JSON Path Extractor使用方法


名字隨意起
jsonpath expression:一級一級寫,用“.”分割,開頭$,如圖
替換的值就為${sign}
②正則表達式

名字,缺省值隨意起,缺省值可為空
模板匹配數字固定格式
其中“(.*)”用來匹配任意長度的除換行符以外的字符
替換的值就為${123}
6.參數化
①CSV Data Set Config


filename:文件路徑,win10,放在bin目錄下
variable names:名字隨意,多個元素用逗號隔開
belimiter:多列時用什么符號分隔
recycle:是否要循環讀取
stop thread:參數文件讀取完是否繼續執行
sharing mode:1.all threads在所有的線程組生效,2.current thread group:當先線程組生效
②函數助手對話框



${__time(yyyyMMddHHmmSS,)}
生成的加入參數值中
③用戶定義的變量


名稱隨意
值為想要替換的數據
替換的值就為${123}
7.連接數據庫
①在測試計划下添加數據庫連接驅動包

②添加JDBC連接配置


JDBC連接配置與JDBC請求名稱要一致
需要執行多條sql,需要寫 
③添加JDBC請求,添加后可直接進行數據庫操作


callable:可以用增刪改查
select:只能做查
8.斷言


9.中文亂碼的解決方法
① 當響應數據或響應頁面沒有設置編碼時,jmeter會按照jmeter.properties文件中,sampleresult.default.encoding設置的格式解析
test格式打開jmeter.properties,搜索sampleresult.default.encoding,改為UTF-8,並去掉#

②請求中的content encoding填入UTF-8
③數據庫URL后加&characterEncoding=UTF-8
萌新求指點 
