專利名稱:一種單元測(cè)試方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及代碼測(cè)試領(lǐng)域,特別是涉及一種單元測(cè)試方法和系統(tǒng)。
背景技術(shù):
單元測(cè)試(模塊測(cè)試)是開發(fā)者編寫的一小段代碼,用于檢驗(yàn)被測(cè)代碼 的一個(gè)很小的、很明確的功能是否正確。通常而言, 一個(gè)單元測(cè)試是用于判斷 某個(gè)特定條件(或者場(chǎng)景)下某個(gè)特定函數(shù)的行為。例如,把一個(gè)很大的值放入一個(gè)有序列表(List)中去,然后確認(rèn)該值出現(xiàn)在列表(List)的尾部。或 者,從字符串中刪除匹配某種模式的字符,然后確認(rèn)字符串確實(shí)不再包含這些 字符了。
單元測(cè)試能提高新代碼的質(zhì)量,自動(dòng)、高覆蓋的單元測(cè)試,測(cè)試效果優(yōu)于 手工點(diǎn)擊完成的自測(cè)、功能驗(yàn)證。
單元測(cè)試在模擬錯(cuò)誤條件,覆蓋范圍都優(yōu)于手工功能測(cè)試。
單元測(cè)試更為重構(gòu)提供保障,種種原因?qū)е略O(shè)計(jì)不可能完美,重構(gòu)是改善 既有代碼設(shè)計(jì)、抑制軟件系統(tǒng)熵增的唯一手段。
集中網(wǎng)管系統(tǒng),也叫OMC系統(tǒng),全稱Operation Maintenance Center。該 系統(tǒng)采用J2EE (Java 2 Enterprise Edition)多層處理架構(gòu),實(shí)現(xiàn)了跨平臺(tái)的網(wǎng) 絡(luò)管理,系統(tǒng)能夠在多種平臺(tái)上進(jìn)行網(wǎng)絡(luò)維護(hù)。系統(tǒng)仍然沿用客戶機(jī)/服務(wù)器 (Client/Serve, C/S)模式,對(duì)部分模塊可通過WEB方式訪問,對(duì)外提供標(biāo) 準(zhǔn)的CORE A (Common Object Request Broker Architecture,公共對(duì)象請(qǐng)求代理 體系結(jié)構(gòu),通用對(duì)象請(qǐng)求代理體系結(jié)構(gòu))接口。
命令行系統(tǒng)命令行是稱為"DOS"的操作方式,需要在提示符下鍵入命令的操作方式,使用命令行完成功能的系統(tǒng)就是命令行系統(tǒng)。
現(xiàn)有技術(shù)中,在集中網(wǎng)管系統(tǒng)(OMC)中對(duì)命令行系統(tǒng)進(jìn)行單元測(cè)試存 在著一定的困難, 一些技術(shù)問題阻礙了單元測(cè)試的進(jìn)行。
針對(duì)集中網(wǎng)管系統(tǒng),單元測(cè)試主要存在的問題是無法擺脫對(duì)統(tǒng)一網(wǎng)管平臺(tái)/公共應(yīng)用功育巨(Uniform Element Platform/Common Application Function,UEP/CAF)底層公共模塊的依賴以及無法擺脫對(duì)數(shù)據(jù)庫、前臺(tái)外部系統(tǒng)的依賴。 針對(duì)命令行系統(tǒng), 一個(gè)簡(jiǎn)單的命令,例如增加一個(gè)單板"add board:0-l-2-9,UIM2",命令只是簡(jiǎn)單的一個(gè)字符串,實(shí)現(xiàn)的代碼卻相對(duì)復(fù)雜, 對(duì)之進(jìn)行單元測(cè)試需要構(gòu)造復(fù)雜的參數(shù),加入底層模塊的環(huán)境參數(shù),測(cè)試代價(jià) 很大。
發(fā)明內(nèi)容
本發(fā)明所要解決的問題是提供一種單元測(cè)試方法和系統(tǒng),其使得在單元測(cè) 試中擺脫對(duì)其他環(huán)境依賴,利用簡(jiǎn)單的命令行,實(shí)現(xiàn)命令行系統(tǒng)的單元測(cè)試, 提高測(cè)試速度。
為實(shí)現(xiàn)上述目的,本發(fā)明提供的一種單元測(cè)試方法,包括下列步驟
步驟A,搭建單元測(cè)試的運(yùn)行環(huán)境;
步驟B,初始化單元測(cè)試的命令服務(wù)類;
步驟C,測(cè)試單個(gè)命令;
步驟D,測(cè)試命令行系統(tǒng)。
所述步驟C測(cè)試單元命令,具體包括下列步驟
直接使用命令行系統(tǒng)的命令輸入,作為命令服務(wù)類實(shí)例的輸入,得到其返 回結(jié)果,在單元測(cè)試用例中,根據(jù)返回結(jié)果判斷測(cè)試是否通過。
所述步驟D測(cè)試命令行系統(tǒng),具體包括下列步驟
將命令行系統(tǒng)的命令組織成單元測(cè)試套,覆蓋命令行系統(tǒng)的功能,然后自 動(dòng)執(zhí)行整個(gè)單元測(cè)試,即可獲得完整的命令行系統(tǒng)的測(cè)試。
所述步驟A包括下列步驟
使用樁(Stub)策略方法,將對(duì)UEP/CAF底層公共模塊的依賴類修改為簡(jiǎn)單返回需要的數(shù)據(jù),以滿足單元測(cè)試的要求。
使用模擬對(duì)象(Mock objects)策略方法,替換UEP/CAF與物理配置命令 行模塊協(xié)作的類對(duì)象。
使用樁(Stub)策略方法,替換獲取數(shù)據(jù)庫連接的類方法。
為實(shí)現(xiàn)所述目的,本發(fā)明還提供一種單元測(cè)試系統(tǒng),在命令行系統(tǒng)中運(yùn)行,包括搭建環(huán)境模塊,初始化模塊,命令測(cè)試模塊,行系統(tǒng)測(cè)試模塊,其中
搭建環(huán)境模塊,用于搭建單元測(cè)試的運(yùn)行環(huán)境;
初始化模塊,用于初始化單元測(cè)試的命令服務(wù)類;
命令測(cè)試模塊,用于測(cè)試單個(gè)命令;
行系統(tǒng)測(cè)試模塊,用于測(cè)試命令行系統(tǒng)。
所述測(cè)試單個(gè)命令,是指直接使用命令行系統(tǒng)的命令輸入,作為命令服務(wù) 類實(shí)例的輸入,得到其返回結(jié)果,在單元測(cè)試用例中,根據(jù)返回結(jié)果判斷測(cè)試 是否通過。
所述測(cè)試命令行系統(tǒng),是指將命令行系統(tǒng)的命令組織成單元測(cè)試套,覆蓋 命令行系統(tǒng)的功能,然后自動(dòng)執(zhí)行整個(gè)單元測(cè)試。
本發(fā)明的單元測(cè)試方法和系統(tǒng),針對(duì)命令行系統(tǒng)的命令,不需要任何修改 即作為單元測(cè)試的輸入,得到測(cè)試結(jié)果,進(jìn)行單個(gè)單元測(cè)試,解決了對(duì)在單元 測(cè)試中對(duì)其他環(huán)境依賴的問題,提高了測(cè)試的速度。其通過將命令行系統(tǒng)的命 令組織成單元測(cè)試套,覆蓋命令行系統(tǒng)的功能,然后自動(dòng)執(zhí)行整個(gè)單元測(cè)試即 可獲得完整的命令行系統(tǒng)的測(cè)試。
圖1是本發(fā)明實(shí)施例單元測(cè)試方法的流程圖; 圖2是本發(fā)明實(shí)施例單元測(cè)試系統(tǒng)的架構(gòu)圖。
具體實(shí)施例方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí) 施例,對(duì)本發(fā)明的一種單元測(cè)試方法和系統(tǒng)進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解, 此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明的單元測(cè)試方法和系統(tǒng),更具體而言,是一種對(duì)命令行系統(tǒng)的單元 測(cè)試的方法和系統(tǒng),利用簡(jiǎn)單的實(shí)現(xiàn)命令,作為單元測(cè)試的輸入,通過該方法 得到測(cè)試結(jié)果,進(jìn)行單個(gè)單元測(cè)試,然后寫命令行系統(tǒng)的單元測(cè)試套,覆蓋命 令行系統(tǒng)的功能,自動(dòng)執(zhí)行即可獲得完整的命令行系統(tǒng)的測(cè)試,實(shí)現(xiàn)對(duì)命令行 系統(tǒng)的單元測(cè)試。
如圖1所示,本發(fā)明一種單元測(cè)試方法,在命令行系統(tǒng)中單元測(cè)試的流程 如下-
步驟SIOO,搭建單元測(cè)試的運(yùn)行環(huán)境。
使用Stub策略方法,將對(duì)UEP/CAF底層公共模塊的依賴類修改為簡(jiǎn)單返 回需要的數(shù)據(jù),以滿足單元測(cè)試的要求。
Stub (樁)策略方法是一種容許孤立測(cè)試粗粒度的代碼部分的策略方法。 Stub是代碼的一部分,在運(yùn)行時(shí)用stub替換真正的代碼,忽略調(diào)用代碼的實(shí) 現(xiàn)。其目的是用一個(gè)簡(jiǎn)單的行為替換一個(gè)復(fù)雜的行為,從而允許獨(dú)立地測(cè)試代 碼的某一部分。其是一種現(xiàn)有技術(shù),因而在本發(fā)明中不再一一詳細(xì)描述。
使用Mock objects策略方法,替換UEP/CAF與物理配置命令行模塊協(xié)作 的類對(duì)象。
Mock object (模擬對(duì)象)策略方法是一種孤立進(jìn)行細(xì)粒度的測(cè)試的策略方 法。Mock object是用來代替于測(cè)試代碼協(xié)作的對(duì)象。測(cè)試代碼可以調(diào)用mock object的策略方法。Mock object策略方法會(huì)傳遞結(jié)果,結(jié)果是由測(cè)試設(shè)置。 Mock objects非常適合把部分代碼邏輯的測(cè)試同其他的代碼隔離開來,Mock objects替換了測(cè)試中與方法協(xié)作的對(duì)象,從而提供了隔離層。從這個(gè)意義來說, 它跟stub類似,但是mock object不實(shí)現(xiàn)任何邏輯,只是提供一種使測(cè)試能控 制仿造類的所有業(yè)務(wù)邏輯方法行為的方法的空殼。其也是一種現(xiàn)有技術(shù),因而 在本發(fā)明中不再一一詳細(xì)描述。
使用Stub策略方法,替換獲取數(shù)據(jù)庫連接的類方法。
步驟S200,初始化單元測(cè)試的命令服務(wù)類。
初始化單元初始化一個(gè)命令服務(wù)類的實(shí)例,使得所有的測(cè)試數(shù)據(jù)歸于初始 化狀態(tài)。
步驟S300,測(cè)試單個(gè)命令。直接使用命令行系統(tǒng)的命令輸入,作為命令 服務(wù)類實(shí)例的輸入,得到其返回結(jié)果,在單元測(cè)試用例中,根據(jù)返回結(jié)果判斷 測(cè)試是否通過。如果通過,則轉(zhuǎn)步驟S400;否則,結(jié)束測(cè)試直接返回。
步驟S400,測(cè)試命令行系統(tǒng)。將命令行系統(tǒng)的命令組織成單元測(cè)試套, 覆蓋命令行系統(tǒng)的功能,然后自動(dòng)執(zhí)行整個(gè)單元測(cè)試,即可獲得完整的命令行 系統(tǒng)的測(cè)試。
本發(fā)明對(duì)命令行系統(tǒng)的單元測(cè)試的方法,很好的解決了對(duì)命令行系統(tǒng)進(jìn)行 單元測(cè)試的問題,擺脫對(duì)其他環(huán)境依賴,簡(jiǎn)單的實(shí)現(xiàn)命令行系統(tǒng)的單元測(cè)試, 提高測(cè)試的速度.
如圖2所示,本發(fā)明的單元測(cè)試系統(tǒng)20,在命令行系統(tǒng)中運(yùn)行,包括搭 建環(huán)境模塊21,初始化模塊22,命令測(cè)試模塊23,行系統(tǒng)測(cè)試模塊24。
搭建環(huán)境模塊21 ,用于搭建單元測(cè)試的運(yùn)行環(huán)境。
使用Stub策略,將對(duì)UEP/CAF底層公共模塊的依賴類修改為簡(jiǎn)單返回需 要的數(shù)據(jù),以滿足單元測(cè)試的要求。
使用Mock objects策略,替換UEP/CAF與物理配置命令行模塊協(xié)作的類 對(duì)象。
使用Stub策略,替換獲取數(shù)據(jù)庫連接的類方法。
初始化模塊22,用于初始化單元測(cè)試的命令服務(wù)類。
初始化模塊22初始化一個(gè)命令服務(wù)類的實(shí)例,使得所有的測(cè)試數(shù)據(jù)歸于 初始化狀態(tài)。
命令測(cè)試模塊23,用于測(cè)試單個(gè)命令。其直接使用命令行系統(tǒng)的命令輸 入,作為命令服務(wù)類實(shí)例的輸入,得到其返回結(jié)果,在單元測(cè)試用例中,根據(jù) 返回結(jié)果判斷測(cè)試是否通過。
行系統(tǒng)測(cè)試模塊24,用于測(cè)試命令行系統(tǒng)。將命令行系統(tǒng)的命令組織成 單元測(cè)試套,覆蓋命令行系統(tǒng)的功能,然后自動(dòng)執(zhí)行整個(gè)單元測(cè)試。
本單元測(cè)試系統(tǒng)只需要命令行系統(tǒng)的命令,不需要任何修改,作為單元測(cè) 試的輸入,通過該方法得到測(cè)試結(jié)果,進(jìn)行單個(gè)單元測(cè)試,解決了對(duì)其他環(huán)境 依賴,提高了測(cè)試的速度。
通過該系統(tǒng),寫命令行系統(tǒng)的單元測(cè)試套,覆蓋命令行系統(tǒng)的功能,自動(dòng) 執(zhí)行即可獲得完整的命令行系統(tǒng)的測(cè)試。
通過結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的描述,本發(fā)明的其它方面及特征對(duì)本 領(lǐng)域的技術(shù)人員而言是顯而易見的。
以上對(duì)本發(fā)明的具體實(shí)施例進(jìn)行了描述和說明,這些實(shí)施例應(yīng)被認(rèn)為其只 是示例性的,并不用于對(duì)本發(fā)明進(jìn)行限制,本發(fā)明應(yīng)根據(jù)所附的權(quán)利要求進(jìn)行 解釋。
權(quán)利要求
1、一種單元測(cè)試方法,其特征在于,包括下列步驟步驟A,搭建單元測(cè)試的運(yùn)行環(huán)境;步驟B,初始化單元測(cè)試的命令服務(wù)類;步驟C,測(cè)試單個(gè)命令;步驟D,測(cè)試命令行系統(tǒng)。
2、 根據(jù)權(quán)利要求1所述的單元測(cè)試方法,其特征在于,所述步驟C測(cè)試 單元命令,具體包括下列步驟直接使用命令行系統(tǒng)的命令輸入,作為命令服務(wù)類實(shí)例的輸入,得到其返 回結(jié)果,在單元測(cè)試用例中,根據(jù)返回結(jié)果判斷測(cè)試是否通過。
3、 根據(jù)權(quán)利要求2所述的單元測(cè)試方法,其特征在于,所述步驟D測(cè)試 命令行系統(tǒng),具體包括下列步驟將命令行系統(tǒng)的命令組織成單元測(cè)試套,覆蓋命令行系統(tǒng)的功能,然后自 動(dòng)執(zhí)行整個(gè)單元測(cè)試,即可獲得完整的命令行系統(tǒng)的測(cè)試。
4、 根據(jù)權(quán)利要求1至3任一項(xiàng)所述的單元測(cè)試方法,其特征在于,所述 步驟A包括下列步驟使用樁策略方法,將對(duì)UEP/CAF底層公共模塊的依賴類修改為簡(jiǎn)單返回 需要的數(shù)據(jù),以滿足單元測(cè)試的要求。
5、 根據(jù)權(quán)利要求4所述的單元測(cè)試方法,其特征在于,所述步驟A還包括下列步驟使用模擬對(duì)象策略方法,替換UEP/CAF與物理配置命令行模塊協(xié)作的類 對(duì)象。
6、 根據(jù)權(quán)利要求4所述的單元測(cè)試方法,其特征在于,所述步驟A還包 括下列步驟使用樁策略方法,替換獲取數(shù)據(jù)庫連接的類方法。
7、 一種單元測(cè)試系統(tǒng),在命令行系統(tǒng)中運(yùn)行,其特征在于,包括搭建環(huán) 境模塊,初始化模塊,命令測(cè)試模塊,行系統(tǒng)測(cè)試模塊,其中搭建環(huán)境模塊,用于搭建單元測(cè)試的運(yùn)行環(huán)境; 初始化模塊,用于初始化單元測(cè)試的命令服務(wù)類; 命令測(cè)試模塊,用于測(cè)試單個(gè)命令; 行系統(tǒng)測(cè)試模塊,用于測(cè)試命令行系統(tǒng)。
8、 根據(jù)權(quán)利要求7所述的單元測(cè)試系統(tǒng),其特征在于,所述測(cè)試單個(gè)命 令,是直接使用命令行系統(tǒng)的命令輸入,作為命令服務(wù)類實(shí)例的輸入,得到其 返回結(jié)果,在單元測(cè)試用例中,根據(jù)返回結(jié)果判斷測(cè)試是否通過。
9、 根據(jù)權(quán)利要求8所述的單元測(cè)試系統(tǒng),其特征在于,所述測(cè)試命令行 系統(tǒng),是將命令行系統(tǒng)的命令組織成單元測(cè)試套,覆蓋命令行系統(tǒng)的功能,然 后自動(dòng)執(zhí)行整個(gè)單元測(cè)試。
全文摘要
本發(fā)明提供一種單元測(cè)試方法和系統(tǒng)。該方法包括下列步驟步驟A,搭建單元測(cè)試的運(yùn)行環(huán)境;步驟B,初始化單元測(cè)試的命令服務(wù)類;步驟C,測(cè)試單個(gè)命令;步驟D,測(cè)試命令行系統(tǒng)。本發(fā)明解決了對(duì)命令行系統(tǒng)進(jìn)行單元測(cè)試的問題,擺脫其他環(huán)境依賴,簡(jiǎn)單的實(shí)現(xiàn)命令行系統(tǒng)的單元測(cè)試,提高測(cè)試的速度。
文檔編號(hào)H04L12/26GK101202675SQ20061016514
公開日2008年6月18日 申請(qǐng)日期2006年12月13日 優(yōu)先權(quán)日2006年12月13日
發(fā)明者軍 王, 王振宇 申請(qǐng)人:中興通訊股份有限公司