專利名稱:一種實(shí)現(xiàn)單元測(cè)試的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
一種單元測(cè)試系統(tǒng)及方法,尤其是一種利用記錄函數(shù)信息的方式,將一函數(shù)抽離開發(fā)環(huán)境進(jìn)行單元測(cè)試,依據(jù)該函數(shù)的測(cè)試實(shí)例(test case)對(duì)該函數(shù)進(jìn)行測(cè)試產(chǎn)生的測(cè)試覆蓋率及測(cè)試報(bào)告,做為該函數(shù)的品質(zhì)參考數(shù)據(jù)的單元測(cè)試系統(tǒng)及方法。
背景技術(shù):
單元測(cè)試是程序設(shè)計(jì)領(lǐng)域中多種測(cè)試的其中一種。通常是為了測(cè)試程序中的一個(gè)單元,例如一個(gè)類別(class)、一個(gè)函數(shù)(function)等,由負(fù)責(zé)該單元的程序設(shè)計(jì)人員作測(cè)試。所測(cè)試的是,其所撰寫的程序代碼單元是否依據(jù)程序設(shè)計(jì)人員所設(shè)想的方式執(zhí)行,從而產(chǎn)生出符合預(yù)期的結(jié)果。單元測(cè)試是程序設(shè)計(jì)很重要的一環(huán),它起著問題報(bào)告(bug report)的作用,告訴我們程序代碼中那里有錯(cuò)誤。由于當(dāng)我們完成或修改一個(gè)單元后都需要再進(jìn)行單元測(cè)試,若程序代碼還有問題的話會(huì)繼續(xù)顯示出來。
隨著軟件的功能越來越強(qiáng)大,軟件的程序代碼也越來越冗長,軟件的各模塊在進(jìn)行整合時(shí)所產(chǎn)生的臭蟲(bug)也越來越多,因此在整合時(shí)要找出bug的復(fù)雜度也相對(duì)的提升,如果純以人工的方式來找bug,往往僅能夠發(fā)現(xiàn)該bug而無法提供更有價(jià)值的信息。
為了提供更有價(jià)值的測(cè)試信息,有程序設(shè)計(jì)師會(huì)撰寫單元測(cè)試的程序,但卻無法離開其開發(fā)的環(huán)境來做測(cè)試,以致于萬一在軟件各單元進(jìn)行整合時(shí)的開發(fā)環(huán)境稍有不同,一旦整合的結(jié)果不如預(yù)期,依然無法得知究竟是整合環(huán)境造成的影響,或是兩個(gè)單元的接口(interface)在數(shù)據(jù)傳遞上出了問題,如是前者,那么先前所做的單元測(cè)試就失去了意義。
另外,因?yàn)橛袉卧獪y(cè)試的程序,那么就會(huì)需要有單元測(cè)試的測(cè)試實(shí)例來進(jìn)行單元測(cè)試。不過測(cè)試實(shí)例能否測(cè)到多少部分的程序代碼,也就是單元的測(cè)試覆蓋率,就目前來說,還沒有更好的測(cè)試方式。
發(fā)明內(nèi)容
本發(fā)明為解決背景技術(shù)中存在的上述技術(shù)問題,而提供一種可產(chǎn)生的測(cè)試覆蓋率及測(cè)試報(bào)告做為該函數(shù)的品質(zhì)參考數(shù)據(jù),以提高軟件品質(zhì)的單元測(cè)試的方法及其系統(tǒng)。
本發(fā)明的技術(shù)解決方案是本發(fā)明為一種實(shí)現(xiàn)單元測(cè)試的方法,其特殊之處在于該方法包括以下步驟1)首先記錄待測(cè)試函數(shù)的函數(shù)信息、將待測(cè)試函數(shù)的測(cè)試實(shí)例以及與測(cè)試實(shí)例對(duì)應(yīng)的預(yù)期結(jié)果儲(chǔ)存在測(cè)試數(shù)據(jù)庫中;2)接著將所記錄的待測(cè)試函數(shù)加載,并且在加載后將待測(cè)試函數(shù)初始化;3)跟著由測(cè)試數(shù)據(jù)庫中讀出待測(cè)試函數(shù)的測(cè)試實(shí)例與測(cè)試實(shí)例對(duì)應(yīng)的預(yù)期結(jié)果;4)將讀出的測(cè)試實(shí)例依序?qū)Υ郎y(cè)試函數(shù)進(jìn)行測(cè)試,以得到測(cè)試實(shí)例的測(cè)試結(jié)果;5)判斷測(cè)試實(shí)例是否全部測(cè)完,否則返回步驟4),是則進(jìn)至步驟6);6)在所有的測(cè)試實(shí)例全部測(cè)試完成之后產(chǎn)生本次測(cè)試的測(cè)試覆蓋率,并借助比較測(cè)試實(shí)例對(duì)應(yīng)的預(yù)期結(jié)果與測(cè)試結(jié)果,產(chǎn)生本次測(cè)試的測(cè)試報(bào)告,輸出測(cè)試覆蓋率與測(cè)試報(bào)告。
上述步驟6)之后還包括有步驟7)將測(cè)試時(shí)覆蓋的程序代碼完全相同的測(cè)試實(shí)例只保留一個(gè),將其余的測(cè)試實(shí)例全數(shù)刪除,把測(cè)試所產(chǎn)生的測(cè)試報(bào)告、測(cè)試覆蓋率、以及刪除后剩余的各測(cè)試實(shí)例的測(cè)試結(jié)果存入數(shù)據(jù)庫中。
上述步驟2)中待測(cè)試函數(shù)初始化的過程中發(fā)現(xiàn)待測(cè)試的函數(shù)有呼叫其它的函數(shù),則以被呼叫的函數(shù)的回傳值取代被呼叫的函數(shù)。
一種實(shí)現(xiàn)上述的實(shí)現(xiàn)單元測(cè)試的方法的測(cè)試系統(tǒng),其特殊之處在于該系統(tǒng)包括測(cè)試數(shù)據(jù)庫模塊110、函數(shù)注冊(cè)模塊120、函數(shù)加載模塊130、函數(shù)測(cè)試模塊140、結(jié)果比較模塊150、結(jié)果記錄模塊160,函數(shù)注冊(cè)模塊120分別接入測(cè)試數(shù)據(jù)庫模塊110和函數(shù)加載模塊130,函數(shù)加載模塊130接入函數(shù)測(cè)試模塊140,函數(shù)測(cè)試模塊140接入結(jié)果比較模塊150,結(jié)果比較模塊150接入結(jié)果記錄模塊160,結(jié)果記錄模塊160接入測(cè)試數(shù)據(jù)庫模塊110,測(cè)試數(shù)據(jù)庫模塊110接入函數(shù)加載模塊130。
本發(fā)明利用記錄函數(shù)信息的方式,將一函數(shù)抽離開發(fā)環(huán)境進(jìn)行單元測(cè)試,根據(jù)該函數(shù)的測(cè)試實(shí)例對(duì)該函數(shù)進(jìn)行測(cè)試,并且產(chǎn)生測(cè)試覆蓋率及測(cè)試報(bào)告,通過本發(fā)明所產(chǎn)生的測(cè)試覆蓋率及測(cè)試報(bào)告,可以獲得一個(gè)量化的數(shù)值,使軟件有一個(gè)品質(zhì)上的指針,依次發(fā)現(xiàn)找出軟件中的bug,以達(dá)到提高軟件品質(zhì)的效果。
圖1為本發(fā)明測(cè)試方法的流程圖;圖2本發(fā)明測(cè)試的系統(tǒng)框圖;圖3本發(fā)明實(shí)施例中的第一測(cè)試函數(shù)的程序代碼;圖4為本發(fā)明實(shí)施中的第一測(cè)試函數(shù)修改過后的程序代碼;圖5為本發(fā)明實(shí)施例中的執(zhí)行本發(fā)明方法的過程;圖6為本發(fā)明實(shí)施例中由第一測(cè)試實(shí)例測(cè)試第一測(cè)試函數(shù)產(chǎn)生的測(cè)試覆蓋率示意圖;圖7為本發(fā)明實(shí)施例中由第一測(cè)試實(shí)例測(cè)試第一測(cè)試函數(shù)產(chǎn)生的測(cè)試報(bào)告;圖8為本發(fā)明實(shí)施例中由第一與第二測(cè)試實(shí)例測(cè)試修改后的第一測(cè)試函數(shù)產(chǎn)生的測(cè)試覆蓋率示意圖;圖9為本發(fā)明實(shí)施例中由第一與第二測(cè)試實(shí)例測(cè)試修改后的第一測(cè)試函數(shù)產(chǎn)生的測(cè)試報(bào)告;圖10為本發(fā)明實(shí)施例由第三與第四測(cè)試實(shí)例測(cè)試第二測(cè)試函數(shù)產(chǎn)生的測(cè)試覆蓋率示意圖;圖11為本發(fā)明實(shí)施例由第三與第四測(cè)試實(shí)例測(cè)試第二測(cè)試函數(shù)產(chǎn)生的測(cè)試報(bào)告;圖12為本發(fā)明實(shí)施例由第三測(cè)試實(shí)例測(cè)試第二測(cè)試函數(shù)的測(cè)試覆蓋率示意圖;圖13為本發(fā)明實(shí)施例由第四測(cè)試實(shí)例測(cè)試第二測(cè)試函數(shù)的測(cè)試覆蓋率示意圖。
具體實(shí)施例方式
參見圖1,本發(fā)明的具體方法步驟如下
1)首先記錄待測(cè)試函數(shù)的函數(shù)信息、將待測(cè)試函數(shù)的測(cè)試實(shí)例以及與測(cè)試實(shí)例對(duì)應(yīng)的預(yù)期結(jié)果儲(chǔ)存在測(cè)試數(shù)據(jù)庫中;2)接著將所記錄的待測(cè)試函數(shù)加載,并且在加載后將待測(cè)試函數(shù)初始化,該初始化的過程中發(fā)現(xiàn)待測(cè)試的函數(shù)有呼叫其它的函數(shù),則以被呼叫的函數(shù)的回傳值取代被呼叫的函數(shù);3)跟著由測(cè)試數(shù)據(jù)庫中讀出待測(cè)試函數(shù)的測(cè)試實(shí)例與測(cè)試實(shí)例對(duì)應(yīng)的預(yù)期結(jié)果;4)將讀出的測(cè)試實(shí)例依序?qū)Υ郎y(cè)試函數(shù)進(jìn)行測(cè)試,以得到測(cè)試實(shí)例的測(cè)試結(jié)果;5)判斷測(cè)試實(shí)例是否全部測(cè)完,否則返回步驟4),是則進(jìn)至步驟6);6)在所有的測(cè)試實(shí)例全部測(cè)試完成之后產(chǎn)生本次測(cè)試的測(cè)試覆蓋率,并借助比較測(cè)試實(shí)例對(duì)應(yīng)的預(yù)期結(jié)果與測(cè)試結(jié)果,產(chǎn)生本次測(cè)試的測(cè)試報(bào)告,輸出測(cè)試覆蓋率與測(cè)試結(jié)果。
7)將測(cè)試時(shí)覆蓋的程序代碼完全相同的測(cè)試實(shí)例只保留一個(gè),將其余的測(cè)試實(shí)例全數(shù)刪除,把測(cè)試所產(chǎn)生的測(cè)試報(bào)告、測(cè)試覆蓋率、以及刪除后剩余的各測(cè)試實(shí)例的測(cè)試結(jié)果存入數(shù)據(jù)庫中。
參見圖2,本發(fā)明的系統(tǒng)包含有測(cè)試數(shù)據(jù)庫模塊110、函數(shù)注冊(cè)模塊120、函數(shù)加載模塊130、函數(shù)測(cè)試模塊140、結(jié)果比較模塊150、結(jié)果記錄模塊160。其中測(cè)試數(shù)據(jù)庫模塊110負(fù)責(zé)儲(chǔ)存函數(shù)注冊(cè)模塊120所記錄的待測(cè)試函數(shù)之函數(shù)信息、被記錄之待測(cè)試函數(shù)之測(cè)試實(shí)例、及測(cè)試實(shí)例對(duì)應(yīng)的預(yù)期結(jié)果;函數(shù)注冊(cè)模塊120負(fù)責(zé)將待測(cè)試函數(shù)的函數(shù)名稱、回傳值與各參數(shù)的定義等函數(shù)信息存入測(cè)試數(shù)據(jù)庫模塊110中;函數(shù)加載模塊130負(fù)責(zé)由測(cè)試數(shù)據(jù)庫模塊110讀出透過函數(shù)注冊(cè)模塊120所儲(chǔ)存的函數(shù)信息,依據(jù)讀出的函數(shù)信息將待測(cè)試函數(shù)加載函數(shù)測(cè)試模塊140中,并進(jìn)行初始化,如初始化的過程中發(fā)現(xiàn)待測(cè)試的函數(shù)有呼叫其它的函數(shù),則必需要以被呼叫的函數(shù)的回傳值取代被呼叫的函數(shù),這樣可確保一次測(cè)試僅針對(duì)一個(gè)函數(shù),這樣如果出現(xiàn)問題,可斷定是此函數(shù)本身問題。函數(shù)測(cè)試模塊140負(fù)責(zé)讀出儲(chǔ)存在測(cè)試數(shù)據(jù)庫模塊110的待測(cè)試函數(shù)的測(cè)試實(shí)例及測(cè)試實(shí)例對(duì)應(yīng)的預(yù)期結(jié)果,將讀出的測(cè)試實(shí)例依序?qū)Υ郎y(cè)試的函數(shù)進(jìn)行測(cè)試,可以產(chǎn)生測(cè)試實(shí)例對(duì)應(yīng)的測(cè)試結(jié)果,同時(shí)可以在所有的測(cè)試實(shí)例全部測(cè)試完成之后產(chǎn)生并輸出所有測(cè)試實(shí)例對(duì)待測(cè)試函數(shù)進(jìn)行測(cè)試的測(cè)試覆蓋率;結(jié)果比較模塊150負(fù)責(zé)比較由函數(shù)測(cè)試模塊140產(chǎn)生的測(cè)試結(jié)果與測(cè)試結(jié)果對(duì)應(yīng)的測(cè)試實(shí)例對(duì)應(yīng)的預(yù)期結(jié)果,產(chǎn)生測(cè)試報(bào)告,并將該測(cè)試報(bào)告輸出;結(jié)果記錄模塊160會(huì)于稍后說明。
當(dāng)使用者欲使用本發(fā)明時(shí),首先要經(jīng)由函數(shù)注冊(cè)模塊120將待測(cè)試函數(shù)的函數(shù)信息儲(chǔ)存至測(cè)試數(shù)據(jù)庫110中,并將測(cè)試實(shí)例與其對(duì)應(yīng)的預(yù)期結(jié)果也存入測(cè)試數(shù)據(jù)庫模塊110中,接著開始進(jìn)行測(cè)試,函數(shù)加載模塊130會(huì)由測(cè)試數(shù)據(jù)庫模塊110讀出待測(cè)試函數(shù)的函數(shù)信息,依據(jù)讀出的函數(shù)信息取得待測(cè)試函數(shù)的程序代碼,將取得的程序代碼加載在函數(shù)測(cè)試模塊140中,并將待測(cè)試的函數(shù)初始化,跟著函數(shù)測(cè)試模塊140會(huì)讀出存于測(cè)試數(shù)據(jù)庫模塊110的待測(cè)試函數(shù)的測(cè)試實(shí)例,以及測(cè)試實(shí)例對(duì)應(yīng)的預(yù)期結(jié)果,函數(shù)測(cè)試模塊140在讀出測(cè)試實(shí)例之后,會(huì)將讀出的測(cè)試實(shí)例依序?qū)Υ郎y(cè)試的函數(shù)進(jìn)行測(cè)試,并產(chǎn)生測(cè)試實(shí)例對(duì)應(yīng)的測(cè)試結(jié)果,同時(shí)函數(shù)測(cè)試模塊140會(huì)將各測(cè)試實(shí)例進(jìn)行測(cè)試所覆蓋過的待測(cè)試函數(shù)的程序代碼記錄下來,當(dāng)所有的測(cè)試實(shí)例全部測(cè)試完成之后,函數(shù)測(cè)試模塊140會(huì)依據(jù)各測(cè)試實(shí)例所覆蓋的程序代碼產(chǎn)生測(cè)試覆蓋率并顯示,接著結(jié)果比較模塊150會(huì)比較由函數(shù)測(cè)試模塊140產(chǎn)生的測(cè)試結(jié)果與測(cè)試結(jié)果對(duì)應(yīng)的測(cè)試實(shí)例對(duì)應(yīng)的預(yù)期結(jié)果,產(chǎn)生測(cè)試報(bào)告并顯示。
下面結(jié)合具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步的詳細(xì)描述參見圖3至9,第一測(cè)試函數(shù)310實(shí)現(xiàn)由輸入的變量i與j找出較大的變量后輸出,程序設(shè)計(jì)人員使用本發(fā)明進(jìn)行測(cè)試,首先會(huì)輸入第一測(cè)試函數(shù)310的函數(shù)資料-函數(shù)名稱3311、回傳值3312、參數(shù)一3313、參數(shù)二3314-來執(zhí)行本發(fā)明的注冊(cè)程序331,并另外將第一測(cè)試函數(shù)310的第一測(cè)試實(shí)例“(5,3))”與第一預(yù)期結(jié)果“(5)”存入數(shù)據(jù)庫中,接著執(zhí)行本發(fā)明的測(cè)試程序332,本發(fā)明便會(huì)去數(shù)據(jù)庫中取得第一測(cè)試函數(shù)310的第一測(cè)試實(shí)例并將第一測(cè)試函數(shù)加載并進(jìn)行測(cè)試,測(cè)試完成之后產(chǎn)生測(cè)試覆蓋率340,其中第一測(cè)試函數(shù)310前面的粗黑體數(shù)字為該行程序代碼被測(cè)試時(shí)所執(zhí)行到的次數(shù),前面的次數(shù)為零的該行程序代碼341表示本次測(cè)試的測(cè)試實(shí)例沒有覆蓋到該行程序代碼。測(cè)試完成后產(chǎn)生測(cè)試報(bào)告350,由測(cè)試報(bào)告350中的測(cè)試失敗訊息352可以知道第一測(cè)試函數(shù)310以第一測(cè)試實(shí)例進(jìn)行測(cè)試時(shí)出現(xiàn)問題,可以提供程序設(shè)計(jì)人員對(duì)第一測(cè)試函數(shù)310進(jìn)行修改。同時(shí),由測(cè)試覆蓋率340可知第一測(cè)試函數(shù)310的程序代碼未全部經(jīng)過測(cè)試,因此須要再增加測(cè)試實(shí)例來測(cè)試該行程序代碼。程序設(shè)計(jì)人員在第一測(cè)試函數(shù)修改完成320之后,將第二測(cè)試實(shí)例“(2,7)”與第二預(yù)期結(jié)果“(7)”存至數(shù)據(jù)庫中,再次對(duì)修改完成后的第一測(cè)試函數(shù)320進(jìn)行測(cè)試,測(cè)試完成之后產(chǎn)生的測(cè)試覆蓋率360顯示第一測(cè)試實(shí)例與第二測(cè)試實(shí)例已將第一測(cè)試函數(shù)的程序代碼全部測(cè)試完成,測(cè)試報(bào)告所顯示的訊息373表示為全部測(cè)試實(shí)例均如預(yù)期結(jié)果,如此一來,第一測(cè)試函數(shù)310的品質(zhì)便可以有所憑依,將來會(huì)出錯(cuò)的機(jī)率大幅減少。
本發(fā)明中結(jié)果比較模塊150還可以在函數(shù)測(cè)試模塊140進(jìn)行測(cè)試時(shí),將覆蓋的程序代碼完全相同的測(cè)試實(shí)例中只保留一個(gè)進(jìn)行測(cè)試,其余的測(cè)試實(shí)例全數(shù)刪除,將一組程序代碼完全相同的測(cè)試實(shí)例中只選擇一個(gè)作為代表去執(zhí)行測(cè)試,這樣可節(jié)省大量執(zhí)行測(cè)試實(shí)例的時(shí)間,結(jié)果記錄模塊160負(fù)責(zé)將結(jié)果比較模塊150產(chǎn)生的測(cè)試報(bào)告、函數(shù)測(cè)試模塊140產(chǎn)生的測(cè)試覆蓋率與測(cè)試得到的測(cè)試結(jié)果存入測(cè)試數(shù)據(jù)庫模塊110中,如此可以便可以提供后續(xù)的回歸測(cè)試使用,以使測(cè)試實(shí)例有不斷重用的功效。因此結(jié)果比較模塊150在比較由函數(shù)測(cè)試模塊140產(chǎn)生的各測(cè)試結(jié)果與對(duì)應(yīng)于各測(cè)試實(shí)例的預(yù)期結(jié)果之后,會(huì)依據(jù)各測(cè)試實(shí)例的測(cè)試覆蓋率,將覆蓋的程序代碼完全相同的測(cè)試實(shí)例只保留一個(gè),其余的全部刪除,接著才會(huì)產(chǎn)生測(cè)試報(bào)告并顯示,并且把測(cè)試所產(chǎn)生的測(cè)試報(bào)告、測(cè)試覆蓋率、以及將刪除后剩余的各測(cè)試實(shí)例的測(cè)試結(jié)果存入數(shù)據(jù)庫中。
參見圖10-13,第二測(cè)試函數(shù)410實(shí)現(xiàn)由輸入的變量i與j找出較小的變量后輸出,程序設(shè)計(jì)人員執(zhí)行本發(fā)明的注冊(cè)程序后,將第二測(cè)試函數(shù)410的第三測(cè)試實(shí)例“(2,7)”與第三預(yù)期結(jié)果“(2)”、第四測(cè)試實(shí)例“(4,8)”與第四預(yù)期結(jié)果“(4)”存入數(shù)據(jù)庫中,對(duì)第二測(cè)試函數(shù)410進(jìn)行測(cè)試,測(cè)試完成之后產(chǎn)生測(cè)試覆蓋率420與測(cè)試報(bào)告430,并將產(chǎn)生的測(cè)試覆蓋率420與測(cè)試報(bào)告430以及第三、第四測(cè)試實(shí)例的測(cè)試結(jié)果存入數(shù)據(jù)庫中,接著,第三測(cè)試實(shí)例的測(cè)試覆蓋率421與第四測(cè)試實(shí)例的測(cè)試覆蓋率422完全相同,測(cè)試報(bào)告430顯示第三測(cè)試實(shí)例的刪除訊息433。
權(quán)利要求
1.一種實(shí)現(xiàn)單元測(cè)試的方法,其特征在于該方法包括以下步驟1)首先記錄待測(cè)試函數(shù)的函數(shù)信息、將待測(cè)試函數(shù)的測(cè)試實(shí)例以及與測(cè)試實(shí)例對(duì)應(yīng)的預(yù)期結(jié)果儲(chǔ)存在測(cè)試數(shù)據(jù)庫中;2)接著將所記錄的待測(cè)試函數(shù)加載,并且在加載后將待測(cè)試函數(shù)初始化;3)跟著由測(cè)試數(shù)據(jù)庫中讀出待測(cè)試函數(shù)的測(cè)試實(shí)例與測(cè)試實(shí)例對(duì)應(yīng)的預(yù)期結(jié)果;4)將讀出的測(cè)試實(shí)例依序?qū)Υ郎y(cè)試函數(shù)進(jìn)行測(cè)試,以得到測(cè)試實(shí)例的測(cè)試結(jié)果;5)判斷測(cè)試實(shí)例是否全部測(cè)完,否則返回步驟4),是則進(jìn)至步驟6);6)在所有的測(cè)試實(shí)例全部測(cè)試完成之后產(chǎn)生本次測(cè)試的測(cè)試覆蓋率,并借助比較測(cè)試實(shí)例對(duì)應(yīng)的預(yù)期結(jié)果與測(cè)試結(jié)果,產(chǎn)生本次測(cè)試的測(cè)試報(bào)告,輸出測(cè)試覆蓋率與測(cè)試結(jié)果。
2.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)單元測(cè)試的方法,其特征在于所述步驟6)之后還包括有步驟7)將測(cè)試時(shí)覆蓋的程序代碼完全相同的測(cè)試實(shí)例只保留一個(gè),將其余的測(cè)試實(shí)例全數(shù)刪除,把測(cè)試所產(chǎn)生的測(cè)試報(bào)告、測(cè)試覆蓋率、以及刪除后剩余的各測(cè)試實(shí)例的測(cè)試結(jié)果存入數(shù)據(jù)庫中。
3.根據(jù)權(quán)利要求1或2所述的實(shí)現(xiàn)單元測(cè)試的方法,其特征在于所述步驟2)中待測(cè)試函數(shù)初始化的過程中發(fā)現(xiàn)待測(cè)試的函數(shù)有呼叫其它的函數(shù),則以被呼叫的函數(shù)的回傳值取代被呼叫的函數(shù)。
4.一種實(shí)現(xiàn)權(quán)利要求1所述的實(shí)現(xiàn)單元測(cè)試的方法的測(cè)試系統(tǒng),其特征在于該系統(tǒng)包括測(cè)試數(shù)據(jù)庫模塊110、函數(shù)注冊(cè)模塊120、函數(shù)加載模塊130、函數(shù)測(cè)試模塊140、結(jié)果比較模塊150、結(jié)果記錄模塊160,所述函數(shù)注冊(cè)模塊120分別接入測(cè)試數(shù)據(jù)庫模塊110和函數(shù)加載模塊130,所述函數(shù)加載模塊130接入函數(shù)測(cè)試模塊140,所述函數(shù)測(cè)試模塊140接入結(jié)果比較模塊150,所述結(jié)果比較模塊150接入結(jié)果記錄模塊160,所述結(jié)果記錄模塊160接入測(cè)試數(shù)據(jù)庫模塊110,所述測(cè)試數(shù)據(jù)庫模塊110接入函數(shù)加載模塊130。
全文摘要
本發(fā)明為一種單元測(cè)試系統(tǒng)及方法,尤其是一種利用記錄函數(shù)信息的方式,將一函數(shù)抽離開發(fā)環(huán)境進(jìn)行單元測(cè)試,依據(jù)該函數(shù)的測(cè)試實(shí)例對(duì)該函數(shù)進(jìn)行測(cè)試產(chǎn)生的測(cè)試覆蓋率及測(cè)試報(bào)告,做為該函數(shù)的品質(zhì)參考數(shù)據(jù)的單元測(cè)試系統(tǒng)及方法。其技術(shù)解決方案為該方法包括以下步驟1)記錄待測(cè)試函數(shù)的函數(shù)信息、儲(chǔ)存測(cè)試實(shí)例以及對(duì)應(yīng)的預(yù)期結(jié)果;2)將所記錄的待測(cè)試函數(shù)加載,并初始化;3)讀出存儲(chǔ)的測(cè)試實(shí)例與預(yù)期結(jié)果;4)依序測(cè)試讀出的測(cè)試實(shí)例,得到測(cè)試結(jié)果;5)判斷是否測(cè)完,否則返回4),是則進(jìn)6);6)產(chǎn)生本次測(cè)試的測(cè)試覆蓋率,比較預(yù)期結(jié)果與測(cè)試結(jié)果,產(chǎn)生本次測(cè)試的測(cè)試報(bào)告,輸出測(cè)試覆蓋率與測(cè)試結(jié)果。
文檔編號(hào)G06F11/36GK1987821SQ20061010489
公開日2007年6月27日 申請(qǐng)日期2006年11月14日 優(yōu)先權(quán)日2006年11月14日
發(fā)明者陳淮琰, 王軍 申請(qǐng)人:無敵科技(西安)有限公司