欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于程序執(zhí)行路徑分解的測(cè)試用例生成方法、裝置與流程

文檔序號(hào):40563533發(fā)布日期:2025-01-03 11:23閱讀:9來源:國知局
基于程序執(zhí)行路徑分解的測(cè)試用例生成方法、裝置與流程

本公開涉及軟件開發(fā),具體涉及一種基于程序執(zhí)行路徑分解的測(cè)試用例生成方法、裝置。


背景技術(shù):

1、在軟件開發(fā)過程中,單元測(cè)試是確保代碼質(zhì)量和功能正確性的關(guān)鍵環(huán)節(jié)。單元測(cè)試是指驗(yàn)證軟件中的最小可測(cè)試部分(例如單個(gè)函數(shù))的正確性。單元測(cè)試的目的是隔離代碼的一小部分,并確保這部分代碼在各種輸入條件下都能按預(yù)期工作。

2、現(xiàn)有技術(shù)中一般利用大模型技術(shù)來生成代碼的單元測(cè)試用例,但針對(duì)結(jié)構(gòu)層次較多且各層次之間相互關(guān)聯(lián)的類型的程序,例如:第二層次的函數(shù)的執(zhí)行需要使用的第一層次函數(shù)的結(jié)果,或者,是第一層次函數(shù)的一種條件的分支,大模型在理解方面存在局限性,導(dǎo)致生成的測(cè)試用例可能無法全面覆蓋代碼的所有邏輯分支和邊界條件,從而影響整個(gè)測(cè)試流程的效率和效果。


技術(shù)實(shí)現(xiàn)思路

1、有鑒于此,本公開提出了一種基于程序執(zhí)行路徑分解的測(cè)試用例生成方法、裝置,以解決相關(guān)技術(shù)中由于大模型在理解邏輯復(fù)雜程序時(shí)存在局限性,導(dǎo)致生成的測(cè)試用例可能無法覆蓋代碼的所有邏輯分支和邊界條件,影響測(cè)試效率和效果的問題。

2、本公開第一方面實(shí)施例提出了一種基于程序執(zhí)行路徑分解的測(cè)試用例生成方法,所述方法包括:

3、獲取目標(biāo)代碼,所述目標(biāo)代碼中包括目標(biāo)函數(shù)語句的代碼,所述目標(biāo)函數(shù)語句是指觸發(fā)至少兩個(gè)執(zhí)行條件的函數(shù)語句;

4、按照代碼執(zhí)行路徑對(duì)所述目標(biāo)代碼進(jìn)行拆分,得到多個(gè)子代碼,所述多個(gè)子代碼包括所述至少兩個(gè)執(zhí)行條件分別對(duì)應(yīng)的子代碼;

5、針對(duì)所述多個(gè)子代碼中的任意一個(gè)子代碼,生成與所述子代碼對(duì)應(yīng)的單元測(cè)試用例;

6、根據(jù)與所述多個(gè)子代碼一一對(duì)應(yīng)的多個(gè)單元測(cè)試用例,生成所述目標(biāo)代碼的測(cè)試用例。

7、本公開實(shí)施例通過按照代碼執(zhí)行路徑對(duì)目標(biāo)代碼進(jìn)行拆分,得到多個(gè)子代碼;生成與每個(gè)目標(biāo)代碼對(duì)應(yīng)的測(cè)試用例,并基于所有測(cè)試用例生成目標(biāo)代碼的測(cè)試用例,能夠使得生成的測(cè)試用例全面覆蓋代碼的所有邏輯分支,從而達(dá)到提高單元測(cè)試的測(cè)試效率和測(cè)試效果的目的。

8、在本公開實(shí)施例中,所述按照代碼執(zhí)行路徑對(duì)所述目標(biāo)代碼進(jìn)行拆分,得到多個(gè)子代碼,包括:

9、將所述目標(biāo)代碼轉(zhuǎn)換為對(duì)應(yīng)的抽象語法樹;

10、根據(jù)所述至少兩個(gè)執(zhí)行條件分別對(duì)所述抽象語法樹進(jìn)行拆分,得到多個(gè)子抽象語法樹,所述至少兩個(gè)執(zhí)行條件中任一執(zhí)行條件對(duì)應(yīng)的執(zhí)行功能對(duì)應(yīng)所述多個(gè)子抽象語法樹中的一個(gè)子抽象語法樹;

11、將所述多個(gè)子抽象語法樹分別進(jìn)行轉(zhuǎn)換,得到所述多個(gè)子代碼。

