亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種測試異步交互系統(tǒng)的自動化測試方法與系統(tǒng)與流程

文檔序號:12309463閱讀:1259來源:國知局
一種測試異步交互系統(tǒng)的自動化測試方法與系統(tǒng)與流程

本發(fā)明涉及計(jì)算機(jī)軟件測試技術(shù)領(lǐng)域,尤其是涉及一種測試異步交互系統(tǒng)的自動化測試方法與系統(tǒng)。



背景技術(shù):

目前,很多跨系統(tǒng)交互的應(yīng)用中都會使用rabbitmq、activemq和zeromq等消息中間件進(jìn)行異步通信,以降低系統(tǒng)之間的耦合度,并提高系統(tǒng)的可擴(kuò)展性和可用性。如對于面向多個(gè)應(yīng)用系統(tǒng)的監(jiān)控系統(tǒng),監(jiān)控系統(tǒng)可通過消息中間件獲取各個(gè)應(yīng)用系統(tǒng)多方面的數(shù)據(jù)。

在上述的應(yīng)用中,現(xiàn)有的測試方法一般是手工測試,且各個(gè)系統(tǒng)測試時(shí)需要相互系統(tǒng),很難做到獨(dú)立測試,因而該方法存在著以下問題:(1)測試人員需要了解被依賴的系統(tǒng),使得測試人員需具有較高的專業(yè)技能,也會使得多系統(tǒng)所屬團(tuán)隊(duì)間的協(xié)同難度加大。而實(shí)際上測試人員對被依賴系統(tǒng)的了解普遍存在局限性,則很難保證較高的測試質(zhì)量。(2)由于一個(gè)系統(tǒng)的測試需要依賴另一個(gè)系統(tǒng),因此各個(gè)系統(tǒng)間測試進(jìn)度受到限制,需要較長的測試周期。另外,單個(gè)系統(tǒng)的修改會影響其它系統(tǒng),導(dǎo)致測試成本較高。(3)各個(gè)系統(tǒng)間的依賴性高,導(dǎo)致跨系統(tǒng)問題的跟蹤周期及處理周期較長。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種測試異步交互系統(tǒng)的自動化測試方法與系統(tǒng),實(shí)現(xiàn)獨(dú)立測試各個(gè)系統(tǒng),消除各個(gè)系統(tǒng)之間的依賴,降低測試工作的復(fù)雜度,縮短測試周期,提高測試效率。

本發(fā)明的目的可以通過以下技術(shù)方案來實(shí)現(xiàn):

一種測試異步交互系統(tǒng)的自動化測試方法,模擬被測系統(tǒng)與其他系統(tǒng)使用消息中間件交互時(shí),實(shí)現(xiàn)向消息中間件發(fā)送消息和從消息中間件中接收消息的方法,所述的方法包括:模擬消息接收端從消息中間件中接收消息并將消息持久化保存的過程,以及模擬消息發(fā)送端將文件中的數(shù)據(jù)發(fā)送至消息中間件的過程。

所述的模擬消息接收端從消息中間件中接收消息并將消息持久化保存的過程具體為:

(1)將消息中間件服務(wù)器ip、消息隊(duì)列名稱、隊(duì)列類型與指定隊(duì)列建立連接;

(2)實(shí)時(shí)監(jiān)控消息隊(duì)列,并利用消息獲取機(jī)制取出消息;

(3)將取出的消息轉(zhuǎn)換為設(shè)定格式的數(shù)據(jù);

(4)保存消息:分析消息的類型及其特征,并采用對應(yīng)的消息保存策略將消息保存至不同的文件中。

所述的消息保存策略的實(shí)現(xiàn)過程包括,

(401)判斷并選擇消息類型;

(402)判斷該消息是否存在指定目錄,若存在,進(jìn)入下一步,若不存在,創(chuàng)建指定目錄,并根據(jù)消息類型命名后,進(jìn)入下一步;

(403)判斷是否存在消息接收文件,若存在,則選擇數(shù)據(jù)更新策略,進(jìn)入下一步,若不存在,則創(chuàng)建消息接收文件后,選擇數(shù)據(jù)更新策略,進(jìn)入下一步;

(404)將消息保存至消息接收文件中。

所述的模擬消息發(fā)送端將文件中的數(shù)據(jù)發(fā)送至消息中間件的具體實(shí)現(xiàn)過程為,

(1)將模擬消息發(fā)送端與消息中間件建立連接;

