国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

C語言軟件錯(cuò)誤定位的測試用例庫構(gòu)建

2015-03-03 05:30:06
關(guān)鍵詞:源代碼測試用例調(diào)試

王 瑾

(北京航空航天大學(xué) 計(jì)算機(jī)學(xué)院,北京 100191)

C語言軟件錯(cuò)誤定位的測試用例庫構(gòu)建

王 瑾

(北京航空航天大學(xué) 計(jì)算機(jī)學(xué)院,北京 100191)

文章主要開發(fā)一個(gè)用于軟件錯(cuò)誤定位的測試用例庫.該測試用例庫具有標(biāo)準(zhǔn)化、復(fù)用性、版本管理和統(tǒng)一管理這幾個(gè)特性,構(gòu)建過程首先是確立了分類的標(biāo)準(zhǔn),這里采用了三級(jí)分類的模式進(jìn)行管理,通過分類產(chǎn)生了樹形管理結(jié)構(gòu).然后對(duì)測試用例中的源代碼文件進(jìn)行了編碼以及說明標(biāo)簽的填寫,從而生成標(biāo)準(zhǔn)化的測試用例,不斷完善測試用例庫.同時(shí),根據(jù)系統(tǒng)的更新對(duì)測試用例進(jìn)行修改和維護(hù),保持測試用例庫的版本與當(dāng)前系統(tǒng)版本的一致性.

C語言軟件;錯(cuò)誤定位;測試用例庫

1 設(shè)計(jì)需求

