本發明涉及BMC測試技術領域,特別涉及一種BMC自動測試系統及方法。
背景技術:
BMC(即Baseboard Management Controller,基板管理控制器)是服務器用來監控內部物理變量的固件,它是IPMI(即Intelligent Platform Management Interface,智能平臺管理接口)的一部分,常被設計在服務器或者計算機的主板上。BMC的傳感器測量服務器內部的物理變量,比如溫度、濕度、供電電壓、風扇轉速、操作系統的功能等,如果某個測量變量超出了規定的值,將通知系統管理員。
由于BMC在服務器中作用重大,所以企業驗證BMC是否符合設計需求是必須的。服務器廠商根據市場需求不同一般會開發不同的服務器平臺,不同服務器類型的BMC固件也存在一定的差異。固件開發者每隔一段時間會在之前的固件版本上開發一個新的版本,每版BMC都需要經過測試驗證。
然而,現有的對BMC固件進行測試驗證時,通常需要對服務器中的某些硬件進行手工測試,例如在測試中需要對板卡進行插拔或查看LED燈的顏色等。這樣需要耗費大量的人力成本,尤其是對于BMC這種時常需要迭代更新的固件來說,現有的BMC固件測試方式需要消耗大量的人力成本,測試效率較低。
綜上所述可以看出,如何降低BMC固件測試過程中的人力成本,以及提高測試效率是目前有待解決的問題。
技術實現要素:
有鑒于此,本發明的目的在于提供一種BMC自動測試系統及方法,降低了BMC固件測試過程中的人力成本,并提高了測試效率。其具體方案如下:
一種BMC自動測試系統,包括:
測試對象確定模塊,用于確定待測試BMC固件;
硬件抽象模塊,用于對目標服務器中的硬件進行抽象化處理,得到相應的類文件;其中,所述目標服務器為當前能夠運行所述待測試BMC固件的服務器;
腳本生成模塊,用于利用所述硬件抽象模塊得到的類文件,生成相應的測試用例腳本;
文件解析模塊,用于對預設配置文件進行解析,得到所述測試用例腳本所需的基礎數據文件;
測試執行模塊,用于在所述目標服務器上,利用所述測試用例腳本和所述基礎數據文件,對所述待測試BMC固件進行相應地測試。
優選的,所述硬件抽象模塊,具體用于將所述目標服務器中的每個硬件所對應的測試步驟封裝成類方法,得到相應的類文件集合;
其中,所述類文件集合中的每一類文件與所述目標服務器中的每個硬件之間呈一一對應關系。
優選的,所述腳本生成模塊包括:
測試計劃確定單元,用于確定與所述待測試BMC固件相關的測試計劃;
類文件提取單元,用于從所述類文件集合中提取出與所述測試計劃相對應的類文件;
腳本生成單元,用于將所述類文件提取單元所提取到的類文件組裝成相應的測試用例腳本。
優選的,所述BMC自動測試系統,還包括:
文件配置模塊,用于創建系統配置文件、公共配置文件和用例配置文件,得到所述預設配置文件;
其中,所述系統配置文件包括所述待測試BMC固件的版本信息、所述目標服務器的標識信息以及所述測試用例腳本的標識信息;所述公共配置文件包括在對所述待測試BMC固件進行測試的過程中所需的與所述目標服務器相關的常量數據,所述常量數據包括IPMI指令和IPMI返回值;所述用例配置文件包括所述測試用例腳本所需的測試數據。
優選的,所述測試執行模塊,包括:
腳本排列子模塊,用于按照添加時間的先后順序,將所述測試用例腳本添加到預設測試隊列的相應隊列位置上;
測試管理子模塊,用于對所述預設測試隊列進行實時地更新管理;
測試執行子模塊,用于當所述測試用例腳本處于所述預設測試隊列的頭部,則在所述目標服務器上,利用所述測試用例腳本和所述基礎數據文件,對所述待測試BMC固件進行相應地測試。
優選的,所述測試執行子模塊包括BMC通信單元和測試執行單元;其中,
所述BMC通信單元,用于嘗試搭建所述測試執行單元和所述待測試BMC固件之間的訪問通道;
所述測試執行單元,用于當所述測試用例腳本處于所述預設測試隊列的頭部,并且當所述BMC通信單元成功搭建所述訪問通道后,在所述目標服務器上,利用所述測試用例腳本和所述基礎數據文件,對所述待測試BMC固件進行相應地測試。
優選的,所述BMC通信單元,具體用于通過預設通信接口,嘗試搭建所述測試執行單元和所述待測試BMC固件之間的訪問通道,如果連續N次均無法成功搭建所述訪問通道,則判定通道搭建失敗,其中,N為不小于3的整數。
優選的,所述BMC通信單元,具體用于依次從預設接口池中選取出一個接口,并通過該接口,嘗試搭建所述測試執行單元和所述待測試BMC固件之間的訪問通道,如果均無法通過所述預設接口池中的接口搭建所述訪問通道,則判定通道搭建失敗;其中,所述預設接口池包括至少兩個接口。
優選的,所述測試對象確定模塊包括:
固件監視單元,用于對預設BMC固件庫中的所有BMC固件進行監視,以監視所述預設BMC固件庫中是否出現新的BMC固件;
對象確定單元,用于當所述固件監視單元監視到所述預設BMC固件庫中出現新的BMC固件,則將該BMC固件確定為所述待測試BMC固件。
本發明還公開了一種BMC自動測試方法,包括:
確定待測試BMC固件;
對目標服務器中的硬件進行抽象化處理,得到相應的類文件;其中,所述目標服務器為當前能夠運行所述待測試BMC固件的服務器;
利用所述抽象化處理得到的類文件,生成相應的測試用例腳本;
對預設配置文件進行解析,得到所述測試用例腳本所需的基礎數據文件;
在所述目標服務器上,利用所述測試用例腳本和所述基礎數據文件,對所述待測試BMC固件進行相應地測試。
本發明中,BMC自動測試系統,包括:測試對象確定模塊,用于確定待測試BMC固件;硬件抽象模塊,用于對目標服務器中的硬件進行抽象化處理,得到相應的類文件;其中,目標服務器為當前能夠運行待測試BMC固件的服務器;腳本生成模塊,用于利用硬件抽象模塊得到的類文件,生成相應的測試用例腳本;文件解析模塊,用于對預設配置文件進行解析,得到測試用例腳本所需的基礎數據文件;測試執行模塊,用于在目標服務器上,利用測試用例腳本和基礎數據文件,對待測試BMC固件進行相應地測試。本發明中,利用硬件抽象模塊對服務器中的硬件進行抽象化處理,得到了相應的類文件;然后利用這些類文件,生成相應的測試用例腳本,接著在服務器上,利用上述測試用例腳本,并結合相應的基礎數據文件,來對相應的BMC固件進行測試。由于本發明將服務器中的硬件進行了抽象化處理,得到了相應的類文件,而后續生成的測試用例腳本正是基于這些類文件生成的,這樣能夠使得本發明可以利用上述測試用例腳本對服務器中的硬件進行自動化測試,從而避免了現有技術中的人工測試的情況,可見,本發明降低了BMC固件測試過程中的人力成本,并提高了測試效率。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
圖1為本發明實施例公開的一種BMC自動測試系統結構示意圖;
圖2為本發明實施例公開的一種BMC自動測試方法流程圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
本發明實施例公開了一種BMC自動測試系統,參見圖1所示,該系統包括:
測試對象確定模塊11,用于確定待測試BMC固件;
硬件抽象模塊12,用于對目標服務器中的硬件進行抽象化處理,得到相應的類文件;其中,目標服務器為當前能夠運行待測試BMC固件的服務器;
腳本生成模塊13,用于利用硬件抽象模塊12得到的類文件,生成相應的測試用例腳本;
文件解析模塊14,用于對預設配置文件進行解析,得到測試用例腳本所需的基礎數據文件;
測試執行模塊15,用于在目標服務器上,利用測試用例腳本和基礎數據文件,對待測試BMC固件進行相應地測試。
可以理解的是,上述預設配置文件中包含了上述基礎數據文件,通過上述文件解析模塊14,可以將上述預設配置文件中的基礎數據文件解析出來。
本發明實施例中,利用硬件抽象模塊對服務器中的硬件進行抽象化處理,得到了相應的類文件;然后利用這些類文件,生成相應的測試用例腳本,接著在服務器上,利用上述測試用例腳本,并結合相應的基礎數據文件,來對相應的BMC固件進行測試。由于本發明實施例將服務器中的硬件進行了抽象化處理,得到了相應的類文件,而后續生成的測試用例腳本正是基于這些類文件生成的,這樣能夠使得本發明實施例可以利用上述測試用例腳本對服務器中的硬件進行自動化測試,從而避免了現有技術中的人工測試的情況,可見,本發明實施例降低了BMC固件測試過程中的人力成本,并提高了測試效率。
本發明實施例公開了一種具體的BMC自動測試系統,相對于上一實施例,本實施例對技術方案作了進一步的說明和優化。具體的:
上一實施例中,可利用硬件抽象模塊對目標服務器中的硬件進行抽象化處理,從而得到相應的類文件。通過利用上述類文件,腳本生成模塊能夠生成相應的測試用例腳本。
其中,上述硬件抽象模塊,具體可以用于將目標服務器中的每個硬件所對應的測試步驟封裝成類方法,得到相應的類文件集合;其中,上述類文件集合中的每一類文件與目標服務器中的每個硬件之間呈一一對應關系。
也即,本實施例可以利用上述硬件抽象模塊,對目標服務器中的所有硬件各自所對應的測試步驟封裝成相應的類方法,從而得到上述類文件集合。
相應的,上述腳本生成模塊具體可以包括測試計劃確定單元、類文件提取單元和腳本生成單元;其中,
測試計劃確定單元,用于確定與待測試BMC固件相關的測試計劃;
類文件提取單元,用于從類文件集合中提取出與測試計劃相對應的類文件;
腳本生成單元,用于將類文件提取單元所提取到的類文件組裝成相應的測試用例腳本。
可以理解的是,上述與待測試BMC固件相關的測試計劃中詳細記錄了需要對哪些項目進行測試。根據上述測試計劃中記錄的測試項目,上述類文件提取單元便可從上述類文件集合中提取出相應的類文件。然后利用上述腳本生成單元將上述提取出來的類文件組裝成相應的測試用例腳本。
由上可知,本發明可以先利用硬件抽象模塊將目標服務器中的所有硬件進行抽象化處理,然后上述腳本生成模塊便可以從上述類文件集合中提取出相應的類文件來生成相應的測試用例腳本。當然,本實施例中也可以先利用上述測試計劃確定單元確定出與待測試BMC固件對應的測試計劃,然后利用上述硬件抽象模塊將目標服務器中與上述測試計劃對應的硬件進行抽象化處理,進而利用上述腳本生成單元將上述硬件抽象模塊生成的所有類文件組裝成相應的測試用例腳本。
上一實施例中,需要利用文件解析模塊,對預設配置文件進行解析,得到上述測試用例腳本對應的基礎數據文件。
可以理解的是,上述預設配置文件可以由用戶直接導入,也可以利用本實施例中的BMC自動測試系統來生成,也即,本實施例中的BMC自動測試系統,還可以進一步包括:
文件配置模塊,用于創建系統配置文件、公共配置文件和用例配置文件,得到預設配置文件;
其中,系統配置文件包括待測試BMC固件的版本信息、目標服務器的標識信息以及測試用例腳本的標識信息;公共配置文件包括在對待測試BMC固件進行測試的過程中所需的與目標服務器相關的常量數據,常量數據包括IPMI指令和IPMI返回值;用例配置文件包括測試用例腳本所需的測試數據。由此可知,本實施例中,與上述測試用例腳本對應的基礎數據文件包括待測試BMC固件的版本信息、目標服務器的標識信息、測試用例腳本的標識信息、IPMI指令、IPMI返回值和相應的測試數據。
上一實施例中,在得到測試用例腳本以及相應的基礎數據文件后,需利用測試執行模塊,在目標服務器上對待測試BMC固件進行相應地測試。本實施例中,上述測試執行模塊,具體包括腳本排列子模塊、測試管理子模塊以及測試執行子模塊;其中,
腳本排列子模塊,用于按照添加時間的先后順序,將測試用例腳本添加到預設測試隊列的相應隊列位置上;
測試管理子模塊,用于對預設測試隊列進行實時地更新管理;
測試執行子模塊,用于當上述腳本生成模塊生成的測試用例腳本處于預設測試隊列的頭部,則在目標服務器上,利用上述測試用例腳本和基礎數據文件,對待測試BMC固件進行相應地測試。
可以理解的是,上述測試管理子模塊具體是根據測試執行子模塊的執行情況來對預設測試隊列進行實時更新的,也即,當上述測試執行子模塊對預設測試隊列中的A腳本執行完相應的測試后,便將上述預設測試隊列中的相應信息進行刪除,以實現對預設測試隊列的實時更新。由此可知,上述預設測試隊列中所保存的測試用例腳本均是還未完成測試的腳本,當上述預設測試隊列中的某一腳本測試完畢后,將會對該隊列中的相應信息進行刪除處理。
更具體的,上述測試執行子模塊包括BMC通信單元和測試執行單元;其中,
BMC通信單元,用于嘗試搭建測試執行單元和待測試BMC固件之間的訪問通道;
測試執行單元,用于當上述腳本生成模塊生成的測試用例腳本處于預設測試隊列的頭部,并且當BMC通信單元成功搭建訪問通道后,在目標服務器上,利用測試用例腳本和基礎數據文件,對待測試BMC固件進行相應地測試。
其中,上述BMC通信單元,具體可以用于通過預設通信接口,嘗試搭建測試執行單元和待測試BMC固件之間的訪問通道,如果連續N次均無法成功搭建訪問通道,則判定通道搭建失敗,其中,N為不小于3的整數。
也即,本實施例可以利用一個通信接口,嘗試搭建上述測試執行單元和待測試BMC固件之間的訪問通道,如果連續N次均無法成功搭建,則判定通道搭建失敗,此時將不再嘗試搭建通道。可以理解的是,上述預設通信接口是上述測試執行單元與上述待測試BMC固件之間進行交互的API(即Application Programming Interface,應用程序編程接口)。
當然,本實施例中的BMC通信單元也可以通過其他方式來嘗試搭建上述測試執行單元和上述待測試BMC固件之間的訪問通道,具體的,本實施例中的BMC通信單元,也可以用于依次從預設接口池中選取出一個接口,并通過該接口,嘗試搭建測試執行單元和待測試BMC固件之間的訪問通道,如果均無法通過預設接口池中的接口搭建訪問通道,則判定通道搭建失敗;其中,預設接口池包括至少兩個接口。
上一實施例中,測試對象確定模塊可以用于確定待測試BMC固件。具體的,上述測試對象確定模塊可以包括固件監視單元和對象確定單元;其中,
固件監視單元,用于對預設BMC固件庫中的所有BMC固件進行監視,以監視預設BMC固件庫中是否出現新的BMC固件;
對象確定單元,用于當固件監視單元監視到預設BMC固件庫中出現新的BMC固件,則將該BMC固件確定為待測試BMC固件。
可以理解的是,上述固件監視單元具體可以通過監視固件自身的版本號來判定上述預設BMC固件庫中是否出現了新的BMC固件,如果監視到上述預設BMC固件庫中出現了新的BMC固件,則將該BMC固件確定為本實施例中的待測試BMC固件。也即,本發明實施例中,一旦監視到出現了新的BMC固件,則會自動對該BMC固件展開后續的測試工作,從而可以進一步降低固件測試過程中的人力成本。
相應的,本發明實施例還公開了一種BMC自動測試方法,參見圖2所示,該方法包括:
步驟S21:確定待測試BMC固件;
步驟S22:對目標服務器中的硬件進行抽象化處理,得到相應的類文件;其中,目標服務器為當前能夠運行待測試BMC固件的服務器;
步驟S23:利用抽象化處理得到的類文件,生成相應的測試用例腳本;
步驟S24:對預設配置文件進行解析,得到測試用例腳本所需的基礎數據文件;
步驟S25:在目標服務器上,利用測試用例腳本和基礎數據文件,對待測試BMC固件進行相應地測試。
關于上述各個步驟更加詳細的過程可以參考前述實施例中公開的相關內容,在此不再進行贅述。
本發明實施例中,對服務器中的硬件進行抽象化處理,得到了相應的類文件;然后利用這些類文件,生成相應的測試用例腳本,接著在服務器上,利用上述測試用例腳本,并結合相應的基礎數據文件,來對相應的BMC固件進行測試。由于本發明實施例將服務器中的硬件進行了抽象化處理,得到了相應的類文件,而后續生成的測試用例腳本正是基于這些類文件生成的,這樣能夠使得本發明實施例可以利用上述測試用例腳本對服務器中的硬件進行自動化測試,從而避免了現有技術中的人工測試的情況,可見,本發明實施例降低了BMC固件測試過程中的人力成本,并提高了測試效率。
最后,還需要說明的是,在本文中,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
以上對本發明所提供的一種BMC自動測試系統及方法進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發明的方法及其核心思想;同時,對于本領域的一般技術人員,依據本發明的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。