(2)根據(jù)消息類型及消息格式的定義,創(chuàng)建消息數(shù)據(jù)的源文件,將消息按照規(guī)范的格式保存在文件中,文件中的每一行即為一個(gè)消息的完整內(nèi)容;

(3)按行讀取消息數(shù)據(jù)的源文件;

(4)選擇消息發(fā)送機(jī)制,將消息發(fā)送至消息中間件。

一種測試異步交互系統(tǒng)的自動化測試系統(tǒng),所述的自動化測試系統(tǒng)包括消息中間件、以及分別與消息中間件交互的消息發(fā)送端與消息接收端,用于模擬被測系統(tǒng)與其他系統(tǒng)使用消息中間件交互,調(diào)用模擬消息發(fā)送端將文件中的數(shù)據(jù)發(fā)送至中間件和模擬消息接收端接收消息并將消息持久化保存的過程,實(shí)現(xiàn)自動化驗(yàn)證被測系統(tǒng)發(fā)送或者接收數(shù)據(jù)準(zhǔn)確性和完整性。

所述的實(shí)現(xiàn)自動化驗(yàn)證被測系統(tǒng)發(fā)送或者接收數(shù)據(jù)準(zhǔn)確性和完整性操作前需確定測試前提是否滿足,所述的測試前提包括,

測試前提一:消息格式的定義規(guī)范且期望值明確;

測試前提二:使用python語言實(shí)現(xiàn)模擬消息發(fā)送或者模擬消息接收的相關(guān)方法,使用基于robotframework調(diào)用這些相關(guān)方法實(shí)現(xiàn)模擬消息的發(fā)送和消息的接收;

測試前提三:操作文件的相關(guān)方法已實(shí)現(xiàn),基于robotframework調(diào)用這些方法可正常操作文件及文件內(nèi)容;

測試前提四:被測系統(tǒng)基于robotframework框架的接口測試已規(guī)范。

基于所述的測試前提,若被測系統(tǒng)為消息發(fā)送端,則對被測系統(tǒng)發(fā)送數(shù)據(jù)進(jìn)行準(zhǔn)確性和完整性測試的具體操作為,

(1)調(diào)用模擬消息接收的相關(guān)方法,將被測系統(tǒng)與消息中間件交互的消息寫入到指定文件中;

(2)獲取接收消息文件的md5值;

(3)調(diào)用被測系統(tǒng)的接口測試腳本,產(chǎn)生應(yīng)用數(shù)據(jù);

(4)基于步驟(1),自動接收消息并更新至指定文件中;

(5)持續(xù)獲取消息接收文件的md5值,通過判斷md5值的變化來判斷消息是否已更新至文件中;

(6)調(diào)用讀取文件的相關(guān)方法,讀取文件中最新更新的數(shù)據(jù);

(7)調(diào)用被測系統(tǒng)提供的接口,獲取相應(yīng)數(shù)據(jù);

(8)一一比較步驟(6)與步驟(7)所獲取的數(shù)據(jù),驗(yàn)證被測系統(tǒng)發(fā)送的數(shù)據(jù)與被測系統(tǒng)自身的數(shù)據(jù)是否一致?;跍y試前提1,驗(yàn)證被測系統(tǒng)發(fā)送的數(shù)據(jù)是否完整。

基于所述的測試前提,若被測系統(tǒng)為消息接收端,則對被測系統(tǒng)接收的數(shù)據(jù)進(jìn)行測試的具體操作為,

(1)將被測系統(tǒng)與消息中間件建立連接;

(2)調(diào)用讀取文件的相關(guān)方法,從指定文件中讀取消息;

(3)將讀取的消息轉(zhuǎn)化為設(shè)定格式的數(shù)據(jù);

(4)調(diào)用模擬消息發(fā)送相關(guān)方法,將消息發(fā)送至消息中間件;

(5)持續(xù)調(diào)用被測系統(tǒng)的接口,判斷被測系統(tǒng)是否已處理消息;

(6)調(diào)用被測系統(tǒng)的接口,獲取所有相關(guān)數(shù)據(jù);

(7)比較步驟(5)獲取的數(shù)據(jù)與步驟(2)讀取的數(shù)據(jù),判斷被測系統(tǒng)接收并處理后的數(shù)據(jù)是否準(zhǔn)確和完整。

所述的消息獲取機(jī)制與實(shí)際系統(tǒng)的消息獲取機(jī)制保持一致。

