1.接口分類
接口分為兩種,一種是程序內(nèi)部的接口,另一種是系統(tǒng)對外的接口.
外部接口:從別的網(wǎng)站或服務器獲取資源信息,調(diào)用別人寫好的方法,來獲取數(shù)據(jù),通過引用別人提供的接口,就能使用它寫好的方法,從而達到數(shù)據(jù)貢獻的目的,如app調(diào)用接口,二手項目調(diào)用支付寶接口,調(diào)用微信接口等.
程序內(nèi)部接口:方法與方法直接,模塊與模塊直接進行交互,程序內(nèi)部拋出的接口,eg:蜂鳥網(wǎng)論壇發(fā)帖,發(fā)帖時,必須登錄,調(diào)用用戶登錄接口,蜂鳥網(wǎng)的登錄接口就是程序內(nèi)部的接口.
接口分類:webservice&http api(常用)
webservice :走的是soap協(xié)議通過http傳輸,請求報文和返回報文都是xml格式的,我們在測試的時候通常用工具進行調(diào)用測試.
http api :走http協(xié)議,通過路徑區(qū)分調(diào)用的方法,請求報文都是key-value形式的,返回報文一般都是json串,有g(shù)et和post等方法.
報文:報文(message)是網(wǎng)絡中交換與傳輸?shù)臄?shù)據(jù)單元,即站點一次性要發(fā)送的數(shù)據(jù)塊
通常url的構(gòu)成方式:域名/路徑?參數(shù)
json串表達方式{"key":"value"}
*cookie和session:
cookie:通俗理解,就是存在本地的鍵值對
session:通俗理解,就是存在服務器的鍵值對
2.接口測試必要性
可以發(fā)現(xiàn)很多前臺頁面發(fā)現(xiàn)不到的bug
檢查系統(tǒng)的異常處理能力
檢查系統(tǒng)的安全,穩(wěn)定性
前端改動,不影響接測試
3.接口測試流程
接口測試流程同功能測試流程一樣:
需求評審,熟悉業(yè)務和需求
開發(fā)提供接口文檔
編寫接口測試用例
用例評審
提測后開始測試,提交測試報告
4.接口測試文檔包含內(nèi)容
接口說明
調(diào)用url
請求方法(get/post)
請求參數(shù),參數(shù)類型,請求參數(shù)說明
返回參數(shù)說明
如何測試http接口
url?參數(shù)1=value&參數(shù)2=value
這種是最簡單的一種,問號前面是請求url,后面是請求的參數(shù)名和參數(shù)值,多個參數(shù)用&來連接
例如:https://api.douban.com/v2/book/search?q=鄒偉偉
還有一種就是入?yún)⑹莏son串的,那就不能拼接參數(shù)了,需要借助工具來完成比如postman
get&post
get請求的話,直接在瀏覽器里輸入后回車,直接請求,只要在瀏覽器里面直接能請求到的,都是get請求
如果是post的請求的話,就不行了,就得借助工具來發(fā)送。
GET請求和POST請求的區(qū)別:
1、GET使用URL或Cookie傳參。而POST將數(shù)據(jù)放在BODY中。
2、GET的URL會有長度上的限制,則POST的數(shù)據(jù)則可以非常大。
3、POST比GET安全,因為數(shù)據(jù)在地址欄上不可見。
4、一般get請求用來獲取數(shù)據(jù),post請求用來發(fā)送數(shù)據(jù)。(get 比如打開一個網(wǎng)頁,打開蜂鳥論壇,后面都會帶有參數(shù),就是一個最基本的get請求.)
其實上面這幾點,只有最后一點說的是比較靠譜的,第一點post請求也可以把數(shù)據(jù)放到url里面,get請求其實也沒長度限制,post請求看起來參數(shù)是隱式的,稍微安全那么一些些,但是那只是對于小白用戶來說的,就算post請求,你通過抓包也是可以抓到參數(shù)的。所以上面這些面試的時候你說出來就行了
http狀態(tài)碼
1XX:指示信息--表示請求已接受,繼續(xù)處理.
2XX:成功---表示請求已經(jīng)被成功,接收,理解,接受
3XX:重定向---要完成請求必須進行更進一步的操作
4XX:客戶端錯誤---請求有語法錯誤或請求無法實現(xiàn).
5XX:服務器錯誤---服務器未能實現(xiàn)合法的請求
接口用例設計
一.通過性驗證:首席保證這個接口功能是好用的,也就是正常通過性能測試,按照接口文檔上的參數(shù),進行正常傳入,是否可以正確的返回參數(shù).
二.參數(shù)組合:現(xiàn)在有一個操作商品的接口,有個字段type,傳1的時候代表修改商品,商品id、商品名稱、價格有一個是必傳的,type傳2的時候是刪除商品,商品id是必傳的,這樣的,就要測參數(shù)組合了,type傳1的時候,只傳商品名稱能不能修改成功,id、名稱、價格都傳的時候能不能修改成功
三.接口安全:
1、繞過驗證,比如說購買了一個商品,它的價格是300元,那我在提交訂單時候,我把這個商品的價格改成3元,后端有沒有做驗證,更狠點,我把錢改成-3,是不是我的余額還要增加?
2、繞過身份授權(quán),比如說修改商品信息接口,那必須得是賣家才能修改,那我傳一個普通用戶,能不能修改成功,我傳一個其他的賣家能不能修改成功
3、參數(shù)是否加密,比如說我登陸的接口,用戶名和密碼是不是加密,如果不加密的話,別人攔截到你的請求,就能獲取到你的信息了,加密規(guī)則是否容易破解。
4、密碼安全規(guī)則,密碼的復雜程度校驗
四.異常驗證:
異常的,也就是我不按照你接口文檔上的要求輸入?yún)?shù),來驗證接口對異常情況的校驗。比如說必填的參數(shù)不填,輸入整數(shù)類型的,傳入字符串類型,長度是10的,傳11,總之就是你說怎么來,我就不怎么來,其實也就這三種,必傳非必傳、參數(shù)類型、入?yún)㈤L度。
接口用例包含的內(nèi)容
咱們測試接口的話,肯定要寫測試用例,寫測試用例的話,就要有一個用例模板,那需要有哪些字段呢?
1、項目是哪個項目的
2、模塊這個接口是屬于哪個功能模塊的
3、用例id
4、接口名稱
5、用例標題用例是干嘛的
6、請求方式GET/POST
7、請求url,url地址
8、請求參數(shù)
9、前置條件有依賴的時候,比如說要測登錄失敗3次的
10、結(jié)果驗證預期結(jié)果
11、請求報文
12、返回報文
13、測試結(jié)果通過/失敗
14、測試人員