用于自動(dòng)測(cè)試固件的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明的實(shí)施方式提供一種用于自動(dòng)測(cè)試固件的方法和系統(tǒng)。方法包括:確定所述固件所處的上下文環(huán)境;確定所述固件所處的硬件環(huán)境;至少部分地基于所述上下文環(huán)境和所述硬件環(huán)境,測(cè)試所述固件。通過該方法,可以在無法事先預(yù)知被測(cè)系統(tǒng)的實(shí)際軟硬件配置的情況下自動(dòng)實(shí)現(xiàn)對(duì)該固件的自動(dòng)測(cè)試,節(jié)約了人力資源,并提高了測(cè)試效率。
【專利說明】
用于自動(dòng)測(cè)試固件的方法和系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明的實(shí)施方式涉及固件測(cè)試領(lǐng)域,更具體地,涉及一種用于測(cè)試固件的方法和系統(tǒng)。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)軟件技術(shù)的高速發(fā)展,固件的開發(fā)和測(cè)試也成為研究的熱點(diǎn)之一。術(shù)語“固件”一般而言是指存儲(chǔ)于可擦除可編程只讀存儲(chǔ)器(EPROM)或電可擦除可編程只讀存儲(chǔ)器(EEPROM)等閃存芯片中的一種程序。這種程序通常擔(dān)任較為基礎(chǔ)、底層的工作。例如計(jì)算機(jī)主板上的基本輸入/輸出系統(tǒng)B1S就是固件的一個(gè)示例。然而,隨著集成電路技術(shù)的發(fā)展,固件與普通軟件的界限已經(jīng)不再特別明顯。因此,在本文中,如無必要,“固件”與軟件并不進(jìn)行嚴(yán)格區(qū)分。
[0003]通常,在固件的開發(fā)過程結(jié)束之后,需要測(cè)試人員來手動(dòng)地對(duì)所開發(fā)的固件進(jìn)行測(cè)試。這是由于被測(cè)系統(tǒng)狀態(tài)具有不確定性,導(dǎo)致對(duì)固件的測(cè)試用例或步驟往往需要進(jìn)行相應(yīng)的調(diào)整。在缺乏有效機(jī)制支持的情況下,這種不確定性使得對(duì)固件的測(cè)試難以變?yōu)樽詣?dòng)化。而手動(dòng)測(cè)試固件本身除了耗費(fèi)巨大的人力資源之外,還因?yàn)闊o法優(yōu)化測(cè)試流程而導(dǎo)致效率低下。
【發(fā)明內(nèi)容】
[0004]為了解決現(xiàn)有技術(shù)中存在的上述問題,本說明書提出如下方案。
[0005]根據(jù)本發(fā)明的第一方面,提供一種用于自動(dòng)測(cè)試固件的方法,包括:確定所述固件所處的上下文環(huán)境;確定所述固件所處的硬件環(huán)境;以及至少部分地基于所述上下文環(huán)境和所述硬件環(huán)境,測(cè)試所述固件。
[0006]在本發(fā)明的可選實(shí)施方式中,所述至少部分地基于所述上下文環(huán)境和所述硬件環(huán)境,測(cè)試所述固件包括:響應(yīng)于所述上下文環(huán)境與預(yù)疋的上下文環(huán)境不匹配,將所述固件從所述上下文環(huán)境引導(dǎo)至所述預(yù)足的上下文環(huán)境;以及在所述預(yù)定的上下文環(huán)境中進(jìn)行所述測(cè)試。
[0007]在本發(fā)明的可選實(shí)施方式中,所述至少部分地基于所述上下文環(huán)境和所述硬件環(huán)境,測(cè)試所述固件包括:根據(jù)所述硬件環(huán)境,修改用于所述測(cè)試的測(cè)試用例;以及至少使用修改的所述測(cè)試用例來測(cè)試所述固件。
[0008]在本發(fā)明的可選實(shí)施方式中,所述硬件環(huán)境包括硬件結(jié)構(gòu)和硬件接口,并且其中,所述硬件結(jié)構(gòu)被抽象化,以形成用于描述所述硬件結(jié)構(gòu)特性的代碼,且所述硬件接口被抽象化,以形成用于描述經(jīng)由所述硬件接口的通信的代碼。
[0009]在本發(fā)明的可選實(shí)施方式中,所述硬件結(jié)構(gòu)被抽象化包括:抽象化與所述測(cè)試有關(guān)的所述硬件結(jié)構(gòu)特性,而不抽象化與所述測(cè)試無關(guān)的所述硬件結(jié)構(gòu)特性。
[0010]根據(jù)本發(fā)明的第二方面,提供一種用于自動(dòng)測(cè)試多個(gè)固件的方法,包括:為所述多個(gè)固件中的每個(gè)固件分配優(yōu)先級(jí);至少部分地基于所述優(yōu)先級(jí)為所述多個(gè)固件確定測(cè)試順序;以及根據(jù)所述測(cè)試順序?yàn)樗龆鄠€(gè)固件中的每個(gè)固件執(zhí)行根據(jù)前述任一實(shí)施方式所述的方法。
[0011]在本發(fā)明的可選實(shí)施方式中,該方法還包括:為用于所述多個(gè)固件中的每個(gè)固件的測(cè)試任務(wù)確定到來時(shí)間;并且其中,所述測(cè)試順序還基于所述到來時(shí)間而確定。
[0012]在本發(fā)明的可選實(shí)施方式中,該方法還包括:針對(duì)所述多個(gè)固件中的當(dāng)前待測(cè)試固件,確定所述當(dāng)前待測(cè)試固件是否已經(jīng)進(jìn)入測(cè)試狀態(tài);以及響應(yīng)于所述固件已經(jīng)進(jìn)入所述測(cè)試狀態(tài),開始所述測(cè)試。
[0013]在本發(fā)明的可選實(shí)施方式中,該方法還包括:響應(yīng)于所述當(dāng)前待測(cè)試固件尚未進(jìn)入所述測(cè)試狀態(tài),跳過所述當(dāng)前待測(cè)試固件,而對(duì)按照所述測(cè)試順序的下一待測(cè)試固件確定是否已經(jīng)進(jìn)入所述測(cè)試狀態(tài)。
[0014]在本發(fā)明的可選實(shí)施方式中,所述測(cè)試針對(duì)多個(gè)不同的被測(cè)平臺(tái)類型或同一所述被測(cè)平臺(tái)類型下的多個(gè)待測(cè)試固件而并發(fā)地進(jìn)行。
[0015]根據(jù)本發(fā)明的第三方面,提供一種用于自動(dòng)測(cè)試固件的系統(tǒng),包括:上下文確定單元,被配置為確定所述固件所處的上下文環(huán)境;硬件確定單元,被配置為確定所述固件所處的硬件環(huán)境;以及測(cè)試單元,被配置為至少部分地基于所述上下文環(huán)境和所述硬件環(huán)境,測(cè)試所述固件。
[0016]在本發(fā)明的可選實(shí)施方式中,所述測(cè)試單元包括:引導(dǎo)單元,被配置為響應(yīng)于所述上下文環(huán)境與預(yù)定的上下文環(huán)境不匹配,將所述固件從所述上下文環(huán)境引導(dǎo)至所述預(yù)定的上下文環(huán)境;以及第一子測(cè)試單元,被配置為在所述預(yù)定的上下文環(huán)境中進(jìn)行所述測(cè)試。
[0017]在本發(fā)明的可選實(shí)施方式中,所述測(cè)試單元包括:修改單元,被配置為根據(jù)所述硬件環(huán)境,修改用于所述測(cè)試的測(cè)試用例;以及第二子測(cè)試單元,被配置為至少使用修改的所述測(cè)試用例來測(cè)試所述固件。
[0018]在本發(fā)明的可選實(shí)施方式中,所述硬件環(huán)境包括硬件結(jié)構(gòu)和硬件接口,并且其中,所述硬件結(jié)構(gòu)被抽象化,以形成用于描述所述硬件結(jié)構(gòu)特性的代碼,且所述硬件接口被抽象化,以形成用于描述經(jīng)由所述硬件接口的通信的代碼。
[0019]在本發(fā)明的可選實(shí)施方式中,所述硬件結(jié)構(gòu)被抽象化包括:抽象化與所述測(cè)試有關(guān)的所述硬件結(jié)構(gòu)特性,而不抽象化與所述測(cè)試無關(guān)的所述硬件結(jié)構(gòu)特性。
[0020]根據(jù)本發(fā)明的第四方面,提供一種用于自動(dòng)測(cè)試多個(gè)固件的系統(tǒng),包括:優(yōu)先級(jí)分配單元,被配置為為所述多個(gè)固件中的每個(gè)固件分配優(yōu)先級(jí);順序確定單元,被配置為至少部分地基于所述優(yōu)先級(jí)為所述多個(gè)固件確定測(cè)試順序;以及執(zhí)行單元,被配置為根據(jù)所述測(cè)試順序?yàn)樗龆鄠€(gè)固件中的每個(gè)固件執(zhí)行根據(jù)權(quán)利要求1至5中任一項(xiàng)所述的方法。
[0021]在本發(fā)明的可選實(shí)施方式中,該系統(tǒng)還包括:到來時(shí)間確定單元,被配置為為用于所述多個(gè)固件中的每個(gè)固件的測(cè)試任務(wù)確定到來時(shí)間;并且其中,所述順序確定單元還基于所述到來時(shí)間而確定所述測(cè)試順序。
[0022]在本發(fā)明的可選實(shí)施方式中,該系統(tǒng)還包括:狀態(tài)確定單元,被配置為針對(duì)所述多個(gè)固件中的當(dāng)前待測(cè)試固件,確定所述當(dāng)前待測(cè)試固件是否已經(jīng)進(jìn)入測(cè)試狀態(tài);并且其中,所述測(cè)試單元被配置為響應(yīng)于所述固件已經(jīng)進(jìn)入所述測(cè)試狀態(tài),開始所述測(cè)試。
[0023]在本發(fā)明的可選實(shí)施方式中,所述測(cè)試單元還被配置為:響應(yīng)于所述當(dāng)前待測(cè)試固件尚未進(jìn)入所述測(cè)試狀態(tài),跳過所述當(dāng)前待測(cè)試固件,而對(duì)按照所述測(cè)試順序的下一待測(cè)試固件確定是否已經(jīng)進(jìn)入所述測(cè)試狀態(tài)。
[0024]在本發(fā)明的可選實(shí)施方式中,所述測(cè)試針對(duì)多個(gè)不同的被測(cè)平臺(tái)類型或同一所述被測(cè)平臺(tái)類型下的多個(gè)待測(cè)試固件而并發(fā)地進(jìn)行。
[0025]根據(jù)本發(fā)明的實(shí)施方式,能夠在無法事先預(yù)知被測(cè)系統(tǒng)的實(shí)際軟硬件配置的情況下自動(dòng)實(shí)現(xiàn)對(duì)該固件的自動(dòng)測(cè)試,節(jié)約了人力資源,并提高了測(cè)試效率。
【附圖說明】
[0026]通過結(jié)合附圖對(duì)本公開示例性實(shí)施方式進(jìn)行更詳細(xì)的描述,本公開的上述以及其它目的、特征和優(yōu)勢(shì)將變得更加明顯,其中,在本公開示例性實(shí)施方式中,相同的參考標(biāo)號(hào)通常代表相同部件。
[0027]圖1示出了根據(jù)本發(fā)明示例性實(shí)施方式的用于自動(dòng)測(cè)試固件的方法100的流程圖。
[0028]圖2圖示了根據(jù)本發(fā)明示例性實(shí)施方式的用于自動(dòng)測(cè)試多個(gè)固件的方法200的流程圖;
[0029]圖3示出了根據(jù)本發(fā)明示例性實(shí)施方式的用于自動(dòng)測(cè)試固件的系統(tǒng)300的示意性框圖;
[0030]圖4示出了根據(jù)本發(fā)明示例性實(shí)施方式的用于自動(dòng)測(cè)試多個(gè)固件的系統(tǒng)400的示意性框圖;
[0031]圖5示出了適于用來實(shí)踐本發(fā)明實(shí)施方式的計(jì)算機(jī)系統(tǒng)500的示意性框圖。
【具體實(shí)施方式】
[0032]下面將參照附圖更詳細(xì)地描述本公開的優(yōu)選實(shí)施方式。雖然附圖中顯示了本公開的優(yōu)選實(shí)施方式,然而應(yīng)該理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施方式所限制。相反,提供這些實(shí)施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0033]圖1示出了根據(jù)本發(fā)明示例性實(shí)施方式的用于自動(dòng)測(cè)試固件的方法100的流程圖。如圖所示,方法100開始以后,首先進(jìn)到步驟S101,確定該固件所處的上下文環(huán)境。需要注意的是,本文中所稱的“上下文環(huán)境”主要指代相對(duì)于硬件環(huán)境而言的“軟件環(huán)境”,即該固件所在的被測(cè)系統(tǒng)(以下簡(jiǎn)稱為“被測(cè)系統(tǒng)”)所處于的“狀態(tài)”。在對(duì)固件的測(cè)試任務(wù)開始之前,首先需要了解該固件所處的上下文環(huán)境。該上下文環(huán)境包括但不限于WINDOWS操作系統(tǒng)、LINUX操作系統(tǒng)、POST、PXE操作系統(tǒng)、Debugger、B1S等等。
[0034]接著,方法100前進(jìn)到步驟S102,確定該固件所處的硬件環(huán)境。如前所述,這里的“硬件環(huán)境”是相對(duì)于“上下文環(huán)境”(即“軟件環(huán)境”)而言。例如,該硬件環(huán)境包括被測(cè)系統(tǒng)的實(shí)際硬件配置。在一個(gè)實(shí)現(xiàn)中,可以利用被測(cè)系統(tǒng)在特定狀態(tài)下的行為先驗(yàn)知識(shí)對(duì)被測(cè)系統(tǒng)進(jìn)行檢測(cè),根據(jù)檢測(cè)結(jié)果來確定實(shí)際的硬件配置。術(shù)語“先驗(yàn)知識(shí)”包括但不限于通過歷史行為所獲知的被測(cè)系統(tǒng)的硬件配置信息。
[0035]接下來,方法100前進(jìn)到步驟S103,至少部分地基于該上下文環(huán)境和該硬件環(huán)境,測(cè)試該固件。根據(jù)本發(fā)明的一個(gè)實(shí)施方式,步驟S103可以包括響應(yīng)于在步驟SlOl中確定的上下文環(huán)境與預(yù)定的上下文環(huán)境(即,目標(biāo)上下文環(huán)境)不匹配,而將該固件從該上下文環(huán)境引導(dǎo)至該預(yù)定的上下文環(huán)境。本領(lǐng)域技術(shù)人員可以理解,在測(cè)試過程中,可以根據(jù)測(cè)試目的而將被測(cè)系統(tǒng)引導(dǎo)至目標(biāo)系統(tǒng)狀態(tài),通過檢查在目標(biāo)系統(tǒng)狀態(tài)下被測(cè)系統(tǒng)的行為與預(yù)期結(jié)果的匹配程度來判定固件的質(zhì)量。然而,本發(fā)明并不必然局限于此。此外,根據(jù)本發(fā)明的另一個(gè)實(shí)施方式,步驟S103也可以包括根據(jù)在步驟S102中所確定的硬件環(huán)境來修改用于該測(cè)試的測(cè)試用例,并且至少使用該修改的測(cè)試用例來測(cè)試該固件。例如,在實(shí)現(xiàn)中,一個(gè)測(cè)試案例可能包括有針對(duì)硬件環(huán)境中的各種不同硬件部件的測(cè)試片段,此時(shí)可以根據(jù)對(duì)被測(cè)系統(tǒng)的硬件環(huán)境檢測(cè)來裁剪掉當(dāng)前硬件環(huán)境中不涉及的硬件部件的相關(guān)測(cè)試片段,從而達(dá)到節(jié)約資源的效果。
[0036]根據(jù)本發(fā)明的一個(gè)實(shí)施方式,上述硬件環(huán)境可以包括硬件結(jié)構(gòu)和硬件接口。在實(shí)踐中,可以基于“面向?qū)ο缶幊獭钡乃枷雽?duì)相關(guān)硬件進(jìn)行抽象化,從而實(shí)現(xiàn)對(duì)固件的測(cè)試。例如,可以將該硬件結(jié)構(gòu)抽象化,以形成用于描述所述硬件結(jié)構(gòu)特性的代碼。作為示例,可以將硬件結(jié)構(gòu)抽象成軟件的樹狀結(jié)構(gòu)。通過對(duì)硬件結(jié)構(gòu)的抽象化,能夠用代碼來描述硬件配置,從而有利于通過設(shè)置代碼指令來調(diào)控硬件的功能。在進(jìn)一步的可選實(shí)施方式中,可以僅抽象化與固件測(cè)試有關(guān)的硬件結(jié)構(gòu)特性,而不抽象化與該固件測(cè)試無關(guān)的硬件結(jié)構(gòu)特性,從而進(jìn)一步節(jié)約資源,提高固件測(cè)試的效率。
[0037]備選地或附加地,也可以將該硬件接口抽象化,以形成用于描述經(jīng)由所述硬件接口的通信的代碼。在實(shí)踐中往往借助于各種通信協(xié)議與被測(cè)系統(tǒng)通信,如串口、LAN等。通過對(duì)硬件接口的抽象化,可以用代碼來描述經(jīng)由該接口的通信,從而有利于通過設(shè)置代碼指令來規(guī)劃和定義接口的相關(guān)功能。
[0038]需要注意的是,可以根據(jù)對(duì)被測(cè)系統(tǒng)的硬件結(jié)構(gòu)和硬件接口的抽象,通過設(shè)置相關(guān)指令來收集被測(cè)系統(tǒng)響應(yīng)于特定設(shè)置的屬性和行為,從而在測(cè)試過程中能夠動(dòng)態(tài)地對(duì)被測(cè)系統(tǒng)的先驗(yàn)知識(shí)加以更新。而這些更新的先驗(yàn)知識(shí)轉(zhuǎn)而又可以更為準(zhǔn)確地如前所述用來確定被測(cè)系統(tǒng)的硬件環(huán)境。
[0039]至此,方法100結(jié)束。
[0040]可以看到,方法100通過引入對(duì)固件所處的上下文環(huán)境和硬件環(huán)境的具體考慮,能夠在無法事先預(yù)知被測(cè)系統(tǒng)的實(shí)際軟硬件配置的情況下自動(dòng)實(shí)現(xiàn)對(duì)該固件的自動(dòng)測(cè)試,節(jié)約了人力資源,并提高了測(cè)試效率。
[0041]圖2圖示了根據(jù)本發(fā)明示例性實(shí)施方式的用于自動(dòng)測(cè)試多個(gè)固件的方法200的流程圖。
[0042]如圖2所示,方法200開始之后,首先進(jìn)到步驟S201,為該多個(gè)固件中的每個(gè)固件分配優(yōu)先級(jí)。在存在多個(gè)固件需要測(cè)試(即,存在針對(duì)多個(gè)固件的多個(gè)測(cè)試任務(wù))的情況下,根據(jù)本發(fā)明的一個(gè)實(shí)施方式,可以采用為每個(gè)固件分配測(cè)試優(yōu)先級(jí)的方式來協(xié)調(diào)對(duì)固件測(cè)試任務(wù)的調(diào)度。
[0043]接下來,方法200進(jìn)到步驟S202,至少部分地基于該優(yōu)先級(jí)為該多個(gè)固件確定測(cè)試順序。例如,在進(jìn)行任務(wù)調(diào)度時(shí),可以優(yōu)先測(cè)試優(yōu)先級(jí)較高的任務(wù)。然而,本發(fā)明并不局限于此,即,其他因素也可以用來幫助確定該多個(gè)固件的測(cè)試順序。例如,還可以為該多個(gè)固件中的每個(gè)固件的測(cè)試任務(wù)確定到來時(shí)間,并且基于該到來時(shí)間來進(jìn)一步確定該多個(gè)固件的測(cè)試順序。
[0044]然后,方法200前進(jìn)到步驟S203,根據(jù)該測(cè)試順序?yàn)樵摱鄠€(gè)固件中的每個(gè)固件執(zhí)行前述參照方法100所描述的各種方法步驟。
[0045]根據(jù)本發(fā)明的一個(gè)實(shí)施方式,可以為每個(gè)所開發(fā)的固件設(shè)置多種狀態(tài),例如:“固件開發(fā)狀態(tài)”,“準(zhǔn)備測(cè)試狀態(tài)”、“測(cè)試狀態(tài)”等。其中,“固件開發(fā)狀態(tài)”表示該固件正在開發(fā)過程中,并未準(zhǔn)備好被測(cè)試。當(dāng)開發(fā)完成后,可以為該“固件開發(fā)狀態(tài)”設(shè)置退出標(biāo)志(如,“固件可用”)來表示固件開發(fā)狀態(tài)的退出,同時(shí)表示“準(zhǔn)備測(cè)試狀態(tài)”的進(jìn)入?!皽?zhǔn)備測(cè)試狀態(tài)”表示固件處于已經(jīng)完成開發(fā),但處于種種原因還未發(fā)出測(cè)試請(qǐng)求的狀態(tài)。根據(jù)本發(fā)明的一個(gè)實(shí)施方式,在“準(zhǔn)備測(cè)試狀態(tài)”中,可以為每個(gè)任務(wù)分配步驟S201中所涉及的測(cè)試優(yōu)先級(jí)。一旦測(cè)試請(qǐng)求發(fā)出,固件就處于“測(cè)試狀態(tài)”,此時(shí)可以對(duì)固件進(jìn)行如方法100以及200中所涉及的各種相關(guān)方法步驟。在實(shí)現(xiàn)中,諸如“開發(fā)狀態(tài)”、“準(zhǔn)備測(cè)試狀態(tài),,以及“測(cè)試狀態(tài)”之類的各種狀態(tài)可以記錄在文件中供查詢。在根據(jù)本發(fā)明的另一實(shí)施方式中,該文件還可以用于記載諸如步驟S201中所涉及的優(yōu)先級(jí)信息等其他信息。因此,方法200可以在一個(gè)實(shí)施方式中可選地包括針對(duì)多個(gè)固件中的當(dāng)前待測(cè)試固件,確定其是否已經(jīng)進(jìn)入測(cè)試狀態(tài),以及響應(yīng)于該固件已經(jīng)進(jìn)入測(cè)試狀態(tài),進(jìn)行該測(cè)試。在另一個(gè)實(shí)施方式中,備選地,響應(yīng)于當(dāng)前待測(cè)試固件尚未進(jìn)入測(cè)試狀態(tài)(例如處于“開發(fā)狀態(tài)”或“準(zhǔn)備測(cè)試狀態(tài)”),則可以跳過該固件,而對(duì)按照測(cè)試順序的下一待測(cè)試固件確定其是否已經(jīng)進(jìn)入測(cè)試狀態(tài)。這樣,在原本測(cè)試順序靠前的固件尚未準(zhǔn)備好進(jìn)行測(cè)試時(shí),方法不會(huì)阻塞于此,而是可以嘗試對(duì)下一固件進(jìn)行測(cè)試。
[0046]此外,在根據(jù)本發(fā)明的另一實(shí)施方式中,還可以針對(duì)多個(gè)不同的被測(cè)平臺(tái)類型或同一被測(cè)平臺(tái)類型下的多個(gè)待測(cè)試固件來并發(fā)地進(jìn)行測(cè)試。在一個(gè)示例性實(shí)現(xiàn)中,并發(fā)進(jìn)行的多個(gè)測(cè)試可以在一個(gè)測(cè)試界面中呈現(xiàn)。
[0047]接下來參看圖3描述根據(jù)本發(fā)明示例性實(shí)施方式的用于自動(dòng)測(cè)試固件的系統(tǒng)300。
[0048]如圖所示,系統(tǒng)300包括上下文確定單元301,被配置為確定所述固件所處的上下文環(huán)境;硬件確定單元302,被配置為確定所述固件所處的硬件環(huán)境;以及測(cè)試單元303,被配置為至少部分地基于所述上下文環(huán)境和所述硬件環(huán)境,測(cè)試所述固件。
[0049]在本發(fā)明的可選實(shí)施方式中,測(cè)試單元303包括:引導(dǎo)單元,被配置為響應(yīng)于所述上下文環(huán)境與預(yù)定的上下文環(huán)境不匹配,將所述固件從所述上下文環(huán)境引導(dǎo)至所述預(yù)定的上下文環(huán)境;以及第一子測(cè)試單元,被配置為在所述預(yù)定的上下文環(huán)境中進(jìn)行所述測(cè)試。
[0050]在本發(fā)明的可選實(shí)施方式中,所述測(cè)試單元303包括:修改單元,被配置為根據(jù)所述硬件環(huán)境,修改用于所述測(cè)試的測(cè)試用例;以及第二子測(cè)試單元,被配置為至少使用修改的所述測(cè)試用例來測(cè)試所述固件。
[0051 ] 在本發(fā)明的可選實(shí)施方式中,所述硬件環(huán)境包括硬件結(jié)構(gòu)和硬件接口,并且其中,所述硬件結(jié)構(gòu)被抽象化,以形成用于描述所述硬件結(jié)構(gòu)特性的代碼,且所述硬件接口被抽象化,以形成用于描述經(jīng)由所述硬件接口的通信的代碼。
[0052]在本發(fā)明的可選實(shí)施方式中,所述硬件結(jié)構(gòu)被抽象化包括:抽象化與所述測(cè)試有關(guān)的所述硬件結(jié)構(gòu)特性,而不抽象化與所述測(cè)試無關(guān)的所述硬件結(jié)構(gòu)特性。
[0053]圖4進(jìn)一步描述根據(jù)本發(fā)明示例性實(shí)施方式的用于自動(dòng)測(cè)試多個(gè)固件的系統(tǒng)400。如圖所示,系統(tǒng)400包括優(yōu)先級(jí)分配單元401,被配置為為所述多個(gè)固件中的每個(gè)固件分配優(yōu)先級(jí);順序確定單元402,被配置為至少部分地基于所述優(yōu)先級(jí)為所述多個(gè)固件確定測(cè)試順序;以及執(zhí)行單元403,被配置為根據(jù)所述測(cè)試順序?yàn)樗龆鄠€(gè)固件中的每個(gè)固件執(zhí)行根據(jù)前述方法100和200中任何相關(guān)方案所述的方法。
[0054]在本發(fā)明的可選實(shí)施方式中,系統(tǒng)400還包括:到來時(shí)間確定單元,被配置為為用于所述多個(gè)固件中的每個(gè)固件的測(cè)試任務(wù)確定到來時(shí)間;并且其中,所述順序確定單元還基于所述到來時(shí)間而確定所述測(cè)試順序。
[0055]在本發(fā)明的可選實(shí)施方式中,系統(tǒng)400還包括:狀態(tài)確定單元,被配置為針對(duì)所述多個(gè)固件中的當(dāng)前待測(cè)試固件,確定所述當(dāng)前待測(cè)試固件是否已經(jīng)進(jìn)入測(cè)試狀態(tài);并且其中,系統(tǒng)300中的所述測(cè)試單元303被配置為響應(yīng)于所述固件已經(jīng)進(jìn)入所述測(cè)試狀態(tài),開始所述測(cè)試。
[0056]在本發(fā)明的可選實(shí)施方式中,系統(tǒng)300中的所述測(cè)試單元303還被配置為:響應(yīng)于所述當(dāng)前待測(cè)試固件尚未進(jìn)入所述測(cè)試狀態(tài),跳過所述當(dāng)前待測(cè)試固件,而對(duì)按照所述測(cè)試順序的下一待測(cè)試固件確定是否已經(jīng)進(jìn)入所述測(cè)試狀態(tài)。
[0057]在本發(fā)明的可選實(shí)施方式中,所述測(cè)試針對(duì)多個(gè)不同的被測(cè)平臺(tái)類型或同一所述被測(cè)平臺(tái)類型下的多個(gè)待測(cè)試固件而并發(fā)地進(jìn)行。
[0058]下面參考圖5,其示出了適于用來實(shí)踐本發(fā)明實(shí)施方式的計(jì)算機(jī)系統(tǒng)500的示意性框圖。例如,圖5所示的計(jì)算機(jī)系統(tǒng)500可以用于實(shí)現(xiàn)如上文描述的用于確定應(yīng)用正確性的系統(tǒng)300和裝置400的各個(gè)部件,也可以用于固化或?qū)崿F(xiàn)如上文描述的用于確定應(yīng)用正確性的方法200的各個(gè)步驟。
[0059]如圖5所示,計(jì)算機(jī)系統(tǒng)可以包括..CPU (中央處理單元)501、RAM (隨機(jī)存取存儲(chǔ)器)502、ROM (只讀存儲(chǔ)器)503、系統(tǒng)總線504、硬盤控制器505、鍵盤控制器506、串行接口控制器507、并行接口控制器508、顯示控制器509、硬盤510、鍵盤511、串行外部設(shè)備512、并行外部設(shè)備513和顯示器514。在這些設(shè)備中,與系統(tǒng)總線504耦合的有CPU 501、RAM502、ROM 503、硬盤控制器505、鍵盤控制器506、串行控制器507、并行控制器508和顯示控制器509。硬盤510與硬盤控制器505耦合,鍵盤511與鍵盤控制器506耦合,串行外部設(shè)備512與串行接口控制器507耦合,并行外部設(shè)備513與并行接口控制器508耦合,以及顯示器514與顯示控制器509耦合。應(yīng)當(dāng)理解,圖5所述的結(jié)構(gòu)框圖僅僅為了示例的目的而示出的,而不是對(duì)本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況而增加或者減少某些設(shè)備。
[0060]如上所述,系統(tǒng)300可以實(shí)現(xiàn)為純硬件,例如芯片、ASIC、SOC等。這些硬件可以集成在計(jì)算機(jī)系統(tǒng)500中。此外,本發(fā)明的實(shí)施方式也可以通過計(jì)算機(jī)程序產(chǎn)品的形式實(shí)現(xiàn)。例如,參考圖1描述的方法100和/或參考圖2描述的方法200可以通過計(jì)算機(jī)程序產(chǎn)品來實(shí)現(xiàn)。該計(jì)算機(jī)程序產(chǎn)品可以存儲(chǔ)在例如圖5所示的RAM 504、R0M504、硬盤510和/或任何適當(dāng)?shù)拇鎯?chǔ)介質(zhì)中,或者通過網(wǎng)絡(luò)從適當(dāng)?shù)奈恢孟螺d到計(jì)算機(jī)系統(tǒng)500上。計(jì)算機(jī)程序產(chǎn)品可以包括計(jì)算機(jī)代碼部分,其包括可由適當(dāng)?shù)奶幚碓O(shè)備(例如,圖5中示出的CPU501)執(zhí)行的程序指令。所述程序指令至少可以包括用于實(shí)現(xiàn)方法100和/或200的步驟的指令。這些指令例如包括:用于確定所述固件所處的上下文環(huán)境的指令;用于確定所述固件所處的硬件環(huán)境的指令;以及用于至少部分地基于所述上下文環(huán)境和所述硬件環(huán)境,測(cè)試所述固件的指令。
[0061]上文已經(jīng)結(jié)合若干【具體實(shí)施方式】闡釋了本發(fā)明的精神和原理。根據(jù)本發(fā)明的用于自動(dòng)測(cè)試固件的方法和系統(tǒng)相對(duì)于現(xiàn)有技術(shù)具有諸多優(yōu)點(diǎn)。例如,本發(fā)明通過提供適當(dāng)?shù)姆椒ê拖到y(tǒng)來支持對(duì)固件測(cè)試的自動(dòng)化實(shí)現(xiàn)。通過本發(fā)明提供的實(shí)施方式,可以在無法事先預(yù)知被測(cè)系統(tǒng)的實(shí)際軟硬件配置的情況下自動(dòng)實(shí)現(xiàn)對(duì)該固件的自動(dòng)測(cè)試,節(jié)約了人力資源,并提高了測(cè)試效率。
[0062]應(yīng)當(dāng)注意,本發(fā)明的實(shí)施方式可以通過硬件、軟件或者軟件和硬件的結(jié)合來實(shí)現(xiàn)。硬件部分可以利用專用邏輯來實(shí)現(xiàn);軟件部分可以存儲(chǔ)在存儲(chǔ)器中,由適當(dāng)?shù)闹噶顖?zhí)行系統(tǒng),例如微處理器或者專用設(shè)計(jì)硬件來執(zhí)行。本領(lǐng)域的普通技術(shù)人員可以理解上述的設(shè)備和方法可以使用計(jì)算機(jī)可執(zhí)行指令和/或包含在處理器控制代碼中來實(shí)現(xiàn),例如在諸如磁盤、CD或DVD-ROM的載體介質(zhì)、諸如只讀存儲(chǔ)器(固件)的可編程的存儲(chǔ)器或者諸如光學(xué)或電子信號(hào)載體的數(shù)據(jù)載體上提供了這樣的代碼。本發(fā)明的設(shè)備及其模塊可以由諸如超大規(guī)模集成電路或門陣列、諸如邏輯芯片、晶體管等的半導(dǎo)體、或者諸如現(xiàn)場(chǎng)可編程門陣列、可編程邏輯設(shè)備等的可編程硬件設(shè)備的硬件電路實(shí)現(xiàn),也可以用由各種類型的處理器執(zhí)行的軟件實(shí)現(xiàn),也可以由上述硬件電路和軟件的結(jié)合例如固件來實(shí)現(xiàn)。
[0063]應(yīng)當(dāng)注意,盡管在上文詳細(xì)描述中提及了設(shè)備的若干裝置或子裝置,但是這種劃分僅僅并非強(qiáng)制性的。實(shí)際上,根據(jù)本發(fā)明的實(shí)施方式,上文描述的兩個(gè)或更多裝置的特征和功能可以在一個(gè)裝置中具體化。反之,上文描述的一個(gè)裝置的特征和功能可以進(jìn)一步劃分為由多個(gè)裝置來具體化。
[0064]此外,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實(shí)現(xiàn)期望的結(jié)果。相反,流程圖中描繪的步驟可以改變執(zhí)行順序。附加地或備選地,可以省略某些步驟,將多個(gè)步驟合并為一個(gè)步驟執(zhí)行,和/或?qū)⒁粋€(gè)步驟分解為多個(gè)步驟執(zhí)行。
[0065]雖然已經(jīng)參考若干【具體實(shí)施方式】描述了本發(fā)明,但是應(yīng)該理解,本發(fā)明并不限于所公開的【具體實(shí)施方式】。本發(fā)明旨在涵蓋所附權(quán)利要求的精神和范圍內(nèi)所包括的各種修改和等同布置。所附權(quán)利要求的范圍符合最寬泛的解釋,從而包含所有這樣的修改及等同結(jié)構(gòu)和功能。
【主權(quán)項(xiàng)】
1.一種用于自動(dòng)測(cè)試固件的方法,包括: 確定所述固件所處的上下文環(huán)境; 確定所述固件所處的硬件環(huán)境;以及 至少部分地基于所述上下文環(huán)境和所述硬件環(huán)境,測(cè)試所述固件。2.根據(jù)權(quán)利要求1所述的方法,其中,所述至少部分地基于所述上下文環(huán)境和所述硬件環(huán)境,測(cè)試所述固件包括: 響應(yīng)于所述上下文環(huán)境與預(yù)定的上下文環(huán)境不匹配,將所述固件從所述上下文環(huán)境引導(dǎo)至所述預(yù)定的上下文環(huán)境;以及 在所述預(yù)定的上下文環(huán)境中進(jìn)行所述測(cè)試。3.根據(jù)權(quán)利要求1所述的方法,其中,所述至少部分地基于所述上下文環(huán)境和所述硬件環(huán)境,測(cè)試所述固件包括: 根據(jù)所述硬件環(huán)境,修改用于所述測(cè)試的測(cè)試用例;以及 至少使用修改的所述測(cè)試用例來測(cè)試所述固件。4.根據(jù)權(quán)利要求1所述的方法,其中,所述硬件環(huán)境包括硬件結(jié)構(gòu)和硬件接口,并且其中,所述硬件結(jié)構(gòu)被抽象化,以形成用于描述所述硬件結(jié)構(gòu)特性的代碼,且所述硬件接口被抽象化,以形成用于描述經(jīng)由所述硬件接口的通信的代碼。5.根據(jù)權(quán)利要求4所述的方法,其中,所述硬件結(jié)構(gòu)被抽象化包括: 抽象化與所述測(cè)試有關(guān)的所述硬件結(jié)構(gòu)特性,而不抽象化與所述測(cè)試無關(guān)的所述硬件結(jié)構(gòu)特性。6.一種用于自動(dòng)測(cè)試多個(gè)固件的方法,包括: 為所述多個(gè)固件中的每個(gè)固件分配優(yōu)先級(jí); 至少部分地基于所述優(yōu)先級(jí)為所述多個(gè)固件確定測(cè)試順序;以及根據(jù)所述測(cè)試順序?yàn)樗龆鄠€(gè)固件中的每個(gè)固件執(zhí)行根據(jù)權(quán)利要求1至5中任一項(xiàng)所述的方法。7.根據(jù)權(quán)利要求6所述的方法,還包括: 為用于所述多個(gè)固件中的每個(gè)固件的測(cè)試任務(wù)確定到來時(shí)間; 并且其中,所述測(cè)試順序還基于所述到來時(shí)間而確定。8.根據(jù)權(quán)利要求6所述的方法,還包括: 針對(duì)所述多個(gè)固件中的當(dāng)前待測(cè)試固件,確定所述當(dāng)前待測(cè)試固件是否已經(jīng)進(jìn)入測(cè)試狀態(tài);以及 響應(yīng)于所述固件已經(jīng)進(jìn)入所述測(cè)試狀態(tài),開始所述測(cè)試。9.根據(jù)權(quán)利要求8所述的方法,還包括: 響應(yīng)于所述當(dāng)前待測(cè)試固件尚未進(jìn)入所述測(cè)試狀態(tài),跳過所述當(dāng)前待測(cè)試固件,而對(duì)按照所述測(cè)試順序的下一待測(cè)試固件確定是否已經(jīng)進(jìn)入所述測(cè)試狀態(tài)。10.根據(jù)權(quán)利要求6所述的方法,其中,所述測(cè)試針對(duì)多個(gè)不同的被測(cè)平臺(tái)類型或同一所述被測(cè)平臺(tái)類型下的多個(gè)待測(cè)試固件而并發(fā)地進(jìn)行。11.一種用于自動(dòng)測(cè)試固件的系統(tǒng),包括: 上下文確定單元,被配置為確定所述固件所處的上下文環(huán)境; 硬件確定單元,被配置為確定所述固件所處的硬件環(huán)境;以及 測(cè)試單元,被配置為至少部分地基于所述上下文環(huán)境和所述硬件環(huán)境,測(cè)試所述固件。12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,所述測(cè)試單元包括: 引導(dǎo)單元,被配置為響應(yīng)于所述上下文環(huán)境與預(yù)定的上下文環(huán)境不匹配,將所述固件從所述上下文環(huán)境引導(dǎo)至所述預(yù)定的上下文環(huán)境;以及 第一子測(cè)試單元,被配置為在所述預(yù)定的上下文環(huán)境中進(jìn)行所述測(cè)試。13.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,所述測(cè)試單元包括: 修改單元,被配置為根據(jù)所述硬件環(huán)境,修改用于所述測(cè)試的測(cè)試用例;以及 第二子測(cè)試單元,被配置為至少使用修改的所述測(cè)試用例來測(cè)試所述固件。14.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,所述硬件環(huán)境包括硬件結(jié)構(gòu)和硬件接口,并且其中,所述硬件結(jié)構(gòu)被抽象化,以形成用于描述所述硬件結(jié)構(gòu)特性的代碼,且所述硬件接口被抽象化,以形成用于描述經(jīng)由所述硬件接口的通信的代碼。15.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,所述硬件結(jié)構(gòu)被抽象化包括: 抽象化與所述測(cè)試有關(guān)的所述硬件結(jié)構(gòu)特性,而不抽象化與所述測(cè)試無關(guān)的所述硬件結(jié)構(gòu)特性。16.一種用于自動(dòng)測(cè)試多個(gè)固件的系統(tǒng),包括: 優(yōu)先級(jí)分配單元,被配置為為所述多個(gè)固件中的每個(gè)固件分配優(yōu)先級(jí); 順序確定單元,被配置為至少部分地基于所述優(yōu)先級(jí)為所述多個(gè)固件確定測(cè)試順序;以及 執(zhí)行單元,被配置為根據(jù)所述測(cè)試順序?yàn)樗龆鄠€(gè)固件中的每個(gè)固件執(zhí)行根據(jù)權(quán)利要求I至5中任一項(xiàng)所述的方法。17.根據(jù)權(quán)利要求16所述的系統(tǒng),還包括: 到來時(shí)間確定單元,被配置為為用于所述多個(gè)固件中的每個(gè)固件的測(cè)試任務(wù)確定到來時(shí)間; 并且其中,所述順序確定單元還基于所述到來時(shí)間而確定所述測(cè)試順序。18.根據(jù)權(quán)利要求16所述的系統(tǒng),還包括: 狀態(tài)確定單元,被配置為針對(duì)所述多個(gè)固件中的當(dāng)前待測(cè)試固件,確定所述當(dāng)前待測(cè)試固件是否已經(jīng)進(jìn)入測(cè)試狀態(tài); 并且其中,所述測(cè)試單元被配置為響應(yīng)于所述固件已經(jīng)進(jìn)入所述測(cè)試狀態(tài),開始所述測(cè)試。19.根據(jù)權(quán)利要求18所述的系統(tǒng),其中,所述測(cè)試單元還被配置為:響應(yīng)于所述當(dāng)前待測(cè)試固件尚未進(jìn)入所述測(cè)試狀態(tài),跳過所述當(dāng)前待測(cè)試固件,而對(duì)按照所述測(cè)試順序的下一待測(cè)試固件確定是否已經(jīng)進(jìn)入所述測(cè)試狀態(tài)。20.根據(jù)權(quán)利要求16所述的系統(tǒng),其中,所述測(cè)試針對(duì)多個(gè)不同的被測(cè)平臺(tái)類型或同一所述被測(cè)平臺(tái)類型下的多個(gè)待測(cè)試固件而并發(fā)地進(jìn)行。
【文檔編號(hào)】G06F11/36GK105893233SQ201410813967
【公開日】2016年8月24日
【申請(qǐng)日】2014年12月19日
【發(fā)明人】楊云龍, 張揚(yáng)
【申請(qǐng)人】伊姆西公司