要講接口測(cè)試,先要對(duì)RMI中的樁(stub)和骨架(skeleton)的概念有一點(diǎn)了解。RMI的代理模式迫使方法調(diào)用必須通過充當(dāng)替身的代理對(duì)象,即Stub和Skeleton,由這些代理對(duì)象將方法傳遞給實(shí)際的對(duì)象。Stub駐留客戶端,承擔(dān)著代理遠(yuǎn)程對(duì)象的實(shí)現(xiàn)者的角色,Skeleton類幫助遠(yuǎn)程對(duì)象與Stub再RMI連接上進(jìn)行通信。 目前我們接觸到的接口類型主要是hessian、dubbo和http接口。Hessian和dubbo都是遠(yuǎn)程方法調(diào)用的一種實(shí)現(xiàn),客戶端需要保留stub來調(diào)用接口。這就是為什么我們?cè)谧鰄essian和dubbo類型的接口測(cè)試時(shí),需要引入接口的jar包。當(dāng)然也可以在項(xiàng)目中引入被測(cè)接口的定義,如果有相關(guān)的自定義類,也一并拷貝過來(直接拷貝代碼)。 認(rèn)識(shí)三種類型的接口: Hessian是遠(yuǎn)程方法調(diào)用的一種,常被用來跟webservice做比較,相對(duì)于webservice其實(shí)現(xiàn)更簡(jiǎn)潔。hessian采用的是二進(jìn)制RPC(Remote Procedure Call)協(xié)議(基于http協(xié)議),所以它很適合發(fā)送二進(jìn)制數(shù)據(jù),不太適用于復(fù)雜對(duì)象類型的傳輸。 http類型的接口是相對(duì)于web應(yīng)用的,基于http協(xié)議傳輸文本。web.xml中配置相應(yīng)的servlet,當(dāng)一個(gè)uri請(qǐng)求過來時(shí),doGet或者doPost方法會(huì)被調(diào)用,獲取相應(yīng)的參數(shù)。測(cè)試http接口時(shí)只需要通過uri定位接口并傳遞參數(shù),相對(duì)比較簡(jiǎn)單; Dubbo是我們公司自己開發(fā)的一個(gè)遠(yuǎn)程方法調(diào)用框架。Dubbo注冊(cè)中心負(fù)責(zé)服務(wù)地址的注冊(cè)與查找,相當(dāng)于服務(wù)目錄;dubbo監(jiān)控中心負(fù)責(zé)統(tǒng)計(jì)各服務(wù)調(diào)用次數(shù),調(diào)用時(shí)間等。Dubbo原理可以參考知識(shí)庫文檔: 消費(fèi)者可以不通過dubbo直連服務(wù)提供者。
總結(jié)如下: Hessian接口測(cè)試:通過接口uri獲取接口,如果拷貝接口定義及其自定義類,接口和自定義類的包名盡量跟開發(fā)的包保持一致,不建議直接拷貝代碼的方式,因?yàn)檫@樣不便于維護(hù),直接在pom文件中引入接口和hessian依賴的jar包。通常借助HessianSpringFactoryBean獲取接口。 Dubbo接口測(cè)試:如果通過dubbo的注冊(cè)中心獲取服務(wù)接口,在搭建測(cè)試環(huán)境時(shí)需要在antx配置項(xiàng)中指定dubbo注冊(cè)中心的地址,測(cè)試客戶端也需要配置dubbo注冊(cè)中心地址以及對(duì)外提供服務(wù)的接口名稱。直連的方式在測(cè)試端需要引入dubbo框架相關(guān)的jar包,測(cè)試類和測(cè)試方法以及wiki命名盡量規(guī)范。通常通過dubbo框架內(nèi)置的類來獲取接口。 Http接口測(cè)試:相對(duì)來說測(cè)試端最簡(jiǎn)潔,不需要引入接口的jar包,通過httpclient一系列的類來調(diào)用接口。 三種類型的接口測(cè)試方法因框架的不同配置文件有所差異,但是總的來說都是獲取接口、準(zhǔn)備數(shù)據(jù)、執(zhí)行用例、判斷結(jié)果這些步驟。 |
|