本公開(kāi)涉及計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,具體涉及一種測(cè)試方法,特別涉及一種業(yè)務(wù)鏈路自動(dòng)化覆蓋方法和裝置。
背景技術(shù):
隨著計(jì)算機(jī)應(yīng)用技術(shù)的迅猛發(fā)展,常常通過(guò)實(shí)現(xiàn)各種業(yè)務(wù)來(lái)為人們提供各種各種樣的服務(wù)。對(duì)于業(yè)務(wù)的實(shí)現(xiàn)而言,其大都是涉及多部門(mén)或者多團(tuán)隊(duì)的項(xiàng)目。換而言之,業(yè)務(wù)所提供的服務(wù)將是由多個(gè)功能模塊實(shí)現(xiàn)的,各功能模塊均有負(fù)責(zé)的部門(mén)或者團(tuán)隊(duì)。
在大多數(shù)情況下,部門(mén)或者團(tuán)隊(duì)僅會(huì)對(duì)自己負(fù)責(zé)的功能模塊做一些自動(dòng)化測(cè)試用例,以覆蓋對(duì)外接口調(diào)用部分的檢查。
由此,對(duì)于多部門(mén)或者多團(tuán)隊(duì)所實(shí)現(xiàn)的業(yè)務(wù)而言,不同部門(mén)或者不同團(tuán)隊(duì)做的自動(dòng)化測(cè)試用例并沒(méi)有成體系的關(guān)聯(lián)起來(lái),而是零散存在的,因此,業(yè)務(wù)中自動(dòng)化測(cè)試的實(shí)現(xiàn)存在著缺乏整體性的局限性。
技術(shù)實(shí)現(xiàn)要素:
為了解決相關(guān)技術(shù)中存在的業(yè)務(wù)中自動(dòng)化測(cè)試的實(shí)現(xiàn)存在著缺乏整體性的技術(shù)問(wèn)題,本公開(kāi)提供了一種業(yè)務(wù)鏈路自動(dòng)化覆蓋方法和裝置。
一種業(yè)務(wù)鏈路自動(dòng)化覆蓋方法,包括:
在部署業(yè)務(wù)的機(jī)器中進(jìn)行端口監(jiān)聽(tīng),抓取得到業(yè)務(wù)鏈路上相互關(guān)聯(lián)的若干個(gè)通訊包;
獲取所述業(yè)務(wù)鏈路上的功能模塊;
將抓取得到的所述通訊包轉(zhuǎn)換成與所述功能模塊的層級(jí)劃分相匹配的自動(dòng)化測(cè)試用例組合。
一種業(yè)務(wù)鏈路自動(dòng)化覆蓋裝置,所述裝置包括:
監(jiān)聽(tīng)模塊,用于在部署業(yè)務(wù)的機(jī)器中進(jìn)行端口監(jiān)聽(tīng),抓取得到業(yè)務(wù)鏈路上相互關(guān)聯(lián)的若干個(gè)通訊包;
功能獲取模塊,用于獲取所述業(yè)務(wù)鏈路上的功能模塊;
轉(zhuǎn)換模塊,用于將抓取得到的所述通訊包轉(zhuǎn)換成與所述功能模塊的層級(jí)劃分相匹配的自動(dòng)化測(cè)試用例組合。
本公開(kāi)的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:
對(duì)于多個(gè)功能模塊所實(shí)現(xiàn)的業(yè)務(wù),將在部署業(yè)務(wù)的機(jī)器中進(jìn)行端口監(jiān)聽(tīng),抓取自身業(yè)務(wù)鏈路上相互關(guān)聯(lián)的若干個(gè)通訊包,獲取業(yè)務(wù)鏈路上的功能模塊,將抓取得到的通訊包轉(zhuǎn)換成與功能模塊的層級(jí)劃分相匹配的自動(dòng)化測(cè)試用例組合,由此使得自動(dòng)化測(cè)試用例組合是與業(yè)務(wù)的多個(gè)功能模塊相匹配的,因此,提高了業(yè)務(wù)中實(shí)現(xiàn)自動(dòng)化測(cè)試的整體性。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性的,并不能限制本公開(kāi)。
附圖說(shuō)明
此處的附圖被并入說(shuō)明書(shū)中并構(gòu)成本說(shuō)明書(shū)的一部分,示出了符合本發(fā)明的實(shí)施例,并于說(shuō)明書(shū)一起用于解釋本發(fā)明的原理。
圖1是根據(jù)本公開(kāi)所涉及的實(shí)施環(huán)境的示意圖;
圖2是根據(jù)一示例性實(shí)施例示出的一種裝置的框圖;
圖3是根據(jù)一示例性實(shí)施例示出的一種業(yè)務(wù)鏈路自動(dòng)化覆蓋方法的流程圖;
圖4是根據(jù)一示例性實(shí)施例示出的對(duì)在部署業(yè)務(wù)的機(jī)器中進(jìn)行端口監(jiān)聽(tīng),抓取得到業(yè)務(wù)鏈路上相互關(guān)聯(lián)的若干個(gè)通訊包步驟的細(xì)節(jié)進(jìn)行的描述的流程圖;
圖5是根據(jù)一示例性實(shí)施例示出的對(duì)將抓取得到的通訊包轉(zhuǎn)換成與功能模塊的層級(jí)劃分相匹配的自動(dòng)化測(cè)試用例組合步驟的細(xì)節(jié)進(jìn)行的描述的流程圖;
圖6是一業(yè)務(wù)實(shí)現(xiàn)從系統(tǒng)層面上看的功能模塊示意圖;
圖7是根據(jù)一示例性實(shí)施例對(duì)根據(jù)層級(jí)中待測(cè)試模塊輸入的通訊包獲取存儲(chǔ)的自動(dòng)化測(cè)試用例內(nèi)容,填充自動(dòng)化測(cè)試用例內(nèi)容生成輸入的通訊包對(duì)應(yīng)的自動(dòng)化測(cè)試用例步驟的細(xì)節(jié)進(jìn)行的描述流程圖;
圖8是根據(jù)一示例性實(shí)施例示出的對(duì)進(jìn)行通訊包的解析,獲得通訊包對(duì)應(yīng)功能模塊的自動(dòng)化測(cè)試用例內(nèi)容,并存儲(chǔ)步驟的細(xì)節(jié)進(jìn)行的描述的流程圖;
圖9是一個(gè)示例性實(shí)施例中抓包工具的工作過(guò)程的流程圖;
圖10是業(yè)務(wù)鏈路中通訊包的示意簡(jiǎn)圖;
圖11是圖10中將所有功能模塊作為一整體的示意簡(jiǎn)圖;
圖12是圖10中將所有功能模塊劃分成大模塊的示意簡(jiǎn)圖;
圖13是圖10中進(jìn)行模塊細(xì)分的示意簡(jiǎn)圖;
圖14是根據(jù)一示例性實(shí)施例示出的一種業(yè)務(wù)鏈路自動(dòng)化覆蓋裝置的框圖
圖15是圖14對(duì)應(yīng)實(shí)施例中監(jiān)聽(tīng)模塊的框圖;
圖16是圖14對(duì)應(yīng)實(shí)施例中轉(zhuǎn)換模塊的框圖;
圖17是圖16對(duì)應(yīng)實(shí)施例中用例生成單元的框圖;
圖18是圖16對(duì)應(yīng)實(shí)施例中解析單元的框圖。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例執(zhí)行說(shuō)明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本發(fā)明相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書(shū)中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
圖1是根據(jù)本公開(kāi)所涉及的實(shí)施環(huán)境的示意圖。該實(shí)施環(huán)境包括:至少一個(gè)服務(wù)器110和數(shù)據(jù)中心130。
服務(wù)器110和數(shù)據(jù)中心130之間的關(guān)聯(lián)方式,包括網(wǎng)絡(luò)協(xié)議以及二者之間往來(lái)的數(shù)據(jù)關(guān)聯(lián)方式。
圖2是根據(jù)一示例性實(shí)施例示出的一種裝置200的框圖。例如,裝置200可以是圖1所示實(shí)施環(huán)境中的服務(wù)器110。參照?qǐng)D2,裝置200可以包括以下一個(gè)或多個(gè)組件:處理組件202,存儲(chǔ)器204,電源組件206以及通信組件208。
處理組件202通??刂蒲b置200的整體操作,處理組件202可以包括一個(gè)或多個(gè)處理器210來(lái)執(zhí)行指令,以完成上述的方法的全部或部分步驟。此外,處理組件202可以包括一個(gè)或多個(gè)模塊,便于處理組件202和其他組件之間的交互。
存儲(chǔ)器204被配置為存儲(chǔ)各種類型的數(shù)據(jù)以支持在裝置200的操作。這些數(shù)據(jù)的示例包括用于在裝置200上操作的任何應(yīng)用程序或方法的指令。存儲(chǔ)器204可以由任何類型的易失性或非易失性存儲(chǔ)設(shè)備或者它們的組合實(shí)現(xiàn),如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM),電可擦除可編程只讀存儲(chǔ)器(EEPROM),可擦除可編程只讀存儲(chǔ)器(EPROM),可編程只讀存儲(chǔ)器(PROM),只讀存儲(chǔ)器(ROM),磁存儲(chǔ)器,快閃存儲(chǔ)器,磁盤(pán)或光盤(pán)。存儲(chǔ)器204中還存儲(chǔ)有一個(gè)或多個(gè)模塊,該一個(gè)或多個(gè)模塊被配置成由該一個(gè)或多個(gè)處理器210執(zhí)行,以完成上述圖3、4、圖5、圖7和圖8所對(duì)應(yīng)實(shí)施例的全部或者部分步驟。
電源組件206為裝置200的各種組件提供電力。電源組件206可以包括電源管理系統(tǒng),一個(gè)或多個(gè)電源,及其他與為裝置200生成、管理和分配電力相關(guān)聯(lián)的組件。
通信組件208被配置為便于裝置200和其他設(shè)備之間有線或無(wú)線方式的通信。在一個(gè)示例性實(shí)施例中,通信組件208經(jīng)由廣播信道接收來(lái)自外部廣播管理系統(tǒng)的廣播信號(hào)或廣播相關(guān)信息。在一個(gè)示例性實(shí)施例中,所述通信組件208還包括寬帶(UWB)技術(shù)和其他技術(shù)來(lái)實(shí)現(xiàn)。
在示例性實(shí)施例中,裝置200可以被一個(gè)或多個(gè)應(yīng)用專用集成電路(ASIC)、數(shù)字信號(hào)處理器(DSP)、數(shù)字信號(hào)處理設(shè)備(DSPD)、可編程邏輯器件(PLD)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、控制器、微控制器、微處理器或其他電子元件實(shí)現(xiàn),用于執(zhí)行上述方法。
圖3是根據(jù)一示例性實(shí)施例示出的一種業(yè)務(wù)鏈路自動(dòng)化覆蓋方法的流程圖。該業(yè)務(wù)鏈路自動(dòng)化覆蓋方法用于圖1所示實(shí)施環(huán)境的服務(wù)器110。如圖3所示,該業(yè)務(wù)鏈路自動(dòng)化覆蓋方法,可以由服務(wù)器110執(zhí)行,可以包括以下步驟。
在步驟310中,在部署業(yè)務(wù)的機(jī)器中進(jìn)行端口監(jiān)聽(tīng),抓取得到業(yè)務(wù)鏈路上相互關(guān)聯(lián)的若干個(gè)通訊包。
其中,所指的業(yè)務(wù)被部署于多個(gè)機(jī)器中,以用于實(shí)現(xiàn)某些特定服務(wù)。例如,業(yè)務(wù)被部署于服務(wù)器集群中,通過(guò)用戶與服務(wù)器集群之間的數(shù)據(jù)交互來(lái)實(shí)現(xiàn)其相應(yīng)服務(wù)。對(duì)于部署于多個(gè)機(jī)器中的業(yè)務(wù),其將相應(yīng)形成業(yè)務(wù)鏈路,并且是通過(guò)業(yè)務(wù)鏈路上各功能模塊的相互配合來(lái)實(shí)現(xiàn)此業(yè)務(wù)所能夠提供的服務(wù)。
基于此,業(yè)務(wù)鏈路上存在著若干個(gè)通訊包,例如,業(yè)務(wù)鏈路上輸入的通訊包和最終輸出的通訊包,以完成一請(qǐng)求回路。
通過(guò)部署業(yè)務(wù)的機(jī)器所實(shí)現(xiàn)的業(yè)務(wù)鏈路上,通訊包是由機(jī)器中配置的端口輸入或者輸出的,因此,為實(shí)現(xiàn)業(yè)務(wù)鏈路上測(cè)試用例的自動(dòng)化覆蓋,將進(jìn)行部署業(yè)務(wù)的機(jī)器中端口的監(jiān)聽(tīng),以抓取通訊包。
進(jìn)一步的,業(yè)務(wù)鏈路上的多個(gè)功能模塊是相互關(guān)聯(lián)的,并且功能模塊是通過(guò)一通訊包的輸入和另一通訊包的輸出來(lái)實(shí)現(xiàn)其自身功能的。對(duì)于功能模塊所進(jìn)行的通訊包輸入和輸出,都是通過(guò)機(jī)器上配置的端口實(shí)現(xiàn)的。因此,通過(guò)進(jìn)行端口的監(jiān)聽(tīng),能夠抓取得到業(yè)務(wù)鏈路上的通訊包,并且基于相互關(guān)聯(lián)的功能模塊,所抓取得到的通訊包也是相互關(guān)聯(lián)的。
在步驟330中,獲取業(yè)務(wù)鏈路上的功能模塊。
其中,所獲取的功能模塊是指業(yè)務(wù)鏈路上的多個(gè)功能模塊。換而言之,多個(gè)功能模塊所實(shí)現(xiàn)功能之間的相互配合便實(shí)現(xiàn)了業(yè)務(wù)所提供的服務(wù)。
在步驟350中,將抓取得到的通訊包轉(zhuǎn)換成與功能模塊的層級(jí)劃分相匹配的自動(dòng)化測(cè)試用例組合。
其中,根據(jù)功能模塊的層級(jí)劃分來(lái)使用相應(yīng)的通訊包生成自動(dòng)化測(cè)試用例組合。由于無(wú)論功能模塊如何進(jìn)行層級(jí)劃分,其都構(gòu)成整個(gè)業(yè)務(wù)鏈路,因此,由此所生成的自動(dòng)化測(cè)試用例便也覆蓋了整個(gè)業(yè)務(wù)鏈路,進(jìn)而保證了業(yè)務(wù)中自動(dòng)化測(cè)試的整體性。
需要說(shuō)明的是,自動(dòng)化測(cè)試用例組合包括多個(gè)相互關(guān)聯(lián)的自動(dòng)化測(cè)試用例,此自動(dòng)化測(cè)試用例將是根據(jù)功能模塊的層級(jí)劃分而生成的,由此將與業(yè)務(wù)鏈路的功能模塊相匹配。
通訊包存在著源網(wǎng)絡(luò)地址和目的網(wǎng)絡(luò)地址、端口信息以及業(yè)務(wù)數(shù)據(jù)。因此,可作為相應(yīng)功能模塊的自動(dòng)化測(cè)試用例的測(cè)試數(shù)據(jù),以生成自動(dòng)化測(cè)試用例。
功能模塊的層級(jí)劃分指的是對(duì)業(yè)務(wù)鏈路上的多個(gè)功能模塊按照其各自的分布情況進(jìn)行的層級(jí)劃分,所劃分的層級(jí)將根據(jù)業(yè)務(wù)的實(shí)際運(yùn)營(yíng)情況靈活確定,在此不進(jìn)行限定。
通過(guò)如上所述的通訊包抓取和通訊包轉(zhuǎn)換獲得業(yè)務(wù)鏈路的自動(dòng)化測(cè)試用例組合。該自動(dòng)化測(cè)試用例組合中包含的自動(dòng)化測(cè)試用例能夠覆蓋業(yè)務(wù)鏈路的各功能模塊,即將各自動(dòng)化測(cè)試用例基于功能模塊成體系的關(guān)聯(lián)起來(lái),而不再是存在于業(yè)務(wù)鏈路上零散的自動(dòng)化測(cè)試用例,避免了業(yè)務(wù)鏈路上的覆蓋缺失,提高整體性。
圖4是根據(jù)一示例性實(shí)施例示出的對(duì)步驟310的細(xì)節(jié)進(jìn)行的描述。該步驟310用于圖1所示實(shí)施環(huán)境的服務(wù)器110,如圖4所示,該步驟310,可以包括以下步驟。
在步驟311中,獲取業(yè)務(wù)的配置信息。
其中,業(yè)務(wù)的配置信息包括各功能模塊所相關(guān)的配置信息。一方面,業(yè)務(wù)的配置信息標(biāo)示了各功能模塊在機(jī)器中配置的端口,該端口用于實(shí)現(xiàn)相應(yīng)功能模塊的通訊包輸入和輸出。
另一方面,業(yè)務(wù)的配置信息在進(jìn)行業(yè)務(wù)部署時(shí)被存儲(chǔ),業(yè)務(wù)的配置信息中標(biāo)示了業(yè)務(wù)部署的每一機(jī)器自身的配置情況,例如,機(jī)器中的端口配置,其是與記錄的服務(wù)地址相對(duì)應(yīng)的。
具體的,部署業(yè)務(wù)的機(jī)器中,根據(jù)網(wǎng)卡名獲取本地所對(duì)應(yīng)的服務(wù)地址,即網(wǎng)卡名所對(duì)應(yīng)機(jī)器的服務(wù)地址,由此根據(jù)服務(wù)地址即可獲得存儲(chǔ)的業(yè)務(wù)的配置信息。
在步驟313中,根據(jù)機(jī)器的服務(wù)地址從配置信息獲取對(duì)應(yīng)的端口。
其中,首先獲取部署業(yè)務(wù)的機(jī)器所對(duì)應(yīng)的服務(wù)地址,根據(jù)服務(wù)地址得以在配置信息中獲取對(duì)應(yīng)的端口,此獲取得到的端口即為服務(wù)器中為實(shí)現(xiàn)業(yè)務(wù)的部署而配置的端口,例如,對(duì)于根據(jù)一機(jī)器的服務(wù)地址從配置信息獲取得到的端口而言,其包括了業(yè)務(wù)鏈路上運(yùn)行在這一機(jī)器的功能模塊所對(duì)應(yīng)的輸入端口和輸出端口。
在具體實(shí)現(xiàn)中,配置信息存儲(chǔ)于與數(shù)據(jù)中心綁定的機(jī)器,例如,部署了zookeeper(分布式應(yīng)用程序協(xié)調(diào)服務(wù))的機(jī)器,因此,對(duì)于部署業(yè)務(wù)的機(jī)器而言,連接存儲(chǔ)了配置信息的機(jī)器即可以獲取配置信息。
在步驟315中,對(duì)端口進(jìn)行監(jiān)聽(tīng),抓取端口的通訊包得到業(yè)務(wù)鏈路上相互關(guān)聯(lián)的若干個(gè)通訊包。
其中,部署業(yè)務(wù)的各機(jī)器都配置了抓包工具,通過(guò)抓包工具進(jìn)行機(jī)器中端口的監(jiān)聽(tīng),以抓取端口中的通訊包。以此類推,對(duì)于形成整個(gè)業(yè)務(wù)鏈路的所有機(jī)器而言,將由各機(jī)器中配置的抓包工具抓取得到通訊包,由此便得各功能模塊所分別對(duì)應(yīng)的若干個(gè)通訊包,其將構(gòu)成業(yè)務(wù)鏈路上完整的請(qǐng)求回路,因此,成為業(yè)務(wù)鏈路上相互關(guān)聯(lián)的若干個(gè)通訊包。
圖5是根據(jù)一示例性實(shí)施例示出的對(duì)步驟350的細(xì)節(jié)進(jìn)行的描述。該步驟350用于圖1所示實(shí)施環(huán)境的服務(wù)器110,如圖5所示,該步驟350,可以包括以下步驟。
在步驟351中,進(jìn)行功能模塊的層級(jí)劃分得到各層級(jí)包含的待測(cè)試模塊。
其中,如前所述的,業(yè)務(wù)鏈路上包含了多個(gè)功能模塊,其分布于進(jìn)行業(yè)務(wù)部署的各機(jī)器中。
例如,如圖6所示的,一業(yè)務(wù)的實(shí)現(xiàn)從系統(tǒng)模塊層面上看,共12個(gè)功能模塊,并由三個(gè)團(tuán)隊(duì)負(fù)責(zé)。
由此,可對(duì)這12個(gè)功能模塊進(jìn)行層級(jí)劃分,并根據(jù)各層級(jí)中進(jìn)行的通訊包輸入來(lái)獲得此層級(jí)所包含的待測(cè)試模塊。
比如,將圖6所示的12個(gè)功能模塊劃分為三個(gè)層級(jí),其中,一層級(jí)是將所有功能模塊劃分為一整體,由此所包含的待測(cè)試模塊為功能模塊1;下一層級(jí)是將所有功能模塊劃分成大模塊,即,如圖6中豎線的劃分,由此所包含的待測(cè)試模塊為功能村1、功能模塊5和功能模塊9;再下一層級(jí)是單模塊,即包含的待測(cè)試模塊為各功能模塊。
通過(guò)如上所述的層級(jí)劃分,構(gòu)建了由業(yè)務(wù)鏈路整體至單模塊的待測(cè)試模塊組合,各層級(jí)之間是相對(duì)功能模塊劃分的粗細(xì)程序各不相同,待測(cè)試模塊之間存在著某個(gè)特性關(guān)聯(lián)且相互之間也是相互關(guān)聯(lián)的,因此,為后續(xù)自動(dòng)化測(cè)試用例中整體性的提高奠定基礎(chǔ)。
在步驟353中,按照層級(jí)中待測(cè)試模塊相對(duì)功能模塊劃分的粗細(xì)程度和輸入通訊包對(duì)應(yīng)的自動(dòng)化測(cè)試用例內(nèi)容,逐層級(jí)生成待測(cè)試模塊的自動(dòng)化測(cè)試用例。
其中,如前所述的,對(duì)功能模塊所進(jìn)行的層級(jí)劃分存在著功能模塊劃分的不同粗細(xì)程度。待測(cè)試模塊的自動(dòng)化測(cè)試用例生成是按照對(duì)功能模塊劃分由粗到細(xì)的層級(jí)順序進(jìn)行的,進(jìn)而逐層級(jí)生成待測(cè)試模塊的自動(dòng)化測(cè)試用例。
在步驟355中,將相互關(guān)聯(lián)的自動(dòng)化測(cè)試用例構(gòu)成業(yè)務(wù)鏈路的自動(dòng)化測(cè)試用例組合。
其中,各層級(jí)所包含的待測(cè)試用例將構(gòu)成了業(yè)務(wù)鏈路上的功能模塊,因此,逐層級(jí)所生成的待測(cè)試模塊的自動(dòng)化測(cè)試用例也將相互關(guān)聯(lián),構(gòu)成了整個(gè)業(yè)務(wù)鏈路,即,構(gòu)成業(yè)務(wù)鏈路的自動(dòng)化測(cè)試用例組合。
通過(guò)如上所述的過(guò)程,便基于業(yè)務(wù)鏈路得到了自動(dòng)化測(cè)試用例組合,由此將把整體業(yè)務(wù)拉通,實(shí)現(xiàn)業(yè)務(wù)的自動(dòng)化覆蓋,并且避免覆蓋缺失。
可選的,該步驟350還可以包括以下步驟。
進(jìn)行通訊包的解析,獲得通訊包對(duì)應(yīng)功能模塊的自動(dòng)化用例內(nèi)容,并存儲(chǔ)。
其中,通訊包中存在著相應(yīng)功能橫塊的業(yè)務(wù)數(shù)據(jù)以及自身通訊相關(guān)的信息,例如,傳輸方向信息、端口信息。因此,需要進(jìn)行通訊包的解析,以得到此通訊包所對(duì)應(yīng)功能模塊進(jìn)行自動(dòng)化測(cè)試的自動(dòng)化測(cè)試用例內(nèi)容。
在具體實(shí)現(xiàn)中,將獲得到自動(dòng)化測(cè)試用例內(nèi)容存儲(chǔ)至圖1所示實(shí)施環(huán)境的數(shù)據(jù)中心130,以便于后續(xù)調(diào)用。數(shù)據(jù)中心130是指部署了數(shù)據(jù)庫(kù)的機(jī)器,在一示例性實(shí)施例的優(yōu)選方式中,此數(shù)據(jù)庫(kù)可以為分布式數(shù)據(jù)庫(kù),例如,kafka。
在一個(gè)示例性實(shí)施例對(duì)步驟355的細(xì)節(jié)進(jìn)行描述中,步驟355包括:
根據(jù)層級(jí)中待測(cè)試模塊輸入的通訊包獲取存儲(chǔ)的自動(dòng)化測(cè)試用例內(nèi)容,填充自動(dòng)化測(cè)試用例內(nèi)容生成輸入的通訊包對(duì)應(yīng)的自動(dòng)化測(cè)試用例。
其中,如前所述的,存儲(chǔ)于數(shù)據(jù)中心,即部署了數(shù)據(jù)庫(kù)的機(jī)器上的自動(dòng)化測(cè)試內(nèi)容將是分別對(duì)應(yīng)于各功能模塊所輸入或者輸出的通訊包的,該通訊包分別對(duì)應(yīng)于功能模塊和自動(dòng)化測(cè)試用例內(nèi)容。
因此,由此關(guān)系可知,自動(dòng)化測(cè)試用例內(nèi)容將是與一定功能模塊相對(duì)應(yīng)的,以用于作為此功能模塊進(jìn)行自動(dòng)化測(cè)試的原始數(shù)據(jù)。
根據(jù)相對(duì)功能模塊劃分由粗到細(xì)的程度,逐層級(jí)進(jìn)行待測(cè)試模塊的自動(dòng)化測(cè)試用例生成。在此過(guò)程中,對(duì)于一層級(jí)的自動(dòng)化測(cè)試用例生成,將首先相應(yīng)獲取存儲(chǔ)的自動(dòng)化測(cè)試內(nèi)容,并填充此自動(dòng)化測(cè)試內(nèi)容即可得到此層級(jí)中待測(cè)試模塊的自動(dòng)化測(cè)試用例。
通過(guò)此過(guò)程,控制各層級(jí)實(shí)現(xiàn)了各自的自動(dòng)化測(cè)試用例生成,由此將得以兼顧業(yè)務(wù)鏈路上的各功能模塊,而避免存在缺失。
圖7是根據(jù)一示例性實(shí)施例對(duì)根據(jù)層級(jí)中待測(cè)試模塊輸入的通訊包獲取存儲(chǔ)的自動(dòng)化測(cè)試用例內(nèi)容,填充自動(dòng)化測(cè)試用例內(nèi)容生成輸入的通訊包對(duì)應(yīng)的自動(dòng)化測(cè)試用例步驟的細(xì)節(jié)進(jìn)行的描述。如圖7所示的,可以包括以下步驟。
在步驟3551中,針對(duì)將功能模塊劃分為一整體的待測(cè)試模塊,根據(jù)待測(cè)試模塊輸入的通訊包獲取存儲(chǔ)的自動(dòng)化測(cè)試內(nèi)容,填充自動(dòng)化測(cè)試內(nèi)容生成自動(dòng)化測(cè)試用例。
其中,如前所述的,首先是將業(yè)務(wù)鏈路上的所有功能模塊劃分為一整體,即將所有功能模塊視為整體,此時(shí),根據(jù)輸入的通訊包可知,業(yè)務(wù)鏈路上首個(gè)功能模塊為此層級(jí)所包含的待測(cè)試模塊,并為其相應(yīng)獲取存儲(chǔ)的自動(dòng)化測(cè)試內(nèi)容,生成自動(dòng)化測(cè)試用例。
在步驟3553中,針對(duì)將功能模塊劃分為若干個(gè)大模塊的待測(cè)試模塊,根據(jù)大模塊輸入的通訊包獲取存儲(chǔ)的自動(dòng)化測(cè)試內(nèi)容,填充自動(dòng)化測(cè)試內(nèi)容生成自動(dòng)化測(cè)試用例。
其中,通過(guò)自動(dòng)化測(cè)試內(nèi)容,生成大模塊所分別對(duì)應(yīng)的自動(dòng)化測(cè)試用例,由此便得到的業(yè)務(wù)鏈路上部分功能模塊所分別對(duì)應(yīng)的自動(dòng)化測(cè)試用例。
在步驟3555中,根據(jù)功能模塊和已生成的自動(dòng)化測(cè)試用例得到待生成自動(dòng)化測(cè)試用例的功能模塊,根據(jù)功能模塊輸入的通訊包獲取存儲(chǔ)的自動(dòng)化測(cè)試內(nèi)容,填充自動(dòng)化測(cè)試內(nèi)容生成自動(dòng)化測(cè)試用例。
其中,將進(jìn)行最后一層級(jí),即功能模塊的自動(dòng)化測(cè)試用例生成,在此,所指的功能模塊是指當(dāng)前未通過(guò)前述層級(jí)進(jìn)行自動(dòng)化測(cè)試用例生成的功能模塊。
通過(guò)如上所述各層級(jí)的自動(dòng)化測(cè)試用例生成過(guò)程,使得業(yè)務(wù)鏈路上各自動(dòng)化測(cè)試用例的生成也是相互關(guān)聯(lián),與所存儲(chǔ)的功能模塊相匹配的,由此便能夠?qū)崿F(xiàn)整個(gè)業(yè)務(wù)鏈路上的自動(dòng)化測(cè)試,實(shí)現(xiàn)單模塊到全鏈路拉通,端到端的用例覆蓋和監(jiān)控。
在一示例性實(shí)施例示出的一種業(yè)務(wù)鏈路自動(dòng)化覆蓋方法,該方法還可以包括連接部署數(shù)據(jù)庫(kù)的機(jī)器的步驟。
圖8是根據(jù)一示例性實(shí)施例示出的對(duì)步驟351的細(xì)節(jié)進(jìn)行的描述。該步驟351用于圖1所示實(shí)施環(huán)境的服務(wù)器110。如圖8所示,進(jìn)行通訊包的解析,獲得通訊包對(duì)應(yīng)功能模塊的自動(dòng)化用例內(nèi)容,并存儲(chǔ)的步驟,可以包括以下步驟。
在步驟3501中,解析通訊包得到傳輸方向信息、端口信息和業(yè)務(wù)數(shù)據(jù)。
其中,解析通訊包的包頭得到傳輸方向信息和端口信息。傳輸方向信息用于標(biāo)示發(fā)送和接收數(shù)據(jù)的網(wǎng)絡(luò)地址;端口信息則用于標(biāo)示發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的端口。
獲取服務(wù)協(xié)議信息,根據(jù)服務(wù)協(xié)議信息解析通訊包的包體得到業(yè)務(wù)數(shù)據(jù)。服務(wù)協(xié)議信息包括協(xié)議類型和msg等。換而言之,將根據(jù)消息的協(xié)議類型與消息結(jié)構(gòu)進(jìn)行解析,以得到業(yè)務(wù)數(shù)據(jù)。
在步驟3503中,通過(guò)與部署數(shù)據(jù)庫(kù)的機(jī)器之間的連接,將傳輸方向信息、端口信息和業(yè)務(wù)數(shù)據(jù)作為通訊包對(duì)應(yīng)模塊的自動(dòng)化測(cè)試用例內(nèi)容存儲(chǔ)至數(shù)據(jù)庫(kù)。
其中,在具體實(shí)現(xiàn)中,數(shù)據(jù)庫(kù)可以通過(guò)kafka(分布式發(fā)布訂閱消息系統(tǒng))實(shí)現(xiàn),以通過(guò)kafka這一高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),來(lái)實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和處理。
根據(jù)一示例性實(shí)施例示出的一種業(yè)務(wù)鏈路自動(dòng)化覆蓋方法中,還包括:
通過(guò)自動(dòng)化測(cè)試用例組合中相互關(guān)聯(lián)的自動(dòng)化測(cè)試用例的分別運(yùn)行,進(jìn)行業(yè)務(wù)鏈路上的自動(dòng)化測(cè)試。
其中,與自動(dòng)化測(cè)試用例生成過(guò)程相類似的,通過(guò)自動(dòng)化測(cè)試用例組合,進(jìn)行業(yè)務(wù)上單模塊、大模塊和全鏈路的自動(dòng)化測(cè)試,進(jìn)而實(shí)現(xiàn)業(yè)務(wù)鏈路的監(jiān)控或回歸測(cè)試。
結(jié)合具體應(yīng)用場(chǎng)景,描述該業(yè)務(wù)鏈路自動(dòng)化覆蓋方法。例如,圖6是一業(yè)務(wù)在系統(tǒng)模塊層面上的示意圖。
首先,將通過(guò)部署在各機(jī)器中的抓包工具來(lái)實(shí)現(xiàn)業(yè)務(wù)所部署機(jī)器上特定端口的監(jiān)聽(tīng),并將獲取的通訊包解析,以得到用于生成自動(dòng)化測(cè)試用例的自動(dòng)化測(cè)試用例內(nèi)容,并存儲(chǔ)至數(shù)據(jù)中心。
在一示例性實(shí)施例所提供的具體實(shí)現(xiàn)中,圖9示出了一個(gè)示例性實(shí)施例中抓包工具的工作過(guò)程。
部署業(yè)務(wù)的各機(jī)器中,根據(jù)自身網(wǎng)卡名字獲取本地網(wǎng)絡(luò)地址,并連接部署zookeeper的機(jī)器獲取配置信息,即執(zhí)行步驟610和步驟620。
此時(shí),從配置信息即可獲得業(yè)務(wù)運(yùn)行所涉及的端口,即配置信息中本地網(wǎng)絡(luò)地址所對(duì)應(yīng)的所有端口,并連接數(shù)據(jù)中心,以為后續(xù)進(jìn)行的數(shù)據(jù)存儲(chǔ)作準(zhǔn)備,即執(zhí)行步驟630和步驟640。
各機(jī)器都將捕獲端口中輸入或者輸出的通訊包,即執(zhí)行步驟650,并隨之進(jìn)行通訊包的解析,如步驟660至步驟710所示,以便于得到傳輸方向信息、端口信息和業(yè)務(wù)數(shù)據(jù),并存儲(chǔ)至數(shù)據(jù)中心,由此便為后續(xù)的自動(dòng)化測(cè)試用例提供數(shù)據(jù)基礎(chǔ)。
各功能模塊通過(guò)業(yè)務(wù)在機(jī)器中的部署而運(yùn)行于各機(jī)器中,并且通過(guò)通訊包的輸入和輸出實(shí)現(xiàn)各功能模塊之間的相互作用。
例如,圖10是業(yè)務(wù)鏈路中通訊包的示意簡(jiǎn)圖,包括A、B和C三個(gè)功能模塊,1、2、3、4、5和6均為通訊包,所在的箭頭將指示了通訊包的傳輸方向。
其中,手機(jī)端向?qū)崿F(xiàn)業(yè)務(wù)的服務(wù)器發(fā)起請(qǐng)求,以請(qǐng)求獲取業(yè)務(wù)所提供的服務(wù)。在此過(guò)程中,手機(jī)端發(fā)起的請(qǐng)求為通訊包1,發(fā)給了功能模塊A,功能模塊A收到后,發(fā)起了通訊包2給功能模塊B,功能模塊B收到后發(fā)起了通訊包3給功能模塊C,功能模塊C收到后處理完成,返回了通訊包4給功能模塊B,功能模塊B處理完后返回通訊包5給功能模塊A,功能模塊A處理完后返回通訊包給手機(jī)端,由此便完成了一個(gè)請(qǐng)求回路。
由此可知,這些通訊包是一次請(qǐng)求過(guò)程中經(jīng)過(guò)各個(gè)功能模塊而產(chǎn)生的,是相互關(guān)聯(lián)的。
可通過(guò)本公開(kāi)中圖4對(duì)應(yīng)的示例性實(shí)施例抓取得到,并存儲(chǔ)至數(shù)據(jù)中心kafka。
此時(shí),將對(duì)這12個(gè)功能模塊進(jìn)行層級(jí)劃分。首先,如圖11所示,將所有功能模塊作為一整體,即整體看成一個(gè)黑盒,由此生成一端到端自動(dòng)化測(cè)試用例,同時(shí)也是對(duì)功能模塊1的自動(dòng)化測(cè)試用例。
其次,如圖12所示,將這12個(gè)功能模塊劃分成大模塊,以由此完成3個(gè)大模塊的自動(dòng)化測(cè)試用例的生成。
最后,如圖13所示,進(jìn)行模塊細(xì)分,即完成單模塊的自動(dòng)化測(cè)試用例生成。
至此,業(yè)務(wù)上單模塊、大模塊與全鏈路的自動(dòng)化測(cè)試用例全部生成,雖然每一單模塊或大模塊的自動(dòng)化測(cè)試用例都有自己檢查的側(cè)重點(diǎn),但是,對(duì)于業(yè)務(wù)鏈路的全鏈路通訊過(guò)程中的一直透?jìng)骰蜃鳛殛P(guān)鍵判斷的一些參數(shù)或邏輯的檢查,將會(huì)貫穿所有自動(dòng)化測(cè)試用例中。
將如上所述的自動(dòng)化測(cè)試用例用于監(jiān)控或回歸測(cè)試時(shí),如果失敗,則只要看到是哪個(gè)自動(dòng)化測(cè)試用例失敗,就很容易判斷出問(wèn)題,比如,功能模塊8至12的自動(dòng)化測(cè)試用例所進(jìn)行的測(cè)試成功了,功能模塊1至7的自動(dòng)化測(cè)試用例所進(jìn)行的測(cè)試失敗了,則可判斷問(wèn)題出在功能模塊7的邏輯中。
下述為本公開(kāi)裝置實(shí)施例,可以用于執(zhí)行上述服務(wù)器110執(zhí)行的業(yè)務(wù)鏈路自動(dòng)化覆蓋方法。對(duì)于本公開(kāi)裝置實(shí)施例中未披露的細(xì)節(jié),請(qǐng)參照本公開(kāi)業(yè)務(wù)鏈路自動(dòng)化覆蓋方法實(shí)施例。
圖14是根據(jù)一示例性實(shí)施例示出的一種業(yè)務(wù)鏈路自動(dòng)化覆蓋裝置的框圖,該業(yè)務(wù)鏈路自動(dòng)化覆蓋裝置可以用于圖1所示實(shí)施環(huán)境的服務(wù)器110中,執(zhí)行圖3所示的業(yè)務(wù)鏈路自動(dòng)化覆蓋訪求的全部或部分步驟。如圖14所示,該業(yè)務(wù)鏈路自動(dòng)化覆蓋裝置包括但不限于:監(jiān)聽(tīng)模塊510、功能獲取模塊530和轉(zhuǎn)換模塊550。
監(jiān)聽(tīng)模塊510,用于在部署業(yè)務(wù)的機(jī)器中進(jìn)行端口監(jiān)聽(tīng),抓取得到業(yè)務(wù)鏈路上相互關(guān)聯(lián)的若干個(gè)通訊包。
功能獲取模塊530,用于獲取業(yè)務(wù)鏈路上的功能模塊。
轉(zhuǎn)換模塊550,用于將抓取得到的通訊包轉(zhuǎn)換成與功能模塊的層級(jí)劃分相匹配的自動(dòng)化測(cè)試用例組合。
可選的,監(jiān)聽(tīng)模塊510如圖15示,包括配置獲取單元511、端口獲取單元513和通訊包抓取單元515。
配置獲取單元511,用于獲取業(yè)務(wù)的配置信息。
端口獲取單元513,用于根據(jù)機(jī)器的服務(wù)地址從配置信息獲取對(duì)應(yīng)的端口。
通訊包抓取單元515,用于對(duì)端口進(jìn)行監(jiān)聽(tīng),抓取端口的通訊包得到業(yè)務(wù)鏈路上相互關(guān)聯(lián)的若干個(gè)通訊包。
可靠的,轉(zhuǎn)換模塊550如圖16示,包括層級(jí)劃分單元551、用例生成單元553和組合構(gòu)成單元555。
層級(jí)劃分單元551,用于進(jìn)行功能模塊的層級(jí)劃分得到各層級(jí)包含的待測(cè)試模塊。
用例生成單元553,用于按照層級(jí)中待測(cè)試模塊相對(duì)功能模塊劃分的粗細(xì)程度和輸入通訊包對(duì)應(yīng)的自動(dòng)化測(cè)試用例內(nèi)容,逐層級(jí)生成待測(cè)試模塊的自動(dòng)化測(cè)試用例。
組合構(gòu)成單元555,用于將相互之間關(guān)聯(lián)的自動(dòng)化測(cè)試用例構(gòu)成業(yè)務(wù)鏈路的自動(dòng)化測(cè)試用例組合。
可選的,轉(zhuǎn)換模塊550還包括解析單元。該解析單元用于進(jìn)行通訊包的解析,獲得通訊包對(duì)應(yīng)功能模塊的自動(dòng)化測(cè)試用例內(nèi)容,并存儲(chǔ)。
可選的,用例生成單元555進(jìn)一步用于根據(jù)層級(jí)中待測(cè)試模塊輸入的通訊包獲取存儲(chǔ)的自動(dòng)化測(cè)試用例內(nèi)容,填充自動(dòng)化測(cè)試用例內(nèi)容生成輸入的通訊包對(duì)應(yīng)的自動(dòng)化測(cè)試用例。
進(jìn)一步的,如圖17示,用例生成單元555包括第一用例生成子單元5551、第二用例生成子單元5553和第三用例生成子單元5555。
第一用例生成子單元5551,用于針對(duì)將功能模塊劃分為一整體的待測(cè)試模塊,根據(jù)待測(cè)試模塊輸入的通訊包獲取存儲(chǔ)的自動(dòng)化測(cè)試內(nèi)容,填充自動(dòng)化測(cè)試內(nèi)容生成自動(dòng)化測(cè)試用例。
第二用例生成子單元5553,用于針對(duì)將功能模塊劃分為若干個(gè)大模塊的待測(cè)試模塊,根據(jù)大模塊輸入的通訊包獲取存儲(chǔ)的自動(dòng)化測(cè)試內(nèi)容,填充自動(dòng)化測(cè)試內(nèi)容生成自動(dòng)化測(cè)試用例。
第三用例生成子單元5555,用于根據(jù)功能模塊和已生成的自動(dòng)化測(cè)試用例得到待生成自動(dòng)化測(cè)試用例的功能模塊,根據(jù)功能模塊輸入的通訊包獲取存儲(chǔ)的自動(dòng)化測(cè)試內(nèi)容,填充自動(dòng)化測(cè)試內(nèi)容生成自動(dòng)化測(cè)試用例。
一示例性實(shí)施例示出的一種業(yè)務(wù)鏈路覆蓋裝置中,還包括數(shù)據(jù)庫(kù)連接模塊。數(shù)據(jù)庫(kù)連接模塊用于連接部署數(shù)據(jù)庫(kù)的機(jī)器。
圖18根據(jù)一示例性實(shí)施例示出的對(duì)解析單元的細(xì)節(jié)進(jìn)行的描述。該解析單元810如圖17,包括解析執(zhí)行子單元811和存儲(chǔ)子單元813。
解析執(zhí)行子單元811,用于解析通訊包得到傳輸方向信息、端口信息和業(yè)務(wù)數(shù)據(jù)。
存儲(chǔ)子單元813,用于通過(guò)與部署數(shù)據(jù)庫(kù)的機(jī)器之間的連接,將傳輸方向信息、端口信息和業(yè)務(wù)數(shù)據(jù)作為通訊包對(duì)應(yīng)模塊的自動(dòng)化測(cè)試用例內(nèi)容存儲(chǔ)至數(shù)據(jù)庫(kù)。
一示例性實(shí)施例求出的業(yè)務(wù)鏈路自動(dòng)化覆蓋裝置中,還包括自動(dòng)化測(cè)試模塊。自動(dòng)化測(cè)試模塊用于通過(guò)自動(dòng)化測(cè)試用例組合中相互關(guān)聯(lián)的自動(dòng)化測(cè)試用例的分別運(yùn)行,進(jìn)行業(yè)務(wù)鏈路上的自動(dòng)化測(cè)試。
可選的,本公開(kāi)還提供一種業(yè)務(wù)鏈路自動(dòng)化覆蓋裝置,該業(yè)務(wù)鏈路自動(dòng)化覆蓋可以用于圖1所示實(shí)施環(huán)境的服務(wù)器110中,所述裝置包括:
處理器;
用于存儲(chǔ)處理器可執(zhí)行指令的存儲(chǔ)器;
其中,所述處理器被配置為執(zhí)行:
在部署業(yè)務(wù)的機(jī)器中進(jìn)行端口監(jiān)聽(tīng),抓取得到業(yè)務(wù)鏈路上相互關(guān)聯(lián)的若干個(gè)通訊包;
獲取所述業(yè)務(wù)鏈路上的功能模塊;
將抓取得到的所述通訊包轉(zhuǎn)換成與所述功能模塊的層級(jí)劃分相匹配的自動(dòng)化測(cè)試用例組合。
該實(shí)施例中的裝置的處理器執(zhí)行操作的具體方式已經(jīng)在有關(guān)該業(yè)務(wù)鏈路自動(dòng)化覆蓋方法的實(shí)施例中執(zhí)行了詳細(xì)描述,此處將不做詳細(xì)闡述說(shuō)明。
在示例性實(shí)施例中,還提供了一種存儲(chǔ)介質(zhì),該存儲(chǔ)介質(zhì)為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),例如可以為包括指令的臨時(shí)性和非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。該存儲(chǔ)介指例如包括指令的存儲(chǔ)器204,上述指令可由裝置200的處理器210執(zhí)行以完成上述業(yè)務(wù)鏈路自動(dòng)化覆蓋方法。
應(yīng)當(dāng)理解的是,本發(fā)明并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍執(zhí)行各種修改和改變。本發(fā)明的范圍僅由所附的權(quán)利要求來(lái)限制。