本發(fā)明以多應(yīng)用系統(tǒng)(消息發(fā)送端)與監(jiān)控系統(tǒng)(消息接收端)通過消息中間件進(jìn)行異步通信為例,通過模擬應(yīng)用系統(tǒng)或者監(jiān)控系統(tǒng)與消息中間件交互,實(shí)現(xiàn)獨(dú)立測試應(yīng)用系統(tǒng)或監(jiān)控系統(tǒng)。

與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):

1、測試效率高:在多個(gè)系統(tǒng)使用消息中間件交互的場景中,消除了測試時(shí)各個(gè)系統(tǒng)之間的依賴,降低了測試工作的復(fù)雜度,提高了測試效率;

2、工作量少:當(dāng)兩個(gè)系統(tǒng)迭代進(jìn)度不一致時(shí),單獨(dú)測試各個(gè)系統(tǒng),可為后續(xù)兩個(gè)系統(tǒng)集成測試減少工作量;

3、節(jié)約人力成本:基于robotframework自動測試框架可實(shí)現(xiàn)自動化測試,為每個(gè)版本的回歸測試節(jié)約了人力成本。

附圖說明

圖1為模擬消息接收端與消息發(fā)送端使用rabbitmq交互的實(shí)現(xiàn)過程流程圖;

圖2為消息保存策略的實(shí)現(xiàn)過程流程圖;

圖3為模擬消息發(fā)送端與消息接收端使用rabbitmq交互的實(shí)現(xiàn)過程流程圖;

圖4基于robotframework的測試框架圖。

具體實(shí)施方式

下面結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)說明。

一種測試異步交互系統(tǒng)的自動化測試方法與系統(tǒng),該方法模擬被測系統(tǒng)與其他系統(tǒng)使用消息中間件交互,對被測系統(tǒng)接收或者發(fā)送數(shù)據(jù)的準(zhǔn)確性和完整性進(jìn)行獨(dú)立的自動化測試。被測系統(tǒng)包括消息發(fā)送端和消息接收端,本發(fā)明的自動化測試方法與系統(tǒng)包括兩部分:

(1)模擬被測系統(tǒng)與其他系統(tǒng)使用消息中間件進(jìn)行異步交互:包括模擬消息接收端從消息中間件中接收消息并將消息持久化保存的過程,以及模擬消息發(fā)送端將文件中的數(shù)據(jù)發(fā)送至消息中間件的過程;

(2)驗(yàn)證被測系統(tǒng)發(fā)送或接收的數(shù)據(jù)的準(zhǔn)確性和完整性:采用基于robotframework的自動測試框架,對被測系統(tǒng)發(fā)送或者接收的消息數(shù)據(jù)進(jìn)行準(zhǔn)確性和完整性測試。

如圖1所示,模擬消息接收端從消息中間件中接收消息并將消息持久化保存的具體實(shí)現(xiàn)過程為,

(1)將消息中間件服務(wù)器ip、消息隊(duì)列名稱、隊(duì)列類型與指定隊(duì)列建立連接;

(2)實(shí)時(shí)監(jiān)控消息隊(duì)列,并利用消息獲取機(jī)制取出消息;

(3)將取出的消息轉(zhuǎn)換為設(shè)定格式的數(shù)據(jù);

(4)保存消息:分析消息的類型及其特征,并采用對應(yīng)的消息保存策略將消息保存至不同的文件中。

其中,步驟(4)中的消息保存策略過程如圖2所示,具體實(shí)現(xiàn)過程包括,

(1)判斷并選擇消息類型;

(2)判斷該消息是否存在指定目錄,若存在,進(jìn)入下一步,若不存在,創(chuàng)建指定目錄,并根據(jù)消息類型命名后,進(jìn)入下一步;

(3)判斷是否存在消息接收文件,若存在,則選擇數(shù)據(jù)更新策略,進(jìn)入下一步,若不存在,則創(chuàng)建消息接收文件后,選擇數(shù)據(jù)更新策略,進(jìn)入下一步;

(4)將消息保存至消息接收文件中。

如圖3所示,模擬消息發(fā)送端將文件中的數(shù)據(jù)發(fā)送至消息中間件的過程具體實(shí)現(xiàn)過程為,

(1)將模擬消息發(fā)送端與消息中間件建立連接;

(2)根據(jù)消息類型及消息格式的定義,創(chuàng)建消息數(shù)據(jù)的源文件,將消息按照規(guī)范的格式保存在文件中,文件中的每一行即為一個(gè)消息的完整內(nèi)容;

