本技術(shù)涉及用戶界面測試,特別是一種用戶界面測試導(dǎo)航系統(tǒng)、方法與產(chǎn)品。
背景技術(shù):
1、用戶界面(user?interface,ui)測試對于確保測試應(yīng)用程序(the?app?undertest,aut)的高質(zhì)量是必不可少的。為了降低創(chuàng)建此類ui測試的高人工勞動成本,相關(guān)技術(shù)提出了基于測試目標(biāo)描述,自動探索測試應(yīng)用程序的方法,以得到能夠?qū)崿F(xiàn)自動生成針對測試目標(biāo)的ui操作序列(即基于特征的ui自動測試)??紤]到基于特征的ui自動測試任務(wù)類似于傳統(tǒng)的人工智能規(guī)劃問題,在相關(guān)技術(shù)中,主要采用以人工智能規(guī)劃有效性而聞名的大型語言模型(llm)來執(zhí)行,將測試目標(biāo)和相關(guān)的提示文本輸入至llm,由llm生成ui操作序列,從而通過在aut(待測試的應(yīng)用程序)上自動執(zhí)行該ui操作序列,實現(xiàn)對aut的ui自動測試。
2、然而,ui測試這類任務(wù)(即基于特征的ui自動測試)屬于順序規(guī)劃問題,需要llm執(zhí)行多步驟推理,而llm的推理性能會隨著任務(wù)復(fù)雜性的增加而下降,導(dǎo)致推理得到的ui操作序列中可能存在無效ui操作,進(jìn)而使得在aut上執(zhí)行該ui操作序列時無法達(dá)到預(yù)期的測試效果。并且,llm在遵循多個或細(xì)粒度指令方面效果較差,難以直接通過修改提示文本來提高llm對于規(guī)劃ui操作的準(zhǔn)確性。因此,亟需提出一種用戶界面測試導(dǎo)航系統(tǒng)、方法與產(chǎn)品,以提高基于llm進(jìn)行自動ui測試的有效性。
技術(shù)實現(xiàn)思路
1、鑒于上述問題,本技術(shù)實施例提供了一種用戶界面測試導(dǎo)航系統(tǒng)、方法與產(chǎn)品,以便克服上述問題或者至少部分地解決上述問題。
2、本技術(shù)實施例的第一方面,提供了一種用戶界面測試導(dǎo)航系統(tǒng),所述系統(tǒng)包括:
3、內(nèi)存模塊,用于維護(hù)屏蔽操作空間,以及,歷史測試信息;所述屏蔽操作空間包括一個或多個屏蔽操作,所述屏蔽操作表示在對應(yīng)的ui狀態(tài)下執(zhí)行后未達(dá)到預(yù)期效果的ui操作;
4、領(lǐng)域知識加載器,用于根據(jù)所述屏蔽操作空間,以及,當(dāng)前ui狀態(tài),對動作空間進(jìn)行優(yōu)化,刪除所述動作空間中的屏蔽操作,得到優(yōu)化后動作空間;
5、執(zhí)行引擎,用于根據(jù)所述優(yōu)化后動作空間,生成操作提示,使第一大語言模型llm根據(jù)所述操作提示,確定本輪ui測試動作;獲取在測試應(yīng)用程序aut上執(zhí)行所述本輪ui測試動作,得到的測試后ui狀態(tài);
6、所述領(lǐng)域知識加載器,還用于根據(jù)所述測試后ui狀態(tài),驗證本輪ui測試是否達(dá)到預(yù)期效果,在未達(dá)到預(yù)期效果的情況下,恢復(fù)ui狀態(tài)至所述當(dāng)前ui狀態(tài),重新進(jìn)行ui測試。
7、在一種可能的實施方式中,所述領(lǐng)域知識加載器包括:優(yōu)化器;
8、其中,所述優(yōu)化器用于根據(jù)所述當(dāng)前ui狀態(tài),解析得到當(dāng)前aut界面的可用ui操作列表,生成所述動作空間,所述動作空間表示在當(dāng)前的aut界面所能夠執(zhí)行的所有ui操作的集合;
9、所述優(yōu)化器根據(jù)從所述內(nèi)存模塊獲取的所述屏蔽操作空間,對所述動作空間進(jìn)行優(yōu)化,刪除所述動作空間中的屏蔽操作,得到所述優(yōu)化后動作空間。
10、在一種可能的實施方式中,所述執(zhí)行引擎包括:解析器、llm驅(qū)動程序和ui驅(qū)動程序;
11、所述解析器根據(jù)所述優(yōu)化后動作空間,以及,從所述內(nèi)存模塊獲取到的所述歷史測試信息,生成操作提示;所述操作提示包括:所述優(yōu)化后動作空間、測試目標(biāo)、歷史ui操作序列;
12、利用所述llm驅(qū)動程序,將所述操作提示發(fā)送給所述第一llm,接收所述第一llm根據(jù)所述操作提示響應(yīng)得到的響應(yīng)結(jié)果;所述響應(yīng)結(jié)果為所述第一llm確定的本輪測試在所述當(dāng)前ui狀態(tài)下所需要執(zhí)行的ui操作的標(biāo)識符;
13、所述解析器對所述響應(yīng)結(jié)果進(jìn)行解析,得到所述本輪ui測試動作;所述本輪ui測試動作包括:點擊、滑動、長按、輸入文本中的一項或多項;
14、利用所述ui驅(qū)動程序,在aut上執(zhí)行所述本輪ui測試動作,得到所述測試后ui狀態(tài)。
15、在一種可能的實施方式中,所述領(lǐng)域知識加載器包括:驗證器;所述根據(jù)所述測試后ui狀態(tài),驗證本輪ui測試是否達(dá)到預(yù)期效果,包括:
16、通過所述驗證器,將所述第一llm的響應(yīng)結(jié)果、所述當(dāng)前ui狀態(tài)和所述測試后ui狀態(tài)作為三元組發(fā)送給第二llm,使所述第二llm判斷所述測試后ui狀態(tài)是否與規(guī)劃中的測試狀態(tài)一致,接收所述第二llm的驗證結(jié)果;
17、通過所述驗證器,基于啟發(fā)式規(guī)則,分析所述測試后ui狀態(tài),確定本輪ui測試是否達(dá)到預(yù)期效果。
18、在一種可能的實施方式中,所述基于啟發(fā)式規(guī)則,分析所述測試后ui狀態(tài),確定本輪ui測試是否達(dá)到預(yù)期效果,包括:
19、根據(jù)所述測試后ui狀態(tài),確定在之前的測試輪次中是否已經(jīng)出現(xiàn)相同的ui狀態(tài);
20、確定所述測試后ui狀態(tài)是否為無響應(yīng)的ui狀態(tài);
21、根據(jù)所述測試后ui狀態(tài),確定是否出現(xiàn)測試狀態(tài)循環(huán)。
22、在一種可能的實施方式中,所述領(lǐng)域知識加載器包括:錯誤處理程序;所述歷史測試信息包括:已生效ui操作按照執(zhí)行順序所組成的歷史ui操作序列,以及,已生效ui狀態(tài)按照測試執(zhí)行順序所組成的歷史ui狀態(tài)序列;所述已生效ui操作,表示對應(yīng)輪次ui測試達(dá)到預(yù)期效果所執(zhí)行的ui操作,所述已生效ui狀態(tài),表示對應(yīng)輪次ui測試達(dá)到預(yù)期效果所得到的ui狀態(tài);所述已生效ui操作與所述已生效ui狀態(tài)一一對應(yīng);
23、在未達(dá)到預(yù)期效果的情況下,通過所述錯誤處理程序,進(jìn)行ui狀態(tài)回溯,檢測回退后的ui狀態(tài)在所述歷史ui狀態(tài)序列中的位置,并根據(jù)所述歷史ui操作序列,重新執(zhí)行對應(yīng)的所述已生效ui操作,以恢復(fù)至所述當(dāng)前ui狀態(tài)。
24、在一種可能的實施方式中,在未達(dá)到預(yù)期效果的情況下,所述內(nèi)存模塊,將所述本輪ui測試動作作為屏蔽操作,將所述當(dāng)前ui狀態(tài)作為該屏蔽操作對應(yīng)的ui狀態(tài),對所述屏蔽操作空間進(jìn)行更新;
25、在達(dá)到預(yù)期效果的情況下,所述內(nèi)存模塊對所述歷史測試信息進(jìn)行更新,將所述本輪ui測試動作作為所述已生效ui操作,添加至所述歷史ui操作序列,將所述測試后ui狀態(tài)作為所述已生效ui狀態(tài),添加至所述歷史ui狀態(tài)序列。
26、本技術(shù)實施例第二方面還提供了一種用戶界面測試導(dǎo)航方法,應(yīng)用于本技術(shù)實施例第一方面所述的用戶界面測試導(dǎo)航系統(tǒng),所述方法包括:
27、根據(jù)屏蔽操作空間,以及,當(dāng)前ui狀態(tài),對動作空間進(jìn)行優(yōu)化,刪除所述動作空間中的屏蔽操作,得到優(yōu)化后動作空間;所述屏蔽操作空間包括一個或多個屏蔽操作,所述屏蔽操作表示在對應(yīng)的ui狀態(tài)下執(zhí)行后未達(dá)到預(yù)期效果的ui操作;
28、根據(jù)所述優(yōu)化后動作空間,生成操作提示,使第一大語言模型llm根據(jù)所述操作提示,確定本輪ui測試動作;
29、獲取在測試應(yīng)用程序aut上執(zhí)行所述本輪ui測試動作,得到的測試后ui狀態(tài);
30、根據(jù)所述測試后ui狀態(tài),驗證本輪ui測試是否達(dá)到預(yù)期效果,在未達(dá)到預(yù)期效果的情況下,恢復(fù)ui狀態(tài)至所述當(dāng)前ui狀態(tài),重新進(jìn)行ui測試。
31、本技術(shù)實施例第三方面還提供了一種電子設(shè)備,包括存儲器、處理器及存儲在所述存儲器上的計算機(jī)程序,所述處理器執(zhí)行所述計算機(jī)程序以實現(xiàn)本技術(shù)實施例第二方面所述的用戶界面測試導(dǎo)航方法中的步驟。
32、本技術(shù)實施例第五方面還提供了一種計算機(jī)可讀存儲介質(zhì),其上存儲有計算機(jī)程序/指令,該計算機(jī)程序/指令被處理器執(zhí)行時實現(xiàn)本技術(shù)實施例第二方面所述的用戶界面測試導(dǎo)航方法中的步驟。
33、本技術(shù)實施例第六方面還提供了一種計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品在電子設(shè)備上運(yùn)行時,使處理器執(zhí)行時實現(xiàn)如本技術(shù)實施例第二方面所述的用戶界面測試導(dǎo)航方法中的步驟。
34、本技術(shù)實施例提供了一種用戶界面測試導(dǎo)航系統(tǒng),所述系統(tǒng)包括:內(nèi)存模塊,用于維護(hù)屏蔽操作空間,以及,歷史測試信息;所述屏蔽操作空間包括一個或多個屏蔽操作,所述屏蔽操作表示在對應(yīng)的ui狀態(tài)下執(zhí)行后未達(dá)到預(yù)期效果的ui操作;領(lǐng)域知識加載器,用于根據(jù)所述屏蔽操作空間,以及,當(dāng)前ui狀態(tài),對動作空間進(jìn)行優(yōu)化,刪除所述動作空間中的屏蔽操作,得到優(yōu)化后動作空間;執(zhí)行引擎,用于根據(jù)所述優(yōu)化后動作空間,生成操作提示,使第一大語言模型llm根據(jù)所述操作提示,確定本輪ui測試動作;獲取在測試應(yīng)用程序aut上執(zhí)行所述本輪ui測試動作,得到的測試后ui狀態(tài);所述領(lǐng)域知識加載器,還用于根據(jù)所述測試后ui狀態(tài),驗證本輪ui測試是否達(dá)到預(yù)期效果,在未達(dá)到預(yù)期效果的情況下,恢復(fù)ui狀態(tài)至所述當(dāng)前ui狀態(tài),重新進(jìn)行ui測試。
35、具體有益效果在于:
36、在ui測試過程中需要執(zhí)行一系列的ui操作,本技術(shù)實施例一方面,利用領(lǐng)域知識加載器對動作空間(對于當(dāng)前的ui狀態(tài),可選擇的ui操作的集合)進(jìn)行了優(yōu)化,將測試過程中無效的ui操作(即屏蔽操作,表示在對應(yīng)的ui狀態(tài)下執(zhí)行后未達(dá)到預(yù)期效果的ui操作)從動作空間中刪除。另一方面,通過領(lǐng)域知識加載器,在每執(zhí)行完成一次ui操作后,根據(jù)測試后ui狀態(tài),及時地驗證本輪ui測試是否達(dá)到預(yù)期效果,若未達(dá)到預(yù)期效果,則恢復(fù)ui狀態(tài)至執(zhí)行無效操作之前的狀態(tài)(即當(dāng)前ui狀態(tài)),從而使得llm可以在優(yōu)化后動作空間中,重新確定所應(yīng)該執(zhí)行的ui操作,避免llm重復(fù)選擇錯誤的ui操作,實現(xiàn)了在llm規(guī)劃ui操作序列的過程中,在當(dāng)前規(guī)劃的ui操作發(fā)生錯誤的情況下,及時地基于當(dāng)前信息重新進(jìn)行規(guī)劃,以生成可靠準(zhǔn)確的針對測試目標(biāo)的ui操作序列,提高了基于llm進(jìn)行自動ui測試的有效性。