新四季網

檢查單元測試質量的方法和系統的製作方法

2023-12-11 09:10:27 1

專利名稱:檢查單元測試質量的方法和系統的製作方法
技術領域:
本申請涉及計算機領域,特別涉及一種檢查單元測試質量的方法和系統。
背景技術:
單元測試是開發者編寫的一小段代碼,用於檢驗被測代碼的一個很小的、很明確的功能是否正確。通常而言,一個單元測試是用於判斷某個特定條件(或者場景)下某個特定函數的行為。例如,可能需要把一個很大的值放入一個有序列表(list)中去,然後確認該值出現在list的尾部。單元測試是在軟體開發過程中要進行的最低級別的測試活動,在單元測試活動中,軟體的獨立單元將在與程序的其他部分相隔離的情況下進行測試。單元測試不僅僅是作為無錯編碼的一種輔助手段在一次性的開發過程中使用,單元測試必須是可重複的,無論是在軟體修改,或是移植到新的運行環境的過程中。目前,單元測試的代碼覆蓋率雖然提高了,但由於單元測試的質量不能得到很好的保證,影響了單元測試的有效性。因此,急需一種有效的方案來檢查單元測試的質量,以提升單元測試的有效性。

發明內容
為了提升單元測試的有效性,本申請提供了一種檢查單元測試質量的方法和系統,技術方案如下:一種單元測試質量的檢查方法,包括:利用面向切面編程方式,根據預設的用於描述測試元的元語獲取所述測試元對應的測試元數據;獲取單元測試用例檢查規則;根據所述測試元數據和所述單元測試用例檢查規則檢查單元測試質量;輸出單元測試的質量檢查結果。一種單元測試質量的檢查系統,包括:測試元數據獲取模塊,用於利用面向切面編程方式,根據預設的用於描述測試元的元語獲取所述測試元對應的測試元數據;檢查規則獲取模塊,用於獲取單元測試用例檢查規則;規則檢查模塊,用於根據所述測試元數據和所述單元測試用例檢查規則檢查單元測試質量;輸出模塊,用於輸出單元測試的質量檢查結果。本申請的技術方案通過預設描述測試元的元語和單元測試用例檢查規則,然後根據元語獲取測試元對應的測試元數據,並利用測試元數據和單元測試用例檢查規則,能夠全面檢查單元測試的質量,提高單元測試的有效性。通過以下參照附圖對本申請實施例的說明,本申請的上述以及其它目的、特徵和優點將更加明顯。


