本發(fā)明涉及軟件,尤其涉及一種面向智能電網(wǎng)的發(fā)布訂閱系統(tǒng)可靠性測試方法和系統(tǒng)。
背景技術:
1、發(fā)布訂閱是一種分布式環(huán)境下的消息傳遞機制,目前廣泛應用于云和邊緣場景中傳感器狀態(tài)采集、系統(tǒng)狀態(tài)監(jiān)控和報警、微服務通信、實時內(nèi)容通知和分發(fā)等場景,支撐電力、金融等關鍵領域核心業(yè)務,具有低耦合和擴展性強的特點。發(fā)布訂閱系統(tǒng)中主要包括發(fā)布者、訂閱者和消息代理三種角色,發(fā)布者將消息發(fā)布至消息代理,消息代理負責接收來自發(fā)布者的消息并路由至訂閱者,訂閱者向消息代理訂閱滿足條件的特定消息,發(fā)布者和訂閱者彼此獨立,無需了解對方的存在。在發(fā)布訂閱系統(tǒng)中,存在兩種消息過濾的方式,即基于主題的發(fā)布訂閱和基于內(nèi)容的發(fā)布訂閱,其中基于主題的發(fā)布訂閱是指消息根據(jù)主題進行分類,訂閱者只訂閱并接收特定主題的消息,而基于內(nèi)容的發(fā)布訂閱是指消息根據(jù)內(nèi)容進行分發(fā),訂閱者根據(jù)消息內(nèi)容屬性等進行訂閱,只有滿足特定條件的消息數(shù)據(jù)才會被接收。為了保證發(fā)布訂閱系統(tǒng)的可靠性,消息代理會對消息數(shù)據(jù)進行持久化,將消息數(shù)據(jù)存儲至磁盤或數(shù)據(jù)庫中,避免消息丟失。
2、在智能電網(wǎng)等關鍵領域核心場景中,發(fā)布訂閱系統(tǒng)通常以多個節(jié)點的分布式系統(tǒng)的形式部署。而在分布式環(huán)境中系統(tǒng)節(jié)點較多,系統(tǒng)間的通信行為可能錯綜復雜,難免容易受到各種故障或錯誤的影響,如網(wǎng)絡異常、斷電、軟件錯誤等。例如,在智能電網(wǎng)場景中一旦發(fā)生故障,將會直接影響到電力系統(tǒng)的可靠性,可能會導致如數(shù)據(jù)泄露、系統(tǒng)故障甚至電力供應中斷等嚴重問題,進而導致財產(chǎn)損失;電力設備的監(jiān)控和報警系統(tǒng)一旦出現(xiàn)問題,可能出現(xiàn)異常情況的誤報或漏報,導致生產(chǎn)事故的發(fā)生。因此,發(fā)布訂閱系統(tǒng)的可靠性測試評估至關重要,測試發(fā)布訂閱系統(tǒng)在各種分布式環(huán)境的故障和異常情況下的表現(xiàn)可以很好地減少生產(chǎn)場景中問題的出現(xiàn),提高系統(tǒng)可靠性,確保發(fā)布訂閱系統(tǒng)的穩(wěn)定運行。
3、目前,已經(jīng)有一些測試工具通過故障注入的方法來測試系統(tǒng)可靠性。其中,chaosmesh主要支持從物理主機和kubernetes兩個層面注入故障,包括磁盤故障、網(wǎng)絡故障、進程故障和pod故障等;byte-monkey主要用于模擬jvm應用程序中的故障場景,通過調(diào)整應用程序字節(jié)碼的方式引入異常和延遲等故障;fiat支持將錯誤注入應用程序代碼和數(shù)據(jù),并可以將錯誤注入消息、任務和計時器中;ferrari使用軟件模擬硬件故障或錯誤,支持注入cpu、內(nèi)存和總線故障,如通過更改選定的寄存器或存儲器位置的內(nèi)容來模擬實際數(shù)據(jù)損壞;netloiter通過修改底層網(wǎng)絡接口,使網(wǎng)絡出現(xiàn)故障,可根據(jù)時間、數(shù)據(jù)包數(shù)量和地址信息指定故障注入時機等。但是,現(xiàn)有的測試工具只針對一些粗粒度的故障類型,并且無法直接應用于發(fā)布訂閱系統(tǒng),且缺乏邊緣環(huán)境下的故障注入手段。目前尚缺乏專門針對分布式發(fā)布訂閱系統(tǒng)的可靠性測試方法和工具,無法針對分布式發(fā)布訂閱系統(tǒng)的消息傳遞的正確性以及網(wǎng)絡的可靠性進行評估。
技術實現(xiàn)思路
1、本發(fā)明的目的是提出一種面向智能電網(wǎng)的發(fā)布訂閱系統(tǒng)可靠性測試方法和系統(tǒng),通過模擬智能電網(wǎng)環(huán)境下的發(fā)布訂閱系統(tǒng)在實際應用場景中可能面臨的各種故障場景,全面評估發(fā)布訂閱系統(tǒng)的容錯機制和恢復能力,幫助發(fā)掘系統(tǒng)中可能存在的缺陷,提高發(fā)布訂閱系統(tǒng)的可靠性。
2、為達到上述目的,本發(fā)明的技術方案包如下:
3、一種面向智能電網(wǎng)的發(fā)布訂閱系統(tǒng)可靠性測試方法,包括以下步驟:
4、1)針對發(fā)布訂閱系統(tǒng)面臨的網(wǎng)絡故障,收集故障類型和故障實例,構(gòu)建故障庫;
5、2)為發(fā)布訂閱系統(tǒng)配置測試腳本;
6、3)使用配置的測試腳本測試發(fā)布訂閱系統(tǒng)的可靠性;
7、4)監(jiān)測測試腳本的運行狀態(tài)和發(fā)布訂閱系統(tǒng)狀態(tài),收集發(fā)布訂閱系統(tǒng)的運行日志信息,若檢測出異常,則將異常信息記錄至文件中;
8、5)對發(fā)布訂閱系統(tǒng)進行可靠性評估。
9、進一步地,配置測試腳本的步驟包括:
10、在故障庫中包含的故障類型中,自動組合故障場景,故障類型包括網(wǎng)絡傳輸故障和網(wǎng)絡延遲故障,故障場景為各個故障類型的實例;
11、配置測試腳本執(zhí)行時間;
12、配置待測發(fā)布訂閱系統(tǒng)地址信息。
13、進一步地,故障類型的實例為對故障類型配置的特定操作,包括網(wǎng)絡傳輸故障實例和網(wǎng)絡延遲故障實例,網(wǎng)絡傳輸故障實例包括:
14、消息篡改操作,為對隨機選擇消息中的數(shù)據(jù)依照預設概率進行比特翻轉(zhuǎn);
15、消息丟失操作,為對隨機選擇消息中的數(shù)據(jù)進行刪除;
16、消息重復操作,為對隨機選擇消息中的數(shù)據(jù)進行復制操作;
17、消息亂序操作,為按照隨機選取消息中的不同數(shù)據(jù)進行位置調(diào)換。
18、網(wǎng)絡延遲故障實例包括:
19、節(jié)點或集群斷開連接操作,為對每個節(jié)點生成一個概率值,斷開概率值超過閾值的節(jié)點。
20、進一步地,所述自動組合故障場景的步驟包括:
21、隨機生成故障組合數(shù)m;
22、從故障庫中隨機生成m個不重復的故障類型;
23、從測試記錄中搜索上述故障類型組合,若此故障組合已測試,則重復上個步驟,重新選取新的故障類型組合;
24、將故障類型組合按順序存入故障列表中,并保存在測試記錄文件中。
25、進一步地,測試發(fā)布訂閱系統(tǒng)的可靠性的步驟性包括:
26、按順序讀取故障列表中的一個故障場景;
27、將故障場景中的操作應用到指定地址的發(fā)布訂閱系統(tǒng);
28、重復讀取,直到故障列表中的所有故障場景都被實際執(zhí)行,則當前測試結(jié)束;
29、若發(fā)布訂閱系統(tǒng)的程序未執(zhí)行完成但已達到測試腳本設置的程序運行的執(zhí)行時間,則當前一輪測試會被強制終止。
30、進一步地,監(jiān)測測試腳本的運行狀態(tài)和發(fā)布訂閱系統(tǒng)狀態(tài)的步驟包括:在執(zhí)行故障列表中的每一個故障操作時,收集發(fā)布訂閱系統(tǒng)的運行日志信息、故障操作信息、發(fā)布者發(fā)送的消息、訂閱者接收的消息和集群節(jié)點的運行狀態(tài)信息。
31、進一步地,對發(fā)布訂閱系統(tǒng)進行可靠性評估的步驟包括:
32、針對故障列表中的每個故障操作,查看測試報告文件;
33、如果測試結(jié)果符合預期,則表示發(fā)布訂閱系統(tǒng)能夠應對該故障操作,否則表示發(fā)布訂閱系統(tǒng)無法應對該故障操作;
34、統(tǒng)計符合預期的故障操作數(shù)f,計算發(fā)布訂閱系統(tǒng)的可靠性指標f/m。
35、一種面向智能電網(wǎng)的發(fā)布訂閱系統(tǒng)可靠性測試系統(tǒng),包括:
36、故障收集模塊,用于針對發(fā)布訂閱系統(tǒng)面臨的網(wǎng)絡故障,收集故障類型和故障實例,構(gòu)建故障庫,用于配置測試腳本中所需的故障操作;
37、測試腳本配置模塊,用于為發(fā)布訂閱系統(tǒng)配置測試腳本;
38、測試腳本執(zhí)行模塊,用于根據(jù)測試腳本配置模塊配置的故障類型,對發(fā)布訂閱系統(tǒng)進行可靠性測試;
39、監(jiān)測模塊,接收來自測試腳本執(zhí)行模塊的監(jiān)測請求,并實時監(jiān)測應用程序和發(fā)布訂閱系統(tǒng)的表現(xiàn)情況;
40、可靠性評估模塊,用于對發(fā)布訂閱系統(tǒng)進行可靠性評估;
41、存儲模塊,接收來自測試腳本配置模塊、測試腳本執(zhí)行模塊、監(jiān)測模塊和可靠性評估模塊的存儲請求,將記錄信息持久化存儲至指定文件。
42、進一步地,所述監(jiān)測模塊執(zhí)行的步驟包括:
43、監(jiān)測發(fā)布訂閱系統(tǒng)的應用程序的進程狀態(tài),判斷應用程序是否處于異常狀態(tài),包括進程異常退出或長時間異常掛起;
44、監(jiān)測發(fā)布訂閱系統(tǒng)產(chǎn)生的日志信息,通過關鍵字檢索判斷系統(tǒng)是否出現(xiàn)異常,包括報錯信息或錯誤碼信息;
45、監(jiān)測當前節(jié)點的狀態(tài),判斷當前節(jié)點能否被正常訪問。
46、進一步地,存儲模塊的執(zhí)行步驟包括:當監(jiān)測模塊檢測到異常時,存儲模塊及時記錄當前測試信息,包括故障類型信息、故障操作信息、應用程序狀態(tài)信息、系統(tǒng)狀態(tài)信息和節(jié)點狀態(tài)信息。
47、本發(fā)明與現(xiàn)有技術相比的優(yōu)點在于:
48、1.本發(fā)明解決了發(fā)布訂閱系統(tǒng)可靠性測試評估的問題,可以幫助發(fā)掘發(fā)布訂閱系統(tǒng)中的潛在缺陷,提高系統(tǒng)可靠性;
49、2.本發(fā)明深入分析了發(fā)布訂閱系統(tǒng)的架構(gòu)特點和應用場景特點,設計了多種發(fā)布訂閱系統(tǒng)特定的故障類型,可以模擬發(fā)布訂閱系統(tǒng)可能面臨的各種特定的故障場景;
50、3.本發(fā)明設計了系統(tǒng)化組合故障場景的測試方法,支持自動搜索各種故障組合場景,系統(tǒng)化地測試發(fā)布訂閱系統(tǒng)的可靠性。