單元測試數(shù)據(jù)生成方法和單元測試數(shù)據(jù)生成系統(tǒng)的制作方法
【技術領域】
[0001]本發(fā)明涉及數(shù)據(jù)測試技術領域,具體而言,涉及一種單元測試數(shù)據(jù)生成方法和一種單元測試數(shù)據(jù)生成系統(tǒng)。
【背景技術】
[0002]單元測試是指對軟件的基本組成單元或模塊進行的測試,又稱為模塊測試?;締卧蚰K可以是函數(shù)、類實例、方法、存儲過程等,也可以是任何具有明確功能定義、明確規(guī)格定義、明確接口定義、規(guī)模較小的程序代碼模塊的組合體。單元測試既關注單元功能,也關注程序模塊的邏輯結構,其目的在于發(fā)現(xiàn)程序設計或?qū)崿F(xiàn)的邏輯錯誤,使問題及早暴露,便于對問題的定位及解決。
[0003]然而,要達到較高的單元測試覆蓋率,準備一個比較完善的數(shù)據(jù)集合至關重要。在相關技術中,測試人員首先需要查看代碼的數(shù)據(jù)來源,手動分析代碼結構,并對其分析結果進行數(shù)據(jù)構建,同時需要對已有數(shù)據(jù)進行分析、驗證、檢查以保證數(shù)據(jù)的質(zhì)量,以及在檢查完后要整理和完善數(shù)據(jù),并清除無用和冗余的數(shù)據(jù)、補錄不完整的數(shù)據(jù)、修改錯誤的數(shù)據(jù)等,最后測試人員將構建好的數(shù)據(jù)保存。由于代碼數(shù)據(jù)結構的復雜性以及程序中數(shù)據(jù)來源的多樣性,相關技術中僅根據(jù)分析方法參數(shù)對代碼控制流程的影響的技術方案,存在一定的局限性。
[0004]因此,需要一種新的技術方案,可以通過自動化測試數(shù)據(jù)生成方法取代傳統(tǒng)的繁瑣的測試數(shù)據(jù)準備工作。
【發(fā)明內(nèi)容】
[0005]本發(fā)明正是基于上述問題,提出了一種新的技術方案,可以通過自動化測試數(shù)據(jù)生成方法取代傳統(tǒng)的繁瑣的測試數(shù)據(jù)準備工作。
[0006]有鑒于此,本發(fā)明的一方面提出了一種單元測試數(shù)據(jù)生成方法,包括:根據(jù)預設單元測試標準,解析被測試數(shù)據(jù)的源代碼結構;確定測試所需的單元測試數(shù)據(jù)的參數(shù)類型,并進行參數(shù)構造;在完成所述參數(shù)構造之后,根據(jù)所述參數(shù)類型和所述參數(shù)構造的結果,生成所述單元測試數(shù)據(jù)。
[0007]在該技術方案中,能夠按照預設的單元測試標準,自動地分析被測試源代碼的結構,并根據(jù)分析結果進行參數(shù)構造,從而自動生成單元測試數(shù)據(jù),以直接應用于測試方法,使測試人員省去了繁瑣的測試用例數(shù)據(jù)準備工作,不再需要測試人員去完成分析代碼結構、準備測試數(shù)據(jù)、分析測試用例等工作,將手工準備方式變?yōu)樽詣踊煞椒?,大量?jié)約了開發(fā)時間和開發(fā)成本,提高了測試效率。
[0008]在上述技術方案中,優(yōu)選地,所述根據(jù)預設單元測試標準,解析被測試數(shù)據(jù)的源代碼結構,具體包括:根據(jù)所述預設單元測試標準,確定所述單元測試數(shù)據(jù)的分支路徑的數(shù)量,并確定每條所述分支路徑的執(zhí)行條件表達式。
[0009]在該技術方案中,可以采用條件測試和分支測試的方法對需要進行測試的源代碼進行分析,得出需要進行測試的分支路徑,而分支條件測試可以決定要執(zhí)行的分支路徑的數(shù)量,具體地,可通過分析源代碼,確定達到測試覆蓋率100%時需要執(zhí)行多少條分支路徑。在該技術方案中,還可以計算每條分支路徑執(zhí)行的條件以及執(zhí)行的語句,并且得出執(zhí)行這些分支路徑路徑需要滿足的參數(shù)條件,最后得到各分支路徑的執(zhí)行條件表達式,從而便于對每條分支路徑進行單獨的數(shù)據(jù)分析。
[0010]在上述技術方案中,優(yōu)選地,所述進行參數(shù)構造,具體包括:根據(jù)每條所述分支路徑的所述執(zhí)行條件表達式,為每條所述分支路徑生成參數(shù)范圍表達式。
[0011]在該技術方案中,可以根據(jù)源代碼分析結果中的執(zhí)行條件表達式,以及對每條分支路徑進行單獨數(shù)據(jù)分析的分析結果,生成參數(shù)范圍表達式。
[0012]在上述技術方案中,優(yōu)選地,所述根據(jù)所述參數(shù)類型和所述參數(shù)構造的結果,生成單元測試數(shù)據(jù),具體包括:根據(jù)所述參數(shù)類型,查找類型約束表,并根據(jù)所述類型約束表的預設規(guī)則,生成與所述參數(shù)類型對應的參數(shù)類型對象;根據(jù)生成的所述參數(shù)范圍表達式,查找數(shù)據(jù)生成表,并根據(jù)所述數(shù)據(jù)生成表,生成所述參數(shù)類型對象對應的參數(shù)數(shù)據(jù),以供生成所述單元測試數(shù)據(jù)。
[0013]在該技術方案中,可以根據(jù)確定的參數(shù)類型和參數(shù)范圍表達式,分別在類型約束表和數(shù)據(jù)生成表中進行查找操作,從而得到最終的測試數(shù)據(jù)。通過本技術方案,可以自動生成單元測試數(shù)據(jù),以直接應用于測試方法,使測試人員省去了繁瑣的測試用例數(shù)據(jù)準備工作,不再需要測試人員去完成分析代碼結構、準備測試數(shù)據(jù)、分析測試用例等工作,將手工準備方式變?yōu)樽詣踊煞椒?,大量?jié)約了開發(fā)時間和開發(fā)成本,提高了測試效率。
[0014]在上述技術方案中,優(yōu)選地,所述參數(shù)類型包括以下至少之一或其組合:簡單類型、自定義類型、通用類型。
[0015]在該技術方案中,簡單類型包括int、f 1at等8種基本參數(shù)類型,自定義類型即用戶自定義的數(shù)據(jù)類型,通用類型則為Java定義的常用類和接口。當然,參數(shù)類型也可以是根據(jù)需要除此之外的其他類型。
[0016]本發(fā)明的另一方面提出了一種單元測試數(shù)據(jù)生成系統(tǒng),其特征在于,包括:解析單元,根據(jù)預設單元測試標準,解析被測試數(shù)據(jù)的源代碼結構;執(zhí)行單元,根據(jù)解析結果,確定測試所需的單元測試數(shù)據(jù)的參數(shù)類型,并進行參數(shù)構造;生成單元,在完成所述參數(shù)構造之后,根據(jù)所述參數(shù)類型和所述參數(shù)構造的結果,生成所述單元測試數(shù)據(jù)。
[0017]在該技術方案中,能夠按照預設的單元測試標準,自動地分析被測試源代碼的結構,并根據(jù)分析結果進行參數(shù)構造,從而自動生成單元測試數(shù)據(jù),以直接應用于測試方法,使測試人員省去了繁瑣的測試用例數(shù)據(jù)準備工作,不再需要測試人員去完成分析代碼結構、準備測試數(shù)據(jù)、分析測試用例等工作,將手工準備方式變?yōu)樽詣踊煞椒?,大量?jié)約了開發(fā)時間和開發(fā)成本,提高了測試效率。
[0018]在上述技術方案中,優(yōu)選地,所述解析單元具體用于:根據(jù)所述預設單元測試標準,確定所述單元測試數(shù)據(jù)的分支路徑的數(shù)量,并確定每條所述分支路徑的執(zhí)行條件表達式。
[0019]在該技術方案中,可以采用條件測試和分支測試的方法對需要進行測試的源代碼進行分析,得出需要進行測試的分支路徑,而分支條件測試可以決定要執(zhí)行的分支路徑的數(shù)量,具體地,可通過分析源代碼,確定達到測試覆蓋率100%時需要執(zhí)行多少條分支路徑。在該技術方案中,還可以計算每條分支路徑執(zhí)行的條件以及執(zhí)行的語句,并且得出執(zhí)行這些分支路徑路徑需要滿足的參數(shù)條件,最后得到各分支路徑的執(zhí)行條件表達式,從而便于對每條分支路徑進行單獨的數(shù)據(jù)分析。
[0020]在上述技術方案中,優(yōu)選地,所述執(zhí)行單元包括:根據(jù)每條所述分支路徑的所述執(zhí)行條件表達式,為每條所述分支路徑生成參數(shù)范圍表達式。
[0021]在該技術方案中,可以根據(jù)源代碼分析結果中的執(zhí)行條件表達式,以及對每條分支路徑進行單獨數(shù)據(jù)分析的分析結果,生成參數(shù)范圍表達式。
[0022]在上述技術方案中,優(yōu)選地,所述生成單元具體用于:根據(jù)所述參數(shù)類型,查找類型約束表,并根據(jù)所述類型約束表的預設規(guī)則,生成與所述參數(shù)類型對應的參數(shù)類型對象,以及根據(jù)生成的所述參數(shù)范圍表達式,查找數(shù)據(jù)生成表,并根據(jù)所述數(shù)據(jù)生成