專(zhuān)利名稱(chēng):一種實(shí)現(xiàn)嵌入式軟件異常測(cè)試的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式軟件測(cè)試領(lǐng)域,尤其涉及一種實(shí)現(xiàn)嵌入式軟件異常測(cè)試的方法及系統(tǒng)。
背景技術(shù):
嵌入式軟件系統(tǒng)由于受到開(kāi)發(fā)環(huán)境的限制,在軟件測(cè)試方面隨著對(duì)象規(guī)模的擴(kuò)大,從單元、集成到系統(tǒng)的難度也不斷加大,異常測(cè)試內(nèi)容更加難以實(shí)施。尤其在嵌入式系統(tǒng)中信令控制流是搭建各種業(yè)務(wù)流程的關(guān)鍵,屬于神經(jīng)系統(tǒng),針對(duì)信令的異常處理就顯得格外重要,對(duì)應(yīng)的異常測(cè)試必須實(shí)施,但在測(cè)試手段上比較受限。
軟件處理的異常分為異常流程和異常取值,前者為不走原來(lái)流程,產(chǎn)生其它分支處理;異常取值則走原有流程,但是數(shù)據(jù)取值被改變。
傳統(tǒng)的軟件異常測(cè)試最簡(jiǎn)單是手工操作系統(tǒng)產(chǎn)生異常激勵(lì),這種方式只能造成簡(jiǎn)單少數(shù)的異常條件,如異常流程,不能滿足測(cè)試要求;另外的方式就是直接修改源程序,在其中寫(xiě)入異常變化的代碼,當(dāng)流程走到時(shí)就按代碼要求產(chǎn)生異常條件,這種方式可擴(kuò)大異常的覆蓋,但是屬于“硬編碼”類(lèi)型,需要變換條件時(shí)又得修改代碼再編譯運(yùn)行,十分繁瑣,同時(shí)對(duì)源程序的影響較大,只能作為臨時(shí)調(diào)試使用,測(cè)試完成后要做屏蔽,測(cè)試代碼零亂,難以管理??偠灾?,現(xiàn)有的軟件異常測(cè)試執(zhí)行方法在測(cè)試過(guò)程中靈活性差,效率低。
發(fā)明內(nèi)容
為了解決上述的技術(shù)問(wèn)題,提供了一種實(shí)現(xiàn)嵌入式軟件異常測(cè)試的方法,其目的在于,克服現(xiàn)有技術(shù)在進(jìn)行軟件異常測(cè)試時(shí)不夠靈活及效率低下的缺點(diǎn)。
本發(fā)明提供了一種實(shí)現(xiàn)嵌入式軟件異常測(cè)試的方法,包括 步驟1,設(shè)置異常測(cè)試規(guī)程; 步驟2,根據(jù)異常測(cè)試規(guī)程在軟件源代碼中插入異常測(cè)試點(diǎn); 步驟3,根據(jù)異常測(cè)試規(guī)程進(jìn)行異常測(cè)試腳本的編寫(xiě)或修改,用于生成異常條件; 步驟4,構(gòu)建運(yùn)行環(huán)境并下載異常測(cè)試腳本; 步驟5,啟動(dòng)測(cè)試流程進(jìn)行異常測(cè)試,運(yùn)行與異常測(cè)試點(diǎn)相對(duì)應(yīng)的異常測(cè)試腳本,依據(jù)異常行為的結(jié)果對(duì)軟件異常處理能力進(jìn)行判斷。
步驟2包括 步驟201,根據(jù)異常測(cè)試規(guī)程找到源代碼中產(chǎn)生異常條件位置,按異常條件所依附的原始數(shù)據(jù)信息歸整異常測(cè)試點(diǎn); 步驟202,在源代碼相應(yīng)位置插入異常處理宏,異常處理宏包含消息格式的數(shù)據(jù)信息。
步驟2還包括步驟203,對(duì)于異常處理后的返回情況進(jìn)行處理;所述返回情況包括異常處理完成后繼續(xù)源程序后繼流程、直接退出本次調(diào)度或跳過(guò)源程序后繼一段代碼后繼續(xù)執(zhí)行。
步驟3包括 步驟401,根據(jù)異常測(cè)試規(guī)程選擇對(duì)應(yīng)異常測(cè)試點(diǎn),將所述數(shù)據(jù)信息作為輸入?yún)?shù); 步驟402,如果進(jìn)行異常流程處理,則異常測(cè)試腳本依據(jù)輸入?yún)?shù)發(fā)送消息;如果進(jìn)行異常取值處理,則異常測(cè)試腳本修改輸入?yún)?shù)的值。
步驟3還包括實(shí)時(shí)手工或自動(dòng)修改異常測(cè)試腳本。
步驟4包括 步驟601,構(gòu)建運(yùn)行環(huán)境,啟動(dòng)包含異常測(cè)試點(diǎn)的軟件源代碼及異常測(cè)試模塊; 步驟602,定制與異常測(cè)試點(diǎn)對(duì)應(yīng)的異常測(cè)試腳本; 步驟603,將所定制的異常測(cè)試腳本生成異常測(cè)試用例,并下載到運(yùn)行環(huán)境中。
步驟5包括 步驟701,啟動(dòng)測(cè)試流程,運(yùn)行包含異常測(cè)試點(diǎn)的軟件源代碼; 步驟702,軟件源代碼在執(zhí)行到異常測(cè)試點(diǎn)處由異常處理宏進(jìn)行判斷,如果異常測(cè)試點(diǎn)定制了異常測(cè)試腳本,則轉(zhuǎn)入異常測(cè)試腳本進(jìn)行處理,執(zhí)行步驟703; 步驟703,異常測(cè)試腳本依據(jù)所述數(shù)據(jù)信息進(jìn)行異常流程處理或者異常取值,生成異常條件; 步驟704,將所生成的異常條件同步到實(shí)際數(shù)據(jù)區(qū)域,用于被測(cè)軟件產(chǎn)生異常行為,依據(jù)異常行為的結(jié)果對(duì)軟件異常處理能力進(jìn)行判斷。
本發(fā)明提供了一種實(shí)現(xiàn)嵌入式軟件異常測(cè)試的系統(tǒng),包括 異常測(cè)試點(diǎn)插入模塊101,用于根據(jù)異常測(cè)試規(guī)程在軟件源代碼中插入異常測(cè)試點(diǎn); 異常測(cè)試腳本編輯模塊102,用于根據(jù)異常測(cè)試規(guī)程進(jìn)行異常測(cè)試腳本的編寫(xiě)或修改,以生成異常條件; 異常測(cè)試腳本下載模塊103,用于構(gòu)建運(yùn)行環(huán)境并下載異常測(cè)試腳本; 異常測(cè)試執(zhí)行模塊104,用于啟動(dòng)測(cè)試流程進(jìn)行異常測(cè)試,使被測(cè)軟件產(chǎn)生異常行為,并依據(jù)異常行為的結(jié)果對(duì)軟件異常處理能力進(jìn)行判斷。
異常測(cè)試點(diǎn)插入模塊,還用于對(duì)異常處理后的返回情況進(jìn)行處理;所述返回情況包括異常處理完成后繼續(xù)源程序后繼流程、直接退出本次調(diào)度或跳過(guò)源程序后繼一段代碼后繼續(xù)執(zhí)行。
異常測(cè)試點(diǎn)插入模塊,還用于在源代碼中插入異常處理宏,異常處理宏包含消息格式的數(shù)據(jù)信息。
異常測(cè)試腳本編輯模塊,還用于對(duì)于已經(jīng)編寫(xiě)好的測(cè)試腳本,根據(jù)運(yùn)行時(shí)的需要可實(shí)時(shí)修改腳本代碼,按新異常生成條件來(lái)做異常處理,測(cè)試相同位置不同異常情況。
本發(fā)明通過(guò)在源代碼中嵌入腳本,將需要變化的處理轉(zhuǎn)入腳本控制,基于腳本對(duì)數(shù)據(jù)及流程操作的便利特性,提高了異常條件變化的靈活性,在異常點(diǎn)處可以通過(guò)變化腳本內(nèi)容來(lái)調(diào)整對(duì)應(yīng)異常取值或異常流程,達(dá)到各種異常處理分支的測(cè)試。腳本不需要與源程序一同編譯運(yùn)行,隨時(shí)修改同步下載,提高了異常測(cè)試執(zhí)行效率。產(chǎn)生異??梢杂脕?lái)測(cè)試自己代碼穩(wěn)定能力,也可以為被測(cè)方提供異常交互測(cè)試對(duì)方穩(wěn)定能力。在應(yīng)用上除了可以在單元/集成/系統(tǒng)階段進(jìn)行異常測(cè)試外,還可以在單元測(cè)試階段用腳本仿真環(huán)境進(jìn)行流程自測(cè)試。兩者在自己代碼中插入的異常指令是一致的,只是對(duì)應(yīng)測(cè)試腳本不同而已。在具體實(shí)現(xiàn)中,各種類(lèi)型的異常變化在源程序中插入異常點(diǎn)時(shí)格式全部統(tǒng)一,只是一個(gè)函數(shù)宏,當(dāng)在非測(cè)試模式時(shí)將宏定義為空即可,對(duì)源代碼影響降到最低。各異常測(cè)試腳本以文件形式保存,可以同異常測(cè)試規(guī)程一同關(guān)聯(lián),便于管理。
圖1是異常測(cè)試模式的系統(tǒng)結(jié)構(gòu)圖; 圖2是異常測(cè)試方法的流程圖; 圖3是異常處理后返回源程序不同情況處理的流程圖; 圖4是異常測(cè)試方法中所采用的測(cè)試腳本工作機(jī)制說(shuō)明。
具體實(shí)施例方式 本發(fā)明提供的異常測(cè)試方法如圖2所示,包括 第一步、進(jìn)行異常測(cè)試規(guī)程設(shè)計(jì),這是定制異常處理內(nèi)容的前提,屬于用例設(shè)計(jì)的范疇,是本異常測(cè)試方法的準(zhǔn)備工作; 第二步、根據(jù)異常測(cè)試規(guī)程在源代碼中插入異常測(cè)試點(diǎn),這是本異常測(cè)試方法的一個(gè)關(guān)鍵點(diǎn),屬于源代碼與測(cè)試腳本的一個(gè)紐帶,反映測(cè)試規(guī)程的要求,在執(zhí)行中實(shí)現(xiàn)從原流程轉(zhuǎn)入異常流程,處理完成后再退回到原流程; 第三步、根據(jù)異常測(cè)試規(guī)程進(jìn)行異常測(cè)試腳本的編寫(xiě)/修改,腳本內(nèi)容直接體現(xiàn)規(guī)程要求,對(duì)所處異常點(diǎn)進(jìn)行異常流程/異常取值,用于異常條件的生成; 第四步、進(jìn)行運(yùn)行環(huán)境構(gòu)建及測(cè)試腳本下載,將帶有異常測(cè)試點(diǎn)的軟件版本及異常測(cè)試模塊在嵌入式環(huán)境中正常運(yùn)行,根據(jù)測(cè)試內(nèi)容選擇對(duì)應(yīng)異常測(cè)試腳本,從后臺(tái)下載到運(yùn)行環(huán)境中(前臺(tái)嵌入式設(shè)備)。
第五步、啟動(dòng)測(cè)試流程進(jìn)行異常測(cè)試,被測(cè)軟件在運(yùn)行過(guò)程中走到異常點(diǎn)處如果滿足條件則轉(zhuǎn)入腳本處理,產(chǎn)生所需異常條件,改變?cè)闯绦蚝罄^的運(yùn)行。在該步驟完成后,也可以執(zhí)行第三步,手工或自動(dòng)化調(diào)整腳本。
第六步、根據(jù)最終測(cè)試結(jié)果及異常測(cè)試執(zhí)行過(guò)程的輸出信息得出異常測(cè)試結(jié)論,判斷被測(cè)軟件對(duì)于異常處理的好壞。
上述第二步又可以包括 21)、根據(jù)異常測(cè)試規(guī)程的要求找到源代碼中產(chǎn)生異常條件位置,按異常條件所依附的原始數(shù)據(jù)信息來(lái)歸整異常測(cè)試點(diǎn),即有可能多個(gè)不同異常條件是針對(duì)同一原始數(shù)據(jù)信息而形成,且在相同流程位置,則可歸結(jié)為一個(gè)異常測(cè)試點(diǎn)。
22)、歸整完成異常測(cè)試點(diǎn)后,在源代碼相應(yīng)位置插入異常處理宏,以消息的形式帶入包含產(chǎn)生異常條件的數(shù)據(jù)信息,如消息名,消息數(shù)據(jù)。
23)、對(duì)于異常處理后不同返回情況進(jìn)行處理,一種是異常處理完成后繼續(xù)源程序后繼流程,一種是直接退出本次調(diào)度,一種是跳過(guò)源程序后繼一段代碼后繼續(xù)執(zhí)行。
上述第三步又可以包括 31)、按照異常測(cè)試規(guī)程的要求選擇對(duì)應(yīng)異常測(cè)試點(diǎn),將異常處理宏以消息形式帶入的數(shù)據(jù)作為輸入?yún)?shù)(簡(jiǎn)稱(chēng)入?yún)?供腳本異常處理使用。
32)、對(duì)于需要進(jìn)行異常流程處理,將根據(jù)異常測(cè)試規(guī)程設(shè)計(jì)要求由腳本發(fā)出對(duì)應(yīng)的消息,腳本中要包含此消息數(shù)據(jù),通過(guò)腳本發(fā)送指令實(shí)現(xiàn)發(fā)送。
33)、對(duì)于需要進(jìn)行異常取值處理,即將傳入的消息數(shù)據(jù)內(nèi)容進(jìn)行改變,直接通過(guò)腳本數(shù)據(jù)賦值操作對(duì)數(shù)據(jù)內(nèi)容進(jìn)行定制,從而形成非正常取值條件。
此處異常取值對(duì)應(yīng)的異常數(shù)據(jù)分為異常消息和異常變量,其中要異常變化的消息是指整個(gè)被測(cè)產(chǎn)品系統(tǒng)級(jí)定義的,而變量則是局部定義的,如某功能模塊/代碼文件局部變量。異常消息由于在系統(tǒng)中是統(tǒng)一定義,如消息命名及消息體對(duì)應(yīng),可在腳本機(jī)制上直接關(guān)聯(lián)進(jìn)行處理,而針對(duì)局部變量則要做進(jìn)一步變化,處理方法為列出此功能模塊/代碼文件內(nèi)需要控制的變量表,定義為一個(gè)統(tǒng)一的UNION結(jié)構(gòu)做為此異常變量消息體,再定義對(duì)應(yīng)的異常變量消息,形成異常系統(tǒng)中可視見(jiàn)的固定關(guān)聯(lián)關(guān)系,供腳本處理。
34)、對(duì)于已經(jīng)編寫(xiě)好的測(cè)試腳本,根據(jù)運(yùn)行時(shí)的需要可實(shí)時(shí)修改腳本代碼,按新異常生成條件來(lái)做異常處理,測(cè)試相同位置不同異常情況。
上述第四步又可包括 41)、構(gòu)建嵌入式軟件系統(tǒng)環(huán)境,將帶有異常測(cè)試點(diǎn)的軟件版本及異常測(cè)試模塊在所運(yùn)行嵌入式設(shè)備上正常啟動(dòng)。
42)、選擇要測(cè)試執(zhí)行的異常測(cè)試點(diǎn),定制相對(duì)應(yīng)的異常處理腳本,內(nèi)容可以是前述步驟已保存好的腳本或在其上按需要有針對(duì)性的修改;定制了異常處理腳本的異常測(cè)試點(diǎn)將在軟件運(yùn)行到時(shí)被處理。
43)、將定制好的全部腳本匯總生成用于執(zhí)行的異常測(cè)試用例,通過(guò)后臺(tái)下載到嵌入式運(yùn)行環(huán)境中(前臺(tái)嵌入式設(shè)備)。
上述第五步又可以包括 51)、啟動(dòng)測(cè)試流程,讓軟件得以運(yùn)行。
52)、軟件代碼在執(zhí)行過(guò)程中走到異常測(cè)試點(diǎn)處由異常處理宏對(duì)應(yīng)函數(shù)做判斷,如果滿足條件則轉(zhuǎn)入腳本處理;判斷條件為是否對(duì)此異常測(cè)試點(diǎn)定制了異常處理腳本。
53)、轉(zhuǎn)入腳本處理時(shí),異常處理宏帶入包含信息的數(shù)據(jù),包括消息名,消息內(nèi)容等,這些數(shù)據(jù)被復(fù)制到腳本執(zhí)行體中按腳本代碼的要求進(jìn)行處理,如異常流程/異常取值。
54)、異常處理完成后這些數(shù)據(jù)又同步到實(shí)際數(shù)據(jù)區(qū)域,供后面代碼使用,產(chǎn)生本異常測(cè)試規(guī)程所需要的異常行為。
圖2中,隨著異常測(cè)試規(guī)程測(cè)試內(nèi)容的不同,可以下載不同測(cè)試腳本來(lái)產(chǎn)生相應(yīng)異常條件。這可有兩種方式選擇,一種是手工根據(jù)需要隨時(shí)修改測(cè)試腳本內(nèi)容,下載后形成新的異常處理?xiàng)l件,適用于異常測(cè)試現(xiàn)場(chǎng)擴(kuò)展情況;另一種方式為自動(dòng)化方式,即針對(duì)某異常測(cè)試點(diǎn)各種異常條件的生成編寫(xiě)不同測(cè)試腳本,在不同次循環(huán)測(cè)試中分別下載,形成不同異常條件來(lái)自動(dòng)測(cè)試,這適用于即定異常條件的定制測(cè)試。
圖1是異常測(cè)試模式的系統(tǒng)結(jié)構(gòu)圖,圖中腳本編輯/通信接口部分為后臺(tái)程序運(yùn)行在PC機(jī)上,用于編輯腳本用例,控制下載運(yùn)行,顯示運(yùn)行信息;其它部分做為前臺(tái)運(yùn)行在嵌入式系統(tǒng)設(shè)備上,被測(cè)對(duì)象做為業(yè)務(wù)進(jìn)程駐留在操作系統(tǒng)支撐層之上,輔助進(jìn)程及腳本執(zhí)行進(jìn)程為異常測(cè)試加入到被測(cè)對(duì)象所在系統(tǒng)中的附加部分,用于接收下載腳本及實(shí)際執(zhí)行;操作函數(shù)AbProc為全局函數(shù),可定義為異常處理宏供被測(cè)對(duì)象調(diào)用,實(shí)現(xiàn)正常代碼處理過(guò)程中對(duì)異常腳本的插入??蓪⑤o助進(jìn)程、腳本執(zhí)行進(jìn)程和操作函數(shù)統(tǒng)一稱(chēng)為異常測(cè)試模塊。
根據(jù)系統(tǒng)運(yùn)作功能可將其劃分為幾個(gè)功能模塊,其中函數(shù)AbProc及加入異常測(cè)試宏的被測(cè)對(duì)象1構(gòu)成了異常測(cè)試點(diǎn)插入模塊101,用于根據(jù)異常測(cè)試規(guī)程在軟件源代碼中插入異常測(cè)試點(diǎn);腳本編輯部分構(gòu)成了異常測(cè)試腳本編輯模塊102,用于根據(jù)異常測(cè)試規(guī)程進(jìn)行異常測(cè)試腳本的編寫(xiě)或修改,以生成異常條件;前臺(tái)輔助進(jìn)程結(jié)合后臺(tái)下載控制部分構(gòu)成了異常測(cè)試腳本下載模塊103,用于構(gòu)建運(yùn)行環(huán)境并下載異常測(cè)試腳本;帶有腳本指令區(qū)的腳本執(zhí)行進(jìn)程構(gòu)成了異常測(cè)試執(zhí)行模塊104,通過(guò)函數(shù)AbProc的入?yún)魅霐?shù)據(jù)信息,根據(jù)腳本指令完成異常條件的生成。
被測(cè)對(duì)象根據(jù)測(cè)試過(guò)程不同分為兩類(lèi),一類(lèi)是被測(cè)對(duì)象1自測(cè),另一類(lèi)通過(guò)被測(cè)對(duì)象1產(chǎn)生異常對(duì)被測(cè)對(duì)象2進(jìn)行測(cè)試。兩種情況下被測(cè)對(duì)象1都運(yùn)行自己插入的異常點(diǎn),而被測(cè)對(duì)象2則不插入異常點(diǎn),不用做任何改變。
圖3是異常處理后返回源程序不同情況處理的流程圖。在針對(duì)某異常測(cè)試點(diǎn)所進(jìn)行的異常處理過(guò)程中,要考慮腳本完成后退回源程序的不同情況,包括三種一種是異常處理完成后繼續(xù)源程序后繼流程,一種是直接退出本次調(diào)度,一種是跳過(guò)源程序后繼一段代碼后繼續(xù)執(zhí)行。這幾種情況都通過(guò)在異常測(cè)試腳本中設(shè)置一數(shù)據(jù)標(biāo)識(shí)來(lái)識(shí)別,前兩種直接利用異常處理宏,后一種在異常測(cè)試宏后通過(guò)增加一異常跳轉(zhuǎn)宏帶入所需跳轉(zhuǎn)源代碼的行標(biāo)識(shí)來(lái)實(shí)現(xiàn)。即當(dāng)標(biāo)識(shí)設(shè)置為0時(shí),走第一種流程,不做額外處理,異常處理函數(shù)直接返回,程序繼續(xù)執(zhí)行異常測(cè)試點(diǎn)后面代碼;當(dāng)標(biāo)識(shí)設(shè)置為1時(shí),走第二種流程,將標(biāo)識(shí)復(fù)位為0,然后在異常處理函數(shù)中調(diào)用退出本次調(diào)度執(zhí)行的系統(tǒng)函數(shù),由于此時(shí)處理函數(shù)還是屬于被測(cè)進(jìn)程本次調(diào)度范圍,所以將直接退出本次調(diào)度,源程序后繼代碼不再執(zhí)行;當(dāng)標(biāo)識(shí)設(shè)置為2時(shí),走第三種流程,此時(shí)源代碼中異常處理宏后面要設(shè)計(jì)好插入異常跳轉(zhuǎn)宏,入?yún)樾枰D(zhuǎn)到源程序后繼代碼的行標(biāo)識(shí),首先異常處理函數(shù)正常返回,程序進(jìn)入異常跳轉(zhuǎn)宏,它先將標(biāo)識(shí)復(fù)位為0,然后就是通過(guò)調(diào)用“goto行標(biāo)識(shí)”來(lái)實(shí)現(xiàn)跳過(guò)源程序后一段代碼而繼續(xù)執(zhí)行。
圖4是本方法中所采用的測(cè)試腳本工作機(jī)制說(shuō)明,包括腳本的靜態(tài)編輯和動(dòng)態(tài)運(yùn)行兩階段。首先是基于源程序代碼的消息結(jié)構(gòu)信息提取,即腳本中所處理的對(duì)象都是以消息及對(duì)應(yīng)數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ)的。根據(jù)異常測(cè)試內(nèi)容選擇出要用到的消息結(jié)構(gòu),以列表的形式生成用例靜態(tài)區(qū),即腳本數(shù)據(jù)描述區(qū)域。然后用戶使用腳本所提供的各種操作原語(yǔ)來(lái)描述處理的邏輯步驟,以文本的形式生成用例動(dòng)態(tài)區(qū),即運(yùn)行邏輯描述區(qū)域。兩個(gè)區(qū)域內(nèi)容統(tǒng)一保存在文本文件中,生成測(cè)試用例文件,至此完成靜態(tài)編輯過(guò)程。接下來(lái)需要實(shí)際運(yùn)行用例時(shí),腳本處理內(nèi)核讀入用例文件,通過(guò)解析轉(zhuǎn)化生成內(nèi)存中二進(jìn)制信息,然后通過(guò)數(shù)據(jù)下載處理將這些信息傳輸?shù)角芭_(tái)腳本執(zhí)行體,最后在腳本執(zhí)行體中啟動(dòng)用例運(yùn)行,按照要執(zhí)行的異常測(cè)試點(diǎn)傳入的數(shù)據(jù)進(jìn)行對(duì)應(yīng)腳本處理,直到退出用例,從而完成動(dòng)態(tài)運(yùn)行階段。
本領(lǐng)域的技術(shù)人員在不脫離權(quán)利要求書(shū)確定的本發(fā)明的精神和范圍的條件下,還可以對(duì)以上內(nèi)容進(jìn)行各種各樣的修改。因此本發(fā)明的范圍并不僅限于以上的說(shuō)明,而是由權(quán)利要求書(shū)的范圍來(lái)確定的。
權(quán)利要求
1.一種實(shí)現(xiàn)嵌入式軟件異常測(cè)試的方法,其特征在于,包括
步驟1,設(shè)置異常測(cè)試規(guī)程;
步驟2,根據(jù)異常測(cè)試規(guī)程在軟件源代碼中插入異常測(cè)試點(diǎn);
步驟3,根據(jù)異常測(cè)試規(guī)程進(jìn)行異常測(cè)試腳本的編寫(xiě)或修改,用于生成異常條件;
步驟4,構(gòu)建運(yùn)行環(huán)境并下載異常測(cè)試腳本;
步驟5,啟動(dòng)測(cè)試流程進(jìn)行異常測(cè)試,運(yùn)行與異常測(cè)試點(diǎn)相對(duì)應(yīng)的異常測(cè)試腳本,依據(jù)異常行為的結(jié)果對(duì)軟件異常處理能力進(jìn)行判斷。
2.如權(quán)利要求1所述的實(shí)現(xiàn)嵌入式軟件異常測(cè)試的方法,其特征在于,步驟2包括
步驟201,根據(jù)異常測(cè)試規(guī)程找到源代碼中產(chǎn)生異常條件位置,按異常條件所依附的原始數(shù)據(jù)信息歸整異常測(cè)試點(diǎn);
步驟202,在源代碼相應(yīng)位置插入異常處理宏,異常處理宏包含消息格式的數(shù)據(jù)信息。
3.如權(quán)利要求2所述的實(shí)現(xiàn)嵌入式軟件異常測(cè)試的方法,其特征在于,步驟2還包括步驟203,對(duì)于異常處理后的返回情況進(jìn)行處理;所述返回情況包括異常處理完成后繼續(xù)源程序后繼流程、直接退出本次調(diào)度或跳過(guò)源程序后繼一段代碼后繼續(xù)執(zhí)行。
4.如權(quán)利要求2或3所述的實(shí)現(xiàn)嵌入式軟件異常測(cè)試的方法,其特征在于,步驟3包括
步驟401,根據(jù)異常測(cè)試規(guī)程選擇對(duì)應(yīng)異常測(cè)試點(diǎn),將所述數(shù)據(jù)信息作為輸入?yún)?shù);
步驟402,如果進(jìn)行異常流程處理,則異常測(cè)試腳本依據(jù)輸入?yún)?shù)發(fā)送消息;如果進(jìn)行異常取值處理,則異常測(cè)試腳本修改輸入?yún)?shù)的值。
5.如權(quán)利要求4所述的實(shí)現(xiàn)嵌入式軟件異常測(cè)試的方法,其特征在于,步驟3還包括實(shí)時(shí)手工或自動(dòng)修改異常測(cè)試腳本。
6.如權(quán)利要求4所述的實(shí)現(xiàn)嵌入式軟件異常測(cè)試的方法,其特征在于,步驟4包括
步驟601,構(gòu)建運(yùn)行環(huán)境,啟動(dòng)包含異常測(cè)試點(diǎn)的軟件源代碼及異常測(cè)試模塊;
步驟602,定制與異常測(cè)試點(diǎn)對(duì)應(yīng)的異常測(cè)試腳本;
步驟603,將所定制的異常測(cè)試腳本生成異常測(cè)試用例,并下載到運(yùn)行環(huán)境中。
7.如權(quán)利要求6所述的實(shí)現(xiàn)嵌入式軟件異常測(cè)試的方法,其特征在于,步驟5包括
步驟701,啟動(dòng)測(cè)試流程,運(yùn)行包含異常測(cè)試點(diǎn)的軟件源代碼;
步驟702,軟件源代碼在執(zhí)行到異常測(cè)試點(diǎn)處由異常處理宏進(jìn)行判斷,如果異常測(cè)試點(diǎn)定制了異常測(cè)試腳本,則轉(zhuǎn)入異常測(cè)試腳本進(jìn)行處理,執(zhí)行步驟703;
步驟703,異常測(cè)試腳本依據(jù)所述數(shù)據(jù)信息進(jìn)行異常流程處理或者異常取值,生成異常條件;
步驟704,將所生成的異常條件同步到實(shí)際數(shù)據(jù)區(qū)域,用于產(chǎn)生異常行為,依據(jù)異常行為的結(jié)果對(duì)軟件異常處理能力進(jìn)行判斷。
8.一種實(shí)現(xiàn)嵌入式軟件異常測(cè)試的系統(tǒng),其特征在于,包括
異常測(cè)試點(diǎn)插入模塊,用于根據(jù)異常測(cè)試規(guī)程在軟件源代碼中插入異常測(cè)試點(diǎn);
異常測(cè)試腳本編輯模塊,用于根據(jù)異常測(cè)試規(guī)程進(jìn)行異常測(cè)試腳本的編寫(xiě)或修改,以生成異常條件;
異常測(cè)試腳本下載模塊,用于構(gòu)建運(yùn)行環(huán)境并下載異常測(cè)試腳本;
異常測(cè)試執(zhí)行模塊,用于啟動(dòng)測(cè)試流程進(jìn)行異常測(cè)試,使被測(cè)軟件產(chǎn)生異常行為,并依據(jù)異常行為的結(jié)果對(duì)軟件異常處理能力進(jìn)行判斷。
9.如權(quán)利要求8所述的實(shí)現(xiàn)嵌入式軟件異常測(cè)試的系統(tǒng),其特征在于,
異常測(cè)試點(diǎn)插入模塊,還用于對(duì)異常處理后的返回情況進(jìn)行處理;所述返回情況包括異常處理完成后繼續(xù)源程序后繼流程、直接退出本次調(diào)度或跳過(guò)源程序后繼一段代碼后繼續(xù)執(zhí)行。
10.如權(quán)利要求8或9所述的實(shí)現(xiàn)嵌入式軟件異常測(cè)試的系統(tǒng),其特征在于,
異常測(cè)試點(diǎn)插入模塊,還用于在源代碼中插入異常處理宏,異常處理宏包含消息格式的數(shù)據(jù)信息。
11.如權(quán)利要求8所述的實(shí)現(xiàn)嵌入式軟件異常測(cè)試的系統(tǒng),其特征在于,異常測(cè)試腳本編輯模塊,還用于對(duì)于已經(jīng)編寫(xiě)好的測(cè)試腳本,根據(jù)運(yùn)行時(shí)的需要可實(shí)時(shí)修改腳本代碼,按新異常生成條件來(lái)做異常處理,測(cè)試相同位置不同異常情況。
全文摘要
本發(fā)明涉及一種實(shí)現(xiàn)嵌入式軟件異常測(cè)試的方法,包括步驟1,設(shè)置異常測(cè)試規(guī)程;步驟2,根據(jù)異常測(cè)試規(guī)程在軟件源代碼中插入異常測(cè)試點(diǎn);步驟3,根據(jù)異常測(cè)試規(guī)程進(jìn)行異常測(cè)試腳本的編寫(xiě)或修改,用于生成異常條件;步驟4,構(gòu)建運(yùn)行環(huán)境并下載異常測(cè)試腳本;步驟5,啟動(dòng)測(cè)試流程進(jìn)行異常測(cè)試,運(yùn)行與異常測(cè)試點(diǎn)相對(duì)應(yīng)的異常測(cè)試腳本,依據(jù)異常行為的結(jié)果對(duì)軟件異常處理能力進(jìn)行判斷。本發(fā)明通過(guò)在源代碼中嵌入腳本,將需要變化的處理轉(zhuǎn)入腳本控制,基于腳本對(duì)數(shù)據(jù)及流程操作的便利特性,提高了異常條件變化的靈活性,在異常點(diǎn)處可以通過(guò)變化腳本內(nèi)容來(lái)調(diào)整對(duì)應(yīng)異常取值或異常流程,達(dá)到各種異常處理分支的測(cè)試。
文檔編號(hào)G06F11/36GK101183335SQ20071030237
公開(kāi)日2008年5月21日 申請(qǐng)日期2007年12月25日 優(yōu)先權(quán)日2007年12月25日
發(fā)明者軍 左 申請(qǐng)人:中興通訊股份有限公司