tcp接口测试工具_你不了解的,完整“接口测试”与服务虚拟化
生活随笔
收集整理的這篇文章主要介紹了
tcp接口测试工具_你不了解的,完整“接口测试”与服务虚拟化
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?如能幫到你,下方為我們點(diǎn)個(gè)在看??推薦:15款“云買菜”平臺(tái)如何選?36城200名體驗(yàn)者告訴你!注:文章原標(biāo)題“接口測(cè)試與服務(wù)虛擬化”正文開(kāi)始:什么是接口測(cè)試?前幾年當(dāng)我們提自動(dòng)化測(cè)試時(shí),很多時(shí)候是指UI界面層的自動(dòng)化測(cè)試。但是近年來(lái)隨著分層自動(dòng)化測(cè)試(圖1)概念的興起以及自動(dòng)化測(cè)試自身的發(fā)展與細(xì)分,自動(dòng)化測(cè)試有了更多的內(nèi)容。比如本文即將要談到的接口自動(dòng)化測(cè)試,就是其中一種。圖1:分層自動(dòng)化測(cè)試接口測(cè)試并沒(méi)有一個(gè)標(biāo)準(zhǔn)的定義,老外的文章也較少提"Interface Testing"這個(gè)詞,一般見(jiàn)到比較多的是"API Testing"。我們從百度百科可以查到,“接口測(cè)試是測(cè)試系統(tǒng)組件間接口的一種測(cè)試。接口測(cè)試主要用于檢測(cè)外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)。測(cè)試的重點(diǎn)是要檢查數(shù)據(jù)的交換,傳遞和控制管理過(guò)程,以及系統(tǒng)間的相互邏輯依賴關(guān)系等”。這幾年隨著微服務(wù)架構(gòu)的流行與發(fā)展,在接口測(cè)試領(lǐng)域又蹦出了一個(gè)詞,叫“契約測(cè)試”(Consumer-DrivenContracts Testing,簡(jiǎn)稱CDC Testing)。但是正所謂萬(wàn)變不離其宗,無(wú)論如何稱呼,始終都是圍繞著系統(tǒng)與系統(tǒng)之間,接口與接口之間邏輯的正確性來(lái)開(kāi)展測(cè)試,所以也是屬于接口測(cè)試的一種。很多人一談到接口自動(dòng)化測(cè)試,首當(dāng)其沖就想到SoapUI,Postmon或者JMeter等接口自動(dòng)化測(cè)試工具。誠(chéng)然,這些工具都是屬于接口自動(dòng)化測(cè)試的利器,解決了模擬客戶端向服務(wù)端發(fā)請(qǐng)求并且校驗(yàn)結(jié)果的功能。但是在筆者看來(lái),這些還不是接口自動(dòng)化測(cè)試的全部?jī)?nèi)涵。讓我們?cè)倩仡櫧涌跍y(cè)試的定義,接口測(cè)試是測(cè)試系統(tǒng)組件間接口的一種測(cè)試,言下之意也就是說(shuō)不僅要模擬客戶端組件測(cè)服務(wù)端功能,也要模擬服務(wù)端組件測(cè)客戶端功能,只有雙向都能進(jìn)行測(cè)試,才是完整“接口測(cè)試”的含義。而對(duì)于模擬服務(wù)端,我們有一個(gè)高大上的術(shù)語(yǔ),叫“服務(wù)虛擬化”,在老外的文章中經(jīng)常會(huì)看到這個(gè)詞的英文翻譯叫:“Service Virtualization”。什么是服務(wù)虛擬化?筆者最早接觸服務(wù)虛擬化這個(gè)詞,是在2013年左右。當(dāng)時(shí)IBM收購(gòu)了英國(guó)一家專門做接口測(cè)試工具的廠商叫“Green Hat”(這家公司在歐美很成功,四五十人的團(tuán)隊(duì)每年的營(yíng)業(yè)額卻能達(dá)到幾千萬(wàn)美元)。由于Green Hat的中文翻譯有點(diǎn)令人尷尬,所以IBM索性改名為Rational Integration Tester,同時(shí)還配套推出了一本電子書叫“Service Virtualization for Dummies”。這本書有六七十頁(yè),很系統(tǒng)的講了服務(wù)虛擬化的知識(shí)。那么,究竟什么是服務(wù)虛擬化呢?服務(wù)虛擬化是指通過(guò)錄制或構(gòu)造建模的方式產(chǎn)生服務(wù)仿真模塊(圖2),從而配合客戶端組件進(jìn)行功能測(cè)試。看到這里可能有人會(huì)說(shuō),這不就是樁(Stub)嗎?我讓開(kāi)發(fā)人員碼一個(gè)出來(lái)不就行了?確實(shí),生成樁是結(jié)果,但是請(qǐng)注意生成樁的過(guò)程,服務(wù)虛擬化是通過(guò)錄制或構(gòu)造建模生成樁,而不是要靠開(kāi)發(fā)人員大量編碼來(lái)生成。設(shè)想,要是一個(gè)復(fù)雜系統(tǒng)有上百的不同協(xié)議不同報(bào)文格式的接口,開(kāi)發(fā)人員一個(gè)個(gè)開(kāi)發(fā),那是何等大的開(kāi)發(fā)量!圖2:服務(wù)虛擬化服務(wù)虛擬化的價(jià)值那么服務(wù)虛擬化究竟有什么價(jià)值呢?筆者認(rèn)為主要有以下幾點(diǎn):1. 節(jié)省建設(shè)測(cè)試環(huán)境的費(fèi)用大家知道,我們的測(cè)試環(huán)境一般有幾套,像常見(jiàn)的集成測(cè)試環(huán)境、系統(tǒng)測(cè)試環(huán)境、系統(tǒng)集成測(cè)試環(huán)境等等;如果這些環(huán)境所需的硬件資源要求不高則罷,若是要求很高的話是很難為每套環(huán)境都配置資源的。比如銀行corebanking有不少是用IBM system Z大機(jī),這種一臺(tái)動(dòng)輒上億投入的硬件,是根本不可能會(huì)隨便能配幾套做測(cè)試環(huán)境的。很多時(shí)候當(dāng)進(jìn)行前期的測(cè)試時(shí)如果需要跟核心系統(tǒng)聯(lián)調(diào)的話,勢(shì)必會(huì)存在資源不足的情況。這種情況下,如果能把核心系統(tǒng)的接口服務(wù)進(jìn)行虛擬化,那么測(cè)試的過(guò)程則不必需要真的去調(diào)真正的接口,但同時(shí)也能使得整個(gè)交易的測(cè)試過(guò)程進(jìn)行下去。這樣就可以在前期測(cè)試階段減少了大量的投入。另外一個(gè)方面是關(guān)于第三方測(cè)試環(huán)境,比如大家知道萬(wàn)事達(dá)信用卡。如果您是作為銀行系統(tǒng)的測(cè)試人員,要想隨時(shí)和萬(wàn)事達(dá)接口聯(lián)調(diào)是很困難的,而且每個(gè)月你還必須為聯(lián)調(diào)測(cè)試環(huán)境附上一筆不菲的租賃費(fèi)用。那么我們其實(shí)也可以利用服務(wù)虛擬化技術(shù),在測(cè)試前期通過(guò)和虛擬服務(wù)樁的測(cè)試,確保早點(diǎn)完成業(yè)務(wù)交易測(cè)試過(guò)程,從而節(jié)省了第三方測(cè)試license的費(fèi)用。2. 縮減環(huán)境建設(shè)時(shí)間在整個(gè)測(cè)試過(guò)程中,測(cè)試環(huán)境的搭建是非常花費(fèi)時(shí)間的。據(jù)業(yè)界統(tǒng)計(jì),大概有40%的測(cè)試時(shí)間都花在環(huán)境搭建上面。我們?nèi)绻谇捌跍y(cè)試階段的環(huán)境中某些子系統(tǒng)或者組件利用服務(wù)虛擬化的技術(shù),簡(jiǎn)單的生成可測(cè)試的樁,這樣不僅能保證測(cè)試的業(yè)務(wù)流程不會(huì)阻塞,還能大大簡(jiǎn)化整個(gè)測(cè)試環(huán)境的搭建時(shí)間,給項(xiàng)目帶來(lái)非常大的幫助。3. 降低風(fēng)險(xiǎn)我們?cè)谧鱿到y(tǒng)聯(lián)調(diào)測(cè)試的時(shí)候最怕的就是那種所謂的“Big-Bang Testing”,也就是在測(cè)試的前面階段由于環(huán)境不具備、對(duì)端接口沒(méi)完成等各種環(huán)境問(wèn)題導(dǎo)致測(cè)試人員在不停的等待,直到所有的環(huán)境接口都開(kāi)發(fā)完后而測(cè)試時(shí)間所剩無(wú)幾的情況下再進(jìn)行測(cè)試。這時(shí)的情況就像定時(shí)炸彈一樣隨時(shí)都有可能爆炸。為了避免“Big-Bang Testing”,就需要我們?cè)谇捌陔A段就開(kāi)始測(cè)試,這時(shí)需要通過(guò)服務(wù)虛擬化,先對(duì)自己的接口模塊進(jìn)行自測(cè),盡早發(fā)現(xiàn)問(wèn)題并且盡早解決,從而降低了項(xiàng)目的質(zhì)量風(fēng)險(xiǎn)。服務(wù)虛擬化的局限任何事情都有兩面性,前面談了服務(wù)虛擬化這么多好處,當(dāng)然它也是有局限性的,比如它就不是很適合在用戶驗(yàn)收測(cè)試階段。因?yàn)橛脩趄?yàn)收測(cè)試階段已經(jīng)到了測(cè)試尾聲階段,這時(shí)需要在最接近生產(chǎn)系統(tǒng)的環(huán)境進(jìn)行測(cè)試,而如果還用假的服務(wù)來(lái)測(cè)試當(dāng)然會(huì)影響到結(jié)果的正確性。所以服務(wù)虛擬化最佳的適用測(cè)試階段應(yīng)該是單元測(cè)試、集成測(cè)試、接口聯(lián)調(diào)等測(cè)試前期階段。接口測(cè)試工具現(xiàn)在一般開(kāi)源的接口測(cè)試工具只能解決模擬客戶端測(cè)服務(wù)端的單向接口測(cè)試,而能做到模擬服務(wù)端提供服務(wù)虛擬化能力的開(kāi)源工具幾乎沒(méi)有。具有雙向測(cè)試能力的工具基本上都是商業(yè)工具,比如CA的Lisa,IBM的Rational Integration Tester(圖3),惠普(現(xiàn)在被MicroFocus收購(gòu)),Parasoft,Smartbear等。圖3:IBM Rational Integration Tester架構(gòu)圖拋開(kāi)商業(yè)開(kāi)源之分,單從技術(shù)上來(lái)說(shuō),什么樣的接口測(cè)試工具是好的測(cè)試工具?筆者認(rèn)為好的接口測(cè)試工具必須具備以下幾個(gè)條件:1. 能一個(gè)工具同時(shí)支持雙向測(cè)試過(guò)程。也就是即能模擬客戶端,也能模擬服務(wù)端。從這點(diǎn)看,大部分的開(kāi)源接口測(cè)試工具功能都太有限。而其實(shí)即使是惠普的接口測(cè)試工具,也是客戶端和服務(wù)端分開(kāi)成兩個(gè)工具(至少在2016年前是這樣)。這樣會(huì)給測(cè)試人員帶來(lái)很大的不便,同時(shí)也不能充分利用錄制或構(gòu)建一次測(cè)試報(bào)文可以同時(shí)給雙向的測(cè)試用例使用。在客戶端接口自動(dòng)化測(cè)試功能方面:* 需要支持正則表達(dá)式;* 需要支持實(shí)際測(cè)試結(jié)果與預(yù)期結(jié)果自動(dòng)比較,自動(dòng)告知成功/失敗,同時(shí)自動(dòng)高亮顯示失敗的行數(shù),杜絕人肉觀察的情況;* 需要支持復(fù)雜邏輯,比如分支、循環(huán)、判斷、會(huì)話連接和參數(shù)傳遞* 需要可擴(kuò)展功能,支持自定義函數(shù);在服務(wù)端虛擬化功能方面:* 需要能根據(jù)不同的請(qǐng)求返回不同的結(jié)果;* 需要支持復(fù)雜邏輯,比如分支、循環(huán)、判斷、會(huì)話連接和參數(shù)傳遞* 需要能支持多并發(fā),多用戶同時(shí)使用* 需要能支持樁的定時(shí)起停;* 需要能支持CI持續(xù)集成和DevOps2. 支持越多的通訊協(xié)議、消息報(bào)文和行業(yè)標(biāo)準(zhǔn)接口自動(dòng)化測(cè)試工具的強(qiáng)大與否,很重要的一點(diǎn)就是能否支持更多的協(xié)議、報(bào)文和標(biāo)準(zhǔn)。如果不能支持協(xié)議,通訊就好像雞同鴨講;如果不能支持報(bào)文格式,就好像獲取了天書,根本不知道里面是什么內(nèi)容,也就無(wú)法進(jìn)行正確的解析。至少工具需要對(duì)業(yè)界流行的協(xié)議、報(bào)文和標(biāo)準(zhǔn)支持,才能更加方便的讓測(cè)試人員使用一個(gè)工具能進(jìn)行更多的接口自動(dòng)化測(cè)試。比如:Web方面:Http/Https、Webservice,Soap等;中間件方面:WebSphere、WebLogic、Tomcat等消息中間件方面:MQ、Tuxedo等;傳輸方面:FTP、TCP等;數(shù)據(jù)庫(kù)方面:Oracle、DB2等;報(bào)文格式方面:XML、Json、Stream等;行業(yè)標(biāo)準(zhǔn)方面:Fix、Swift、銀聯(lián)ISO8582等總結(jié)接口測(cè)試一般是在集成測(cè)試階段進(jìn)行,很多時(shí)候都是在沒(méi)有界面的環(huán)境下進(jìn)行測(cè)試,所以借助接口測(cè)試工具來(lái)進(jìn)行測(cè)試是一個(gè)比較合適的方式。當(dāng)然,在選擇接口測(cè)試工具的時(shí)候最關(guān)鍵的還是要根據(jù)實(shí)際情況來(lái)選擇,商業(yè)的工具功能強(qiáng)大操作方便但是貴;開(kāi)源的工具功能較弱但是免費(fèi),針無(wú)兩頭尖。如果只是簡(jiǎn)單的接口,找個(gè)開(kāi)源工具進(jìn)行測(cè)試,又何必非得花錢買商業(yè)工具殺雞用牛刀呢?
——————— ?End??———————
測(cè)試大咖秀5000人QQ交流群:QQ群號(hào):636803769加群暗號(hào):武漢加油,中國(guó)加油!測(cè)試大咖秀微信交流群:請(qǐng)加群主微信 1327239410回復(fù)數(shù)字2視頻公開(kāi)課:釘釘掃描下方海報(bào)進(jìn)入直播群即可!如能幫到你,為我們點(diǎn)個(gè)在看哦?
總結(jié)
以上是生活随笔為你收集整理的tcp接口测试工具_你不了解的,完整“接口测试”与服务虚拟化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python selenium 框架说明
- 下一篇: 中柏平板触摸驱动_一文总览2019年最新