12、在本公開實(shí)施例中,所述目標(biāo)函數(shù)語句是以下任一:判斷函數(shù)語句、選擇函數(shù)語句和循環(huán)函數(shù)語句。

13、在本公開實(shí)施例中,所述目標(biāo)函數(shù)語句為所述判斷函數(shù)語句;所述根據(jù)所述至少兩個(gè)執(zhí)行條件分別對(duì)所述抽象語法樹進(jìn)行拆分,得到多個(gè)子抽象語法樹,包括:

14、當(dāng)所述抽象語法樹的多個(gè)子節(jié)點(diǎn)中存在所述判斷函數(shù)語句的判斷節(jié)點(diǎn)時(shí),確定與所述判斷節(jié)點(diǎn)對(duì)應(yīng)的肯定分支結(jié)構(gòu)和否定分支結(jié)構(gòu);

15、基于所述肯定分支結(jié)構(gòu),生成與所述肯定分支結(jié)構(gòu)對(duì)應(yīng)的第一子抽象語法樹;

16、基于所述否定分支結(jié)構(gòu),生成與所述否定分支結(jié)構(gòu)對(duì)應(yīng)的第二子抽象語法樹。

17、本公開實(shí)施例通過確定抽象語法樹中判斷節(jié)點(diǎn)所對(duì)應(yīng)的肯定分支結(jié)構(gòu)和否定分支結(jié)構(gòu),生成與之對(duì)應(yīng)的子抽象語法樹,有助于針對(duì)程序的不同分支生成測(cè)試用例,從而達(dá)到提高語句覆蓋率和分支覆蓋率的目的,也可以更精準(zhǔn)地測(cè)試程序在不同條件下的行為。

18、在本公開實(shí)施例中,所述目標(biāo)函數(shù)語句為所述選擇函數(shù)語句;所述根據(jù)所述至少兩個(gè)執(zhí)行條件分別對(duì)所述抽象語法樹進(jìn)行拆分,得到多個(gè)子抽象語法樹,包括:

19、當(dāng)所述抽象語法樹的多個(gè)子節(jié)點(diǎn)中存在所述選擇函數(shù)語句的選擇節(jié)點(diǎn)時(shí),確定與所述選擇節(jié)點(diǎn)對(duì)應(yīng)的多個(gè)類型分支結(jié)構(gòu);

20、針對(duì)所述多個(gè)類型分支結(jié)構(gòu)中的任意一個(gè)類型分支結(jié)構(gòu),基于所述類型分支結(jié)構(gòu),生成與所述類型分支結(jié)構(gòu)對(duì)應(yīng)的第三子抽象語法樹。

21、本公開實(shí)施例通過確定抽象語法樹中與選擇節(jié)點(diǎn)相對(duì)應(yīng)的多個(gè)類型分支結(jié)構(gòu),并生成與每個(gè)類型分支結(jié)構(gòu)相對(duì)應(yīng)的子抽象語法樹,生成多個(gè)子抽象語法樹可以確保測(cè)試路徑覆蓋到所有可能的執(zhí)行路徑,包括那些由不同條件分支組合形成的復(fù)雜路徑,從而達(dá)到提高條件覆蓋率的目的,進(jìn)而實(shí)現(xiàn)提高單元測(cè)試的測(cè)試效率和測(cè)試效果。

22、在本公開實(shí)施例中,所述目標(biāo)函數(shù)語句為所述循環(huán)函數(shù)語句;所述根據(jù)所述至少兩個(gè)執(zhí)行條件分別對(duì)所述抽象語法樹進(jìn)行拆分,得到多個(gè)子抽象語法樹,包括:

23、當(dāng)所述抽象語法樹的多個(gè)子節(jié)點(diǎn)中存在所述循環(huán)函數(shù)語句的目標(biāo)循環(huán)節(jié)點(diǎn)時(shí),確定與所述目標(biāo)循環(huán)節(jié)點(diǎn)對(duì)應(yīng)的目標(biāo)分支結(jié)構(gòu);所述目標(biāo)循環(huán)節(jié)點(diǎn)是指以原有變量作為截止判斷條件的循環(huán)節(jié)點(diǎn),所述目標(biāo)分支結(jié)構(gòu)包括所述目標(biāo)循環(huán)節(jié)點(diǎn),以及所述目標(biāo)循環(huán)節(jié)點(diǎn)的所有子節(jié)點(diǎn);

24、基于所述目標(biāo)分支結(jié)構(gòu),生成與所述目標(biāo)分支結(jié)構(gòu)對(duì)應(yīng)的第四子抽象語法樹。

