1.什麼是接口測試?
- :是測試系統元件間接口的一種測試方法
- :檢查資料的交換,資料傳遞的正确性,以及接口間的邏輯依賴關系
- :在軟體開發的同時實作并行測試,減少頁面層測試的深度,縮短整個項目的測試周期
2.接口自動化測試的流程?
基本的接口功能自動化測試流程為:需求分析-->用例設計-->腳本開發-->測試執行-->結果分析
3.GET請求和POST請求差別是什麼?
- :用于資訊擷取,相對而言是安全和幂等的;在做資料查詢時,建議用GET方式,如:商品資訊接口、搜尋接口、部落格訪客接口...
- :表示可能會修改伺服器上資源的請求;在做資料添加、修改時,建議用POST方式。如:上傳圖檔接口、登入注冊接口...
誤區:
“GET是從伺服器上擷取資料,POST是向伺服器傳送資料”(該說法有誤)
解析:
GET/POST都可以送出資料,GET請求也可以向伺服器傳遞資料,POST請求也需要伺服器傳回資料
4.接口測試的常用工具有哪些?
- Postman
- JMeter
- SoapUI
5.HTTP接口的請求參數類型有哪些?
- Query String Parameters參數)一般用于GET請求,會以url string的形式進行傳遞
- Request Body)一般用于POST請求,可以使用Content-Type來指定不同參數類型
6.如何從上一個接口擷取相關的響應資料傳遞到下一個接口?
先從上一個接口中的響應資料擷取對應的傳回值,然後使用正規表達式or使用JSON解析來提取需要擷取的值,然後存儲在一個變量中,最後在下一個接口中直接引用該變量即可
7.接口測試用例的編寫要點有哪些?
1)必填字段:請求參數必填項、可選項
2)合法性:輸入輸出合法、非法參數
3)邊界:請求參數邊界值等
4)容錯能力:大容量資料、頻繁請求、重複請求(如:訂單)、異常網絡等的處理
5)響應資料校驗:斷言、資料提取傳遞到下一級接口...
6)邏輯校驗:如兩個請求的接口有嚴格的先後順序,需要測試調轉順序的情況
7)性能:對接口模拟并發測試,逐漸加壓,分析瓶頸點
8)安全性:構造惡意的字元請求,如:SQL注入、XSS、敏感資訊、業務邏輯(如:跳過某些關鍵步驟;未經驗證操縱敏感資料)
8.接口測試的步驟有哪些?
1)發送接口請求
2)測試接口擷取傳回值
3)斷言:判斷實際結果是否符合預期
9.接口測試中依賴登入狀态的接口如何測試?
依賴登最狀态的接口,本質上是在每次發送請求時需要帶上存儲有賬戶有效資訊的Session或Cookie才能發送成功,在建構POST請求時添加必要的Session或Cookie
為什麼要做接口測試?
到底什麼是接口測試,我們為什麼要做接口測試?這是很多初入行的小夥伴的一個疑問,講理論的你可能看不進去,接下來講個實際案例,如下圖一個提現功能
比如這個輸入框,平常拿到這個web頁面,會對輸入框做用例設計:
- -100),點送出
- 0(如:0),點送出
- 0-100的數(如:20),點送出
- 100(如:100),點送出
- 100(如:108),點送出
- 1位小數(如:10.1),點送出
- 2位小數(如:10.12),點送出
- 3位小數(如:10.123),點送出
按照這個等價類,邊界值用例測完,頁面上不能輸入負數和大于3位數小數點,然後就可以上線了。
然而。。。突然有一天資料庫裡面插入了一個提現金額為負數(-100),于是整個部門炸鍋了,首先找到測試(背鍋)去複現問題,測試在頁面上反複輸入負數,無法送出,認為沒問題啊!
首先前端開發對輸入框是做了限制的,前端的web開發肯定沒問題,這個鍋前端開發MM不背。那麼如果别人使用者不通過你的web頁面,直接發請求送出了呢?
納尼!!!不通過頁面也能送出。。。這就是我們接下來要提到的接口測試了。
接口測試能發現哪些問題
面試題1:你平常做接口測試的過程中發現過哪些bug?
這個問題其實回到起來很簡單,隻要做過接口測試的,總能發現幾個BUG吧,把你平常發現的bug說2-3個就可以了。
面試官出這個題,主要是想知道你是不是真的做過接口測試,畢竟現在很多小夥伴履歷都是寫的假的(你要不寫估計面試機會都沒有,沒辦法,為了生存,能了解)
比如上面說的,提現輸入框,在頁面上輸入負數,肯定是無法送出過去(前端頁面會判斷金額),如果我不走前端,直接用接口工具發請求,輸入一個負數過去。
(假設服務端沒做提現金額資料判斷)
餘額=目前餘額(100)-提現金額(-100),那麼提現-100,餘額就變成200了,也就是越提現,餘額越大了
可以用接口工具去直接請求接口,也可以fiddler抓包,抓到接口後修改金額為負數
是以,接口測試的必要性就展現出來了:
1.可以發現很多在頁面上操作發現不了的bug
2.檢查系統的異常處理能力
3.檢查系統的安全性、穩定性
4.前端随便變,接口測好了,後端不用變
5.可以測試并發情況,一個賬号,同時(大于2個請求)對最後一個商品下單,或不同賬号,對最後一個商品下單
6.可以修改請求參數,突破前端頁面輸入限制(如金額)
接口測試怎麼測
面試題2:平常你是怎麼測試接口的?
- type,傳1的時候代表修改商品,商品id、商品名稱、價格有一個是必傳的,type傳2的時候是删除商品,
商品id是必傳的,這樣的,就要測參數組合了,type傳1的時候,隻傳商品名稱能不能修改成功,id、名稱、價格都傳的時候能不能修改成功。
1、繞過驗證,比如說購買了一個商品,它的價格是300元,那我在送出訂單時候,我把這個商品的價格改成3元,後端有沒有做驗證,更狠點,我把錢改成-3,是不是我的餘額還要增加?
2、繞過身份授權,比如說修改商品資訊接口,那必須得是賣家才能修改,那我傳一個普通使用者,能不能修改成功,我傳一個其他的賣家能不能修改成功
3、參數是否加密,比如說我登陸的接口,使用者名和密碼是不是加密,如果不加密的話,别人攔截到你的請求,就能擷取到你的資訊了,加密規則是否容易破解。
4、密碼安全規則,密碼的複雜程度校驗
所謂異常驗證,也就是我不按照你接口文檔上的要求輸入參數,來驗證接口對異常情況的校驗。比如說必填的參數不填,輸入整數類型的,傳入字元串類型,長度是10的,傳11,總之就是你說怎麼來,我就不怎麼來,其實也就這三種,必傳非必傳、參數類型、入參長度。
接口并發情況,如上面提到的:一個賬号,同時(大于2個請求)對最後一個商品下單,或不同賬号,對最後一個商品下單
接口響應時間,響應時間太長了,肯定需要優化,一般都是毫秒級别
用什麼工具測
面試題3:平常用什麼工具測接口的
接口測試工具很多,首先postman 其次用jmeter
webService接口
面試題4:webService接口是如何測試的
webService接口用SoapUI
沒有接口文檔如何做接口測試
面試題5:沒有接口文檔,如果做接口測試?(這是個送命題)
沒有接口文檔,那還能咋辦,瞎測呗!一個公司的開發流程裡面,如果接口文檔都沒有,是無法展開接口測試的,你都不知道這個接口幹什麼的,也不知道具體每個字段代表什麼意思,那還測啥呢?
--當然,你肯定不能回答面試官不測(心理mmp,臉上笑嘻嘻),接下來就是扯犢子時間
1.沒有接口文檔,那就需要先跟開發溝通,然後整理接口文檔(本來是開發寫的,沒辦法,為了唬住面試官,先說自己整理了)
2.沒有接口文檔,可以抓包看接口請求參數,然後不懂的跟開發溝通
本題主要靠情商,通俗來說就是忽悠能力,先唬住面試官了再說,進去了也是瞎測測,随時做好背鍋的準備
資料依賴
面試題6:在手工接口測試或者自動化接口測試的過程中,上下遊接口有資料依賴如何處理?
用一個全局變量來處理依賴的資料,比如登入後傳回token,其它接口都需要這個token,那就用全局變量來傳token參數
依賴第三方
面試題7:依賴于第三方資料的接口如何進行測試?
這個标準答案是:mock
接着面試官會問你,如果mock的,然後你就順着坑繼續挖,搭建mock服務,參考這篇【https://www.cnblogs.com/yoyoketang/p/9348552.html】
抓包
面試題8:當一個接口出現異常時候,你是如何分析異常的?
1.抓包,用fiddler工具抓包,或者浏覽器上f12,app上的話,那就用fiddler設定代理,去看請求封包和傳回封包了
2.檢視後端日志,xhell連上伺服器,檢視日志
弱網
面試題9:如何模拟弱網測試
fiddler和charles都可以模拟弱網測試,平常說的模拟丢包,也是模拟弱網測試
分析bug是前端還是後端的
面試題10:如何分析一個bug是前端還是後端的?
平常提bug的時候,前端開發和後端開發總是扯皮,不承認是對方的bug
這種情況很容易判斷,先抓包看請求封包,對着接口文檔,看請求封包有沒問題,有問題就是前端發的資料不對
請求封包沒問題,那就看傳回封包,傳回的資料不對,那就是後端開發的問題咯
postman如何使用
https://blog.csdn.net/five3/article/details/53021084 使用詳解
1 建立一個項目
2 新增一個用例
3、添加請求資訊
選擇一個請求方法,如:get或post
- url,如:http://www.baidu.com
- get則請求參數直接寫在url後,用?連接配接
- post則請求添加在body中
- “send”發送請求
也可以批量執行用例和變量的設定
fiddler如何使用
https://www.cnblogs.com/woaixuexi9999/p/9247705.html