下面將參照所附附圖來描述本申請的實施例,其中:圖1是本申請實施例提供的檢查單元測試質量的方法的流程圖;圖2是本申請實施例提供的檢查單元測試質量的系統的結構圖;圖3是本申請實施例提供的檢查單元測試質量的方法的詳細流程圖。
具體實施例方式下面結合附圖詳細描述本申請的具體實施例。應當注意,這裡描述的實施例只用於舉例說明,並不用於限制本申請。影響單元測試的質量的因素包括但不限於以下幾種:第一、單元測試代碼風格不規範,缺乏統一性。具體的表現形式包括但不限於以下幾種:單元測試缺少斷言;單元測試用例未包含預期結果;單元測試僅覆蓋正常情況,對異常情況未考慮;測試方法的命名不統一;一些dao層的刪除數據方法沒有進行單元測試;單元測試數據繁多,有些方法參數/斷言很多,所以會省略一些欄位,可能會放過一些漏洞(bug)。第二、單元測試用例設計不規範,系統測試功能覆蓋面不全。具體的表現形式包括但不限於以下幾種:不同的業務場景,靠人工修改參數來進行單元測試,而不是區分不同的測試用例來實現;dao層測試用例只有應用程式編程接口(Application ProgrammingInterface, API)調用;集成測試用例只包含了業務場景的簡單串聯,沒有走到所有的關鍵路徑;單元測試沒有按等價類劃分測試用例,一般一個方法只會對應一個測試用例,例如空值(null)、邊界值、極限值並沒有被覆蓋,會漏掉一些異常漏洞(bug)。第三、單元測試依賴外部環境變量,外部環境的不穩定會導致單元測試的不穩定性。具體的表現形式包括但不限於以下幾種:服務(Service)單元測試時需要屏蔽所有外部環境因素;私有方法應該獨立測試;避免單元測試之間的依賴關係;有的類中變量是以注入的方式賦值,該賦值在方法中需要使用到,需要對這些變量也做一下覆蓋測試,看賦值是否正確。為了解決現有技術中存在的問題,本申請通過預設用於描述測試元的元語和單元測試用例檢查規則,然後根據元語獲取測試元對應的測試元數據,並利用測試元數據和單元測試用例檢查規則能夠全面檢查單元測試的質量,提高單元測試的有效性。下面結合具體的實施例對本申請進行詳細的描述。實施例一本申請實施例提供了一種檢查單元測試質量的方法,如圖1所示,包括:步驟101,利用面向切面編程方式,根據預設的用於描述測試元的元語獲取該測試元對應的測試元數據;進一步地,該步驟包括:根據目標切面維度從單元測試集和/或目標應用程式獲取目標切面信息;將該目標切面信息細分為最小單位的測試信息,該最小單位的測試信息為該測試元,在內存中存儲該測試元及其對應的測試元數據;獲取預設的元語,利用該預設的元語、該測試元和該測試元數據的關聯關係從內存中獲取該測試元對應的測試元數據。優選地,為了提高系統運算速度,降低運算成本和減少錯誤發生,可以在獲取元語後,根據預設的元語過濾條件,從獲取的元語中過濾冗餘的元語。在本實施例中,目標切面信息可以包括以下信息中的一種或其組合:單元測試類的方法、目標應用程式任意類的方法和單元測試斷言方法。步驟102,獲取單元測試用例檢查規則。優選地,為了提高系統運算速度,降低運算成本和減少錯誤發生,可以在獲取單元測試用例檢查規則後,根據預設的檢查規則過濾條件,從該獲取的單元測試用例檢查規則中過濾冗餘的單元測試用例檢查規則。步驟103,根據該測試元數據和該單元測試用例檢查規則檢查單元測試質量。進一步地,該步驟包括:將該測試元數據替代該單元測試用例檢查規則中的元語,以檢查該測試元數據是否符合該單元測試用例檢查規則,從而得到單元測試的質量檢查結果。步驟104,輸出單元測試的質量檢查結果。優選地,為了便於用戶以後的對比或查閱,可以在輸出單元測試的質量檢查結果之後或之前,存儲質量檢查結果。進一步地,為了便於直觀形象地分析質量檢查結果,可以對輸出的質量檢查結果或存儲的質量檢查結果進行報表分析。本申請實施例通過預設描述測試元的元語,然後根據元語獲取測試元對應的測試元數據,並利用測試元數據和單元測試用例檢查規則,能夠全面檢查單元測試的質量,提高單元測試的有效性。實施例二如圖2所示為檢查單元測試質量的方法的應用架構圖,該架構圖使用的是程式語言為jdkl.6及以上,開發框架為maven3,擴展包依賴ASPECTJ1.5以上,但該使用的程式語言,開發框架和擴展包等只是為了舉例需要,本申請的保護範圍並不限於此。在圖2中,該架構包括:ASPECTJ框架、目標應用程式、單元測試集和檢查單元測試質量的系統。ASPECTJ框架作為目標應用程式的運行代理,同時起著作為檢查單元測試質量的系統的支撐工具的作用。需要說明的是,由於採用的程式語言不同,起支撐工具作用的框架可以根據程式語言的不同而進行相應的選擇,並不限於ASPECTJ框架。檢查單元測試質量的系統是本實施例的核心,其使用面向切面編程(AspectOriented Programming,A0P)方式織入到目標應用程式和單元測試集來運行。該系統可以Jar方式集成到目標應用程式中,當單元測試運行時,該系統自動對單元測試用例進行檢查。具體地,該系統包括:測試元數據獲取模塊、設置模塊和檢查模塊。其中,測試元數據獲取模塊包括切面信息獲取單元和測試元數據存儲單元。設置模塊包括:元語設置單元、檢查規則設置單元、元語過濾單元和檢查規則解析單元。檢查模塊包括:測試元數據提取單元、檢查規則獲取單元、檢查規則過濾單元、規則檢查單元、質量結果存儲單元、輸出單元和報表分析單元。圖3所示為本申請實施例的單元測試質量的檢查方法的詳細流程圖,參考圖2和圖3,並結合具體的示例對本申請進行詳細的描述,具體如下:在步驟301中,切面信息獲取單元獲取目標切面信息。具體地,在單元測試運行中,切面信息獲取單元從不同的目標切面維度織入,獲取到目標切面維度對應的目標切面信息,並將目標切面信息細分成最小單位的測試信息,本實施例將該最小單位的測試信息定義為測試元,該測試元可以是包.類.方法名、參數表、數據或斷言等,但本實施例並未將測試元限制在上述示例。在本實施例中,切面信息獲取單元攔截到單元測試運行的測試方法,進而攔截到測試方法所調用的目標應用程式方法以及攔截到單元測試斷言方法。具體地,該目標切面信息包括:單元測試類的方法、目標應用程式任意類的任意方法和單元測試斷言方法。本實施例提供的目標切面信息的示例如下:
*切面:切入目標應用程式任意類的任意方法 */
@Pointcut("execution(* com.alibaba.b2b.asura.aop.App.app(..))") public void targetClassMethod {
}
*切面:切入單元測試類的方法 */
@Pointcut("execution(* com.alibaba.b2b.asura.*.test*(..))") public void testClassMethodQ {
}
*切面:切入斷言的方法 */
@Pointcut("execution(void com.alibaba.b2b.asura.Want*(..))") public void testCaseAssertsQ {
}需要說明的是,上述三類目標切面信息只是本實施例的一個示例,本實施例的保護範圍也可以是上述三類目標切面信息之一或者其中任意兩種目標切面信息的組合。在以後的應用中,用戶還可以根據需要添加其他目標切面信息,在此不再贅述。在步驟302中,測試元數據存儲單元從目標切面信息中獲取測試元,並將測試元及其對應的測試元數據寫入到內存池中。其中,獲取的測試元包括提取類名、方法名、參數表、數據、斷言等。本實施例提供的測試元存儲結構的示例如下:j -TestMeta-targetClass、targetMethod、testCaseClass、...
List-1-TestMeta-targetClass>targetMethod、testCaseClass、...
1-TestMeta-targetClass>targetMethod、testCaseClass、...
其中,「targetClass,,、「targetMethod,,和「testCaseClass,,即為兀語,分別描述目標程序類,目標方法和測試用例類等測試元,而測試元數據存儲在元語對應的內存中。在步驟303中,元語設置單元根據用戶的指令按照預先的元語設置規則設置用來描述測試元語,並將設置的元語存儲在內存中。例如,用元語「assertions」描述的測試元為「斷言」。其中,設置的元語存儲在內存中。測試元是以元語為關鍵字存儲在內存池中的,因此可以根據元語來查找測試元對應的測試元數據。通過將測試元對應的測試元數據代入到單元測試用例檢查規則中,替代其中的元語,可以達到執行單元測試用例檢查規則的目的。需要說明的是,元語可以是可擴展標記語言(Extensible Markup Language,XML)配置文件,也可以是資料庫表,本實施例對此不作限制。元語描述測試元是在單元測試用例檢查規則中進行定義的,如下所示為一個單元測試用例檢查規則:
權利要求
1.一種單元測試質量的檢查方法,其特徵在於,包括: 利用面向切面編程方式,根據預設的用於描述測試元的元語獲取所述測試元對應的測試元數據; 獲取單元測試用例檢查規則; 根據所述測試元數據和所述單元測試用例檢查規則檢查單元測試質量; 輸出單元測試的質量檢查結果。
2.如權利要求1所述的方法,其特徵在於,利用面向切面編程方式,根據預設的用於描述測試元的元語獲取所述測試元對應的測試元數據,包括: 根據目標切面維度從單元測試集和/或目標應用程式獲取目標切面信息; 將所述目標切面信息細分為最小單位的測試信息,所述最小單位的測試信息為所述測試元,在內存中存儲所述測試元及其對應的測試元數據; 獲取預設的元語,利用所述預設的元語、所述測試元和所述測試元數據的關聯關係從內存中獲取所述測試元對應的測試元數據。
3.如權利要求2所述的方法,其特徵在於,所述目標切面信息包括以下信息任意一種或其組合: 單元測試類的方法、目標應用程式任意類的方法和單元測試斷言方法。
4.如權利要求2所 述的方法,其特徵在於,所述獲取預設的元語之後,包括: 根據預設的元語過濾條件,從所述獲取的元語中過濾冗餘的元語。
5.如權利要求1所述的方法,其特徵在於,所述根據所述測試元數據和所述單元測試用例檢查規則檢查單元測試質量,包括: 將所述測試元數據替代所述單元測試用例檢查規則中的元語,以檢查所述測試元數據是否符合所述單元測試用例檢查規則,從而得到單元測試的質量檢查結果。
6.如權利要求1至5任意一項所述的方法,其特徵在於,獲取所述單元測試用例檢查規則之前,還包括: 根據用戶指令設置所述單元測試用例檢查規則; 將所述單元測試用例檢查規則解析成對象。
7.如權利要求1至5任意一項所述的方法,其特徵在於,獲取所述單元測試用例檢查規則之後,包括: 根據預設的檢查規則過濾條件,從所述獲取的單元測試用例檢查規則中過濾冗餘的單元測試用例檢查規則。
8.如權利要求1至5任意一項所述的方法,其特徵在於,所述輸出單元測試的質量檢查結果的步驟之後,包括: 存儲所述單元測試的質量檢查結果。
9.如權利要求1至5任意一項所述的方法,其特徵在於,所述輸出單元測試的質量檢查結果之後,還包括:對所述單元測試的質量檢查結果進行報表分析,生成報表分析結果。
10.一種單元測試質量的檢查系統,其特徵在於,包括: 測試元數據獲取模塊,用於利用面向切面編程方式,根據預設的用於描述測試元的元語獲取所述測試元對應的測試元數據; 檢查規則獲取模塊,用於獲取單元測試用例檢查規則;規則檢查模塊,用於根據所述測試元數據和所述單元測試用例檢查規則檢查單元測試質量; 輸出模塊,用於輸出單元測試的質量檢查結果。
11.如權利要求10所述的系統,其特徵在於,所述測試元數據獲取模塊,包括: 切面信息獲取單元,用於根據目標切面維度從所述單元測試集和/或目標應用程式獲取目標切面信息; 測試元數據存儲單元,用於將所述目標切面信息細分為最小單位的測試信息,所述最小單位的測試信息為所述測試元,並存儲所述測試元及其對應的測試元數據; 測試元數據提取單元,用於獲取預設的元語,利用所述預設的元語、所述測試元和所述測試元數據的關聯關係提取所述測試元對應的測試元數據。
12.如權利要求11所述的系統,其特徵在於,所述目標切面信息包括以下信息任意一種或其組合: 單元測試類的方法、目標應用程式任意類的方法和單元測試斷言方法。
13.如權利要求11所述的系統,其特徵在於,還包括:元語過濾模塊,用於根據預設元語過濾條件,從所述獲取的預設的元語中過濾冗餘的元語。
14.如權利要求10所述的系統,其特徵在於,所述規則檢查模塊,具體用於將所述測試元數據替代所述單元測試用例檢查規則中的元語,檢查所述測試元數據是否符合所述單元測試用例檢查規則,從而得到單元測試的質量檢查結果。
15.如權利要求11至14任意一項所述的系統,其特徵在於,還包括: 檢查規則設置模塊,用於根據用戶指令設置所述單元測試用例檢查規則; 檢查規則解析模塊,用於將所述單元測試用例檢查規則解析成對象。
16.如權利要求11至14任意一項所述的系統,其特徵在於,還包括:檢查規則過濾模塊,用於根據預設的檢查規則過濾條件,從所述獲取的單元測試用例檢查規則中過濾冗餘的單元測試用例檢查規則。
17.如權利要求11至14任意一項所述的系統,其特徵在於,還包括:存儲模塊,用於存儲所述單元測試的質量檢查結果。
18.如權利要求11至14任意一項所述的系統,其特徵在於,報表分析模塊,用於對所述單元測試的質量檢查結果進行報表分析,生成報表分析報告。
全文摘要
本申請公開了一種檢查單元測試質量的方法和系統,屬於計算機領域。該方法包括利用面向切面編程方式,根據預設的用於描述測試元的元語獲取所述測試元對應的測試元數據;獲取單元測試用例檢查規則;根據所述測試元數據和所述單元測試用例檢查規則檢查單元測試質量;輸出單元測試的質量檢查結果。該系統包括測試元獲取模塊、測試元數據獲取模塊、檢查規則獲取模塊、規則檢查模塊和輸出模塊。本申請的技術方案可以提高單元測試的有效性。
文檔編號G06F11/36GK103164335SQ20111042780
公開日2013年6月19日 申請日期2011年12月19日 優先權日2011年12月19日
發明者郭帥, 毛錫凱 申請人:阿里巴巴集團控股有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