專利名稱:一種多核測試的方法和裝置的制作方法
技術領域:
本發(fā)明涉及計算機領域,尤其涉及一種多核測試的方法和裝置。
背景技術:
隨著CPU硬件技術的不斷發(fā)展,多核CPU已經(jīng)逐漸代替了單核CPU,并且由于多核CPU的普及,操作系統(tǒng)與CPU部署方式的變化,現(xiàn)有的應用程序的部署方式主要可以分為AMP (Asymmetric Multiprocessing,非對稱多處理)、SMP (Symmetric Multiprocessing,對稱多處理)和BMP(Bound Multiprocessing,混合多處理)三種模式。其中,AMP中每個CPU內核運行一個獨立操作系統(tǒng)或統(tǒng)一操作系統(tǒng)的獨立實例,SMP中一個操作系統(tǒng)的實例可以同時管理所有CPU內核,且應用并不綁定內某一個內核,而BMP中結合了 SMP的高級資源管理和AMP的應用控制的混合功能,一個操作系統(tǒng)的實例可以同時管理所有CPU內核,但每個應用被鎖定于某個指定的核心。我們的測試對象是部署在操作系統(tǒng)上的應用進程,這些應用進程可以部署在不同的操作系統(tǒng)上,甚至是不同的VCPU(Virtual CPU,虛擬處理器),而在進行軟件測試過程中,涉及到多個應用進程的測試信息交互,目前,進行測試信息的方式包括一、利用Socket鏈路來進行測試控制信息及測試結果的傳遞;二、利用管道方式來進行進程內的測試控制信息及測試結果的傳遞。但是Socket鏈路方式只能在有網(wǎng)卡的設備上才能使用,而且需要在測試的主控端和業(yè)務端的操作系統(tǒng)中進行內核狀態(tài)的轉化,會消耗部分系統(tǒng)性能;管道通信只能在Linux系統(tǒng)下采用對稱多處理的部署方式,不能滿足多類型操作系統(tǒng)測試的需求。
發(fā)明內容
本發(fā)明的實施例提供一種多核測試的方法和裝置,能夠實現(xiàn)在多核CPU的不同核心上的不同類型的操作系統(tǒng)進行多種程序部署方式的軟件測試的工作,解決了測試工作對網(wǎng)絡功能的依賴,減小了系統(tǒng)性能損耗,提高了工作效率。為達到上述目的,本發(fā)明的實施例采用如下技術方案第一方面,提供一種多核測試的方法,所述方法包括處理器中的主控端在執(zhí)行測試用例的過程中,發(fā)送消息命令到命令存放區(qū);其中,所述消息指令包括業(yè)務端標識,待執(zhí)行函數(shù)名和參數(shù)變量;所述處理器中的各個業(yè)務端根據(jù)所述命令存放區(qū)中的消息命令中的業(yè)務端標識判斷所述消息命令是否屬于本業(yè)務端,若所述消息命令屬于本業(yè)務端,則所述消息命令所屬的業(yè)務端根據(jù)所述待執(zhí)行函數(shù)名和所述參數(shù)變量對所述測試用例進行測試;所述消息命令所屬的業(yè)務端在執(zhí)行完所述消息命令后,將執(zhí)行結果發(fā)送到結果存放區(qū)進行存儲,以便所述主控端對執(zhí)行結果進行統(tǒng)計;其中,所述命令存放區(qū)和所述結果存放區(qū)位于共享內存中。在第一種可能的實現(xiàn)方式中,結合第一方面,所述處理器中的各個業(yè)務端根據(jù)所述命令存放區(qū)中的消息命令中的業(yè)務端標識判斷所述消息命令是否屬于本業(yè)務端包括所述處理器的各個業(yè)務端判斷所述命令存放區(qū)中的所述消息命令中的業(yè)務端標識與本業(yè)務端標識是否對應;若所述消息命令中的業(yè)務端標識與本業(yè)務端標識對應,則確定所述消息命令是屬于本業(yè)務端的消息命令,并且所述消息命令所屬的業(yè)務端根據(jù)所述待執(zhí)行函數(shù)名和所述參數(shù)變量對所述測試用例進行測試。在第二種可能的實現(xiàn)方式中,結合第一方面的第一種可能的實現(xiàn)方式,在所有的測試用例都被執(zhí)行后,所述方法還包括所述處理器中的主控端通過查詢接口查詢所述結果存放區(qū)中存儲的執(zhí)行結果。在第三種可能的實現(xiàn)方式中,結合第一方面或第一方面的第一種可能的實現(xiàn)方式或第一方面的第二種可能的實現(xiàn)方式,所述執(zhí)行結果包括失敗信息和統(tǒng)計信息;其中,所述失敗信息包括業(yè)務端標識,失敗原因,文件名,程序行號;所述統(tǒng)計信息包括測試用例數(shù)目,測試用例成功數(shù)目及測試用例失敗數(shù)目;測試套數(shù)目,測試套成功數(shù)目,測試套失敗數(shù)目;斷言數(shù)目,斷言成功數(shù)目,斷言失敗數(shù)目。第二方面,提供一種多核測試測試裝置,所述裝置包括處理器和共享內存,其中所述處理器包括主控端和至少一個業(yè)務端;所述共享內存包括命令存放區(qū)和結果存放區(qū);所述主控端用于在執(zhí)行測試用例的過程中,發(fā)送消息命令到命令存放區(qū);其中,所述消息指令包括業(yè)務端標識,待執(zhí)行函數(shù)名和參數(shù)變量;所述業(yè)務端用于根據(jù)所述命令存放區(qū)中的消息命令中的業(yè)務端標識判斷所述消息命令是否屬于本業(yè)務端,若所述消息命令屬于本業(yè)務端,則所述消息命令所屬的業(yè)務端根據(jù)所述待執(zhí)行函數(shù)名和所述參數(shù)變量對所述測試用例進行測試;所述命令存放區(qū)用于存儲所述主控端發(fā)送的消息命令,以便所有業(yè)務端都能讀取所述消息命令;所述結果存放區(qū)用于存儲所述消息命令中指定業(yè)務端的執(zhí)行結果,以便所述主控端對執(zhí)行結果進行統(tǒng)計,所述執(zhí)行結果由所述消息命令中指定的業(yè)務端在執(zhí)行完所述消息命令后生成。在第一種可能的實現(xiàn)方式中,結合第二方面,所述業(yè)務端具體用于判斷所述命令存放區(qū)中的所述消息命令中的業(yè)務端標識與本業(yè)務端標識是否對應;若所述消息命令中的業(yè)務端標識與本業(yè)務端標識對應,則確定所述消息命令是屬于本業(yè)務端的消息命令,并且所述消息命令所屬的業(yè)務端根據(jù)所述待執(zhí)行函數(shù)名和所述參數(shù)變量對所述測試用例進行測試。在第二種可能的實現(xiàn)方式中,結合第二方面的第一種可能的實現(xiàn)方式,所述裝置還包括查詢接口,用于所述處理器中的主控端通過所述查詢接口查詢所述結果存放區(qū)中存儲的執(zhí)行結果。在第三種可能的實現(xiàn)方式中,結合第二方面或第二方面的第一種可能的實現(xiàn)方式或第一方面的第二種可能的實現(xiàn)方式,所述執(zhí)行結果包括失敗信息和統(tǒng)計信息;
其中,所述失敗信息包括業(yè)務端標識,失敗原因,文件名,程序行號;所述統(tǒng)計信息包括測試用例數(shù)目,測試用例成功數(shù)目及測試用例失敗數(shù)目;測試套數(shù)目,測試套成功數(shù)目,測試套失敗數(shù)目;斷言數(shù)目,斷言成功數(shù)目,斷言失敗數(shù)目。本發(fā)明的實施例提供一種多核測試的方法和裝置,通過處理器中的主控端選擇一個測試用例執(zhí)行,并將消息命令發(fā)送到命令存放區(qū),而后處理器中的各個業(yè)務端判斷命令存放區(qū)中的消息命令是否為屬于本業(yè)務端的消息命令,若消息命令為本業(yè)務端的消息命令,則使本業(yè)務端執(zhí)行消息命令,各個業(yè)務端在完成消息命令的執(zhí)行后,將執(zhí)行結果發(fā)送到結果存放區(qū),以便將執(zhí)行結果進行統(tǒng)計并存儲,能夠實現(xiàn)在多核CPU的不同核心上的不同類型的操作系統(tǒng)進行多種程序部署方式的軟件測試的工作,解決了測試工作對網(wǎng)絡功能的依賴,減小了系統(tǒng)性能損耗,提高了工作效率。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實施例提供的一種多核測試的方法示意圖;圖2為本發(fā)明實施例提供的一種多核測試的方法的另一示意圖;圖3為本發(fā)明實施例還提供一種多核測試測試裝置的結構示意圖;圖4為本發(fā)明實施例還提供另一種多核測試測試裝置的結構示意圖;圖5為本發(fā)明另一實施例還提供一種多核測試測試裝置的結構示意圖;圖6為本發(fā)明另一實施例還提供另一種多核測試測試裝置的結構示意圖。
具體實施例方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。本發(fā)明實施例提供一種多核測試的方法,如圖1所示,該方法包括S101、處理器中的主控端在執(zhí)行測試用例的過程中,發(fā)送消息命令到命令存放區(qū);其中,所述消息指令包括業(yè)務端標識,待執(zhí)行函數(shù)名和參數(shù)變量。S102、處理器中的各個業(yè)務端根據(jù)所述命令存放區(qū)中的消息命令中的業(yè)務端標識判斷所述消息命令是否屬于本業(yè)務端,若所述消息命令屬于本業(yè)務端,則所述消息命令所屬的業(yè)務端根據(jù)所述待執(zhí)行函數(shù)名和所述參數(shù)變量對所述測試用例進行測試。S103、消息命令中指定的業(yè)務端在執(zhí)行完消息命令后,將執(zhí)行結果發(fā)送到結果存放區(qū)進行存儲,以便主控端對執(zhí)行結果進行統(tǒng)計;其中,命令存放區(qū)和結果存放區(qū)位于共享內存中。進一步的,當有多個測試用例時,在一個測試用例執(zhí)行完后,再次執(zhí)行SlOl至S103,直至所有的測試用例都被執(zhí)行。
本發(fā)明的實施例提供一種多核測試的方法,通過處理器中的主控端選擇一個測試用例執(zhí)行,并將消息命令發(fā)送到命令存放區(qū),而后處理器中的各個業(yè)務端判斷命令存放區(qū)中的消息命令是否為屬于本業(yè)務端的消息命令,若消息命令為本業(yè)務端的消息命令,則使本業(yè)務端執(zhí)行消息命令,各個業(yè)務端在完成消息命令的執(zhí)行后,將執(zhí)行結果發(fā)送到結果存放區(qū),以便將執(zhí)行結果進行統(tǒng)計并存儲,能夠實現(xiàn)在多核CPU的不同核心上的不同類型的操作系統(tǒng)進行多種程序部署方式的軟件測試的工作,解決了測試工作對網(wǎng)絡功能的依賴,減小了系統(tǒng)性能損耗,提高了工作效率。本發(fā)明另一實施例提供一種多核測試的方法,如圖2所示,該方法包括S201、處理器中的主控端在執(zhí)行測試用例的過程中,發(fā)送消息命令到命令存放區(qū);其中,所述消息指令包括業(yè)務端標識,待執(zhí)行函數(shù)名和參數(shù)變量。具體的,主控端將需要進行的測試用例的消息命令發(fā)送到命令存放區(qū),上述命令存放區(qū)位于共享內存中,這樣每個業(yè)務端就都能夠讀取到上述消息命令中的數(shù)據(jù)。S202、處理器中的各個業(yè)務端判根據(jù)所述命令存放區(qū)中的消息命令中的業(yè)務端標識判斷所述消息命令是否屬于本業(yè)務端。示例性的,可以通過以下方式實現(xiàn)各業(yè)務端均從命令存放區(qū)中由訪問主控端發(fā)送的消息命令,可以通過輪詢機制檢測消息命令中包括的業(yè)務端標識是否與業(yè)務端本身的標識匹配。S203、若消息命令中的業(yè)務端標識與本業(yè)務端標識對應,則業(yè)務端確定消息命令是屬于本業(yè)務端的消息命令。在確定消息命令是屬于本業(yè)務端的消息命令后執(zhí)行該消息命令,當然,若消息命令中的業(yè)務端標識與本業(yè)務端標識不對應,即消息命令不屬于本業(yè)務端的消息命令,則不執(zhí)行該消息命令。例如,假設上述業(yè)務端標識為業(yè)務端的編號,再假設消息命令中的業(yè)務端標識為5,則該消息命令所指示的執(zhí)行者就為編號為5的業(yè)務端,當消息命令發(fā)送到命令存放區(qū)后,由于命令存放區(qū)位于共享內存中,處理器內的所有業(yè)務端都能夠讀取到該消息命令,但是所有業(yè)務端在發(fā)現(xiàn)消息命令所指示的執(zhí)行者為編號為5的業(yè)務端后,只有編號為5的業(yè)務端執(zhí)行該消息命令,其他的業(yè)務端不作處理。具體的執(zhí)行過程可以包括業(yè)務端首先解析消息命令中的待執(zhí)行函數(shù)名得到待執(zhí)行函數(shù)的地址,再根據(jù)所述待執(zhí)行函數(shù)的地址以及所述參數(shù)變量進行函數(shù)調用對所述測試用例進行測試。S204、各個業(yè)務端在完成消息命令的執(zhí)行后,將執(zhí)行結果發(fā)送到結果存放區(qū),以便主控端將執(zhí)行結果進行統(tǒng)計并存儲。具體的,執(zhí)行結果可以包括失敗信息和統(tǒng)計信息;其中,失敗信息包括業(yè)務端標識,失敗原因,文件名,程序行號;統(tǒng)計信息包括測試用例數(shù)目,測試用例成功數(shù)目及測試用例失敗數(shù)目;測試套數(shù)目,測試套成功數(shù)目,測試套失敗數(shù)目;斷言數(shù)目,斷言成功數(shù)目,斷言失敗數(shù)目。示例性的,當業(yè)務端完成消息命令中的任務后,執(zhí)行結果中的內容如表I所示表I
權利要求
1.一種多核測試的方法,其特征在于,所述方法包括處理器中的主控端在執(zhí)行測試用例的過程中,發(fā)送消息命令到命令存放區(qū);其中,所述消息指令包括業(yè)務端標識,待執(zhí)行函數(shù)名和參數(shù)變量;所述處理器中的各個業(yè)務端根據(jù)所述命令存放區(qū)中的消息命令中的業(yè)務端標識判斷所述消息命令是否屬于本業(yè)務端,若所述消息命令屬于本業(yè)務端,則所述消息命令所屬的業(yè)務端根據(jù)所述待執(zhí)行函數(shù)名和所述參數(shù)變量對所述測試用例進行測試;所述消息命令所屬的業(yè)務端在執(zhí)行完所述消息命令后,將執(zhí)行結果發(fā)送到結果存放區(qū)進行存儲,以便所述主控端對執(zhí)行結果進行統(tǒng)計;其中,所述命令存放區(qū)和所述結果存放區(qū)位于共享內存中。
2.根據(jù)權利要求1所述的方法,其特征在于,所述處理器中的各個業(yè)務端根據(jù)所述命令存放區(qū)中的消息命令中的業(yè)務端標識判斷所述消息命令是否屬于本業(yè)務端包括所述處理器中的各個業(yè)務端判斷所述命令存放區(qū)中的所述消息命令中的業(yè)務端標識與本業(yè)務端標識是否對應;若所述消息命令中的業(yè)務端標識與本業(yè)務端標識對應,則確定所述消息命令是屬于本業(yè)務端的消息命令,并且所述消息命令所屬的業(yè)務端根據(jù)所述待執(zhí)行函數(shù)名和所述參數(shù)變量對所述測試用例進行測試。
3 根據(jù)權利要求1或2所述的方法,其特征在于,在所述消息命令所屬的業(yè)務端執(zhí)行完所述消息命令后,所述方法還包括所述處理器中的主控端通過查詢接口查詢所述結果存放區(qū)中存儲的執(zhí)行結果。
4.根據(jù)權利要求1至3任意一項所述的方法,其特征在于,所述執(zhí)行結果包括失敗信息和統(tǒng)計信息;其中,所述失敗信息包括業(yè)務端標識,失敗原因,文件名,程序行號;所述統(tǒng)計信息包括測試用例數(shù)目,測試用例成功數(shù)目及測試用例失敗數(shù)目;測試套數(shù)目,測試套成功數(shù)目,測試套失敗數(shù)目;斷言數(shù)目,斷言成功數(shù)目,斷言失敗數(shù)目。
5.一種多核測試測試裝置,其特征在于,所述裝置包括處理器和共享內存,其中所述處理器包括主控端和至少一個業(yè)務端;所述共享內存包括命令存放區(qū)和結果存放區(qū);所述主控端用于在執(zhí)行測試用例的過程中,發(fā)送消息命令到命令存放區(qū);其中,所述消息指令包括業(yè)務端標識,待執(zhí)行函數(shù)名和參數(shù)變量;所述業(yè)務端用于根據(jù)所述命令存放區(qū)中的消息命令中的業(yè)務端標識判斷所述消息命令是否屬于本業(yè)務端,若所述消息命令屬于本業(yè)務端,則所述消息命令所屬的業(yè)務端根據(jù)所述待執(zhí)行函數(shù)名和所述參數(shù)變量對所述測試用例進行測試;所述命令存放區(qū)用于存儲所述主控端發(fā)送的消息命令,以便所有業(yè)務端都能讀取所述消息命令;所述結果存放區(qū)用于存儲所述消息命令中指定業(yè)務端的執(zhí)行結果,以便所述主控端對執(zhí)行結果進行統(tǒng)計,所述執(zhí)行結果由所述消息命令中指定的業(yè)務端在執(zhí)行完所述消息命令后生成。
6.根據(jù)權利要求5所述的裝置,其特征在于,所述業(yè)務端具體用于判斷所述命令存放區(qū)中的所述消息命令中的業(yè)務端標識與本業(yè)務端標識是否對應;若所述消息命令中的業(yè)務端標識與本業(yè)務端標識對應,則確定所述消息命令是屬于本業(yè)務端的消息命令,并且所述消息命令所屬的業(yè)務端根據(jù)所述待執(zhí)行函數(shù)名和所述參數(shù)變量對所述測試用例進行測試。
7.根據(jù)權利要求5至6任意一項所述的裝置,其特征在于,所述多核測試測試裝置還包括查詢接口,用于所述處理器中的主控端通過所述查詢接口查詢所述結果存放區(qū)中存儲的執(zhí)行結果。
8.根據(jù)權利要求5至7任意一項所述的裝置,其特征在于,所述執(zhí)行結果包括失敗信息和統(tǒng)計信息;其中,所述失敗信息包括業(yè)務端標識,失敗原因,文件名,程序行號;所述統(tǒng)計信息包括測試用例數(shù)目,測試用例成功數(shù)目及測試用例失敗數(shù)目;測試套數(shù)目,測試套成功數(shù)目,測試套失敗數(shù)目;斷言數(shù)目,斷言成功數(shù)目,斷言失敗數(shù)目。
全文摘要
本發(fā)明實施例提供一種多核測試的方法和裝置,涉及軟件測試領域,能夠實現(xiàn)在多核CPU的不同核心上的不同類型的操作系統(tǒng)進行多種程序部署方式的軟件測試的工作,解決了測試工作對網(wǎng)絡功能的依賴問題,減小了系統(tǒng)性能損耗,提高了工作效率。通過主控端從多個測試用例中選擇一個測試用例執(zhí)行,并將消息命令發(fā)送到命令存放區(qū),而后令各個業(yè)務端判斷命令存放區(qū)中的消息命令是否為屬于本業(yè)務端的消息命令,若消息命令為本業(yè)務端的消息命令,則使本業(yè)務端執(zhí)行消息命令,令各個業(yè)務端在完成消息命令的執(zhí)行后,將執(zhí)行結果發(fā)送到結果存放區(qū),以便將執(zhí)行結果進行統(tǒng)計并存儲。本發(fā)明用于軟件的多核測試。
文檔編號G06F11/36GK102999423SQ201210459920
公開日2013年3月27日 申請日期2012年11月15日 優(yōu)先權日2012年11月15日
發(fā)明者王玉水 申請人:華為技術有限公司