專利名稱:軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)方法及系統(tǒng)。
背景技術(shù):
軟件系統(tǒng)在設(shè)計(jì)開發(fā)過程中離不開測試,根據(jù)測試階段進(jìn)行劃分,測試可以分為 單元測試、集成測試和系統(tǒng)測試,覆蓋率指標(biāo)是為表示測試是否充分一個度量維度。其中, 在單元測試中,覆蓋率指標(biāo)用的比較多,通常包括源代碼語句覆蓋率或分支覆蓋率、條件 覆蓋率,而對于集成測試或系統(tǒng)測試由于代碼數(shù)量龐大,難以用上述指標(biāo)來測算,則多指軟 件需求覆蓋率或功能覆蓋率。 在實(shí)現(xiàn)覆蓋率統(tǒng)計(jì)的方法上,單元測試各項(xiàng)覆蓋率已經(jīng)有不少測試工具支持,例
如,商用工具Cantata、 CodeTest等,它通過掃描源程序生成跟蹤版本,在軟件執(zhí)行過程中
自動統(tǒng)計(jì)各項(xiàng)覆蓋信息,最終生成覆蓋率指標(biāo),方便測試者的事后分析。 但是,對于集成測試和系統(tǒng)測試而言,相對應(yīng)的覆蓋率指標(biāo)則沒有現(xiàn)成的自動統(tǒng)
計(jì)支持, 一般是通過手工進(jìn)行文檔設(shè)計(jì)及手工對應(yīng)統(tǒng)計(jì),來確認(rèn)測試執(zhí)行覆蓋情況,上述過
程比較繁瑣且自動化程度低,跟蹤的覆蓋率還是以用戶需求或軟件系統(tǒng)功能為粒度,相對
較粗,對代碼級的業(yè)務(wù)功能點(diǎn)覆蓋難以深入,難以加強(qiáng)代碼功能覆蓋分析而完善測試用例
設(shè)計(jì),保證測試的充分性。
發(fā)明內(nèi)容
針對相關(guān)技術(shù)中在集成測試和系統(tǒng)測試中,確認(rèn)測試執(zhí)行覆蓋情況的過程比較繁 瑣且自動化程度低的問題而提出本發(fā)明,為此,本發(fā)明的主要目的在于提供一種軟件業(yè)務(wù) 功能覆蓋率統(tǒng)計(jì)方法及裝置,以解決上述問題至少之一。 根據(jù)本發(fā)明的一個方面,提供了一種軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)方法。
根據(jù)本發(fā)明的軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)方法包括對軟件進(jìn)行業(yè)務(wù)功能覆蓋點(diǎn) 的掃描,獲取軟件的所有業(yè)務(wù)功能覆蓋點(diǎn)所組成的邏輯關(guān)系信息;采用預(yù)定的測試用例對 軟件進(jìn)行測試,并實(shí)時統(tǒng)計(jì)遍歷的業(yè)務(wù)功能覆蓋點(diǎn)信息;根據(jù)業(yè)務(wù)功能覆蓋點(diǎn)信息與邏輯 關(guān)系信息,統(tǒng)計(jì)出軟件業(yè)務(wù)功能覆蓋率。 根據(jù)本發(fā)明的另一方面,提供了一種軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)系統(tǒng)。 根據(jù)本發(fā)明的軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)系統(tǒng)包括自動掃描單元,用于軟件進(jìn)
行業(yè)務(wù)功能覆蓋點(diǎn)的掃描,獲取軟件的所有業(yè)務(wù)功能覆蓋點(diǎn)所組成的邏輯關(guān)系信息;業(yè)務(wù)
功能覆蓋點(diǎn)信息收集單元,用于在采用預(yù)定的測試用例對軟件進(jìn)行測試時,實(shí)時統(tǒng)計(jì)遍歷
的業(yè)務(wù)功能覆蓋點(diǎn)信息;業(yè)務(wù)功能覆蓋率統(tǒng)計(jì)單元,用于根據(jù)業(yè)務(wù)功能覆蓋點(diǎn)信息與邏輯
關(guān)系信息,統(tǒng)計(jì)出軟件業(yè)務(wù)功能覆蓋率。 通過本發(fā)明,提供一種統(tǒng)計(jì)軟件業(yè)務(wù)功能覆蓋率的系統(tǒng)及其對應(yīng)的工作方法,解 決了相關(guān)技術(shù)中在集成測試和系統(tǒng)測試中,確認(rèn)測試執(zhí)行覆蓋情況的過程比較繁瑣且自動
4化程度低的問題,進(jìn)而可以形成自動化統(tǒng)計(jì)的過程,大大提高覆蓋率統(tǒng)計(jì)效率。
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā) 明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中
圖1是根據(jù)本發(fā)明實(shí)施例的軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)方法的流程圖;
圖2是根據(jù)本發(fā)明實(shí)施例的軟件單元中某業(yè)務(wù)功能模塊的業(yè)務(wù)功能覆蓋點(diǎn)的邏 輯關(guān)系示意圖; 圖3是根據(jù)本發(fā)明實(shí)施例的軟件系統(tǒng)中基于代碼業(yè)務(wù)功能覆蓋率統(tǒng)計(jì)的分析示 意圖; 圖4是根據(jù)本發(fā)明優(yōu)選實(shí)施例的軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)方法的流程圖;
圖5是根據(jù)本發(fā)明實(shí)施例的軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)系統(tǒng)的結(jié)構(gòu)框圖;
圖6是根據(jù)本發(fā)明優(yōu)選實(shí)施例的軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)系統(tǒng)的結(jié)構(gòu)框圖;
圖7是根據(jù)本發(fā)明實(shí)例的軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施方式
功能概述 本發(fā)明提供了一種軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)方案,該方案思想如下 第一步進(jìn)行軟件代碼業(yè)務(wù)功能覆蓋點(diǎn)設(shè)計(jì)及插入,這是進(jìn)行業(yè)務(wù)功能覆蓋率統(tǒng)
計(jì)的前提。正常情況這個步驟在軟件代碼實(shí)現(xiàn)階段即進(jìn)行,這樣在推出的軟件中就已經(jīng)留
好這個統(tǒng)計(jì)接口 ;否則針對被測軟件代碼再進(jìn)行這個步驟的工作,需要重新編譯軟件生成
具有統(tǒng)計(jì)接口的版本。 第二步針對具有統(tǒng)計(jì)接口的軟件進(jìn)行業(yè)務(wù)功能覆蓋點(diǎn)自動掃描,通過對第一步 輸出的具有統(tǒng)計(jì)接口版本進(jìn)行一定規(guī)則的自動化掃描處理,形成軟件業(yè)務(wù)功能覆蓋點(diǎn)的組 成邏輯圖,可用于后續(xù)測試執(zhí)行中覆蓋率統(tǒng)計(jì)。 第三步進(jìn)行實(shí)際的測試及覆蓋率統(tǒng)計(jì),本步在第一步和第二步工作的基礎(chǔ)上展 開,運(yùn)行具有統(tǒng)計(jì)接口的軟件,開展一系列測試,隨測試用例的不斷增加,通過代碼業(yè)務(wù)功 能覆蓋率的實(shí)時統(tǒng)計(jì)而進(jìn)行測試調(diào)整。 第四步根據(jù)第三步的最后輸出進(jìn)行基于覆蓋率的測試結(jié)果分析,包括軟件模塊
代碼功能覆蓋情況分析及測試用例完備性分析,以得出更加準(zhǔn)確的測試結(jié)論。
下文中將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。需要說明的是,在不沖突的
情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。 下面結(jié)合附圖,對技術(shù)方案的實(shí)施作進(jìn)一步的描述 方法實(shí)施例 根據(jù)本發(fā)明的實(shí)施例,提供了一種軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)方法。
圖1是根據(jù)本發(fā)明實(shí)施例的軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)方法的流程圖。其中,該 方法應(yīng)用于軟件的集成測試及系統(tǒng)測試,如圖1所示,該方法包括以下處理(步驟S101-步 驟S105): 步驟S101 :對軟件進(jìn)行業(yè)務(wù)功能覆蓋點(diǎn)的掃描,獲取軟件的所有業(yè)務(wù)功能覆蓋點(diǎn)所組成的邏輯關(guān)系信息; 優(yōu)選地,上述步驟S101中的軟件包括以下至少之一 已具有統(tǒng)計(jì)接口的待測試軟件;重編譯不具有統(tǒng)計(jì)接口的待測試軟件生成的具有統(tǒng)計(jì)接口的軟件。 其中,所謂生成具有統(tǒng)計(jì)接口的軟件,即對軟件的業(yè)務(wù)功能覆蓋點(diǎn)進(jìn)行標(biāo)識,進(jìn)一步地,將設(shè)計(jì)好的業(yè)務(wù)功能覆蓋點(diǎn)在代碼的相應(yīng)位置進(jìn)行設(shè)置,以實(shí)現(xiàn)代碼運(yùn)行到此位置時該點(diǎn)可以被統(tǒng)計(jì)到。 優(yōu)選地,重編譯不具有統(tǒng)計(jì)接口的待測試軟件生成具有統(tǒng)計(jì)接口的軟件可以進(jìn)一步包括以下處理 (1)對待測試軟件的業(yè)務(wù)功能進(jìn)行分析; (2)根據(jù)業(yè)務(wù)功能選取待測試軟件的業(yè)務(wù)功能覆蓋點(diǎn); (3)對待測試軟件的業(yè)務(wù)功能覆蓋點(diǎn)進(jìn)行標(biāo)識,生成具有統(tǒng)計(jì)接口的軟件。
優(yōu)選地,步驟S101中,對具有統(tǒng)計(jì)接口的軟件進(jìn)行業(yè)務(wù)功能覆蓋點(diǎn)的掃描可以進(jìn)一步包括以下處理 (1)對具有統(tǒng)計(jì)接口的軟件的編譯文件進(jìn)行掃描;
(2)對具有統(tǒng)計(jì)接口的軟件的源代碼進(jìn)行掃描。 優(yōu)選地,上述邏輯關(guān)系信息可以以邏輯圖的形式進(jìn)行呈現(xiàn),具體可以參見圖2。
圖2是根據(jù)本發(fā)明實(shí)施例的軟件單元中某業(yè)務(wù)功能模塊的業(yè)務(wù)功能覆蓋點(diǎn)的邏輯關(guān)系示意圖。如圖2所示,從業(yè)務(wù)功能實(shí)體的代碼入口 (入口函數(shù))開始,根據(jù)業(yè)務(wù)功能的主要操作進(jìn)行業(yè)務(wù)功能覆蓋點(diǎn)設(shè)置,圖中圓圈即表示覆蓋點(diǎn)。圖中按照覆蓋點(diǎn)級聯(lián)關(guān)系進(jìn)行了劃分,例如,Layerl、 Layer2、 Layer3、 Layer4,其中,Layer2中業(yè)務(wù)功能覆蓋點(diǎn)為Layerl中某些業(yè)務(wù)功能覆蓋點(diǎn)的功能展開,Layer3中業(yè)務(wù)功能覆蓋點(diǎn)為Layer2中某些業(yè)務(wù)功能覆蓋點(diǎn)的功能展開,Layer4中業(yè)務(wù)功能覆蓋點(diǎn)為Layer3中某些業(yè)務(wù)功能覆蓋點(diǎn)的功能展開,形如函數(shù)調(diào)用關(guān)系;在同一個Layer級別中各業(yè)務(wù)功能覆蓋點(diǎn)依照業(yè)務(wù)處理流程的分支形成不同進(jìn)入條件,如圖以彎鉤的圖標(biāo)表示,上下相連的業(yè)務(wù)功能覆蓋點(diǎn)可以有各種條件進(jìn)入關(guān)系,同時也可有不同的分組關(guān)系。如圖Layerl級別共有五個業(yè)務(wù)功能覆蓋點(diǎn),其中業(yè)務(wù)功能覆蓋點(diǎn)1為無條件進(jìn)入,即代碼運(yùn)行至此一定被執(zhí)行,業(yè)務(wù)功能覆蓋點(diǎn)2、業(yè)務(wù)功能覆蓋點(diǎn)3、業(yè)務(wù)功能覆蓋點(diǎn)4、業(yè)務(wù)功能覆蓋點(diǎn)5為條件進(jìn)入,即各業(yè)務(wù)功能覆蓋點(diǎn)對應(yīng)的條件如果滿足就會被執(zhí)行,同時業(yè)務(wù)功能覆蓋點(diǎn)2與業(yè)務(wù)功能覆蓋點(diǎn)3屬于同一組,業(yè)務(wù)功能覆蓋點(diǎn)4與業(yè)務(wù)功能覆蓋點(diǎn)5屬于另外一組,表示業(yè)務(wù)功能覆蓋點(diǎn)2與業(yè)務(wù)功能覆蓋點(diǎn)3所在處理分支是同一類業(yè)務(wù)處理,如對應(yīng)于代碼的某個業(yè)務(wù)操作的if/else分支處理,而業(yè)務(wù)功能覆蓋點(diǎn)4與業(yè)務(wù)功能覆蓋點(diǎn)5所在處理分支則對應(yīng)另一類業(yè)務(wù)處理,如對應(yīng)于代碼隨后的另一個業(yè)務(wù)操作的if/else分支處理。 在圖2中,以虛圈表示的業(yè)務(wù)功能覆蓋點(diǎn)用來表示測試運(yùn)行中實(shí)際走到的位置,從此視圖中可以展示這個業(yè)務(wù)功能實(shí)體代碼功能覆蓋情況,例如,根據(jù)圖Layerl級別的業(yè)務(wù)功能覆蓋率為60% (3/5) , Layer2級別的業(yè)務(wù)功能覆率為40% (10/25) , Layer3級別的業(yè)務(wù)功能覆率為26.7% (4/15), Layer4級別的業(yè)務(wù)功能覆率為0X (0/5),總的代碼業(yè)務(wù)功能覆率為34% (17/50)。 步驟S103 :采用預(yù)定的測試用例對軟件進(jìn)行測試,并實(shí)時統(tǒng)計(jì)遍歷的業(yè)務(wù)功能覆蓋點(diǎn)信息;
步驟S105 :根據(jù)業(yè)務(wù)功能覆蓋點(diǎn)信息與邏輯關(guān)系信息,統(tǒng)計(jì)出軟件業(yè)務(wù)功能覆蓋 率的信息。 以下結(jié)合圖2進(jìn)行步驟S103、步驟S105舉例說明,在圖2中,以虛圖表示的業(yè)務(wù)功 能覆蓋點(diǎn)用來表示測試運(yùn)行中實(shí)際走到(遍歷)的位置(即業(yè)務(wù)功能覆蓋點(diǎn)信息),從此 視圖中可以展示這個業(yè)務(wù)功能實(shí)體代碼功能覆蓋情況(即軟件業(yè)務(wù)功能覆蓋率的信息), 例如,根據(jù)圖Layer 1級別的業(yè)務(wù)功能覆蓋率為60% (3/5) ,Layer2級別的業(yè)務(wù)功能覆率為 40% (10/25) ,Layer3級別的業(yè)務(wù)功能覆率為26. 7% (4/15) , Layer4級別的業(yè)務(wù)功能覆率 為0% (0/5),總的代碼業(yè)務(wù)功能覆率為34% (17/50)。 優(yōu)選地,在統(tǒng)計(jì)出軟件業(yè)務(wù)功能覆蓋率的信息之后,還可以包括以下處理
(1)判斷本次測試是否滿足預(yù)定測試要求; 其中,上述預(yù)定測試要求可以包括以下至少之一 軟件業(yè)務(wù)功能覆蓋率大于等于 預(yù)定覆蓋率指標(biāo);預(yù)定的至少一個業(yè)務(wù)功能覆蓋點(diǎn)被遍歷到。 (2)在本次測試不滿足預(yù)定測試要求時,對測試用例進(jìn)行補(bǔ)充,直至后續(xù)測試滿足 預(yù)定測試要求。 在具體實(shí)施過程中,基于步驟S105中描述的覆蓋率統(tǒng)計(jì)結(jié)果,可以進(jìn)行基于覆蓋 率測試結(jié)果的分析,包括軟件模塊代碼功能覆蓋情況分析及測試用例完備性分析,以得出 更加準(zhǔn)確的測試結(jié)論。以下結(jié)合圖3進(jìn)行描述。 圖3是根據(jù)本發(fā)明實(shí)施例的軟件系統(tǒng)中基于代碼業(yè)務(wù)功能覆蓋率統(tǒng)計(jì)的分析示 意圖。如圖3所示,一個軟件系統(tǒng)可以分為若干軟件單元,如圖為單元1、單元2、單元3,各 軟件單元又分為若干業(yè)務(wù)功能實(shí)體(業(yè)務(wù)功能模塊),如圖為業(yè)務(wù)功能實(shí)體l-l、業(yè)務(wù)功能 實(shí)體l-2、業(yè)務(wù)功能實(shí)體2-l、業(yè)務(wù)功能實(shí)體2-2、業(yè)務(wù)功能實(shí)體2-3、業(yè)務(wù)功能實(shí)體3-l、業(yè)務(wù) 功能實(shí)體3-2,圖中表示出軟件系統(tǒng)各模塊及業(yè)務(wù)功能實(shí)體間的相互交互關(guān)系;在測試完 成后,各業(yè)務(wù)功能實(shí)體的業(yè)務(wù)功能覆蓋率得以統(tǒng)計(jì),如圖3所示,各業(yè)務(wù)功能實(shí)體業(yè)務(wù)功能 覆蓋點(diǎn)視圖中虛圈表示已經(jīng)覆蓋的業(yè)務(wù)功能覆蓋點(diǎn),將這些視圖整合在軟件系統(tǒng)視圖中, 可以從總體上對整個軟件系統(tǒng)的測試覆蓋進(jìn)行分析,如圖業(yè)務(wù)功能實(shí)體2-3完全沒有覆蓋 到,說明缺少相關(guān)測試用例來驅(qū)動,進(jìn)而有針對性的分析軟件功能增加相應(yīng)用例,完善測試 用例集合。 圖4是根據(jù)本發(fā)明優(yōu)選實(shí)施例的軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)方法的流程圖。如圖 4所示,該方法包括以下處理(步驟S401-步驟S405): 步驟S401 :業(yè)務(wù)功能覆蓋點(diǎn)設(shè)計(jì)及插入,此步驟對應(yīng)于前述系統(tǒng)中軟件代碼業(yè)務(wù) 功能覆蓋點(diǎn)插入模塊,是在軟件代碼中對一系列反映代碼業(yè)務(wù)功能覆蓋點(diǎn)進(jìn)行定位與標(biāo)記 的過程,又可分為以下三個步驟。
(1)軟件代碼業(yè)務(wù)功能分析 在軟件系統(tǒng)進(jìn)行代碼實(shí)現(xiàn)時,對所要實(shí)現(xiàn)的內(nèi)容就已經(jīng)分好了軟件模塊及其各自 待實(shí)現(xiàn)的詳細(xì)業(yè)務(wù)功能,在軟件層次上可以將軟件系統(tǒng)看成是由若干軟件模塊組成,模塊 之間有明確的外部交互接口,各模塊協(xié)同工作共同完成整個軟件功能;每個軟件模塊內(nèi)部 分又可按待實(shí)現(xiàn)的業(yè)務(wù)功能分為若干業(yè)務(wù)功能實(shí)體,這些業(yè)務(wù)功能實(shí)體在運(yùn)行中相對獨(dú)立 又相互關(guān)聯(lián),之間有明確的內(nèi)部交互接口,用于協(xié)同完成本模塊的各項(xiàng)業(yè)務(wù)功能,一般情況 下這種業(yè)務(wù)功能實(shí)體以進(jìn)程或線程的方式出現(xiàn),有明確的代碼入口,再通過一系列函數(shù)的串聯(lián)完成本實(shí)體的功能,是軟件系統(tǒng)在代碼實(shí)現(xiàn)上真正的載體。本步驟所做的工作就是以 業(yè)務(wù)功能實(shí)體為基本對象,對實(shí)際代碼進(jìn)行業(yè)務(wù)功能分析,將軟件代碼所實(shí)現(xiàn)的業(yè)務(wù)操作 按順序?qū)?yīng)出來,相當(dāng)于從業(yè)務(wù)的角度對代碼進(jìn)行的解釋。
(2)反映業(yè)務(wù)功能覆蓋點(diǎn)選擇 在代碼業(yè)務(wù)功能分析的基礎(chǔ)上,將反映代碼業(yè)務(wù)處理的各種操作進(jìn)行一定程度的
歸并整理,把這些歸并后的關(guān)鍵操作位置做為業(yè)務(wù)功能覆蓋點(diǎn)選擇出來。首先是對應(yīng)于代
碼的不同處理分支進(jìn)行整理以反映不同業(yè)務(wù)處理流程;然后在同一處理分支流程中進(jìn)行主
要操作確認(rèn)保留(即本流程分支所實(shí)現(xiàn)業(yè)務(wù)功能主要步驟),對于同主要操作相串行的次
要操作進(jìn)行去除,其業(yè)務(wù)處理描述可以歸并入對應(yīng)的主要操作,一個主要操作位置即對應(yīng)
設(shè)置一個業(yè)務(wù)功能覆蓋點(diǎn),這樣就形成此分支的一個覆蓋點(diǎn)集合;然后將這些不同分支覆
蓋點(diǎn)集合進(jìn)行適當(dāng)分組劃分,屬于同一組的不同分支覆蓋點(diǎn)表示對同一類業(yè)務(wù)操作的不同
處理,對應(yīng)于代碼對某類業(yè)務(wù)處理的不同分支,如if/else分支;最后對所選擇出來的各分
支各覆蓋點(diǎn)進(jìn)行上下級的關(guān)聯(lián),類似于函數(shù)間調(diào)用關(guān)系,也對應(yīng)于業(yè)務(wù)處理的分層展開;詳
細(xì)說明請參見附圖2的描述。
(3)在代碼中實(shí)現(xiàn)業(yè)務(wù)功能覆蓋點(diǎn)插入 將所設(shè)計(jì)好的業(yè)務(wù)功能覆蓋點(diǎn)在代碼相應(yīng)位置進(jìn)行設(shè)置,以實(shí)現(xiàn)代碼運(yùn)行至此位
置時點(diǎn)位可以被統(tǒng)計(jì)到。所有這些業(yè)務(wù)功能覆蓋點(diǎn)整合在一起就可以表示軟件代碼的業(yè)務(wù)
功能情況,當(dāng)某些覆蓋點(diǎn)被實(shí)際統(tǒng)計(jì)到時,就可以計(jì)算出對應(yīng)的業(yè)務(wù)功能覆蓋率。 步驟S403 :業(yè)務(wù)功能覆蓋點(diǎn)自動掃描,本步驟對應(yīng)于前述系統(tǒng)中軟件代碼業(yè)務(wù)功
能覆蓋點(diǎn)自動掃描模塊,用于自動生成業(yè)務(wù)功能覆蓋點(diǎn)邏輯圖,又可分為以下三個步驟。
(1)基于編譯文件的信息掃描 針對加入業(yè)務(wù)功能覆蓋點(diǎn)的被測軟件,首先從其編譯文件入手進(jìn)行信息掃描,提 取代碼中從業(yè)務(wù)功能實(shí)體入口開始的各業(yè)務(wù)功能覆蓋點(diǎn)的分布級聯(lián)關(guān)系,輸出構(gòu)建業(yè)務(wù)功 能覆蓋點(diǎn)邏輯圖的第一階段信息。
(2)基于源代碼的信息掃描 針對加入業(yè)務(wù)功能覆蓋點(diǎn)的被測軟件,還需要從其源代碼入手進(jìn)行更多信息掃 描,提取描述業(yè)務(wù)功能覆蓋點(diǎn)功能說明及反映業(yè)務(wù)功能覆蓋點(diǎn)分組分支關(guān)系說明,輸出構(gòu) 建業(yè)務(wù)功能覆蓋點(diǎn)邏輯圖的第二階段信息。
(3)業(yè)務(wù)功能覆蓋點(diǎn)邏輯圖生成 綜合步驟S403中的上述步驟(1) 、 (2)生成的信息,整合生成完整的以軟件代碼中 業(yè)務(wù)功能實(shí)體為基本對象的業(yè)務(wù)功能覆蓋點(diǎn)邏輯圖。 步驟S405 :測試及覆蓋率統(tǒng)計(jì),本步驟對應(yīng)于前述系統(tǒng)中業(yè)務(wù)功能覆蓋點(diǎn)嵌入收 集模塊、業(yè)務(wù)功能覆蓋統(tǒng)計(jì)執(zhí)行模塊、業(yè)務(wù)功能覆蓋率統(tǒng)計(jì)模塊,是針對業(yè)務(wù)功能覆蓋點(diǎn)插 入后的軟件進(jìn)行的軟件測試過程,對軟件實(shí)際運(yùn)行的業(yè)務(wù)功能覆蓋率進(jìn)行統(tǒng)計(jì)。具體地,步 驟S405可以包括以下四個步驟 [ooes] (1)設(shè)計(jì)測試用例 本步驟首先根據(jù)測試規(guī)程進(jìn)行測試用例的設(shè)計(jì),可按照測試需求的覆蓋情況來初 步判定用例設(shè)計(jì)的完備性; 同時本步驟也包括對上述用例設(shè)計(jì)中遺漏的測試內(nèi)容進(jìn)行補(bǔ)充設(shè)計(jì),其承接于步
8驟S405中的步驟(4),是基于業(yè)務(wù)功能覆蓋率情況來補(bǔ)充用例設(shè)計(jì)。 [OCm] (2)執(zhí)行已定義測試用例 執(zhí)行步驟S403中的中設(shè)計(jì)好的測試用例,可以是手工用例也可以是自動化用例,
以實(shí)現(xiàn)業(yè)務(wù)功能覆蓋率統(tǒng)計(jì)的驅(qū)動。
(3)業(yè)務(wù)功能覆蓋率實(shí)時統(tǒng)計(jì) 在執(zhí)行測試用例過程中,采用本方法步驟S401實(shí)現(xiàn)的業(yè)務(wù)功能覆蓋點(diǎn)的軟件可 以同步統(tǒng)計(jì)代碼中實(shí)際走到的業(yè)務(wù)功能覆蓋點(diǎn)信息,這些業(yè)務(wù)功能覆蓋點(diǎn)信息可以被實(shí)時 處理,結(jié)合步驟S403輸出的業(yè)務(wù)功能覆蓋點(diǎn)邏輯圖,進(jìn)而轉(zhuǎn)化成軟件代碼業(yè)務(wù)功能覆蓋率數(shù)據(jù)。 (4)判斷覆蓋率是否滿足要求 在運(yùn)行完測試用例后對獲得的軟件代碼業(yè)務(wù)功能覆蓋率進(jìn)行判斷,以事先定義的 覆蓋率指標(biāo)或某些必須覆蓋的業(yè)務(wù)功能處理點(diǎn)是否走到來決定測試是否完成,如果未能滿 足要求則轉(zhuǎn)到步驟S405中的步驟(1)進(jìn)行新測試用例的補(bǔ)充設(shè)計(jì);如果已滿足要求就可以 進(jìn)入步驟S407。
步驟S407 :基于覆蓋率的測試結(jié)果分析; 在所有測試用例測試完成后,可以依據(jù)所獲得的代碼業(yè)務(wù)功能覆蓋率數(shù)據(jù)進(jìn)行更 準(zhǔn)確的測試分析。可對整個軟件系統(tǒng)中各軟件模塊的各業(yè)務(wù)功能實(shí)體的業(yè)務(wù)功能覆蓋率進(jìn) 行匯總,以了解在當(dāng)前測試情況下各模塊的業(yè)務(wù)功能覆蓋情況,以及隨著新增用例的針對 性運(yùn)行而增加的覆蓋率情況,從代碼級進(jìn)行業(yè)務(wù)功能覆蓋分析;進(jìn)而可用于測試用例完備 性分析,明確在滿足不同測試覆蓋率條件下測試用例集合的狀況,從而對用例集合進(jìn)行優(yōu) 化及進(jìn)一步補(bǔ)充,或去除冗余的用例,對于軟件測試是否可以結(jié)束提供了另一個檢視的角 度。 通過上述實(shí)施例,提供了一種軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)方法。在集成測試和系 統(tǒng)測試中,簡化了測試過程,提高了測試自動化程度,從而可以大大提高覆蓋率統(tǒng)計(jì)效率。
裝置實(shí)施例 根據(jù)本發(fā)明的實(shí)施例,提供了一種軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)裝置。 圖5是根據(jù)本發(fā)明實(shí)施例的軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)系統(tǒng)的結(jié)構(gòu)框圖。圖6是
根據(jù)本發(fā)明優(yōu)選實(shí)施例的軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)系統(tǒng)的結(jié)構(gòu)框圖。如圖5所示,根據(jù)
本發(fā)明實(shí)施例的軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)系統(tǒng)包括自動掃描單元50、業(yè)務(wù)功能覆蓋點(diǎn)
信息收集單元52、業(yè)務(wù)功能覆蓋率統(tǒng)計(jì)單元54,以下結(jié)合圖6進(jìn)行描述。 自動掃描單元50,用于對軟件進(jìn)行業(yè)務(wù)功能覆蓋點(diǎn)的掃描,獲取軟件的所有業(yè)務(wù)
功能覆蓋點(diǎn)所組成的邏輯關(guān)系信息; 優(yōu)選地,如圖6所示,上述自動掃描單元還可以包括編譯文件掃描模塊500,用于 對上述軟件的編譯文件進(jìn)行掃描;源代碼掃描模塊502,用于對上述軟件的源代碼進(jìn)行掃描。 業(yè)務(wù)功能覆蓋點(diǎn)信息收集單元52,與自動掃描單元50相連接,用于在采用預(yù)定的 測試用例對軟件進(jìn)行測試時,實(shí)時統(tǒng)計(jì)遍歷的業(yè)務(wù)功能覆蓋點(diǎn)信息; 業(yè)務(wù)功能覆蓋率統(tǒng)計(jì)單元54,與業(yè)務(wù)功能覆蓋點(diǎn)信息收集單元52相連接,用于根 據(jù)業(yè)務(wù)功能覆蓋點(diǎn)信息與邏輯關(guān)系信息,統(tǒng)計(jì)出軟件業(yè)務(wù)功能覆蓋率。
9
優(yōu)選地,如圖6所示,上述裝置還可以包括軟件代碼業(yè)務(wù)功能覆蓋點(diǎn)插入單元
56,用于對軟件代碼進(jìn)行業(yè)務(wù)功能覆蓋點(diǎn)進(jìn)行標(biāo)識,生成具有統(tǒng)計(jì)接口的軟件。 優(yōu)選地,如圖6所示,上述裝置還可以包括判斷單元58,與業(yè)務(wù)功能覆蓋率統(tǒng)計(jì)
單元相連接,用于判斷本次測試是否滿足預(yù)定測試要求;測試用例補(bǔ)充單元60,與判斷單
元58相連接,用于在本次測試不滿足預(yù)定測試要求時,對測試用例進(jìn)行補(bǔ)充。 優(yōu)選地,在測試用例補(bǔ)充單元60補(bǔ)充新的測試用例之后,業(yè)務(wù)功能覆蓋點(diǎn)信息收
集單元52在利用新的測試用例對軟件進(jìn)行測試時,實(shí)時統(tǒng)計(jì)遍歷的業(yè)務(wù)功能覆蓋點(diǎn)信息。 圖7是根據(jù)本發(fā)明實(shí)例的軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)系統(tǒng)的結(jié)構(gòu)框圖。如圖7所
示,該系統(tǒng)可以包括兩大組成部分待測試軟件系統(tǒng)和業(yè)務(wù)功能覆蓋統(tǒng)計(jì)系統(tǒng)。 待測試軟件系統(tǒng)由待測試軟件對象和業(yè)務(wù)功能覆蓋點(diǎn)嵌入收集單元(相當(dāng)于圖
5中的業(yè)務(wù)功能覆蓋點(diǎn)信息收集單元)構(gòu)成,待測試軟件對象即待統(tǒng)計(jì)覆蓋率的待測試軟
件,可由若干軟件單元組成,業(yè)務(wù)功能覆蓋點(diǎn)嵌入收集單元是為統(tǒng)計(jì)業(yè)務(wù)功能覆蓋而嵌入
的適配單元,與待測試軟件對象運(yùn)行在一個系統(tǒng)中;業(yè)務(wù)功能覆蓋統(tǒng)計(jì)系統(tǒng)由軟件代碼業(yè)
務(wù)功能覆蓋點(diǎn)插入單元、軟件代碼業(yè)務(wù)功能覆蓋點(diǎn)自動化掃描單元(相當(dāng)于圖5中自動掃
描單元)、業(yè)務(wù)功能覆蓋統(tǒng)計(jì)執(zhí)行單元、業(yè)務(wù)功能覆蓋率統(tǒng)計(jì)單元(相當(dāng)于圖5中業(yè)務(wù)功能
覆蓋率統(tǒng)計(jì)單元)所構(gòu)成,為另一個運(yùn)行系統(tǒng);兩個系統(tǒng)通過通信接口 (例如,SOCKRT接
口 )而關(guān)聯(lián),待測試軟件系統(tǒng)中業(yè)務(wù)功能覆蓋點(diǎn)嵌入收集單元與業(yè)務(wù)功能覆蓋點(diǎn)統(tǒng)計(jì)系統(tǒng)
中業(yè)務(wù)功能覆蓋統(tǒng)計(jì)執(zhí)行單元之間有業(yè)務(wù)交互。 由上述各單元相互結(jié)合的系統(tǒng)的工作過程如下 首先,由軟件代碼業(yè)務(wù)功能覆蓋點(diǎn)插入單元(相當(dāng)于圖5中軟件代碼業(yè)務(wù)功能覆
蓋點(diǎn)插入單元)完成對被測軟件代碼業(yè)務(wù)功能覆蓋點(diǎn)的設(shè)計(jì)插入。如果業(yè)務(wù)功能覆蓋點(diǎn)的
設(shè)計(jì)插入已經(jīng)在軟件代碼編碼實(shí)現(xiàn)階段進(jìn)行,軟件留有統(tǒng)計(jì)接口 ,本單元工作可以跳過。 如圖7所示,如果在軟件代碼編碼實(shí)現(xiàn)階段,沒有執(zhí)行業(yè)務(wù)功能覆蓋點(diǎn)的設(shè)計(jì)插
入,則需要軟件代碼業(yè)務(wù)功能覆蓋點(diǎn)插入單元對業(yè)務(wù)功能覆蓋點(diǎn)進(jìn)行標(biāo)識,輸出具有統(tǒng)計(jì)
接口的版本,這時可做為另兩個單元的輸入使用。 一方面,如圖中①信息流向所示成為軟件
代碼業(yè)務(wù)功能覆蓋點(diǎn)自動掃描單元輸入,通過此單元對軟件編譯文件及源代碼進(jìn)行自動掃
描而將軟件代碼業(yè)務(wù)功能覆蓋點(diǎn)進(jìn)行整合生成一個匯總的業(yè)務(wù)功能覆蓋點(diǎn)邏輯圖;另一方
面,如圖中②信息流向所示提供給被測軟件系統(tǒng)具有業(yè)務(wù)功能覆蓋統(tǒng)計(jì)接口的被測軟件對
象,形成實(shí)際運(yùn)行軟件;當(dāng)測試這個軟件,被測軟件對象中業(yè)務(wù)功能覆蓋點(diǎn)被遍歷時的信息
會由業(yè)務(wù)功能覆蓋點(diǎn)嵌入收集單元實(shí)時收集,如圖中③信息流向所示,本單元通過通信接
口與業(yè)務(wù)功能覆蓋統(tǒng)計(jì)執(zhí)行單元相接口,把實(shí)時收集的業(yè)務(wù)功能覆蓋點(diǎn)信息上報,如圖中
④信息流向所示;業(yè)務(wù)功能覆蓋統(tǒng)計(jì)執(zhí)行單元對接收到的實(shí)際遍歷到的業(yè)務(wù)功能覆蓋點(diǎn)信
息進(jìn)行處理,按業(yè)務(wù)功能覆蓋點(diǎn)的分類規(guī)則進(jìn)行整合歸并,并將結(jié)果轉(zhuǎn)給業(yè)務(wù)功能覆蓋率 統(tǒng)計(jì)單元,如圖中⑤信息流向所示;業(yè)務(wù)功能覆蓋率統(tǒng)計(jì)單元在接收到業(yè)務(wù)功能覆蓋統(tǒng)計(jì)
執(zhí)行單元傳來的業(yè)務(wù)功能覆蓋點(diǎn)整合信息后,如圖中⑥信息流向所示會使用軟件代碼業(yè)務(wù)
功能覆蓋點(diǎn)自動掃描單元輸出的業(yè)務(wù)功能覆蓋點(diǎn)邏輯圖,進(jìn)行被測軟件對象的業(yè)務(wù)功能覆
蓋統(tǒng)計(jì),得到測試后實(shí)際遍歷的軟件代碼業(yè)務(wù)功能覆蓋率信息。 通過上述實(shí)施例,提供了一種軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)裝置。通過自動掃描單 元、業(yè)務(wù)功能覆蓋點(diǎn)信息收集單元、業(yè)務(wù)功能覆蓋率統(tǒng)計(jì)單元的相互結(jié)合,可以解決相關(guān)技術(shù)中在集成測試和系統(tǒng)測試中,確認(rèn)測試執(zhí)行覆蓋情況的過程比較繁瑣且自動化程度低的 問題,進(jìn)而可以形成自動化統(tǒng)計(jì)的過程,大大提高覆蓋率統(tǒng)計(jì)效率。 綜上所述,通過本發(fā)明提供的實(shí)施例,提供了一種軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)方 法及系統(tǒng),可以克服相關(guān)技術(shù)中在進(jìn)行軟件集成測試及系統(tǒng)測試時只能以手工進(jìn)行,且無 法深入到代碼級業(yè)務(wù)功能覆蓋的缺點(diǎn),在滿足軟件系統(tǒng)在集成測試和系統(tǒng)測試下的軟件業(yè) 務(wù)功能覆蓋率統(tǒng)計(jì)的前提下,又能適應(yīng)其代碼規(guī)模龐大的特點(diǎn),并形成自動化統(tǒng)計(jì)的過程, 大大提高覆蓋率統(tǒng)計(jì)效率并對測試用例完備性設(shè)計(jì)有更好的輔助,并且對于軟件集成測試 及系統(tǒng)測試是否可以結(jié)束,提供了另一個檢視的角度。 顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用 的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個的計(jì)算裝置上,或者分布在多個計(jì)算裝置所組成 的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲 在存儲裝置中由計(jì)算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們 中的多個模塊或步驟制作成單個集成電路模塊來實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的 硬件和軟件結(jié)合。 以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技 術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
一種軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)方法,包括對軟件進(jìn)行業(yè)務(wù)功能覆蓋點(diǎn)的掃描,獲取所述軟件的所有業(yè)務(wù)功能覆蓋點(diǎn)所組成的邏輯關(guān)系信息;采用預(yù)定的測試用例對所述軟件進(jìn)行測試,并實(shí)時統(tǒng)計(jì)遍歷的業(yè)務(wù)功能覆蓋點(diǎn)信息;根據(jù)所述業(yè)務(wù)功能覆蓋點(diǎn)信息與所述邏輯關(guān)系信息,統(tǒng)計(jì)出軟件業(yè)務(wù)功能覆蓋率。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述軟件包括以下至少之一 已具有統(tǒng)計(jì)接口的待測試軟件;重編譯不具有統(tǒng)計(jì)接口的待測試軟件生成的具有統(tǒng)計(jì)接口的軟件。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,重編譯不具有統(tǒng)計(jì)接口的待測試軟件包括對所述待測試軟件的業(yè)務(wù)功能進(jìn)行分析; 根據(jù)所述業(yè)務(wù)功能選取所述待測試軟件的業(yè)務(wù)功能覆蓋點(diǎn);對所述待測試軟件的業(yè)務(wù)功能覆蓋點(diǎn)進(jìn)行標(biāo)識,生成所述具有統(tǒng)計(jì)接口的軟件。
4. 根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于,對所述軟件進(jìn)行業(yè)務(wù)功能覆 蓋點(diǎn)的掃描包括對所述具有統(tǒng)計(jì)接口的軟件的編譯文件進(jìn)行掃描; 對所述具有統(tǒng)計(jì)接口的軟件的源代碼進(jìn)行掃描。
5. 根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于,在統(tǒng)計(jì)出軟件業(yè)務(wù)功能覆蓋 率的信息之后,所述方法還包括判斷本次測試是否滿足預(yù)定測試要求;在本次測試不滿足所述預(yù)定測試要求時,對所述測試用例進(jìn)行補(bǔ)充,直至后續(xù)測試滿 足預(yù)定測試要求。
6. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述預(yù)定測試要求包括以下至少之一 所述軟件業(yè)務(wù)功能覆蓋率大于等于預(yù)定覆蓋率指標(biāo); 預(yù)定的至少一個業(yè)務(wù)功能覆蓋點(diǎn)被遍歷到。
7. —種軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)系統(tǒng),其特征在于,所述系統(tǒng)包括 自動掃描單元,用于軟件進(jìn)行業(yè)務(wù)功能覆蓋點(diǎn)的掃描,獲取所述軟件的所有業(yè)務(wù)功能覆蓋點(diǎn)所組成的邏輯關(guān)系信息;業(yè)務(wù)功能覆蓋點(diǎn)信息收集單元,用于在采用預(yù)定的測試用例對所述軟件進(jìn)行測試時, 實(shí)時統(tǒng)計(jì)遍歷的業(yè)務(wù)功能覆蓋點(diǎn)信息;業(yè)務(wù)功能覆蓋率統(tǒng)計(jì)單元,用于根據(jù)所述業(yè)務(wù)功能覆蓋點(diǎn)信息與所述邏輯關(guān)系信息, 統(tǒng)計(jì)出軟件業(yè)務(wù)功能覆蓋率。
8. 根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述裝置還包括軟件代碼業(yè)務(wù)功能覆蓋點(diǎn)插入單元,用于對軟件代碼進(jìn)行業(yè)務(wù)功能覆蓋點(diǎn)進(jìn)行標(biāo)識, 生成所述具有統(tǒng)計(jì)接口的所述軟件。
9. 根據(jù)權(quán)利要求7或8所述的系統(tǒng),其特征在于,所述自動掃描單元包括 編譯文件掃描模塊,用于對所述軟件的編譯文件進(jìn)行掃描; 源代碼掃描模塊,用于對所述軟件的源代碼進(jìn)行掃描。
10. 根據(jù)權(quán)利要求7或8所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括判斷單元,用于判斷本次測試是否滿足預(yù)定測試要求;測試用例補(bǔ)充單元,用于在本次測試不滿足所述預(yù)定測試要求時,對所述測試用例進(jìn) 行補(bǔ)充。
全文摘要
本發(fā)明公開了一種軟件業(yè)務(wù)功能覆蓋率的統(tǒng)計(jì)方法及系統(tǒng)。上述方法包括對軟件進(jìn)行業(yè)務(wù)功能覆蓋點(diǎn)的掃描,獲取軟件的所有業(yè)務(wù)功能覆蓋點(diǎn)所組成的邏輯關(guān)系信息;采用預(yù)定的測試用例對軟件進(jìn)行測試,并實(shí)時統(tǒng)計(jì)遍歷的業(yè)務(wù)功能覆蓋點(diǎn)信息;根據(jù)業(yè)務(wù)功能覆蓋點(diǎn)信息與邏輯關(guān)系信息,統(tǒng)計(jì)出軟件業(yè)務(wù)功能覆蓋率。根據(jù)本發(fā)明提供的技術(shù)方案,解決了相關(guān)技術(shù)中在集成測試和系統(tǒng)測試中,確認(rèn)測試執(zhí)行覆蓋情況的過程比較繁瑣且自動化程度低的問題,進(jìn)而可以形成自動化統(tǒng)計(jì)的過程,大大提高覆蓋率統(tǒng)計(jì)效率。
文檔編號G06F11/36GK101706751SQ20091022597
公開日2010年5月12日 申請日期2009年11月23日 優(yōu)先權(quán)日2009年11月23日
發(fā)明者左軍, 羅漩 申請人:中興通訊股份有限公司