專利名稱:接口測試方法
技術(shù)領(lǐng)域:
本發(fā)明涉及測試技術(shù),具體涉及支持測試私有接口的接口測試方法。
在實(shí)際應(yīng)用中,由于一些設(shè)備的私有特性較強(qiáng),不容易實(shí)現(xiàn)自下到上的模型抽象,并且由于不需要與其他的廠家的設(shè)備和網(wǎng)管進(jìn)行混合組網(wǎng),所以網(wǎng)元層和網(wǎng)元管理層之間通常采用私有的接口進(jìn)行信息傳遞,而不是標(biāo)準(zhǔn)接口。在特定的應(yīng)用中,這種方式極大的簡化了網(wǎng)管的復(fù)雜性,并且可以很靈活地跟隨設(shè)備的特性進(jìn)行管理。但無論在私有網(wǎng)管還是標(biāo)準(zhǔn)網(wǎng)管,分層的以及層間接口的概念都是很重要的。
在進(jìn)行私有網(wǎng)管的開發(fā)時(shí),為了邏輯結(jié)構(gòu)上更清晰,網(wǎng)元層或者網(wǎng)元管理層內(nèi)部也可能采用層次化的結(jié)構(gòu),不同層由不同的人員進(jìn)行開發(fā)。層與層之間采用自定義的私有接口進(jìn)行信息傳遞。每一層在實(shí)現(xiàn)本層管理的同時(shí)向上下層提供服務(wù)和管理。在這種分層化的結(jié)構(gòu)中,接口就成為連接不同層次的橋梁,在整個(gè)結(jié)構(gòu)中起著至關(guān)重要的作用,每一層應(yīng)該保證提供給其他層的數(shù)據(jù)和對其他層傳遞來的數(shù)據(jù)的處理是正確的,所以在開發(fā)的同時(shí),編寫測試用例,對接口進(jìn)行同步測試也就尤為重要。
接口測試主要包括兩個(gè)方面的內(nèi)容(1)驗(yàn)證其他層來的數(shù)據(jù)是否正確;(2)驗(yàn)證本層發(fā)送到其他層的數(shù)據(jù)是否正確。所說的接口由若干的接口命令組成,每個(gè)命令管理不同的信息,對應(yīng)不同的結(jié)構(gòu)。由于結(jié)構(gòu)的不同,以往對接口進(jìn)行測試時(shí),往往是不同的接口命令對應(yīng)不同的測試程序,每增加一個(gè)接口命令,就需要增加一段測試程序。這樣做的缺點(diǎn)包括(1)測試用例需要與接口命令的多少同步;(2)測試用例需要與接口的結(jié)構(gòu)同步;(3)測試用例無法進(jìn)行方便的移植。尤其在開發(fā)的初期,接口結(jié)構(gòu)與數(shù)量有可能隨時(shí)發(fā)生變化的時(shí)候,這種方法顯然無法滿足測試的需求。
本發(fā)明的上述技術(shù)問題是這樣實(shí)現(xiàn)的,構(gòu)造一種接口測試方法,包括以下步驟定義通用的命令接口結(jié)構(gòu);用文本文件記錄接口相關(guān)結(jié)構(gòu)信息;通過對所述文本文件進(jìn)行逐行的語法解析,將文件中的描述轉(zhuǎn)化為統(tǒng)一結(jié)構(gòu)的鏈表;驗(yàn)證來自外層的數(shù)據(jù)是否正確,以及根據(jù)提示用戶輸入的信息驗(yàn)證發(fā)送到其它層的數(shù)據(jù)是否正確。
在上述按照本發(fā)明提供的接口測試方法中,所述命令接口結(jié)構(gòu)包括字段信息定義和接口信息定義的通用接口結(jié)構(gòu),所述字段信息定義包括記錄長度、字段個(gè)數(shù)、字段類型、字段長度和字段描述,所述接口信息定義包括代碼編號、信號方向、代碼含義、循環(huán)層數(shù)、字段信息和指向下一信息的指針。
在上述按照本發(fā)明提供的接口測試方法中,所述通過對所述文本文件進(jìn)行逐行的語法解析,將文件中的描述轉(zhuǎn)化為統(tǒng)一結(jié)構(gòu)的鏈表,包括以下步驟檢查是否存在文本描述文件,如果不存在,請求下載文本描述文件,如果存在或正確下載,逐行讀入文本描述文件,將每行文本相應(yīng)生成一個(gè)符合統(tǒng)一結(jié)構(gòu)的鏈表的一個(gè)節(jié)點(diǎn),將符合格式的字符串轉(zhuǎn)換為數(shù)字?jǐn)?shù)據(jù)并保存到所述通用接口結(jié)構(gòu)鏈表中,每個(gè)命令對應(yīng)一個(gè)節(jié)點(diǎn),多個(gè)命令形成一個(gè)鏈表,直到文件結(jié)束。
在上述按照本發(fā)明提供的接口測試方法中,所述接口鏈表的各個(gè)節(jié)點(diǎn)以命令代碼為索引進(jìn)行串聯(lián)。
在上述按照本發(fā)明提供的接口測試方法中,所述驗(yàn)證來自外層的數(shù)據(jù)是否正確,包括以下步驟接收來自外層的數(shù)據(jù),信息以函數(shù)接口或者事件、消息隊(duì)列的方式發(fā)送給接口測試模塊,所述接口測試模塊讀取接收到報(bào)文中的命令代碼字段,查找所述鏈表中有無對應(yīng)該命令代碼的節(jié)點(diǎn),如果鏈表中有該命令代碼,則根據(jù)該鏈表的字段信息、長度信息等,對報(bào)文進(jìn)行分析,依次顯示所述字段的含義和數(shù)值,據(jù)此判定來自外層的數(shù)據(jù)是否正確。
在上述按照本發(fā)明提供的接口測試方法中,所述根據(jù)提示用戶輸入的信息驗(yàn)證發(fā)送到其它層的數(shù)據(jù)是否正確,包括以下步驟啟動TELNET服務(wù),提示用戶輸入需要的包括命令代碼的信息,查找其中的命令代碼是否存在于接口鏈表中,如果存在于接口鏈表中,根據(jù)鏈表的字段長度等信息打包報(bào)文,將該報(bào)文發(fā)送到應(yīng)用層中進(jìn)行處理。
實(shí)施本發(fā)明提供的通用接口測試方法,解決了接口測試時(shí)重復(fù)編寫類似功能代碼的問題,提供了一種對不同命令結(jié)構(gòu)進(jìn)行描述的方式。通過使用文件形式,不用修改程序就可以實(shí)現(xiàn)對新的接口命令的測試,使私有接口在內(nèi)的各種接口的測試程序得到極大的精簡,并且易于擴(kuò)展和移植到不同項(xiàng)目中。
圖2是按照本發(fā)明方法對接口描述文件進(jìn)行解析的過程的流程圖,涉及到文件系統(tǒng)以及語法解析等功能。
圖3是按照本發(fā)明方法對接收到的數(shù)據(jù)進(jìn)行分析的過程,涉及到TMSGINFO結(jié)構(gòu)的使用等功能。
圖4是按照本發(fā)明方法進(jìn)行模擬外層輸入數(shù)據(jù)的過程,涉及到TELNET等功能。
本發(fā)明通過定義一種通用于任何命令的接口結(jié)構(gòu),采用通用文件格式記錄與接口相關(guān)的結(jié)構(gòu)信息,對文本文件進(jìn)行語法解析,采用TELNET方式模擬輸入信息。具體細(xì)節(jié)說明如下1、通用的命令接口結(jié)構(gòu)定義現(xiàn)有技術(shù)對一個(gè)接口命令采用一個(gè)單獨(dú)的結(jié)構(gòu)來描述,例如網(wǎng)元層中的設(shè)置單板告警屏蔽命令,其結(jié)構(gòu)定義類似于下面的形式struct NcpSetAlmMask{USHORTportId;USHORTalmType;USHORTstatus;};如果接口修改了,需要修改相應(yīng)的結(jié)構(gòu)體定義,同時(shí)程序的處理也要更改。為了解決這種不靈活性,本發(fā)明定義新的結(jié)構(gòu)形式如下,這種結(jié)構(gòu)形式可以適用各種接口
<pre listing-type="program-listing">typedef struct LapField_S{ unsigned shortrecLen; /*記錄長度*/ unsigned char num; /*字段個(gè)數(shù)*/ unsigned char type[T_MAXFIELDS];/*字段的類型*/ unsigned shortlen[T_MAXFIELDS];/*字段的長度*/ char info[T_MAXFIELDS][T_MAXINFOLEN]; /*字段的描述*/}LAPFIELD;typedef struct TmsgStruct_S{ unsigned short code;/*代碼編號*/ unsigned char direct;/*消息發(fā)送的方向*/ char mean[T_MAXINFOLEN];/*代碼的含義*/ unsigned char laps;/*是幾重循環(huán) */ LAPFIELD field[T_MAXLAPS];/*字段的信息*/ struct TmsgStruct_S*next;/*記錄下一個(gè)指針 */}TMSGINFO;</pre>上面的結(jié)構(gòu)記錄了關(guān)于接口命令的必要信息。包含代碼編號、信號方向、代碼含義、循環(huán)層數(shù)、字段信息(字段個(gè)數(shù)、字段長度、字段類型、描述信息)等內(nèi)容。任何命令接口都可以采用這種形式記錄必要信息。如果命令接口中的信息與上述內(nèi)容不完全符合,則只需要對這個(gè)結(jié)構(gòu)略做修改,增加或者減少一些信息就可以。但基本的結(jié)構(gòu)無須改變。通過定義這樣的結(jié)構(gòu),通過程序就可以實(shí)現(xiàn)對不同接口的統(tǒng)一處理。2、使用文件記錄接口信息以及測試數(shù)據(jù)為方便地修改接口內(nèi)容,將接口相關(guān)的信息也就是上面的TMSGINFO結(jié)構(gòu)涉及到的信息通過文件的形式存儲起來。此處的文件是一種文本化形式而不是數(shù)字化信息,用戶可以很容易看懂文件的內(nèi)容,同時(shí)可以方便的對文件進(jìn)行修改。下面是一個(gè)文件信息的例子例如,對于AGENT設(shè)置MCU告警屏蔽屬性,文本化的描述文件采用下面的方法描述。0x1010 AGENT設(shè)置MCU告警屏蔽項(xiàng)目數(shù)(2)|端口號(2),告警類型(2),告警狀態(tài)(2)上面的描述記錄了接口代碼(0X1010),代碼的含義(AGENT設(shè)置MCU告警屏蔽),信息個(gè)數(shù)(2),字段信息等內(nèi)容。使用時(shí),可根據(jù)實(shí)際情況,可以對文件格式進(jìn)行適當(dāng)?shù)男薷?。添加一些?nèi)容或者更改一些信息,但其一定能夠滿足可讀性強(qiáng)和易修改的要求。
使用上述文件,在本發(fā)明接口測試方法中是很關(guān)鍵的技術(shù),它使得系統(tǒng)的使用更靈活。當(dāng)接口需要修改的時(shí)候,只需要修改文件的內(nèi)容,而不需要對程序的處理做任何修改。3、語法解析上述方便閱讀和修改的文件只是一個(gè)文本化的信息,為了將該文件內(nèi)容轉(zhuǎn)換為前面的結(jié)構(gòu)信息,需要按照格式,對該描述文件進(jìn)行語法分析,對于以下的描述信息0x1010 AGENT設(shè)置MCU告警屏蔽項(xiàng)目數(shù)(2)|端口號(2),告警類型(2),告警狀態(tài)(2)語法分析模塊對文件按照固定格式進(jìn)行分析,實(shí)現(xiàn)字符串到數(shù)據(jù)的轉(zhuǎn)換,將接口信息描述的內(nèi)容直接或者間接地取出來,保存到前述TMSGINFO結(jié)構(gòu)中,每個(gè)命令對應(yīng)一個(gè)節(jié)點(diǎn),多個(gè)命令形成一個(gè)鏈表。在需要增加或者修改接口的時(shí)候,只需要修改文件內(nèi)容,然后啟動測試系統(tǒng),重新進(jìn)行語法分析,就可以形成新的鏈表。4、關(guān)于模擬來自他層的輸入測試時(shí)需要模擬其他層傳遞過來的信息,為了適應(yīng)接口變化,這個(gè)信息數(shù)據(jù)應(yīng)該完全可以由用戶進(jìn)行定制,也就是由用戶來提供需要模擬的數(shù)據(jù)。因此,這是一個(gè)需要進(jìn)行人機(jī)交互的功能,本發(fā)明中,為了方便移植,采用了最簡單的TELNET方式。啟動一個(gè)TELNET服務(wù),用戶使用PC機(jī)的TELNET客戶端,雖然是命令行的方式,但可以很方便的實(shí)現(xiàn)通用,而且程序改動不會對用戶產(chǎn)生任何影響。當(dāng)然也可以通過其他的方式來實(shí)現(xiàn)。
為進(jìn)一步說明本分明方法的上述特點(diǎn),結(jié)合具體的實(shí)施例,對本發(fā)明的測試方法作進(jìn)一步說明。
在實(shí)施例中,使用本發(fā)明方法的測試軟件首先使用在網(wǎng)元層,網(wǎng)元層分為AGENT(代理層)和MCU(單板)兩個(gè)層次,它們之間的接口為私有接口,稱之為S口。AGENT層采用嵌入式操作系統(tǒng)PSOS來開發(fā),而實(shí)施例的測試軟件則嵌入在AGENT中,作為一個(gè)模塊使用。
結(jié)合
圖1,體現(xiàn)本發(fā)明方法第一個(gè)環(huán)節(jié)的就是,對于待測試接口,采用本發(fā)明提出的上述結(jié)構(gòu)形式給出其描述。具體就是編寫接口描述文件,為編寫接口描述文件,需要文件系統(tǒng)的支持,但由于在PSOS上無法對文件進(jìn)行編輯,所以采用PSOS以外的文件系統(tǒng)和FTP文件傳輸協(xié)議結(jié)合的方法完成文本文件的形成、修改和裝入。具體就是在PC上對文本文件進(jìn)行編輯,然后通過FTP(文件傳輸協(xié)議)傳遞到系統(tǒng)中進(jìn)行處理(該過程在圖1中表示為步驟101)。接著,便需要對描述接口的文本文件進(jìn)行語法解析,將文件中的描述信息轉(zhuǎn)化為結(jié)構(gòu)鏈表(見步驟102),其過程將在下面進(jìn)一步描述。在步驟103中,處理程序主步驟架,接收用戶命令或其它層信息,為模擬來自其它層的輸入數(shù)據(jù),采用TELNET命令行的方式,由用戶根據(jù)提示輸入所需要的數(shù)據(jù),對其它層傳遞來的數(shù)據(jù)進(jìn)行分析和顯示(步驟104),以及進(jìn)行功能模擬,由用戶輸入需要進(jìn)行模擬的數(shù)據(jù),生成報(bào)文發(fā)送到其它層(步驟105)。
在圖2給出的對文本描述文件的分析處理過程中,在開始步驟201后,首先在步驟202中判斷描述文件是否存在,如不存在,則在步驟203中提示用戶通過FTP方式下載命令接口的描述文件,接收到描述文件后轉(zhuǎn)到步驟204,如果在步驟202中判斷出存在描述文件,轉(zhuǎn)到步驟204,在步驟204中,對接收到的文件的信息進(jìn)行逐行分析,進(jìn)行語法分析,并生成鏈表節(jié)點(diǎn),并在步驟205中判斷文件是否結(jié)束,如文件未結(jié)束,重新回到步驟204,讀文件行信息進(jìn)行語法分析并生成鏈表節(jié)點(diǎn),直到文件結(jié)束,進(jìn)到結(jié)束步驟206。
文件中每一行是關(guān)于一個(gè)命令接口的完整描述信息,因此在上述步驟204中,將行信息加以解析并存儲到前面所說的TMSGINFO結(jié)構(gòu)的鏈表中,一行的解析結(jié)果對應(yīng)鏈表的一個(gè)節(jié)點(diǎn)。鏈表以命令代碼為索引進(jìn)行串聯(lián)。通過依次分析整個(gè)文件,可得到所有命令接口的結(jié)構(gòu)信息。
圖3是對其他層傳遞過來的數(shù)據(jù)進(jìn)行分析顯示的處理過程。相當(dāng)于圖1中步驟104。處理開始于步驟301,測試軟件接收到需要外界的報(bào)文,首先對報(bào)文進(jìn)行分析,在步驟302中讀取出其中的命令代碼字段,然后在步驟303中去鏈表中查找對應(yīng)此命令代碼的節(jié)點(diǎn),如沒有找到說明描述文件沒有提供關(guān)于此命令的信息,不進(jìn)行處理,結(jié)束于步驟305。否則,在步驟304中。根據(jù)節(jié)點(diǎn)中的字段信息、長度信息等對報(bào)文進(jìn)行分析,依次顯示所有字段的含義和值,最后結(jié)束于步驟305。
圖4是由測試軟件生成報(bào)文(圖1中步驟105)的過程。用戶需要生成關(guān)于某個(gè)接口命令的報(bào)文的時(shí)候,從步驟401開始,首先在步驟402提示用戶輸入需要的信息,即由用戶給出接口的命令代碼,在步驟403檢查輸入的命令代碼是否存在于鏈表中,如果不存在,提示錯(cuò)誤信息并結(jié)束(步驟407),如果發(fā)現(xiàn)鏈表中有該命令代碼,根據(jù)結(jié)構(gòu)信息提示用戶輸入相應(yīng)的數(shù)據(jù)信息(步驟404),然后在步驟405中,根據(jù)鏈表的字段長度等信息打包生成報(bào)文,在步驟406中將其發(fā)送到應(yīng)用層進(jìn)行處理,并在步驟407中結(jié)束。
根據(jù)使用情況驗(yàn)證,本發(fā)明解決了以前測試用例的缺陷,簡化了程序處理,方便移植。通過適當(dāng)?shù)男薷模痉椒ㄒ部梢允褂迷谄渌愃频膱龊?,具有一定的通用性?br>
權(quán)利要求
1.一種接口測試方法,其特征在于,包括以下步驟定義通用的命令接口結(jié)構(gòu);用文本文件記錄接口相關(guān)結(jié)構(gòu)信息;通過對所述文本文件進(jìn)行逐行的語法解析,將文件中的描述轉(zhuǎn)化為統(tǒng)一結(jié)構(gòu)的鏈表;驗(yàn)證來自外層的數(shù)據(jù)是否正確,以及根據(jù)提示用戶輸入的信息驗(yàn)證發(fā)送到其它層的數(shù)據(jù)是否正確。
2.根據(jù)權(quán)利要求1所述的接口測試方法,其特征在于,所述命令接口結(jié)構(gòu)包括字段信息定義和接口信息定義的通用接口結(jié)構(gòu),所述字段信息定義包括記錄長度、字段個(gè)數(shù)、字段類型、字段長度和字段描述,所述接口信息定義包括代碼編號、信號方向、代碼含義、循環(huán)層數(shù)、字段信息和指向下一信息的指針。
3.根據(jù)權(quán)利要求1所述的接口測試方法,其特征在于,所述通過對所述文本文件進(jìn)行逐行的語法解析,將文件中的描述轉(zhuǎn)化為統(tǒng)一結(jié)構(gòu)的鏈表,包括以下步驟檢查是否存在文本描述文件,如果不存在,請求下載文本描述文件,如果存在或正確下載,逐行讀入文本描述文件,將每行文本相應(yīng)生成一個(gè)符合統(tǒng)一結(jié)構(gòu)的鏈表的一個(gè)節(jié)點(diǎn),將符合格式的字符串轉(zhuǎn)換為數(shù)字?jǐn)?shù)據(jù)并保存到所述通用接口結(jié)構(gòu)鏈表中,每個(gè)命令對應(yīng)一個(gè)節(jié)點(diǎn),多個(gè)命令形成一個(gè)鏈表,直到文件結(jié)束。
4.根據(jù)權(quán)利要求1或3所述的接口測試方法,其特征在于,所述接口鏈表的各個(gè)節(jié)點(diǎn)以命令代碼為索引進(jìn)行串聯(lián)。
5.根據(jù)權(quán)利要求1所述的接口測試方法,其特征在于,所述驗(yàn)證來自外層的數(shù)據(jù)是否正確,包括以下步驟接收來自外層的數(shù)據(jù),信息以函數(shù)接口或者事件、消息隊(duì)列的方式發(fā)送給接口測試模塊,所述接口測試模塊讀取接收到報(bào)文中的命令代碼字段,查找所述鏈表中有無對應(yīng)該命令代碼的節(jié)點(diǎn),如果鏈表中有該命令代碼,則根據(jù)該鏈表的字段信息、長度信息等,對報(bào)文進(jìn)行分析,依次顯示所述字段的含義和數(shù)值,據(jù)此判定來自外層的數(shù)據(jù)是否正確。
6.根據(jù)權(quán)利要求1所述的接口測試方法,其特征在于,所述根據(jù)提示用戶輸入的信息驗(yàn)證發(fā)送到其它層的數(shù)據(jù)是否正確,包括以下步驟啟動TELNET服務(wù),提示用戶輸入需要的包括命令代碼的信息,查找其中的命令代碼是否存在于接口鏈表中,如果存在于接口鏈表中,根據(jù)鏈表的字段長度等信息打包報(bào)文,將該報(bào)文發(fā)送到應(yīng)用層中進(jìn)行處理。
全文摘要
一種接口測試方法,包括以下步驟定義通用的命令接口結(jié)構(gòu),用文本文件記錄接口相關(guān)結(jié)構(gòu)信息,通過對該文本文件進(jìn)行逐行的語法解析,將文件中的描述轉(zhuǎn)化為統(tǒng)一結(jié)構(gòu)的鏈表,驗(yàn)證來自外層的數(shù)據(jù)是否正確,以及根據(jù)提示用戶輸入的信息驗(yàn)證發(fā)送到其它層的數(shù)據(jù)是否正確。這種通用接口測試方法,解決了接口測試時(shí)重復(fù)編寫類似功能代碼的問題,提供了一種新的描述不同命令結(jié)構(gòu)的思路。通過使用文件形式,不用修改程序就可以實(shí)現(xiàn)對新的接口命令的測試,使測試程序得到極大的精簡,并且易于擴(kuò)展和移植到不同項(xiàng)目中。
文檔編號H04L12/26GK1407756SQ0112675
公開日2003年4月2日 申請日期2001年9月10日 優(yōu)先權(quán)日2001年9月10日
發(fā)明者王琳琳, 王曉婷 申請人:深圳市中興通訊股份有限公司上海第二研究所