(3)按行讀取消息數(shù)據(jù)的源文件;

(4)選擇消息發(fā)送機(jī)制,將消息發(fā)送至消息中間件。

根據(jù)圖4的robotframework的自動測試框架圖可知,robotframework支持表格化的用例編寫,降低了自動化測試編寫的難度,而且支持豐富的庫:telnet,ssh,javaui,web應(yīng)用以及用戶自定義庫,方便完成和被測系統(tǒng)的交互。

測試過程的具體實(shí)現(xiàn)要優(yōu)先確認(rèn)四項(xiàng)測試前提是否滿足,測試前提包括:

測試前提一:消息格式的定義規(guī)范且期望值明確;

測試前提二:使用python語言實(shí)現(xiàn)模擬消息發(fā)送或者模擬消息接收的相關(guān)方法,使用基于robotframework調(diào)用這些相關(guān)方法實(shí)現(xiàn)模擬消息的發(fā)送和消息的接收;

測試前提三:操作文件的相關(guān)方法已實(shí)現(xiàn),基于robotframework調(diào)用這些方法可正常操作文件及文件內(nèi)容;

測試前提四:被測系統(tǒng)基于robotframework框架的接口測試已規(guī)范。

在被測前提滿足的情況下,若被測系統(tǒng)為消息發(fā)送端,則對被測系統(tǒng)發(fā)送的數(shù)據(jù)進(jìn)行準(zhǔn)確性和完整性測試的具體操作為,

(1)調(diào)用模擬消息接收的相關(guān)方法,將被測系統(tǒng)與消息中間件交互的消息寫入到指定文件中;

(2)獲取接收消息文件的md5值;

(3)調(diào)用被測系統(tǒng)的接口,產(chǎn)生應(yīng)用數(shù)據(jù);

(4)基于步驟(1),自動接收消息并更新至指定文件中;

(5)持續(xù)獲取消息接收文件的md5值,通過判斷md5值的變化來判斷消息是否已更新至文件中;

(6)調(diào)用讀取文件的相關(guān)方法,讀取文件中最新更新的數(shù)據(jù);

(7)調(diào)用被測系統(tǒng)提供的接口,獲取相應(yīng)數(shù)據(jù);

(8)一一比較步驟(6)與步驟(7)所獲取的數(shù)據(jù),驗(yàn)證被測系統(tǒng)發(fā)送的數(shù)據(jù)與被測系統(tǒng)自身的數(shù)據(jù)是否一致?;跍y試前提一,驗(yàn)證被測系統(tǒng)發(fā)送的數(shù)據(jù)是否完整。

在被測前提滿足的情況下,若被測系統(tǒng)為消息接收端,則對被測系統(tǒng)接收的數(shù)據(jù)進(jìn)行準(zhǔn)確性和完整性測試的具體操作為,

(1)將被測系統(tǒng)與消息中間件建立連接;

(2)調(diào)用讀取文件的相關(guān)方法,從指定文件中讀取消息;

(3)將讀取的消息轉(zhuǎn)化為設(shè)定格式的數(shù)據(jù);

(4)調(diào)用模擬消息發(fā)送相關(guān)方法,將消息發(fā)送至消息中間件;

(5)持續(xù)調(diào)用被測系統(tǒng)的接口,判斷被測系統(tǒng)是否已處理消息;

(6)調(diào)用被測系統(tǒng)的接口,獲取所有相關(guān)數(shù)據(jù);

(7)比較步驟(5)獲取的數(shù)據(jù)與步驟(2)讀取的數(shù)據(jù),判斷被測系統(tǒng)接收并處理后的數(shù)據(jù)是否準(zhǔn)確和完整。

實(shí)施例

本次模擬測試的實(shí)施例中所選擇的消息中間件為rabbitmq;模擬消息發(fā)送和模擬消息接收過程都是通過python定義相關(guān)方法實(shí)現(xiàn)。

一個(gè)備份系統(tǒng)與一個(gè)監(jiān)控系統(tǒng)使用rabbitmq進(jìn)行異步通信,目前監(jiān)控系統(tǒng)只能監(jiān)控備份系統(tǒng)的定時(shí)備份業(yè)務(wù),現(xiàn)在擴(kuò)展兼容性,需要監(jiān)控更多的業(yè)務(wù)類型,如實(shí)時(shí)備份、存儲快照等。但由于兩個(gè)系統(tǒng)迭代進(jìn)度不一致,監(jiān)控系統(tǒng)在當(dāng)前的版本中無法實(shí)現(xiàn)對應(yīng)功能。