25、在本公開實(shí)施例中,所述根據(jù)與所述多個(gè)子代碼一一對(duì)應(yīng)的多個(gè)單元測(cè)試用例,生成所述目標(biāo)代碼的測(cè)試用例,包括:

26、將所述多個(gè)單元測(cè)試用例進(jìn)行合并,得到所述目標(biāo)代碼的測(cè)試用例。

27、在本公開實(shí)施例中,在所述生成與所述子代碼對(duì)應(yīng)的單元測(cè)試用例之前,還包括:

28、獲取訓(xùn)練樣本;所述訓(xùn)練樣本包括多個(gè)樣本代碼,以及與所述多個(gè)樣本代碼一一對(duì)應(yīng)的多個(gè)樣本單元測(cè)試用例;

29、使用所述訓(xùn)練樣本訓(xùn)練初始模型,得到所述單元測(cè)試用例生成模型,所述單元測(cè)試用例生成模型用于根據(jù)所述子代碼生成單元測(cè)試用例。

30、在本公開實(shí)施例中,所述獲取訓(xùn)練樣本,包括:

31、獲取多個(gè)樣本代碼,以及與所述多個(gè)樣本代碼一一對(duì)應(yīng)的多個(gè)樣本單元測(cè)試用例;

32、針對(duì)所述多個(gè)樣本代碼中的任意一個(gè)樣本代碼,從所述樣本代碼中提取出對(duì)應(yīng)的特征向量;所述特征向量包括以下至少一種:結(jié)構(gòu)特征、語法特征以及邏輯復(fù)雜度特征;

33、將每個(gè)樣本代碼的特征向量,以及對(duì)應(yīng)的樣本單元測(cè)試用例作為所述訓(xùn)練樣本。

34、本公開第二方面的實(shí)施例提供了一種基于程序執(zhí)行路徑分解的測(cè)試用例生成裝置,包括:

35、代碼獲取模塊,用于獲取目標(biāo)代碼,所述目標(biāo)代碼中包括目標(biāo)函數(shù)語句的代碼,所述目標(biāo)函數(shù)語句是指觸發(fā)至少兩個(gè)執(zhí)行條件的函數(shù)語句;

36、代碼拆分模塊,用于按照代碼執(zhí)行路徑對(duì)所述目標(biāo)代碼進(jìn)行拆分,得到多個(gè)子代碼,所述多個(gè)子代碼包括所述至少兩個(gè)執(zhí)行條件分別對(duì)應(yīng)的子代碼;

37、單元測(cè)試用例生成模塊,用于針對(duì)所述多個(gè)子代碼中的任意一個(gè)子代碼,生成與所述子代碼對(duì)應(yīng)的單元測(cè)試用例;

38、測(cè)試用例生成模塊,用于根據(jù)與所述多個(gè)子代碼一一對(duì)應(yīng)的多個(gè)單元測(cè)試用例,生成所述目標(biāo)代碼的測(cè)試用例。

39、本公開第三方面的實(shí)施例提供了一種計(jì)算機(jī)設(shè)備,該計(jì)算機(jī)設(shè)備包括存儲(chǔ)器和處理器,所述存儲(chǔ)器和所述處理器之間互相通信連接,所述存儲(chǔ)器中存儲(chǔ)有計(jì)算機(jī)指令,所述處理器通過執(zhí)行所述計(jì)算機(jī)指令,從而執(zhí)行上述第一方面所述的基于程序執(zhí)行路徑分解的測(cè)試用例生成方法。

40、本公開第四方面的實(shí)施例提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)指令,所述計(jì)算機(jī)指令用于使計(jì)算機(jī)執(zhí)行上述第一方面所述的基于程序執(zhí)行路徑分解的測(cè)試用例生成方法。

41、本公開附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變的明顯,或通過本公開的實(shí)踐了解到。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
天镇县| 综艺| 普兰店市| 兴国县| 富锦市| 永川市| 青神县| 兴安县| 宜君县| 商都县| 新泰市| 岑溪市| 丁青县| 区。| 从江县| 陇南市| 察哈| 呼玛县| 柞水县| 和政县| 郸城县| 延吉市| 墨脱县| 西峡县| 嘉峪关市| 连平县| 壤塘县| 四子王旗| 昌吉市| 呼和浩特市| 建水县| 肃宁县| 从江县| 新竹县| 深州市| 丰县| 大田县| 集贤县| 台江县| 聊城市| 南汇区|