目前我們公司介面使用的是scf協議,scf是58自主研發的rpc框架,致力於在分布式環境下提供高效能,高可靠和透明化的rpc遠端呼叫方案。
介面協議目前廣泛使用的有http協議和rpc協議和webservice,在了解如何寫這三種介面自動化框架前,需要搞明白什麼是http協議,什麼是rpc協議,以及什麼是webservice以及三者的差異點。
http協議
http協議是基於應用層的超文字傳輸協議,http是乙個客戶端和服務端請求和應答的標準,客戶端發起乙個請求到服務端的某個埠上,服務端接收響應並且把響應返回給客戶端。
http原理
1、客戶端發起請求,想要請求伺服器上的某些資源,請求資訊攜帶協議,伺服器網域名稱、埠、請求路徑、請求頭部資訊
2、基於網域名稱解析到網域名稱對應的ip位址,這裡涉及到網域名稱解析的過程。
(1)客戶端在發起請求時首先查詢瀏覽器快取是否保留了網域名稱和ip的對應關係
(2)如果找不到會去本地host檔案查詢
(3)第二步找不到就去查詢本地dns解析器快取
本地dns伺服器查詢的過程又是乙個遞迴的過程,首先查詢根網域名稱伺服器,查詢到直接返回,查詢不到就去頂級網域名稱伺服器查詢最後返回ip和網域名稱的對應
3、tcp 三次連線
所謂的三次握手即tcp連線的建立。這個連線必須是一方主動開啟,另一方被動開啟的。以下為客戶端主動發起連線的**
(1)首先客戶端像伺服器傳送一段tcp報文,syn表示「請求建立連線」,seq=x,隨後客戶端進入syn-sent狀態
(2)服務端接收客戶端的tcp報文後結束listen階段,傳送syn,ack標記,表示「允許建立連線」,服務端進入syn-receive狀態
(3)客戶端收到服務端的tcp報文後再次給服務端傳送syn、ack標記,明確客戶端和服務端可以通訊。客戶端和伺服器端都進入established狀態。
4、伺服器處理客戶端的請求,並把結果以response報文的形式發給客戶端
5、tcp四次揮手
6、客戶端渲染解析響應報文。
rpc協議
簡單來說rpc就是從一台機器通過組裝介面引數呼叫另外一台機器上的函式或者方法,並得到返回的結果。
rpc原理
比如說,乙個方法可能是這樣定義的:
employee getemployeebyname(string fullname)
那麼:
首先,要解決通訊的問題,主要是通過在客戶端和伺服器之間建立tcp連線,遠端過程呼叫的所有交換的資料都在這個連線裡傳輸。連線可以是按需連線,呼叫結束後就斷掉,也可以是長連線,多個遠端過程呼叫共享同乙個連線。rpc和http的區別:(1)傳輸協議 rpc是基於tcp的, http是基於應用層的第二,要解決定址的問題,也就是說,a伺服器上的應用怎麼告訴底層的rpc框架,如何連線到b伺服器(如主機或ip位址)以及特定的埠,方法的名稱名稱是什麼,這樣才能完成呼叫。比如基於web服務協議棧的rpc,就要提供乙個endpoint uri,或者是從uddi服務上查詢。如果是rmi呼叫的話,還需要乙個rmi registry來註冊服務的位址。
第三,當a伺服器上的應用發起遠端過程呼叫時,方法的引數需要通過底層的網路協議如tcp傳遞到b伺服器,由於網路協議是基於二進位制的,記憶體中的引數的值要序列化成二進位制的形式,也就是序列化(serialize)或編組(marshal),通過定址和傳輸將序列化的二進位制傳送給b伺服器。
第四,b伺服器收到請求後,需要對引數進行反序列化(序列化的逆操作),恢復為記憶體中的表達方式,然後找到對應的方法(定址的一部分)進行本地呼叫,然後得到返回值。
第五,返回值還要傳送回伺服器a上的應用,也要經過序列化的方式傳送,伺服器a接到後,再反序列化,恢復為記憶體中的表達方式,交給a伺服器上的應用
(2)因為rpc是基於tcpd 所以傳輸速度和效率更高,http是基於應用層的,報文有很多無用內容,傳輸效率低
(3)rpc的框架有dubbo,可以跨作業系統在同一程式語言內使用
http框架有httpclient,跨系統跨程式語言的遠端呼叫框架
相同點:底層通訊都是基於socket,都可以實現遠端呼叫,都可以實現服務呼叫服務
webservice是什麼?
1、soap協議是什麼?
webservice是基於soap協議傳輸資料。 soap又是一種簡單的基於 xml 的協議,它使應用程式通過 http 來交換資訊。
2、wsdl是什麼?
三、 請求webservice介面
獲取wsdl檔案
通過eclipse獲取開發的原始碼
準備介面入引數據呼叫介面資料,獲取響應結果
介面測試就是依據介面文件,對介面入參以及介面的場景所做的一系列資料校驗的過程,保證單個介面和介面之間資料的交換、傳遞和控制管理過程,以及相互邏輯依賴關係
本質上介面測試也是一種功能測試。
基於介面實現容易維護成本低,測試收益大,有著更高的產出比,是每個公司開展自動化測試的首選
既然介面很容易實現自動化,如果讓你來做介面自動化那麼你需要思考以下幾個問題,
1、介面自動化框架用到哪些技術?
2、介面自動化測試有哪些難點?
3、如何維護測試資料?
4、介面自動化如何做到持續整合?
robot framework 介面自動化測試
介面測試比ui測試更有價值,如果專案時間緊張,測試介面更好一些,但每次都頻繁的手工填寫介面進行測試也浪費時間,下面給大家介紹一下很好的自動化測試框架robot framework,並且做介面自動化測試事半功倍。其返回值驗證和與資料庫連線進行增刪改查很方便,邏輯也很嚴謹,如果公司沒有造輪子推薦這麼做。...
Robotframework 介面自動化測試
1.目的 1 以雲平台為例 實現註冊 登入 更新apikey 新增專案 新增裝置 新增感測器 新增執行器 感測器每隔3s上報一次資料 1分鐘後與雲平台主動斷開連線的介面自動化測試。2 斷言每條用例是否執行成功。3 程式不管執行多少次都不報錯。2.robotframework環境搭建 1 安裝pyth...
python requests介面自動化測試 一
python requests環境部署 1.安裝python,配置系統環境變數 4.安裝requests庫 pip install requests 在進行介面自動化測試時,常用到的幾個requests庫方法。如下 get 不帶引數的請求 n requests.get 帶引數的請求 引數是以字典的形...