本公開實(shí)施例涉及應(yīng)用程序開發(fā)及測試,尤其涉及一種測試用例生成方法、裝置、電子設(shè)備、存儲介質(zhì)及產(chǎn)品。
背景技術(shù):
1、在基于遺傳算法生成單元測試用例的應(yīng)用程序中,會動態(tài)運(yùn)行生成的測試用例。然后,根據(jù)運(yùn)行的結(jié)果對測試用例進(jìn)行更新并擇優(yōu)確定最終生成的目標(biāo)測試用例。但是在一些情況下,目標(biāo)測試用例生成過程不能夠被完整執(zhí)行,便無法得到較優(yōu)的測試用例。
技術(shù)實(shí)現(xiàn)思路
1、本公開提供了一種測試用例生成方法、裝置、電子設(shè)備、存儲介質(zhì)及產(chǎn)品,可以使生成jni函數(shù)測試用例的過程能夠完整的執(zhí)行,以在測試用例生成算法完成執(zhí)行的基礎(chǔ)上生成較優(yōu)的目標(biāo)測試用例。
2、第一方面,本公開實(shí)施例提供了一種測試用例生成方法,該方法包括:
3、在通過預(yù)設(shè)算法迭代生成目標(biāo)接口函數(shù)測試用例的主進(jìn)程中,每當(dāng)生成一個待運(yùn)行的候選接口函數(shù)測試用例時(shí),阻塞所述主進(jìn)程并創(chuàng)建一個臨時(shí)子進(jìn)程;
4、通過所述臨時(shí)子進(jìn)程運(yùn)行所述候選接口函數(shù)測試用例,并根據(jù)所述臨時(shí)子進(jìn)程的運(yùn)行結(jié)果結(jié)束所述臨時(shí)子進(jìn)程;
5、喚醒所述主進(jìn)程,并根據(jù)所述臨時(shí)子進(jìn)程結(jié)束時(shí)的返回值繼續(xù)執(zhí)行所述主進(jìn)程,直到所述預(yù)設(shè)算法迭代的過程結(jié)束確定所述目標(biāo)接口函數(shù)測試用例。
6、第二方面,本公開實(shí)施例還提供了一種測試用例生成裝置,該裝置包括:
7、子進(jìn)程創(chuàng)建模塊,用于在通過預(yù)設(shè)算法迭代生成目標(biāo)接口函數(shù)測試用例的主進(jìn)程中,每當(dāng)生成一個待運(yùn)行的候選接口函數(shù)測試用例時(shí),阻塞所述主進(jìn)程并創(chuàng)建一個臨時(shí)子進(jìn)程;
8、子進(jìn)程運(yùn)行模塊,用于通過所述臨時(shí)子進(jìn)程運(yùn)行所述候選接口函數(shù)測試用例,并根據(jù)所述臨時(shí)子進(jìn)程的運(yùn)行結(jié)果結(jié)束所述臨時(shí)子進(jìn)程;
9、主進(jìn)程執(zhí)行模塊,用于喚醒所述主進(jìn)程,并根據(jù)所述臨時(shí)子進(jìn)程結(jié)束時(shí)的返回值繼續(xù)執(zhí)行所述主進(jìn)程,直到所述預(yù)設(shè)算法迭代的過程結(jié)束確定所述目標(biāo)接口函數(shù)測試用例。
10、第三方面,本公開實(shí)施例還提供了一種電子設(shè)備,所述電子設(shè)備包括:
11、一個或多個處理器;
12、存儲裝置,用于存儲一個或多個程序,
13、當(dāng)所述一個或多個程序被所述一個或多個處理器執(zhí)行,使得所述一個或多個處理器實(shí)現(xiàn)如本公開實(shí)施例任一所述的測試用例生成方法。
14、第四方面,本公開實(shí)施例還提供了一種包含計(jì)算機(jī)可執(zhí)行指令的存儲介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令在由計(jì)算機(jī)處理器執(zhí)行時(shí)用于執(zhí)行如本公開實(shí)施例任一所述的測試用例生成方法。
15、第五方面,本公開實(shí)施例還提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序在被處理器執(zhí)行時(shí)實(shí)現(xiàn)如本發(fā)明實(shí)施例中任一所述的測試用例生成方法。
16、本公開實(shí)施例,通過在通過預(yù)設(shè)算法迭代生成目標(biāo)接口函數(shù)測試用例的主進(jìn)程中,每當(dāng)生成一個待運(yùn)行的候選接口函數(shù)測試用例時(shí),阻塞所述主進(jìn)程并創(chuàng)建一個臨時(shí)子進(jìn)程;通過所述臨時(shí)子進(jìn)程運(yùn)行所述候選接口函數(shù)測試用例,并根據(jù)所述臨時(shí)子進(jìn)程的運(yùn)行結(jié)果結(jié)束所述臨時(shí)子進(jìn)程;喚醒所述主進(jìn)程,并根據(jù)所述臨時(shí)子進(jìn)程結(jié)束時(shí)的返回值繼續(xù)執(zhí)行所述主進(jìn)程,直到所述預(yù)設(shè)算法迭代的過程結(jié)束確定所述目標(biāo)接口函數(shù)測試用例。本公開實(shí)施例的技術(shù)方案解決了在生成接口函數(shù)的測試用例過程中接口函數(shù)調(diào)用執(zhí)行過程出現(xiàn)異常會銷毀整個接口函數(shù)測試用例生成進(jìn)程的問題,可以使生成jni函數(shù)測試用例的過程能夠完整的執(zhí)行,以在測試用例生成算法完成執(zhí)行的基礎(chǔ)上生成較優(yōu)的目標(biāo)測試用例。
1.一種測試用例生成方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在通過所述臨時(shí)子進(jìn)程運(yùn)行所述候選接口函數(shù)測試用例時(shí),所述方法還包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述臨時(shí)子進(jìn)程的運(yùn)行結(jié)果結(jié)束所述臨時(shí)子進(jìn)程,還包括:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述臨時(shí)子進(jìn)程結(jié)束時(shí)的返回值繼續(xù)執(zhí)行所述主進(jìn)程,包括:
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述方法還包括:
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述分別運(yùn)行各所述用例運(yùn)行子線程,并獲取各所述用例運(yùn)行子線程在運(yùn)行過程中的運(yùn)行日志,包括
7.根據(jù)權(quán)利要求1-6中任一所述的方法,其特征在于,當(dāng)運(yùn)行所述主進(jìn)程的系統(tǒng)環(huán)境為linux系統(tǒng)環(huán)境時(shí),所述方法還包括:
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述配置用于支持所述主進(jìn)程運(yùn)行的基礎(chǔ)動態(tài)庫環(huán)境,包括:
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,基于經(jīng)過編譯的預(yù)設(shè)安卓動態(tài)庫加載器加載經(jīng)過編譯的基礎(chǔ)動態(tài)庫的過程包括:
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,在所述經(jīng)過編譯的基礎(chǔ)動態(tài)庫加載完成后,所述方法還包括:
11.一種測試用例生成裝置,其特征在于,包括:
12.一種電子設(shè)備,其特征在于,所述電子設(shè)備包括:
13.一種計(jì)算機(jī)可讀存儲介質(zhì),其上存儲有計(jì)算機(jī)程序,其特征在于,該程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1-10中任一所述的測試用例生成方法。
14.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序在被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1-10中任一項(xiàng)所述的測試用例生成方法。