學習地址:(騰訊課堂)https://ke.qq.com/webcourse/index.html#course_id=89002&term_id=100088372&taid=153454886607786&vid=g1405vp74jf
主要內容如下:
一、接口測試的相關基礎知識
什么是接口測試?
接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間、以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換、傳遞和控制管理過程,以及系統間的相互邏輯依賴關系等。
軟件架構模型:
- 服務器-客戶端:
- b/s:瀏覽器服務器模型。通過http協議、websocket等協議進行通訊。
- c/s:客戶端服務器模型。客戶端:app、桌面軟件等。
- 內部系統對外部系統提供的接口
- 子系統的服務對外提供的接口系
接口測試的分類:
- 模塊之間的接口:比如訂單模塊下單時,需要去用戶資金模塊查詢余額等。
- 系統對外部系統提供的接口:比如微信、微博的API,提供出來給外部其他應用使用的接口
- 內部子系統的服務之間的接口:
接口測試的場景:
1、手機app:通過http、websevice等通信,使用json、xml等數據格式進行傳輸和描述數據
2、客戶端軟件:
3、web網站API:微信接口、新浪微博接口、快遞查詢接口等
4、公司內部系統API:訂單接口需要調用用戶資金接口查詢具體余額等
常見協議:
1、tcp/ip協議
2、http/https、websocket、json、xml
3、webservice(soap/wsdl)、restservice、xmpp、自定義協議
4、hession、dubbo
網絡傳輸:
文本:http、https、webservice、json
二進制:thrift、protobuf、hession
接下來是對以上的各種協議的詳細資料查詢:
1、IP:IP實現兩個基本功能:尋址和分段,IP使用四個關鍵技術提供服務:服務類型、生存時間、選項和報頭校驗碼。IP不提供可靠的傳輸服務,對數據沒有差錯控制,不提供重發和流量控制。如果出錯,可以通過ICMP報告,ICMP在IP模塊中實現。
2、TCP:TCP位於IP層之上,TCP將數據包傳給IP層,為了保證數據的可靠傳輸,會給每一個包一個序號,這個序號保證傳送到接收端實體的包的按序接收。這個過程中,接收端實體會給出一個確認ACK,如果傳送端在合理往返時延(RTT)內沒有接收到確認,那么該包將會被重傳。
IP協議是能夠找到主機(鎖定一台物理主機,對應着一張網卡,外界發來的數據包網卡都會接收),然后TCP協議還增加了端口,端口的主要目的是什么呢?比如說一台主機上會有N個應用程序在跑,那么外界發來的所有數據,總不能全部發給所有程序吧,那么就約定了一個端口,比如說A程序的端口就是1,B程序的端口就是2,然后網卡在和具體的應用程序對接數據的時候,只要根據這個端口號就能將屬於這個應用程序的數據轉送和傳達出去。至於端口的唯一性,就是考慮到安全性,否則A的數據B也能接收到。
3、OSI 7層網絡協議:
從下到上分別是——物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層
然后從上往下各層:
應用層——為特定類型的網絡應用提供訪問手段,在此層的協議主要有:HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。
表示層——主要用於處理兩個通信系統中交換信息的表示方式。包括數據格式交換、數據的加密與解密、數據壓縮與終端類型的轉換。
會話層——在兩個節點之間建立端連接。為端系統的應用程序之間提供對話控制機制。會話層管理登錄和注銷過程。會話層主要功能是管理和協調不同主機上各種進程之間的通信(對話),即負責建立、管理和終止應用程序之間的會話
傳輸層——常規數據遞送,面向連接或者無連接的。在此層的協議有:TCP、UDP
網絡層——IP層協議,尋址(建立兩個節點之間的連接)
數據鏈路層——在此層將數據分幀,並處理流控制。屏蔽物理層,為網絡層提供一個數據鏈路的連接,在一條有可能出差錯的物理連接上,進行幾乎無差錯的數據傳輸(差錯控制)。本層指定拓撲結構並提供硬件尋址。常用設備有網卡、網橋、交換機
物理層——處於OSI參考模型的最底層。物理層的主要功能是利用物理傳輸介質為數據鏈路層提供物理連接,以便透明的傳送比特流。常用設備有(各種物理設備)集線器、中繼器、調制解調器、網線、雙絞線、同軸電纜。
數據發送時,從第7層到第1層;接收時,從第1層到第7層。
4、http和https的區別:
超文本傳輸協議HTTP協議被用於在Web瀏覽器和網站服務器之間傳遞信息。HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息,因此HTTP協議不適合傳輸一些敏感信息,比如信用卡號、密碼等。
為了解決HTTP協議的這一缺陷,需要使用另一種協議:安全套接字層超文本傳輸協議HTTPS。為了數據傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠證書來驗證服務器的身份,並為瀏覽器和服務器之間的通信加密。
HTTPS和HTTP的區別主要為以下四點:
(1)、https協議需要到ca申請證書,一般免費證書很少,需要交費。
(2)、http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。
(3)、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
(4)、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。
json格式:
比如以微博開放平台為例,其中API接口中的http://open.weibo.com/wiki/2/statuses/public_timeline,返回最新的公共微博的這個接口,json的格式在下面描述的很清晰。
二、接口測試與其他測試的區別與聯系:
接口測試與自動化測試:
自動化測試如app自動化測試、web自動化測試,都是模擬人類的行為進行測試,底層都是通過接口和服務器進行交互。接口測試可以在底層模擬人類的行為進行測試。
接口測試與功能測試:
功能測試用於測試系統功能是否滿足業務邏輯,功能測試包含一個或多個接口測試;接口測試能涵蓋一定的功能測試。
接口測試與性能測試:
自動化測試的模擬行為,測試效率較慢;接口測試可以直接和服務器進行快速交互,對接口進行性能、壓力測試。
接口測試與安全性測試:
功能測試能在一定程序上測試安全性,接口測試可以大范圍測試系統安全性;
如:
- 方便測試非正常輸入值(如果只是功能測試,可能客戶端直接對輸入長度做了限制,根本就無法測試到接口對不同長度的字符的處理)
- sql注入(這個需要增加一個實例)
- xss(也需要一個實例)
- csrf(也需要一個實例)
三、接口測試的作用:
1、提升測試效率:底層的1個bug能引發上層的8個bug
2、能快速定位bug:直接根據哪個接口出問題了就能找到問題根源
3、安全缺陷
4、性能缺陷
四、接口測試的工具:
1、jmeter(jmeter的使用以及具體的例子會在下一節更新出來)
2、soapui(會在jmeter之后的一節更新出來)
3、其他:loadrunner
4、可以通過java編寫代碼進行接口測試:httpclient
五、接口的認證:
1、用戶名密碼
2、sesssionid或者access_token(具體如何獲取以及保存,並用於后面的測試,需要給出具體的例子)
3、公鑰私鑰
4、其他
接口測試與加密算法:
RSA、AES、DES、MD5、SHA1、SHA256、SHA512
