本發(fā)明涉及RPC(Remote Procedure Call Protocol,遠(yuǎn)程過程調(diào)用協(xié)議,通過網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議)接口測(cè)試領(lǐng)域,具體涉及一種RPC接口測(cè)試方法及系統(tǒng)。
背景技術(shù):
接口測(cè)試(對(duì)系統(tǒng)組件間接口進(jìn)行測(cè)試)主要用于檢測(cè)外部系統(tǒng)與系統(tǒng)(包括各個(gè)子系統(tǒng))之間的交互點(diǎn),接口測(cè)試重點(diǎn)為檢查數(shù)據(jù)的交換、傳遞和控制管理過程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等。
目前,Web測(cè)試中的接口測(cè)試主要關(guān)注前端服務(wù)中基于http協(xié)議的post(傳送數(shù)據(jù))和get(獲取數(shù)據(jù))請(qǐng)求,而對(duì)后端服務(wù)中較通用的RPC接口測(cè)試研究不多,RPC接口的測(cè)試方法尚無,進(jìn)而會(huì)使得RPC服務(wù)使用時(shí)存在以下缺陷:
RPC服務(wù)在創(chuàng)建和初期使用時(shí)出現(xiàn)的問題比較隱蔽,無法及時(shí)修復(fù),若該問題在RPC服務(wù)完善后再來修復(fù),則會(huì)重新大幅度修整RPC服務(wù),不僅操作過程比較復(fù)雜,而且修復(fù)成本較高。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明解決的技術(shù)問題為:提供一種RPC接口測(cè)試方法及系統(tǒng),本發(fā)明能夠在RPC服務(wù)出現(xiàn)問題時(shí)及時(shí)發(fā)現(xiàn)并修復(fù),簡(jiǎn)化了后期的操作過程和維修成本。
為達(dá)到以上目的,本發(fā)明提供的RPC接口測(cè)試方法,包括以下步驟:
S1:在服務(wù)器上建立Socket連接,通過Socket與RPC接口進(jìn)行通信,讀取預(yù)先設(shè)置的RPC服務(wù)的服務(wù)器配置信息、測(cè)試數(shù)據(jù)配置文件和數(shù)據(jù)庫配置文件,轉(zhuǎn)到S2;
所述服務(wù)器配置信息包括用于寫入RPC調(diào)用語言的命令行終端和公共RPC的調(diào)用方法;
S2:運(yùn)行測(cè)試所需的驅(qū)動(dòng)數(shù)據(jù)后,加載所述測(cè)試數(shù)據(jù)配置文件和數(shù)據(jù)庫配置文件,通過公共RPC的調(diào)用方法在服務(wù)器上進(jìn)行RPC服務(wù)登錄,轉(zhuǎn)到S3;
S3:在命令行終端上寫入測(cè)試數(shù)據(jù)配置文件的測(cè)試參數(shù),根據(jù)測(cè)試參數(shù)進(jìn)行測(cè)試。
在上述技術(shù)方案的基礎(chǔ)上,S3中所述根據(jù)測(cè)試參數(shù)進(jìn)行測(cè)試的具體流程為:讀取測(cè)試數(shù)據(jù)配置文件中預(yù)先定義的不正確或正確的用戶數(shù)據(jù);執(zhí)行S3的過程中,若出現(xiàn)異常,則捕獲異常信息。
在上述技術(shù)方案的基礎(chǔ)上,S3之后還包括以下步驟:根據(jù)預(yù)先設(shè)置的測(cè)試場(chǎng)景恢復(fù)配置,進(jìn)行測(cè)試場(chǎng)景恢復(fù)。
在上述技術(shù)方案的基礎(chǔ)上,S1中所述通過Socket與RPC接口進(jìn)行通信之后,還包括以下步驟:讀取預(yù)先設(shè)置的Socket的服務(wù)器配置信息。
在上述技術(shù)方案的基礎(chǔ)上,S1中所述服務(wù)器配置信息還包括服務(wù)器ip、RPC服務(wù)的端口號(hào)和RPC服務(wù)的消息碼。
本發(fā)明提供的實(shí)現(xiàn)上述方法的RPC接口測(cè)試系統(tǒng),包括測(cè)試連接建立模塊、測(cè)試驅(qū)動(dòng)登陸模塊和RPC接口測(cè)試模塊;
測(cè)試連接建立模塊用于:在服務(wù)器上建立Socket連接,通過Socket與RPC接口進(jìn)行通信,讀取預(yù)先設(shè)置的RPC服務(wù)的服務(wù)器配置信息、測(cè)試數(shù)據(jù)配置文件和數(shù)據(jù)庫配置文件,向測(cè)試驅(qū)動(dòng)登陸模塊發(fā)送測(cè)試驅(qū)動(dòng)登陸信號(hào);
所述服務(wù)器配置信息包括用于寫入RPC調(diào)用語言的命令行終端和公共RPC的調(diào)用方法;
測(cè)試驅(qū)動(dòng)登陸模塊用于:收到測(cè)試驅(qū)動(dòng)登陸信號(hào)后,運(yùn)行測(cè)試所需的驅(qū)動(dòng)數(shù)據(jù),加載所述測(cè)試數(shù)據(jù)配置文件和數(shù)據(jù)庫配置文件,通過公共RPC的調(diào)用方法在服務(wù)器上進(jìn)行RPC服務(wù)登錄,向RPC接口測(cè)試模塊發(fā)送RPC接口測(cè)試信號(hào);
RPC接口測(cè)試模塊用于:收到RPC接口測(cè)試信號(hào)后,在命令行終端上寫入測(cè)試數(shù)據(jù)配置文件的測(cè)試參數(shù),根據(jù)測(cè)試參數(shù)進(jìn)行測(cè)試。
在上述技術(shù)方案的基礎(chǔ)上,所述RPC接口測(cè)試模塊根據(jù)測(cè)試參數(shù)進(jìn)行測(cè)試的具體流程為:讀取測(cè)試數(shù)據(jù)配置文件中預(yù)先定義的不正確或正確的用戶數(shù)據(jù);測(cè)試過程中,若出現(xiàn)異常,則捕獲異常信息。
在上述技術(shù)方案的基礎(chǔ)上,該系統(tǒng)還包括測(cè)試測(cè)試場(chǎng)景恢復(fù)模塊,其用于:在RPC接口測(cè)試模塊測(cè)試完成后,根據(jù)預(yù)先設(shè)置的測(cè)試場(chǎng)景恢復(fù)配置,進(jìn)行測(cè)試場(chǎng)景恢復(fù)。
在上述技術(shù)方案的基礎(chǔ)上,所述測(cè)試連接建立模塊通過Socket與RPC接口進(jìn)行通信之后,還包括以下工作流程:讀取預(yù)先設(shè)置的Socket的服務(wù)器配置信息。
在上述技術(shù)方案的基礎(chǔ)上,所述測(cè)試連接建立模塊讀取的服務(wù)器配置信息,還包括服務(wù)器ip、RPC服務(wù)的端口號(hào)和RPC服務(wù)的消息碼。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
本發(fā)明根據(jù)自行創(chuàng)造的測(cè)試方式,能夠完成RPC接口的測(cè)試,進(jìn)而使得RPC服務(wù)出現(xiàn)問題時(shí)能夠及時(shí)發(fā)現(xiàn)并修復(fù),簡(jiǎn)化了后期的操作過程和維修成本。
附圖說明
圖1為本發(fā)明實(shí)施例中RPC接口測(cè)試方法的流程圖。
具體實(shí)施方式
以下結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。
本發(fā)明實(shí)施例中的RPC接口測(cè)試方法,借鑒了數(shù)據(jù)驅(qū)動(dòng)的測(cè)試自動(dòng)化思想(以數(shù)據(jù)來控制自動(dòng)化測(cè)試的流程和動(dòng)作的測(cè)試,其中數(shù)據(jù)是獨(dú)立于測(cè)試用例腳本的,通常以文本文件形式、Excel文件形式、XML文件等形式存在),以Python語言(面向?qū)ο蟆⒔忉屝陀?jì)算機(jī)程序設(shè)計(jì)語言)為主實(shí)現(xiàn)了后端服務(wù)器的Socket通信和RPC調(diào)用,并結(jié)合軟件測(cè)試中的邊界值、等價(jià)類、正交試驗(yàn)設(shè)計(jì)等方法編寫接口測(cè)試用例。
其中Socket通信通常也稱作"套接字",用于描述IP地址和端口,是一個(gè)通信鏈的句柄,可以用來實(shí)現(xiàn)不同虛擬機(jī)或不同計(jì)算機(jī)之間的通信。在Internet上的主機(jī)一般運(yùn)行了多個(gè)服務(wù)軟件,同時(shí)提供幾種服務(wù)。每種服務(wù)都打開一個(gè)Socket,并綁定到一個(gè)端口上,不同的端口對(duì)應(yīng)于不同的服務(wù)。
本發(fā)明實(shí)施例進(jìn)行RPC接口測(cè)試之前,需要實(shí)現(xiàn)與后端服務(wù)器的Socket進(jìn)行通信、以及通過Python語言調(diào)用具體的RPC服務(wù)(RPC接口承載的是RPC服務(wù))。
與后端服務(wù)器的Socket進(jìn)行通信的流程為:
(1)定義socket管理類,包括創(chuàng)建連接-create Socket()、發(fā)送數(shù)據(jù)-send Data()、接收數(shù)據(jù)-recvData()、和關(guān)閉連接-close Socket()。
(2)定義數(shù)據(jù)包處理類,包括數(shù)據(jù)包解碼-decode()、編碼-encode()、字符過濾-filter()。
(3)定義RPC調(diào)用類,RPC調(diào)用類包括讀取后端服務(wù)器配置信息:-processServerInfo()、讀取測(cè)試數(shù)據(jù)配置-processYaml()、讀取數(shù)據(jù)庫配置-processMysql()、后端服務(wù)登錄-loginClient()、公共的RPC調(diào)用方法-callRPC()。
通過Python語言調(diào)用具體的RPC的流程為:
(1)定義具體RPC的調(diào)用方法:call_RPC_A(args[])。
(2)定義執(zhí)行RPC調(diào)用類,執(zhí)行RPC調(diào)用類類包括場(chǎng)景初始化-init()、執(zhí)行具體RPC調(diào)用-test_RPC_A()、測(cè)試場(chǎng)景恢復(fù)配置-cover()。
(3)定義驅(qū)動(dòng)數(shù)據(jù)。
在此基礎(chǔ)上,本發(fā)明實(shí)施例中的RPC接口測(cè)試方法,包括以下步驟:
S1:在后臺(tái)服務(wù)器上建立Socket連接,通過Socket與RPC接口進(jìn)行通信,分別讀取預(yù)先設(shè)置的RPC服務(wù)的服務(wù)器配置信息、RPC服務(wù)的測(cè)試數(shù)據(jù)配置文件、RPC服務(wù)的數(shù)據(jù)庫配置文件、以及Socket的服務(wù)器配置信息,轉(zhuǎn)到S2。
S1中RPC服務(wù)的服務(wù)器配置信息包括服務(wù)器ip、RPC服務(wù)的端口號(hào)port、RPC的消息碼、用于寫入RPC調(diào)用語言的命令行終端和公共的RPC調(diào)用方法。
S2:運(yùn)行測(cè)試所需的驅(qū)動(dòng)數(shù)據(jù)后,加載S1中的測(cè)試數(shù)據(jù)配置文件和數(shù)據(jù)庫配置文件,通過公共的RPC調(diào)用方法在后臺(tái)服務(wù)器上進(jìn)行RPC服務(wù)登錄,轉(zhuǎn)到S3。
S3:在命令行終端上寫入測(cè)試數(shù)據(jù)配置文件的實(shí)際測(cè)試參數(shù),根據(jù)測(cè)試參數(shù)進(jìn)行測(cè)試test_RPC_get_member_ban_info(),轉(zhuǎn)到S4。
S3中根據(jù)測(cè)試參數(shù)進(jìn)行測(cè)試可以為以下2種中的任意1種流程:
(1)test_case_error_uid:讀取測(cè)試數(shù)據(jù)配置文件中預(yù)先定義的不正確的用戶數(shù)據(jù);
(2)test_case_correct_uid:讀取測(cè)試數(shù)據(jù)配置文件中預(yù)先定義的正確的用戶數(shù)據(jù)。
S3中若測(cè)試過程中出現(xiàn)異常(例如讀取測(cè)試數(shù)據(jù)配置文件錯(cuò)誤等),則捕獲并打印異常信息。
S4:根據(jù)預(yù)先設(shè)置的測(cè)試場(chǎng)景恢復(fù)配置,進(jìn)行測(cè)試場(chǎng)景恢復(fù)(例如將測(cè)試場(chǎng)景恢復(fù)為RPC的正常工作場(chǎng)景等)。
本發(fā)明實(shí)施例提供的實(shí)現(xiàn)上述方法的RPC接口測(cè)試系統(tǒng),包括測(cè)試連接建立模塊、測(cè)試驅(qū)動(dòng)登陸模塊、RPC接口測(cè)試模塊和測(cè)試測(cè)試場(chǎng)景恢復(fù)模塊。
測(cè)試連接建立模塊用于:在服務(wù)器上建立Socket連接,通過Socket與RPC接口進(jìn)行通信,讀取預(yù)先設(shè)置的RPC服務(wù)的服務(wù)器配置信息、測(cè)試數(shù)據(jù)配置文件、數(shù)據(jù)庫配置文件、以及Socket的服務(wù)器配置信息,向測(cè)試驅(qū)動(dòng)登陸模塊發(fā)送測(cè)試驅(qū)動(dòng)登陸信號(hào)。
所述服務(wù)器配置信息包括服務(wù)器ip、RPC服務(wù)的端口號(hào)port、RPC的消息碼、用于寫入RPC調(diào)用語言的命令行終端和公共的RPC調(diào)用方法。
測(cè)試驅(qū)動(dòng)登陸模塊用于:收到測(cè)試驅(qū)動(dòng)登陸信號(hào)后,運(yùn)行測(cè)試所需的驅(qū)動(dòng)數(shù)據(jù),加載所述測(cè)試數(shù)據(jù)配置文件和數(shù)據(jù)庫配置文件,通過公共RPC的調(diào)用方法在服務(wù)器上進(jìn)行RPC服務(wù)登錄,向RPC接口測(cè)試模塊發(fā)送RPC接口測(cè)試信號(hào)。
RPC接口測(cè)試模塊用于:收到RPC接口測(cè)試信號(hào)后,在命令行終端上寫入測(cè)試數(shù)據(jù)配置文件的測(cè)試參數(shù),根據(jù)測(cè)試參數(shù)進(jìn)行測(cè)試,測(cè)試的具體工作流程為:讀取測(cè)試數(shù)據(jù)配置文件中預(yù)先定義的不正確或正確的用戶數(shù)據(jù);測(cè)試過程中,若出現(xiàn)異常,則捕獲異常信息。
測(cè)試測(cè)試場(chǎng)景恢復(fù)模塊用于:在RPC接口測(cè)試模塊測(cè)試完成后,根據(jù)預(yù)先設(shè)置的測(cè)試場(chǎng)景恢復(fù)配置,進(jìn)行測(cè)試場(chǎng)景恢復(fù)。
本發(fā)明不局限于上述實(shí)施方式,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也視為本發(fā)明的保護(hù)范圍之內(nèi)。本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。