已知1:備份系統(tǒng)每2分鐘定時(shí)向rabbitmq發(fā)送備份任務(wù)消息。

已知2:備份任務(wù)消息格式定義已規(guī)范。

已知3:備份系統(tǒng)webservice接口測試框架已規(guī)范。

具體實(shí)施方式分為兩部分:

1、環(huán)境準(zhǔn)備:

(1)部署備份系統(tǒng)及安裝rabbitmq,備份系統(tǒng)與rabbitmq建立連接,并創(chuàng)建消息隊(duì)列(備份系統(tǒng)與rabbitmq交互的功能已實(shí)現(xiàn))。

(2)robotframework環(huán)境已搭建且正??捎谩?/p>

2、測試過程:

(1)運(yùn)行腳本start_receive_message.py,模擬消息接收。根據(jù)消息類型及特征,本例將業(yè)務(wù)類的消息追加保存至文件末尾的消息。文件中每一行即為一個(gè)消息的完整內(nèi)容。

(2)根據(jù)步驟(1)的消息保存策略,文件最后一行即為最新保存的消息,讀取文件最后一行并獲取md5值。

(3)調(diào)用備份系統(tǒng)的webservice接口,創(chuàng)建存儲快照任務(wù)、實(shí)時(shí)任務(wù)等。

(4)等待備份系統(tǒng)發(fā)送消息,基于步驟(1)自動實(shí)現(xiàn)接收消息并追加保存至文件最后一行。

(5)持續(xù)獲取消息接收文件最后一行的md5值,判斷最新消息已保存至文件中。

(6)讀取消息接收文件最后一行內(nèi)容。

(7)調(diào)用備份系統(tǒng)的webservice接口,獲取存儲快照任務(wù)相關(guān)數(shù)據(jù)。

(8)比較步驟(6)和步驟(7)中獲取的數(shù)據(jù),驗(yàn)證備份系統(tǒng)發(fā)送至rabbitmq的數(shù)據(jù)是否準(zhǔn)確;根據(jù)消息格式的定義,驗(yàn)證備份系統(tǒng)發(fā)送的數(shù)據(jù)是否準(zhǔn)確及完整。

以上步驟(1)-(8)都是在robotframework中運(yùn)行。

其中,python定義start_receive_message.py模擬消息接收的方法如下:

rabbitmq.py:實(shí)現(xiàn)與指定的消息隊(duì)列建立連接,并實(shí)時(shí)監(jiān)控消息隊(duì)列。

msg_base_handler.py:處理消息,將從消息隊(duì)列中取出的消息返回json格式的數(shù)據(jù)。

define_types.py:定義消息類型。

file_handler.py:分析消息類型以及其特征,實(shí)現(xiàn)不同消息采用不同保存策略。

start_receive_message.py調(diào)用上述方法,實(shí)現(xiàn)將消息寫入到指定文件中。運(yùn)行該腳本需要3個(gè)參數(shù):rabbitmq管理ip、消息隊(duì)列名稱、消息隊(duì)列類型。備份系統(tǒng)與rabbitmq建立連接后,登陸rabbitmq管理頁面獲取對應(yīng)的參數(shù)值。

python實(shí)現(xiàn)的文件操作方法如下:

get_file_last_line():作用是讀取指定文件的最后一行,用于通過追加方式更新文件的數(shù)據(jù)。

get_file_target_line():作用是讀取指定文件中指定的某行,用于通過覆蓋更新文件中的數(shù)據(jù)。

get_file_md5():作用是獲取指定文件的md5值,用于比較文件是否被更新。

isfiletest():作用是判斷指定的文件是否存在。

isdirtest():作用是判斷指定目錄是否存在。

remove_file():作用是刪除指定文件。

使用到的rf內(nèi)置庫方法包括:

shouldbeequal:作用是用來比較兩個(gè)值或兩組數(shù)據(jù)是否一致。

getfromlist:從列表中取元素

getfromdirectionary:從字典中取元素

waituntilkeywordsucceeds:作用是等待直到某個(gè)關(guān)鍵字執(zhí)行成功。該內(nèi)置關(guān)鍵字原本是用于web自動化測試中,通過再次定義該內(nèi)置關(guān)鍵字,可以用于接口自動化測試中。

以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到各種等效的修改或替換,這些修改或替換都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1