本發(fā)明涉及軟件開發(fā),特別是涉及一種功能函數(shù)測(cè)試方法、設(shè)備、存儲(chǔ)介質(zhì)及程序產(chǎn)品。
背景技術(shù):
1、單元測(cè)試(unit?test)主要是用來對(duì)程序當(dāng)中的功能函數(shù)(function)進(jìn)行簡(jiǎn)單的測(cè)試,可以確保在最基礎(chǔ)的函式當(dāng)中的每一行代碼都被測(cè)試過,進(jìn)而提高程式品質(zhì)。可是相較于程式功能開發(fā)上,開發(fā)測(cè)試程式的時(shí)間資源相對(duì)稀缺。在實(shí)際的開發(fā)情況中,常常發(fā)生程式功能全部開發(fā)完畢,而測(cè)試該程式每個(gè)一個(gè)函數(shù)的單元測(cè)試的程式卻還沒有開發(fā)出來,造成測(cè)試不夠即時(shí),無法快速反饋測(cè)試結(jié)果。
2、目前進(jìn)行單元測(cè)試多采用人工去撰寫每一個(gè)功能函數(shù)的測(cè)試代碼的方法,但是會(huì)消耗大量人力工時(shí),無法快速且即時(shí)的針對(duì)每一個(gè)功能函數(shù)撰寫相對(duì)應(yīng)的測(cè)試代碼,甚至在完成所有功能函數(shù)的開發(fā)之后,程序開發(fā)者還沒有時(shí)間去開發(fā)測(cè)試代碼,也無從得知現(xiàn)有的功能函數(shù)是否有程式問題(bug)。這時(shí)候如果發(fā)現(xiàn)程式問題(bug),就要花費(fèi)更多的時(shí)間重新修改原有的功能函數(shù),以符合正確的函數(shù)行為,無法達(dá)到測(cè)試的即時(shí)性。并且就算已經(jīng)有所有功能函數(shù)的測(cè)試代碼,如果程序開發(fā)者只修改其中一部分功能函數(shù)代碼,也無法快速的找出相關(guān)的測(cè)試代碼,只能測(cè)試所有測(cè)試代碼,包含沒有更動(dòng)過的功能函數(shù)也要一起測(cè)試,這樣會(huì)增加無效測(cè)試時(shí)間。
3、可見,如何提高代碼測(cè)試的效率,是本領(lǐng)域技術(shù)人員需要解決的問題。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明實(shí)施例的目的是提供一種功能函數(shù)測(cè)試方法、設(shè)備、存儲(chǔ)介質(zhì)及程序產(chǎn)品,可以通過遍歷函數(shù)調(diào)用關(guān)系圖,自動(dòng)生成功能函數(shù)的測(cè)試代碼,有助于解決無法快速的找出相關(guān)測(cè)試代碼進(jìn)行函數(shù)測(cè)試的問題,提高代碼測(cè)試的效率。
2、為解決上述技術(shù)問題,第一方面,本發(fā)明提供一種功能函數(shù)測(cè)試方法,包括:
3、獲取正在對(duì)待測(cè)試程序進(jìn)行代碼修改時(shí)所對(duì)應(yīng)的代碼修改片段;
4、從預(yù)設(shè)函數(shù)調(diào)用關(guān)系圖中確定受所述代碼修改片段影響的功能函數(shù),以得到相應(yīng)的待測(cè)試函數(shù);所述預(yù)設(shè)函數(shù)調(diào)用關(guān)系圖基于所述待測(cè)試程序中的各預(yù)設(shè)功能函數(shù)之間的關(guān)系進(jìn)行確定;
5、基于目標(biāo)預(yù)訓(xùn)練模型生成所述待測(cè)試函數(shù)對(duì)應(yīng)的測(cè)試代碼,并利用所述測(cè)試代碼對(duì)所述待測(cè)試函數(shù)進(jìn)行測(cè)試。
6、在一些實(shí)施例中,所述從預(yù)設(shè)函數(shù)調(diào)用關(guān)系圖中確定受所述代碼修改片段影響的功能函數(shù)之前,還包括:
7、基于所述待測(cè)試程序中的各所述預(yù)設(shè)功能函數(shù)分別對(duì)應(yīng)的函數(shù)傳入?yún)?shù)和函數(shù)回傳值,確定各所述預(yù)設(shè)功能函數(shù)之間的影響關(guān)系;
8、根據(jù)所述影響關(guān)系和各所述預(yù)設(shè)功能函數(shù)之間的調(diào)用關(guān)系,生成所述待測(cè)試程序?qū)?yīng)的所述預(yù)設(shè)函數(shù)調(diào)用關(guān)系圖。
9、在一些實(shí)施例中,所述從預(yù)設(shè)函數(shù)調(diào)用關(guān)系圖中確定受所述代碼修改片段影響的功能函數(shù),包括:
10、根據(jù)所述代碼修改片段在所述預(yù)設(shè)函數(shù)調(diào)用關(guān)系圖中的位置,確定所述代碼修改片段對(duì)應(yīng)的目標(biāo)功能函數(shù)所在的目標(biāo)節(jié)點(diǎn);
11、基于所述目標(biāo)節(jié)點(diǎn)并根據(jù)所述影響關(guān)系和所述調(diào)用關(guān)系,遍歷所述預(yù)設(shè)函數(shù)調(diào)用關(guān)系圖,以確定所述預(yù)設(shè)函數(shù)調(diào)用關(guān)系圖中受所述代碼修改片段影響的功能函數(shù)。
12、在一些實(shí)施例中,所述功能函數(shù)測(cè)試方法還包括:
13、若所述目標(biāo)功能函數(shù)的子函數(shù)或所述目標(biāo)功能函數(shù)的子函數(shù)的函數(shù)傳入?yún)?shù)受所述代碼修改片段影響,則為所述目標(biāo)節(jié)點(diǎn)配置第一節(jié)點(diǎn)標(biāo)記和第二節(jié)點(diǎn)標(biāo)記;所述第一節(jié)點(diǎn)標(biāo)記表征所述目標(biāo)節(jié)點(diǎn)為觸發(fā)向下遍歷操作的節(jié)點(diǎn),所述第二節(jié)點(diǎn)標(biāo)記表征所述目標(biāo)節(jié)點(diǎn)為待測(cè)試節(jié)點(diǎn);
14、若所述目標(biāo)功能函數(shù)的函數(shù)回傳值受所述代碼修改片段影響,則為所述目標(biāo)節(jié)點(diǎn)配置第三節(jié)點(diǎn)標(biāo)記;所述第三節(jié)點(diǎn)標(biāo)記表征所述目標(biāo)節(jié)點(diǎn)為觸發(fā)向上遍歷操作的節(jié)點(diǎn);
15、相應(yīng)的,所述基于所述目標(biāo)節(jié)點(diǎn)并根據(jù)所述影響關(guān)系和所述調(diào)用關(guān)系,遍歷所述預(yù)設(shè)函數(shù)調(diào)用關(guān)系圖,包括:
16、基于所述目標(biāo)節(jié)點(diǎn)的所述第一節(jié)點(diǎn)標(biāo)記和所述第三節(jié)點(diǎn)標(biāo)記并根據(jù)所述影響關(guān)系和所述調(diào)用關(guān)系,遍歷所述預(yù)設(shè)函數(shù)調(diào)用關(guān)系圖。
17、在一些實(shí)施例中,所述基于所述目標(biāo)節(jié)點(diǎn)并根據(jù)所述影響關(guān)系和所述調(diào)用關(guān)系,遍歷所述預(yù)設(shè)函數(shù)調(diào)用關(guān)系圖的過程中,還包括:
18、將基于所述目標(biāo)節(jié)點(diǎn)遍歷到的節(jié)點(diǎn)作為新的目標(biāo)節(jié)點(diǎn),繼續(xù)基于新的目標(biāo)節(jié)點(diǎn)并根據(jù)所述影響關(guān)系和所述調(diào)用關(guān)系,遍歷所述預(yù)設(shè)函數(shù)調(diào)用關(guān)系圖,直至基于當(dāng)前的目標(biāo)節(jié)點(diǎn)未再遍歷到新的節(jié)點(diǎn);
19、將遍歷到的攜帶有所述第二節(jié)點(diǎn)標(biāo)記的目標(biāo)節(jié)點(diǎn)對(duì)應(yīng)的功能函數(shù)作為所述待測(cè)試函數(shù)。
20、在一些實(shí)施例中,所述基于目標(biāo)預(yù)訓(xùn)練模型生成所述待測(cè)試函數(shù)對(duì)應(yīng)的測(cè)試代碼,包括:
21、判斷所述待測(cè)試函數(shù)的函數(shù)傳入?yún)?shù)是否包括預(yù)設(shè)外部資源函數(shù)的函數(shù)回傳值,以得到相應(yīng)的判斷結(jié)果;
22、基于目標(biāo)預(yù)訓(xùn)練模型并根據(jù)所述判斷結(jié)果生成所述待測(cè)試函數(shù)對(duì)應(yīng)的測(cè)試代碼。
23、在一些實(shí)施例中,所述基于目標(biāo)預(yù)訓(xùn)練模型并根據(jù)所述判斷結(jié)果生成所述待測(cè)試函數(shù)對(duì)應(yīng)的測(cè)試代碼,包括:
24、若所述待測(cè)試函數(shù)的函數(shù)傳入?yún)?shù)不包括所述預(yù)設(shè)外部資源函數(shù)的函數(shù)回傳值,則直接基于目標(biāo)預(yù)訓(xùn)練模型生成所述待測(cè)試函數(shù)對(duì)應(yīng)的測(cè)試代碼;
25、若所述待測(cè)試函數(shù)的函數(shù)傳入?yún)?shù)包括所述預(yù)設(shè)外部資源函數(shù)的函數(shù)回傳值,則生成所述待測(cè)試函數(shù)對(duì)應(yīng)的模擬函數(shù),并基于目標(biāo)預(yù)訓(xùn)練模型根據(jù)所述模擬函數(shù)生成所述待測(cè)試函數(shù)對(duì)應(yīng)的測(cè)試代碼。
26、在一些實(shí)施例中,所述生成所述待測(cè)試函數(shù)對(duì)應(yīng)的模擬函數(shù),包括:
27、獲取預(yù)設(shè)模擬函數(shù)生成提示詞;
28、利用預(yù)設(shè)預(yù)訓(xùn)練模型并根據(jù)所述預(yù)設(shè)模擬函數(shù)生成提示詞,生成所述待測(cè)試函數(shù)對(duì)應(yīng)的所述模擬函數(shù)。
29、在一些實(shí)施例中,所述基于目標(biāo)預(yù)訓(xùn)練模型根據(jù)所述模擬函數(shù)生成所述待測(cè)試函數(shù)對(duì)應(yīng)的測(cè)試代碼,包括:
30、基于所述模擬函數(shù)查詢預(yù)設(shè)向量資料庫(kù),以得到相應(yīng)的查詢結(jié)果;所述查詢結(jié)果包括所述預(yù)設(shè)向量資料庫(kù)中所述模擬函數(shù)對(duì)應(yīng)的目標(biāo)函數(shù)和所述預(yù)設(shè)外部資源函數(shù)的日志檔案;
31、利用所述目標(biāo)預(yù)訓(xùn)練模型并根據(jù)所述模擬函數(shù)和所述查詢結(jié)果,生成所述待測(cè)試函數(shù)對(duì)應(yīng)的測(cè)試代碼。
32、在一些實(shí)施例中,所述利用所述目標(biāo)預(yù)訓(xùn)練模型并根據(jù)所述模擬函數(shù)和所述查詢結(jié)果,生成所述待測(cè)試函數(shù)對(duì)應(yīng)的測(cè)試代碼,包括:
33、獲取預(yù)設(shè)測(cè)試代碼生成提示詞;
34、將所述模擬函數(shù)、所述預(yù)設(shè)測(cè)試代碼生成提示詞和所述查詢結(jié)果輸入至所述目標(biāo)預(yù)訓(xùn)練模型,以利用所述目標(biāo)預(yù)訓(xùn)練模型生成所述待測(cè)試函數(shù)對(duì)應(yīng)的測(cè)試代碼。
35、在一些實(shí)施例中,所述功能函數(shù)測(cè)試方法還包括:
36、生成所述待測(cè)試函數(shù)的測(cè)試日志;
37、將所述測(cè)試日志和所述測(cè)試代碼保存至預(yù)設(shè)向量資料庫(kù),以便基于所述預(yù)設(shè)向量資料庫(kù)生成新的測(cè)試代碼。
38、在一些實(shí)施例中,所述功能函數(shù)測(cè)試方法還包括:
39、基于所述預(yù)設(shè)向量資料庫(kù)繼續(xù)對(duì)所述目標(biāo)預(yù)訓(xùn)練模型進(jìn)行訓(xùn)練,以便基于訓(xùn)練后的目標(biāo)預(yù)訓(xùn)練模型生成新的測(cè)試代碼。
40、第二方面,本發(fā)明公開了一種電子設(shè)備,包括:
41、存儲(chǔ)器,用于存儲(chǔ)計(jì)算機(jī)程序;
42、處理器,用于執(zhí)行所述計(jì)算機(jī)程序以實(shí)現(xiàn)前述功能函數(shù)測(cè)試方法的步驟。
43、第三方面,本發(fā)明公開了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)前述功能函數(shù)測(cè)試方法的步驟。
44、第四方面,本發(fā)明公開了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序/指令,該計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)前述功能函數(shù)測(cè)試方法的步驟。
45、由上述技術(shù)方案可以看出,本發(fā)明首先可以獲取正在對(duì)待測(cè)試程序進(jìn)行代碼修改時(shí)所對(duì)應(yīng)的代碼修改片段,然后從基于待測(cè)試程序中的各預(yù)設(shè)功能函數(shù)之間的關(guān)系確定出的預(yù)設(shè)函數(shù)調(diào)用關(guān)系圖中確定受代碼修改片段影響的功能函數(shù),以得到相應(yīng)的待測(cè)試函數(shù),從而基于目標(biāo)預(yù)訓(xùn)練模型生成待測(cè)試函數(shù)對(duì)應(yīng)的測(cè)試代碼,并利用測(cè)試代碼對(duì)待測(cè)試函數(shù)進(jìn)行測(cè)試。
46、本發(fā)明的有益效果在于:在每一個(gè)功能函數(shù)開發(fā)出來后,即可生成相應(yīng)的函數(shù)調(diào)用關(guān)系圖,根據(jù)代碼修改片段遍歷函數(shù)調(diào)用關(guān)系圖后,自動(dòng)確定受代碼修改片段影響的功能函數(shù),以利用預(yù)訓(xùn)練模型生成相應(yīng)的測(cè)試代碼,可以在較短的時(shí)間完成功能函數(shù)的測(cè)試,并反饋測(cè)試結(jié)果給程序開發(fā)者,有助于程序開發(fā)者在程式問題發(fā)生的初期得知每一個(gè)功能函式的測(cè)試結(jié)果,可以提高代碼測(cè)試的效率。