專利名稱:一種基于設備狀態判斷的通用消息測試方法及裝置的制作方法
技術領域:
本發明涉及自動化測試領域,尤其涉及一種基于設備狀態判斷的通用消息 測試方法及裝置。
背景技術:
在自動化測試過程中,設備消息收發的流程測試,包括測試流程的正確性, 以及測試消息本身的正確性。測試時, 一方面需要人為的構造一些模擬消息,
通過設備向進程或者模塊發送,以檢測流程的正確性和消息的正確性;另一方 面,需要根據不同的字段或者不同的名稱來判斷接收到的消息是從哪個設備或 者哪個流程返回的,并根據該條消息發送相應的消息。
現有的對多設備的消息收發流程進行測試的方法中, 一方面,采用寫代碼 的形式,對消息進行賦值,并對流程的正確性進行判斷;另一方面,利用多個 設備對消息數據收發的正確性進行測試,例如會議電話的測試,需要多個手機 同時加入到通話中,以測試流程和消息的正確性。
但是,現有的測試過程存在一定的不足之處現有測試過程中,在進行測 試時需要重新修改代碼,因此,不能對測試用例重復使用,且對消息結構不同 的系統不具有通用性。
發明內容
本發明的目的是提供一種基于設備狀態判斷的通用消息測試方法,包括以 下步驟
步驟l,設置所要發送的消息;
步驟2,根據消息設置并保存模擬設備屬性;
步驟3,根據模擬設備屬性設置并保存處理過消息后的設備狀態;
步驟4,根據模擬設備的預置狀態判斷收發消息流程是否正確,是,則返
回步驟3繼續執行,否,則顯示執行錯誤。 所述步驟2具體包括 步驟20,定義模擬設備的個數; 步驟21,設置模擬設備發送的消息的共有屬性;
步驟22,將模擬設備的個數及其發送的消息的共有屬性信息加栽到內存 中,并為每個模擬設備綁定一組根據消息的共有屬性計算的消息列表。
所述步驟22具體包括以下步驟
步驟210,申請一個模擬設備;
步驟211,根據配置文件建立并保存模擬設備的屬性;
步驟212,根據預設步長計算并保存模擬設備屬性值;
步驟213,判斷是不是最后一個模擬設備,不是,則返回步驟210,否則, 執行步驟214;
步驟214,結束。
所述步驟21中的共有屬性是消息的字段或者是作為狀態判斷的字符串。 所述步驟3具體包括
步驟30,設置并保存模擬設備發送消息之后的狀態;
步驟31,測試裝置接收被測系統返回的響應消息,判斷模擬設備狀態是 否為發送上一條消息之后的狀態,是,則發送下一條消息并設置發送后模擬設 備的狀態,繼續執行步驟4,否,則顯示執行失敗。
所述消息的發送和接收用函數的形式表示。
所述步驟30之前還包括
步驟30,,處理模擬設備主動發送的消息;
步驟30",根據處理后的消息對模擬設備的屬性或全局變量進行初始化; 所述步驟31之后還包括
步驟32,處理沒有收到被測系統的響應消息的異常過程。 本發明還提供了一種基于設備狀態判斷的通用消息測試裝置,包括 消息設置模塊,用于設置所要發送的消息;
設備屬性設置模塊,用于根據消息設置模塊設置的消息結構的共有屬性和 計算步長設置模擬設備的屬性值;
消息處理模塊,用于根據模擬設備屬性設置并保存處理過消息后的模擬設
備狀態;
流程判斷模塊,用于根據模擬設備的狀態判斷模擬設備收發消息流程的正 確性。
所述消息處理模塊包括消息處理單元,用于根據模擬設備屬性設置并保存 模擬設備收發消息后的狀態。
所述消息處理模塊還包括 發送消息處理單元,用于處理模擬設備主動發送的消息; 初始化單元,用于根據處理后的消息對模擬設備屬性或全局變量進行初始
化;
超時處理單元,用于處理沒有收到被測系統的響應消息的異常過程。 與現有技術相比,本發明具有以下有益效果
(
1 )本發明通過配置模擬設備的屬性,使不同身份(Identification, ID) 的模擬設備在進行相同的流程測試過程中,只需要修改模擬設備的ID就可以 對測試用例重復使用,不需要重新修改消息的屬性;
(2) 對于同一個設備來說流程是相同的,但在版本升級過程中可能會出 現數據結構上的變化,比如某個字段的增加或刪除,這種情況只需要對數據結 構的頭文件重新靜態分析一下就可以了,新增或刪除的字段自動補0,這樣消 息結構變了之后不需要重新設計流程和用例,因此,對具有不同消息結構的系 統具有通用性;
(3) 多個模擬設備在接收和發送相同消息時,只需要寫一個處理腳本, 避免了寫大量相同腳本的重復勞動,提高了系統測試的效率;
(4) 不存在模擬設備個數的限制,只需要修改配置文件就可以完成對相 應數量的實際設備的模擬。
(5) 測試自動進行,由于用戶可能設計成千上百的測試用例,在執行的 時候,用戶首先選中需要執行的測試用例,然后選擇"執行"就可以根據選擇 的順序依次執行下去。執行過程中,根據每個用例中設計的狀態判斷每條用例 的成功或失敗。用戶可以設定"執行"之后,等執行完畢去查看所有用例的成 功或失敗的結果,而在中間過程中不需要再操作。
圖1為本發明的測試方法流程圖2為步驟2具體包括的步驟;
圖3為設置模擬設備的共有屬性列表的流程圖4為步驟3具體包括的步驟;
圖5為本發明的測試裝置框圖。
具體實施例方式
本發明通過對;f莫擬設備狀態的判斷,來進行多個消息收發測試和流程測 試,其中,模擬設備是用來模擬實際測試過程中,用于發送或接收消息的設備, 如手機等。在流程測試過程中,本發明的測試裝置利用模擬設備的ID來區分 發送或接收的相同的消息,并根據模擬設備的ID取出模擬設備的狀態來判斷 下一步需要發送的消息,以實現對不同模擬設備相同流程的執行的控制。
下面結合附圖對本發明的具體實施方式
進行詳細說明。
如圖l所示,圖1為本發明的測試方法流程圖,圖中包括
步驟l,設置所要發送的消息;
步驟2,根據消息設置并保存模擬設備屬性;
其中模擬設備的屬性為模擬設備的共有屬性和獨有屬性。例如,對于一組 手機來說,其共有屬性為客戶識別碼(International Mobile Subscriber Identification Number, IMSI )、電子序列號(Electronic Serial Number, ESN) 等,對手機的共有屬性值和步長進行設置,如果第一個手機的號碼屬性值設為 13770233556,步長設為2,那么第二個手機的號碼就是13770233558。
其獨有屬性可以設置為多個字符串屬性,其屬性值用一個列表來保存,測 試人員可以通過腳本來添加、設置、修改這些屬性值。
步驟3,根據模擬設備屬性設置并保存處理過消息后的設備狀態;
選擇一個模擬設備和需要向被測系統發送的消息,選中的消息發送出去之后,該消息會根據模擬設備的屬性自動替換消息中的字段值,即根據消息中的 字段值設置該模擬設備預置的狀態。
步驟4,根據模擬設備的預置狀態判斷收發消息流程是否正確。
測試裝置收到被測系統返回的響應消息時,首先判斷模擬設備是否處于預 置的狀態,如果是,則根據該預置狀態做出相應的回應,并重新設置狀態值, 否則,顯示執行失敗。多個消息的收發判斷組成了一個設備的流程控制。
在執行腳本的時候,測試裝置能夠根據模擬設備的ID來判斷消息是從哪 一個模擬設備發出以及由哪一個模擬設備接收的,從而判斷出流程執行的正確 性。如果消息不是從預定的模擬設備發出或不被預定的模擬設備接收,那么就 會顯示出執行錯誤的信息,如果消息是從預定的模擬設備發出或被預定的模擬 設備接收,那么證明本次流程是正確的,則返回步驟3,繼續執行。
發送消息時,需要用戶根據選定設備的ID來發送,接收消息時,也可以 根據某些字段計算出接收消息的ID號,但是比較麻煩。所以在接收消息時另 外組織了一個消息結構,該結構包括設備ID和真正傳送過來的消息數據。測 試裝置在接收消息進行處理的時候就可以直接取出發送設備的ID號。
不同的模擬設備在走相同流程的時候,只要修改模擬設備的ID就可以了 。
如圖2所示,圖2為步驟2具體包括的步驟,圖2中包括
步驟20,定義模擬設備的個數;
模擬設備的個數是通過本發明的測試裝置的配置文件來讀取的。
步驟21 ,設置^f莫擬設備發送的消息的共有屬性;
該共有屬性包括消息的字段節點名稱,例如Field.Field.Field,以及相鄰 設備間消息字段的變化步長等,步長為零的話消息字段的數值不變。
步驟22,將模擬設備的個數及其發送的消息的共有屬性信息加載到內存 中,并為每個模擬設備綁定一組根據消息的共有屬性計算的信息列表。
列表中包括模擬設備的屬性名稱和屬性值。
步驟21中設置的共有屬性可以用一個列表來表示。如圖3所示,圖3為 設置模擬設備的共有屬性列表的流程圖,圖3中包括如下步驟
步驟210,申請一個模擬設備;
步驟211 ,根據配置文件建立并保存模擬設備的屬性;
每個模擬設備的屬性保存在一個列表中,列表中的每一條記錄包含屬性 名稱、屬性值和屬性類型,屬性類型標志為消息數據或字符串。
步驟212,根據預設步長計算并保存模擬設備屬性值; 這些屬性值在設備力口載到內存的過程中,保存到設備的屬性列表中,跟設 備綁定。
步驟213,判斷是不是最后一個模擬設備,不是,則返回步驟210,設置 下一個模擬設備的屬性值;否則,執行步驟214;
其中,屬性可以是消息的字段也可以是作為狀態判斷的字符串。 步驟214,結束。
如圖4所示,圖4為步驟3具體包括的步驟,圖4中包括
步驟30,設置并保存模擬設備發送消息之后的狀態;
在發送消息時,模擬設備會根據偏移量自動替換綁定字段的屬性值。
步驟31,測試裝置接收被測系統返回的響應消息,判斷模擬設備狀態是 否為發送上一條消息之后的狀態,是,則發送下一條消息并設置發送后模擬設 備的狀態,繼續執行步驟4,否,則顯示執行失敗。
其中,消息的接收和發送用腳本寫為函數的形式,例如proc sengmsgl {id }, 因此,不同的模擬設備發送相同的消息可以調用相同的函數,只修改一下入參, 即可避免腳本的重復。
根據需要,步驟30之前還包括以下步驟
步驟30,,處理模擬設備主動發送的消息;
模擬設備主動發送的消息例如開機、關機等,測試裝置可以根據模擬設備 當前的狀況,決定是否繼續下一步的測試。
步驟30",根據處理后的消息對模擬設備的屬性或全局變量進行初始化。 步驟31之后還包括以下步驟
步驟32,處理沒有收到被測系統的響應消息的異常過程。 如果測試裝置沒有收到被測系統返回的響應消息,則顯示執行錯誤的信 息,重新執行或者繼續執行下一個流程。
下面以一個具體的例子來說明本發明的消息測試方法的完整的流程。 在一個測試系統中有下面三個結構的數據 typedef struct<formula>complex formula see original document page 10</formula>
假設一個模擬設備所要發送的消息結構為St2, St3,起始值為1,步長為 2,設置用戶屬性為b.m。這樣第一個設備在發送St2, St3結構的消息時b.m字 段值為1,第二個設備在發送St2, St3結構的消息時b.m字段值都為3。在測 試的過程中,發送這兩種結構的消息時,測試裝置會自動根據消息的起始值和 步長來計算該模擬設備所要發送的消息字段值,并將該消息字段值保存在模擬 設備的屬性列表中,以便對模擬設備的共有屬性進行統一的管理,并將這些屬 性值作為發送或接收消息流程判斷的依據。
在腳本中可以動態添加模擬設備的屬性,動態添加的屬性為模擬設備的獨 有屬性,例如狀態設置SETPROP $設備ID "state" "sendmsgl"。
測試裝置在收到被測系統返回的響應消息后,根據模擬設備的ID取出其 狀態,并根據模擬設備狀態判斷下一條所要發送的消息。
狀態讀取set ms_state [GETPROP $設備ID "state"]。
例如模擬設備1和模擬設備2同時走不同的流程,但是會收到被測系統 返回的相同的響應消息。模擬設備1發送完一條消息sendmsgl之后,其狀態 設置為sendmsgl,模擬設備2發送完一條消息sendmsg2之后,其狀態設置為 sendmsg2,之后他們將都會收到被測系統返回的receivemsg消息。模擬設備1發送的下一條消息為sendmsg3,模擬設備2發送的下一條消息為sendmsg4。
當模擬設備收到被測系統返回的receivemsg消息時,測試裝置就可以通過 狀態的讀取set ms—state [GETPROP $residl "state"]來判斷收發的消息是否正 確,其中,residl為設備號,如果ms—state-sendmsgl,那么模擬設備l發送下 一條消息sendmsg3,發送完后測試裝置將模擬設備1的狀態設置為sendmsg3。 否則由模擬設備2發送消息sendmsg4,并將其發送消息sendmsg4之后的狀態 設置為sendmsg4。
如果測試其他的模擬設備也走這個流程,那么只需要將同一個腳本的ID 號換一下就可以完成相同功能的測試了 。
為實現本發明要解決的技術問題,本發明還提供了一種基于設備狀態判斷 的通用消息測試裝置,如圖5所示,圖5為本發明的測試裝置框圖,圖5中包 括消息設置模塊、設備屬性設置模塊、消息處理模塊和流程控制模塊。 首先,由消息設置模塊設置所要發送的消息。
設置消息的過程為消息設置模塊對被測系統的頭文件進行結構信息分析, 獲取所要發送消息的數據結構信息,并提取數據結構信息進行偏移量的計算和 編解碼,以得到所要發送的消息。
設備屬性設置模塊根據消息設置模塊設置的消息結構的共有屬性和計算步 長,設置模擬設備屬性,并對這些屬性進行列表管理。
消息處理模塊,包括消息處理單元,用于根據模擬設備屬性設置并保存模 擬設備處理過消息后的狀態。
消息處理單元是利用工具命令語言(Tool Command Language, TCL )腳本 實現的,在設計上通過模擬設備的ID、狀態和消息類型作為判斷的依據,以 達到對收發消息的統一管理。
消息處理單元接收到被測系統返回的響應消息之后,根據被測系統傳送過 來的模擬設備ID,取出模擬設備的狀態信息,根據狀態信息判斷下一條需要 發送的信息。這一部分的處理也是根據模擬設備ID+狀態的形式,可以重復使 用,避免了不同設備測試相同的流程需要編寫相同腳本的冗余工作。
為了進一步增強其功能,消息處理模塊還包括
發送消息處理單元,用來處理模擬設備主動發送的消息;
這些消息與模擬設備的ID具體發送的消息名稱來決定進行的操作有關,例 如開機、關機等,這一部分在處理的時候采用模擬設備ID+操作命令的形式, 以實現通用性,只需要改動一下模擬設備的ID就可以完成不同模擬設備相同 流程的測試,并且不受模擬設備個數的限制。
初始化單元,才艮據處理后的消息對模擬設備屬性或全局變量進行初始化;
例如,有的模擬設備處于空閑狀態,而有的模擬設備處于忙的狀態,利用 初始化單元可以對模擬設備的工作狀態進行初始化。
超時處理單元,用來處理沒有收到被測系統的響應消息的異常過程。 如果超時處理單元沒有收到被測系統的響應消息,則顯示執行錯誤的信 息,重新執行或者繼續執行下一個流程。
流程判斷模塊,根據模擬設備ID來判斷模擬設備收發消息流程的正確性, 即,收到測試裝置返回的消息后,根據從消息中取出的模擬設備的ID來判斷 該消息是從哪個設備發出,以及應由哪個設備接收,從而判斷流程執行的正確 性。
以上所述僅是本發明的優選實施方式,應當指出,對于本技術領域的普通 技術人員來說,在不脫離本發明原理的前提下,還可以作出若干改進和潤飾, 這些改進和潤飾也應^f見為本發明的保護范圍。
權利要求
1.一種基于設備狀態判斷的通用消息測試方法,其特征在于,包括以下步驟步驟1,設置所要發送的消息;步驟2,根據消息設置并保存模擬設備屬性;步驟3,根據模擬設備屬性設置并保存處理過消息后的設備狀態;步驟4,根據模擬設備的預置狀態判斷收發消息流程是否正確,是,則返回步驟3繼續執行,否,則顯示執行錯誤。
2. 如權利要求1所述的一種基于設備狀態判斷的通用消息測試方法,其 特征在于,所述步驟2具體包括步驟20,定義模擬設備的個數;步驟21,設置模擬設備發送的消息的共有屬性;步驟22,將模擬設備的個數及其發送的消息的共有屬性信息加載到內存 中,并為每個模擬設備綁定一組根據消息的共有屬性計算的消息列表。
3. 如權利要求2所述的一種基于設備狀態判斷的通用消息測試方法,其 特征在于,所述步驟22具體包括以下步驟步驟210,申請一個模擬設備;步驟211,根據配置文件建立并保存模擬設備的屬性; 步驟212,根據預設步長計算并保存模擬設備屬性值; 步驟213,判斷是不是最后一個模擬設備,不是,則返回步驟210,否則, 執行步驟214;步驟214,結束。
4. 如權利要求2所述的一種基于設備狀態判斷的通用消息測試方法,其 特征在于,所述步驟21中的共有屬性是消息的字段或者是作為狀態判斷的字符串。
5. 如權利要求1所述的一種基于設備狀態判斷的通用消息測試方法,其 特征在于,所述步驟3具體包括步驟30,設置并保存模擬設備發送消息之后的狀態;步驟31,測試裝置接收被測系統返回的響應消息,判斷模擬設備狀態是 否為發送上一條消息之后的狀態,是,則發送下一條消息并設置發送后模擬設 備的狀態,繼續執行步驟4,否,則顯示執行失敗。
6. 如權利要求5所述的一種基于設備狀態判斷的通用消息測試方法,其 特征在于,所述消息的發送和接收用函數的形式表示。
7. 如權利要求5所述的一種基于設備狀態判斷的通用消息測試方法,其 特征在于,所述步驟30之前還包括步驟30,,處理模擬設備主動發送的消息;步驟30",根據處理后的消息對模擬設備的屬性或全局變量進行初始化; 所述步驟31之后還包括步驟32,處理沒有收到被測系統的響應消息的異常過程。
8. —種基于設備狀態判斷的通用消息測試裝置,其特征在于,包括 消息設置模塊,用于設置所要發送的消息;設備屬性設置模塊,用于根據消息設置模塊設置的消息結構的共有屬性和 計算步長設置模擬設備的屬性值;消息處理模塊,用于根據模擬設備屬性設置并保存處理過消息后的模擬設 備狀態;流程判斷模塊,用于根據模擬設備的狀態判斷模擬設備收發消息流程的正 確性。
9. 如權利要求8所述的一種基于設備狀態判斷的通用消息測試裝置,其 特征在于,所述消息處理模塊包括消息處理單元,用于根據模擬設備屬性設置 并保存模擬設備收發消息后的狀態。
10. 如權利要求9所述的一種基于設備狀態判斷的通用消息測試裝置,其 特征在于,所述消息處理^^塊還包括發送消息處理單元,用于處理模擬設備主動發送的消息;初始化單元,用于根據處理后的消息對模擬設備屬性或全局變量進行初始化;超時處理單元,用于處理沒有收到被測系統的響應消息的異常過程。
全文摘要
本發明提供了一種基于設備狀態判斷的通用消息測試方法,包括以下步驟設置所要發送的消息;根據消息設置并保存模擬設備屬性;根據模擬設備屬性設置并保存處理過消息后的設備狀態;根據模擬設備的預置狀態判斷收發消息流程是否正確,是,則返回步驟3繼續執行,否,則顯示執行錯誤。本發明使不同ID的模擬設備在進行相同的流程測試過程中,只需要修改模擬設備的ID就可以對測試用例重復使用,不需要修改消息的屬性;對具有不同消息結構的系統具有通用性;多個模擬設備在接收和發送相同消息時,只需要寫一個處理腳本,提高了系統測試的效率;不存在設備個數的限制,只需要修改配置文件就可以完成對相應數量的實際設備的模擬;測試可自動進行。
文檔編號H04L12/26GK101197729SQ20071017787
公開日2008年6月11日 申請日期2007年11月21日 優先權日2007年11月21日
發明者芳 李, 軍 馬 申請人:中興通訊股份有限公司