在自動化測試中使用TestNG【第 5 章 RPC 介面自動化測試 5.1RPC簡介5.2部署待測程式】
5.1 RPC 簡介
RPC(Remote Procedure Call,遠端過程呼叫)協議是一種計算機通訊協議,該協議允許本地計算機上的程式遠端呼叫另一臺計算機上的程式,而在此過程中,開發人員不需要額外程式設計。另外,在面向物件程式設計的程式中,遠端過程呼叫又可稱為遠端呼叫或遠端方法呼叫。常見的 RPC 協議實現如下。
Java RMI:Java Remote Method Invocation,即 Java 遠端方法呼叫,採用了 JDK 中標準的 java.rmi.*實現。
Apache Dubbo(以下簡稱 Dubbo):是阿里巴巴開源的一款高效能、輕量級的 Java RPC 框架。Dubbo 的特點包括可面向介面的遠端方法呼叫、智慧容錯、負載均衡和服務自動註冊及發現等。
Hessian:Hessian 是一種二進位制協議,它非常適合傳送二進位制資料,且無須通過附件的形式對該協議進行任何擴充套件。
XML-RPC:XML-RPC 是一個規範和一組實現,它允許程式執行在不同的作業系統和環境中,以通過 Internet 進行過程呼叫。它是一種基於 HTTP 和 XML 實現的遠端過程呼叫。XML-RPC 的設計雖然非常簡單,但它支援傳輸、處理和返回複雜的資料結構。
Apache Thrift:是一種 RPC 協議實現的框架,適用於跨語言服務的開發,它將軟體堆疊與程式碼生成引擎結合起來構建高效的服務,且可無縫連線 Java、Python、C++、JavaScript、C#和 PHP 等程式語言。
在眾多 RPC 協議的實現中,Dubbo 作為分散式微服務的主流框架之一,在企業級應用開發中使用頻率較高,因此本章使用 Dubbo 作為 RPC 介面自動化測試的示例。
Dubbo 中的重要角色如圖 5-1 所示。
圖 5-1
服務提供者:提供遠端呼叫的介面。
容器:執行服務提供者。
服務消費者:呼叫服務提供者提供的介面。
註冊中心:服務提供者將服務註冊到註冊中心,服務消費者從註冊中心獲取需要使用的服務。
監控中心:監控服務提供者和服務消費者的呼叫過程。監控中心是可選的。
5.2 部署待測程式
1.安裝 JDK
在即將部署待測程式的伺服器上安裝 JDK,並配置系統變數如下。這裡以 Windows 為例。
① 新建 JAVA_HOME,變數值填寫如下。
C:\Program Files\Java\jdk1.8.0_212
② 新建 CLASSPATH,變數值填寫如下。
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
③ 編輯 Path,變數值追加如下。
;%JAVA_HOME%\bin
2.安裝 ZooKeeper
在 Dubbo 中,註冊中心只是一個角色,可以充當該角色的中介軟體有很多,ZooKeeper 就是其中最常用的一個,同時也是官方推薦使用的。ZooKeeper 可以部署為單機模式或分散式模式,為簡明步驟,示例部署為單機模式。這裡以 Windows 為例。
① 從官網下載 ZooKeeper。
② 解壓縮到指定目錄,筆者解壓縮到 D:\Program Files 目錄。
③ 將 conf 目錄下的 zoo_sample.cfg 檔案重新命名為 zoo.cfg,編輯 zoo.cfg 檔案,在檔案最後加上 admin.serverPort=8081
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=D:\javaweb\apache-zookeeper-3.5.8\data # the port at which the clients will connect clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1 admin.serverPort=8081zoo.cfg
④ 雙擊 bin 目錄下的 zkServer.cmd 檔案,執行成功後如圖 5-2 所示。
3.部署待測程式
從筆者的 GitHub 中下載待測程式,程式名為 rpcinterface-0.0.1-SNAPSHOT.jar,下載後放在伺服器上,執行以下命令執行即可。
java-jar E:\rpcinterface-0.0.1-SNAPSHOT.jar
這裡把本地電腦作為伺服器,且待測程式放在了 E 盤根目錄,讀者需要根據實際情況替換以上路徑。執行成功後如圖 5-3 所示。
參考資料:
apache-zookeeper-3.5.8-bin.tar.gz