傳統(tǒng)人工調(diào)試工具,譬如GDB和DBX提供基于主控臺(tái)的命令提示接口,而其他調(diào)試器前端應(yīng)用普遍是提供給集成式開發(fā)工具(IDE)作為調(diào)試引擎,具有動(dòng)態(tài)化、可視化等特點(diǎn),但它們是命令行式工具,沒有圖形界面,不方便用戶使用.Visual Studio 調(diào)試器是一個(gè)功能強(qiáng)大的工具,能夠觀察程序的運(yùn)行時(shí)行為并確定邏輯錯(cuò)誤的位置,該調(diào)試器可用于所有的 Visual Studio 編程語言及其關(guān)聯(lián)的庫,但它僅實(shí)現(xiàn)了傳統(tǒng)的斷點(diǎn)調(diào)試等功能,依然在很大程度上依賴人工調(diào)試.WinDbg是在windows平臺(tái)下,強(qiáng)大的用戶態(tài)和內(nèi)核態(tài)調(diào)試工具,但是它的大多數(shù)調(diào)試功能還是以手工輸入命令的方式來工作的.Eclipse CDT 作為Eclipse的面向C和C++語言的插件,它的存在使得Eclipse 可以完成許多C/C++ IDE一樣的功能,但它主要是在Eclipse功能上進(jìn)行了C/C++語言程序調(diào)試的改進(jìn),依賴于Eclipse調(diào)試模式.KDevelop是一款功能強(qiáng)大的集成開發(fā)環(huán)境應(yīng)用程序.它的研發(fā)最初是為了給KDE提供一個(gè)便于使用的集成開發(fā)環(huán)境,但它并不支持跨平臺(tái),并且易用性不強(qiáng).另外,目前(半)自動(dòng)化調(diào)試工具采用的錯(cuò)誤定位技術(shù)可以劃分為輕量級(jí)和重量級(jí)錯(cuò)誤定位兩大類.輕量級(jí)錯(cuò)誤定位通常是對(duì)測試的覆蓋信息或者執(zhí)行軌跡進(jìn)行收集并分析,算法一般會(huì)在此基礎(chǔ)上采用統(tǒng)計(jì)方法或數(shù)據(jù)挖掘等方法進(jìn)行數(shù)據(jù)信息處理,代表工具有Tarantula,SOBER和Crosstab等等.重量級(jí)錯(cuò)誤定位主要是對(duì)程序依賴關(guān)系分析,這里依賴關(guān)系主要指數(shù)據(jù)依賴和控制依賴,其代表技術(shù)為程序切片.此外還有關(guān)注錯(cuò)誤修復(fù)的調(diào)試工具,BugFix[10]和PACHIKA[11]都是其中的代表.但是在實(shí)際的軟件開發(fā)中自動(dòng)化調(diào)試的應(yīng)用技術(shù)仍舊不成熟,這是因?yàn)檎{(diào)試任務(wù)自身都具有其復(fù)雜性和特殊性,所以針對(duì)不同的調(diào)試任務(wù)想要尋找一種通用的調(diào)試方法是一件比較困難的事情.此外,在調(diào)試任務(wù)中,錯(cuò)誤語句的定位結(jié)果往往具有不唯一性,因此調(diào)試方法需要對(duì)其定位結(jié)果具有較強(qiáng)的解釋能力.此外,如何提高定位結(jié)果的可靠性和精確度,這也是目前自動(dòng)化程序調(diào)試領(lǐng)域熱點(diǎn)的研究問題.我們課題組正在研究和構(gòu)建一個(gè)有機(jī)高效的軟件測試、調(diào)試和驗(yàn)證環(huán)境,基本完成了面向C語言的半自動(dòng)化調(diào)試系統(tǒng)的實(shí)現(xiàn).而本文主要研究軟件錯(cuò)誤定位的測試用例庫,測試用例的設(shè)計(jì)與編碼,主要是為了檢查程序執(zhí)行的正確性和驗(yàn)證執(zhí)行結(jié)果,進(jìn)行對(duì)于測試程序的源代碼的編碼,用戶反饋信息的輸入設(shè)計(jì),以及預(yù)期的定位結(jié)果等等的集合.測試用例庫的構(gòu)建使得軟件錯(cuò)誤定位的測試變得更加條理化和專業(yè)化.雖然在構(gòu)建測試用例庫的過程中,該庫的設(shè)計(jì)需要耗費(fèi)一定的成本,但是考慮到測試用例庫的可重復(fù)性很高,這樣可以極大地減少測試人員花費(fèi)大量時(shí)間進(jìn)行重復(fù)設(shè)計(jì)的成本,降低在系統(tǒng)開發(fā)過程中的各個(gè)測試活動(dòng)的成本,縮短軟件測試的生命周期,提高測試的效率,因此構(gòu)建測試用例庫是值得研究和開發(fā)的.

對(duì)于錯(cuò)誤定位系統(tǒng),軟件的測試用例經(jīng)常涉及到多重循環(huán)和復(fù)雜結(jié)構(gòu)嵌套,不同的結(jié)構(gòu)不同的執(zhí)行路徑都會(huì)產(chǎn)生不同的測試用例,并且對(duì)于每個(gè)測試的源代碼程序,“錯(cuò)誤”的設(shè)計(jì)不同也會(huì)形成類型不同的測試用例,這些測試用例都是構(gòu)成測試用例庫的基礎(chǔ).

在構(gòu)建測試用例庫的初始階段,是對(duì)測試用例庫的需求進(jìn)行相應(yīng)的分析,得到測試用例庫在設(shè)計(jì)和實(shí)現(xiàn)的時(shí)候所要遵循和實(shí)現(xiàn)的幾點(diǎn)要求.

1.1 標(biāo)準(zhǔn)化

要建立標(biāo)準(zhǔn)化的測試用例庫,則需要對(duì)于每個(gè)測試用例都要求測試用例的內(nèi)容完整性.測試程序的源代碼程序需要根據(jù)本系統(tǒng)所定義的C語言核心子集的規(guī)則,進(jìn)行編寫,測試用例中不可出現(xiàn)規(guī)則以外的語言.

測試用例的編寫以及描述需要規(guī)范化,也即測試用例要有標(biāo)準(zhǔn)格式.每個(gè)測試用例需要有源代碼程序和說明標(biāo)簽.說明標(biāo)簽的內(nèi)容主要有測試用例的編號(hào)、測試名稱、測試功能,測試標(biāo)題、測試級(jí)別、前置條件、測試輸入、操作步驟、預(yù)期結(jié)果等.

測試用例編號(hào):主要是由數(shù)字組成,這里編號(hào)具有唯一性,易識(shí)別性.

測試名稱:主要是對(duì)該測試用例的簡單描述.用概括性的語言來描述該測試用例的測試點(diǎn).

測試功能:主要是這個(gè)測試用例所測試的系統(tǒng)的功能模塊名稱.

測試級(jí)別:主要是根據(jù)測試的重要性劃分幾個(gè)等級(jí),測試級(jí)別則表示該測試用例的重要程度屬于哪個(gè)級(jí)別.通常會(huì)分為三個(gè)等級(jí),即高、中、低三個(gè)等級(jí).高等級(jí)是指保證系統(tǒng)的基本功能的正確實(shí)現(xiàn)、系統(tǒng)特性的顯示的測試用例,通常使用頻率較高,測試的功能模塊也是系統(tǒng)的核心.低等級(jí)是指對(duì)系統(tǒng)的關(guān)鍵功能影響不大的測試用例,通常使用頻率也較低.中等級(jí)是重要程度介于高等級(jí)和低等級(jí)之間的測試用例.

前置條件:是執(zhí)行該測試用例的前提條件,如果不滿足這些條件,則無法進(jìn)行測試.

測試輸入:主要是測試用例執(zhí)行時(shí),需要輸入的數(shù)據(jù)信息.

測試步驟:是測試用例在執(zhí)行過程中所需的操作步驟,這里需要給出測試操作每一步的具體描述,使得測試人員并不需要對(duì)系統(tǒng)的實(shí)現(xiàn)方法進(jìn)行了解即可進(jìn)行測試工作,完成測試.

預(yù)期結(jié)果:對(duì)測試用例的執(zhí)行結(jié)果進(jìn)行預(yù)期,得到預(yù)期結(jié)果,可用來與實(shí)際執(zhí)行結(jié)果對(duì)比,如果結(jié)果一致,則測試用例通過,如果不一致則測試用例失敗.

1.2 復(fù)用性

對(duì)于測試用例庫而言,測試用例的復(fù)用性可以在日后的測試工作中節(jié)約大量成本,測試工作人員不必耗費(fèi)精力編寫相似的測試,因此復(fù)用性對(duì)于測試用例庫而言顯得尤為重要.

1.3 版本管理

測試用例庫通過不斷地維護(hù),對(duì)于測試用例可能會(huì)出現(xiàn)多個(gè)版本,對(duì)其進(jìn)行版本管理也是測試用例庫在設(shè)計(jì)過程中需要考慮的一點(diǎn).并且系統(tǒng)在研發(fā)過程中可能會(huì)出現(xiàn)版本更替,如何將測試用例的版本與當(dāng)前系統(tǒng)版本一致,根據(jù)系統(tǒng)的新版本,如何修改或者創(chuàng)建新的測試用例,也都是測試用例庫構(gòu)建的重點(diǎn).

1.4 統(tǒng)一管理

系統(tǒng)構(gòu)建測試用例庫,而不是簡簡單單設(shè)計(jì)幾個(gè)測試用例,就是系統(tǒng)對(duì)于測試用例的組織化的需求,系統(tǒng)需求一個(gè)系統(tǒng)性的有組織的測試用例庫,從而能夠達(dá)到對(duì)系統(tǒng)的各個(gè)功能模塊的覆蓋,減少重復(fù)性測試,擴(kuò)展測試的覆蓋范圍.針對(duì)系統(tǒng)的不同的功能模塊,不同的測試階段,測試用例所實(shí)現(xiàn)的目的有所不同,這需要不同的測試用例來對(duì)其進(jìn)行測試,而大量的測試用例需要有組織性的管理.通常測試用例庫都是采用樹形化結(jié)構(gòu)管理,這種方式對(duì)于測試工作來說結(jié)構(gòu)清晰易于管理.

系統(tǒng)對(duì)于測試用例庫的構(gòu)件會(huì)根據(jù)上述幾點(diǎn)用例庫的要求來進(jìn)行設(shè)計(jì)和維護(hù),形成系統(tǒng)化有組織結(jié)構(gòu)的錯(cuò)誤定位的測試用例庫,提供各種測試用例來完成本系統(tǒng)的測試工作,提高測試的效率.

2 測試用例庫構(gòu)建

測試用例庫在設(shè)計(jì)的時(shí)候主要針對(duì)本自動(dòng)化調(diào)試系統(tǒng)進(jìn)行分析設(shè)計(jì),編寫具有一定針對(duì)性的測試用例.考慮到測試用例庫的組織結(jié)構(gòu),這里采用樹形結(jié)構(gòu)化管理,因此需要多級(jí)分類.

2.1 分類標(biāo)準(zhǔn)

首先,本測試用例庫主要采用了三級(jí)分類的形式來進(jìn)行測試用例的設(shè)計(jì),然后確定三級(jí)分類的標(biāo)準(zhǔn).本系統(tǒng)的基礎(chǔ)部分也就是程序解析部分,定義了C語言的核心子集,系統(tǒng)主要是針對(duì)該核心子集進(jìn)行功能實(shí)現(xiàn),因此測試用例的源代碼所包含的數(shù)據(jù)類型作為第一級(jí)分類.

而包含相同數(shù)據(jù)類型的源代碼程序由于程序的語法結(jié)構(gòu)的不同,也會(huì)產(chǎn)生多種不同的測試用例,因此在一級(jí)分類下根據(jù)程序的語法結(jié)構(gòu)不同進(jìn)行分類,作為二級(jí)分類標(biāo)準(zhǔn).

考慮到錯(cuò)誤定位是本系統(tǒng)所實(shí)現(xiàn)的最核心的功能,因此系統(tǒng)首要考慮的就是所需要定位出的錯(cuò)誤是哪種類型,本系統(tǒng)所采用的錯(cuò)誤定位算法是否能夠檢測出這類錯(cuò)誤.因此錯(cuò)誤類型的分類作為第三級(jí)分類標(biāo)準(zhǔn).

2.2 樹形管理結(jié)構(gòu)

根據(jù)上一小節(jié)的三級(jí)分類標(biāo)準(zhǔn),對(duì)每一個(gè)分類標(biāo)準(zhǔn)都進(jìn)行類別選擇,通過三級(jí)分類類別選擇,則可以形成測試用例庫的樹形管理結(jié)構(gòu).

首先,根據(jù)分類標(biāo)準(zhǔn)進(jìn)行每一級(jí)的類別選擇.根據(jù)第一級(jí)的分類標(biāo)準(zhǔn),針對(duì)源代碼包含的數(shù)據(jù)類型的不同進(jìn)行分類,可以分為int-tests(1)array-tests(2)pointer-tests(3)struct-tests(4)等等;根據(jù)第二級(jí)的分類標(biāo)準(zhǔn),針對(duì)源代碼程序的語法結(jié)構(gòu)的不同進(jìn)行分類,可以分為assgin-tests(1)if-else-tests(2)for-tests(3)while-tests(4)switch-tests(5)nest-tests(6)等,這里的數(shù)據(jù)結(jié)構(gòu)主要是以源代碼程序中包含的復(fù)雜度比較高的語法結(jié)構(gòu)進(jìn)行歸類;根據(jù)第三級(jí)的分類標(biāo)準(zhǔn),針對(duì)錯(cuò)誤類型的不同進(jìn)行分類,這里考慮到現(xiàn)階段系統(tǒng)主要采用的是形式化的錯(cuò)誤定位算法,該算法主要在定位賦值語句錯(cuò)誤以及條件表達(dá)式錯(cuò)誤等情況下效果良好,可以分為assginerror-tests(1)和conditionerror-tests(2)等.對(duì)于具體的測試用例,其編號(hào)為三位數(shù)字,每一位數(shù)字分別代表了第一級(jí)類別、第二級(jí)類別、第三級(jí)類別屬性,比如某個(gè)測試用例的編號(hào)為2421,則它屬于array-tests里for-tests中的assginerror-tests類里第一個(gè)測試用例,因此它的源代碼程序是包含數(shù)組類型的,語法結(jié)構(gòu)包含while循環(huán)語句的程序,并且它是用來測試對(duì)條件表達(dá)式錯(cuò)誤定位的測試用例.

2.3 測試用例設(shè)計(jì)

根據(jù)測試用例庫的管理結(jié)構(gòu),針對(duì)第三級(jí)下的每個(gè)類別,可以進(jìn)行其測試用例的設(shè)計(jì)和編碼,需要符合這個(gè)測試用例所在的三級(jí)分類各級(jí)的類別屬性.比如說對(duì)于編號(hào)2421的測試用例源代碼的編寫,考慮其源代碼的特性是包含數(shù)組類型的,語法結(jié)構(gòu)包含while循環(huán)語句的程序.因此可以進(jìn)行如下編碼(這里以一個(gè)簡單的源代碼程序舉例)以及其說明標(biāo)簽.

圖1 1源代碼編碼

表1 說明標(biāo)簽填寫

如此根據(jù)分類類別,來進(jìn)行源代碼的編碼,以及說明標(biāo)簽的填寫.本測試用例庫中相對(duì)簡單的程序均為自動(dòng)手動(dòng)編寫,有較多復(fù)雜結(jié)構(gòu)的測試源程序是由西門子測試用例集中的測試用例改編而來,將其結(jié)構(gòu)修改為本系統(tǒng)所支持的數(shù)據(jù)類型及程序結(jié)構(gòu),從而形成系統(tǒng)的測試用例庫,這個(gè)過程花費(fèi)了大量的時(shí)間,但是為之后系統(tǒng)的各個(gè)功能測試奠定了基礎(chǔ).

3 測試用例庫維護(hù)

一個(gè)軟件系統(tǒng)在研發(fā)的過程中,會(huì)經(jīng)過多個(gè)版本的更替,系統(tǒng)會(huì)不斷地進(jìn)行改動(dòng),功能或者模塊均可能產(chǎn)生變化,而隨著這些改變,很多測試用例可能會(huì)失去其針對(duì)性和有效性,而有些測試用例會(huì)產(chǎn)生不同的執(zhí)行結(jié)果,對(duì)結(jié)果分析也會(huì)有相應(yīng)的影響,這就需要不斷地對(duì)測試用例庫進(jìn)行維護(hù),來保證測試用例庫功能的完善以及測試結(jié)果的準(zhǔn)確性.根據(jù)系統(tǒng)的改動(dòng),對(duì)于新增加的功能編寫相應(yīng)的測試用例,如果已有的測試用例與新增加的功能有所關(guān)聯(lián),則相應(yīng)的修改已有的測試用例.

隨著系統(tǒng)的不斷完善,測試用例的不斷增加,可能會(huì)不斷出現(xiàn)新的分類類別,這原有的三級(jí)分類的基礎(chǔ)上分別進(jìn)行補(bǔ)充,使得測試用例庫的規(guī)模逐漸擴(kuò)大,逐步形成系統(tǒng)級(jí)的測試用例庫.

4 總結(jié)

本文主要對(duì)系統(tǒng)的測試用例庫的構(gòu)建進(jìn)行了詳細(xì)闡述.第一小節(jié)主要是對(duì)測試用例庫構(gòu)建的需求,主要是要求測試用例庫具有標(biāo)準(zhǔn)化、復(fù)用性、版本管理和統(tǒng)一管理這幾個(gè)特性,因此在設(shè)計(jì)和構(gòu)建測試用例庫的過程中都需要遵循這些要求.第二小節(jié)主要就是描述了測試用例庫構(gòu)建的過程,首先是確立了分類的標(biāo)準(zhǔn),這里采用了三級(jí)分類的模式進(jìn)行管理,通過分類產(chǎn)生了樹形管理結(jié)構(gòu).然后對(duì)測試用例中的源代碼文件進(jìn)行了編碼以及說明標(biāo)簽的填寫,從而生成標(biāo)準(zhǔn)化的測試用例,不斷完善測試用例庫.第三小節(jié)描述了跟據(jù)系統(tǒng)的更新對(duì)測試用例進(jìn)行修改和維護(hù),保持測試用例庫的版本與當(dāng)前系統(tǒng)版本的一致性.

[1] STALLMAN R,PESCH R,SHEBS S.Debugging with gdb-the gnu source-level debugger.GNU Press,2006

[2] LINTON M A.The Evolution of Dbx//In:Proceedings of the Summer USENIX Conference,1990,6:211-220

[3] DEBUGGER M V S.Microsoft Visual Studio Debugger.Network Dictionary,2007

[4] 車叔平.基于Eclipse的嵌入式開發(fā)平臺(tái)的研究與實(shí)現(xiàn).成都:電子科技大學(xué),2007

[5] 王 倩.基于Android端到端實(shí)時(shí)無線視頻傳輸系統(tǒng).南京:南京郵電大學(xué),2013

[6] NOLDEN R.Developing C/C++Applications with the KDEvelop IDE.Linux Journal,2002,95:11-15

[7] 賀 韜,王欣明,周曉聰,等.一種基于程序變異的軟件錯(cuò)誤定位技術(shù).計(jì)算機(jī)學(xué)報(bào),2013(11):2236-2244

[8] LIU C,YAN X,FEI L,et al.SOBER:statistical model-based bug localization.Sigsoft Softw.eng.notes,2005,30(5):286-295

[9] WONG W E,WEI T,QI Y,et al.A Crosstab-based Statistical Method for Effective Fault Localization//Software Testing,Verification,and Validation,2008 1st International Conference on.IEEE,2008:42-51

[10] JEFFREY D,FENG M,GUPTA N,et al.BugFix:a learning-based tool to assist developers in fixing bugs//Program Comprehension,2009.ICPC'09.IEEE 17th International Conference on.IEEE,2009:70-79

[11] DALLMEIER V,LINDIG C,ZELLER A.Lightweight defect localization for java..Lecture Notes in Computer Science,2005,3586:528-550

Test Case Library Building for Wrong Positioning of C Language Software

WANG Jin

(School of Computer and Engineering, Beihang University, Beijing 100191, China)

This paper mainly studies and develops a test case library for wrong positioning. It is some characteristics of standardization, reusability, version management and unified management, the building process includes two stages, the first stage decides the criterion which adopts three-level classification model and produces the three management structure by the three-level classification mode, the second stage encodes the source code file in the test case library to generate the standardized the cases and improve the test case library. Meanwhile, to modify and maintain the library according to system updating maintains the test case library version the consistency with the current system.

C language software; wrong positioning;test case library

2015-10-14

王 瑾(1991-),女,山西太原人,北京航空航天大學(xué)在讀研究生,主要從事軟件理論研究.

1672-2027(2015)04-0058-05

TP391

A

猜你喜歡
源代碼測試用例調(diào)試
人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
基于TXL的源代碼插樁技術(shù)研究
基于SmartUnit的安全通信系統(tǒng)單元測試用例自動(dòng)生成
基于混合遺傳算法的回歸測試用例集最小化研究
基于航拍無人機(jī)的設(shè)計(jì)與調(diào)試
電子制作(2018年12期)2018-08-01 00:47:44
軟件源代碼非公知性司法鑒定方法探析
FOCAS功能在機(jī)床調(diào)試中的開發(fā)與應(yīng)用
無線通信中頻線路窄帶臨界調(diào)試法及其應(yīng)用
電子制作(2017年19期)2017-02-02 07:08:38
調(diào)壓柜的調(diào)試與試運(yùn)行探討
揭秘龍湖產(chǎn)品“源代碼”
武汉市| 南阳市| 平罗县| 忻州市| 郴州市| 卫辉市| 榆林市| 井研县| 农安县| 道孚县| 定日县| 寿阳县| 舟山市| 彭水| 湖南省| 梨树县| 迁西县| 勐海县| 益阳市| 高邮市| 策勒县| 蒲城县| 庆元县| 麟游县| 金坛市| 康定县| 乌兰察布市| 友谊县| 千阳县| 永年县| 黎川县| 遂宁市| 乐都县| 潜江市| 嘉义县| 建湖县| 南康市| 法库县| 宝鸡市| 日照市| 时尚|