本說明書涉及軟件測試,尤其是涉及一種基于分布式架構(gòu)的ui自動化測試方法、系統(tǒng)及設(shè)備。
背景技術(shù):
1、ui自動化測試是通過使用特定的測試工具來自動化執(zhí)行軟件測試任務(wù)的方法。它可以替代絕大部分手動測試,提高測試的準(zhǔn)確性和測試效率,實現(xiàn)更全面的測試內(nèi)容覆蓋,簡化手動測試中的大量重復(fù)操作。
2、然而,在現(xiàn)有的測試工具中,多數(shù)的測試工具只支持單一的測試場景,例如只能通過模擬前端頁面的操作進(jìn)行測試,或者直接對后端代碼進(jìn)行簡單的接口測試,難以適合復(fù)雜的測試場景。不僅如此,在需要多瀏覽器或多語言切換的場景下,由于ui自動化測試對測試場景全覆蓋的必要性,現(xiàn)有的測試工具容易出現(xiàn)執(zhí)行時間長、腳本編寫冗余等問題。
技術(shù)實現(xiàn)思路
1、本說明書實施例的目的在于提供一種基于分布式架構(gòu)的ui自動化測試方法、系統(tǒng)及設(shè)備,以降低復(fù)雜場景下ui自動化測試的維護(hù)成本,提高復(fù)雜場景下ui自動化測試的測試效率。
2、為達(dá)到上述目的,一方面,本說明書實施例提供了一種基于分布式架構(gòu)的ui自動化測試方法,包括:
3、提供多個測試腳本集合;所述多個測試腳本集合基于同一套業(yè)務(wù)邏輯生成,且每個所述測試腳本集合對應(yīng)一個不同的客戶端版本;
4、監(jiān)控執(zhí)行機(jī)集群的狀態(tài),并從所述執(zhí)行機(jī)集群中根據(jù)執(zhí)行機(jī)狀態(tài)選擇多個目標(biāo)執(zhí)行機(jī);
5、使調(diào)度機(jī)按照分發(fā)策略將所述測試腳本集合中的測試腳本分發(fā)至所述多個目標(biāo)執(zhí)行機(jī);
6、利用所述多個目標(biāo)執(zhí)行機(jī)并發(fā)執(zhí)行測試,并將測試結(jié)果保存至指定路徑。
7、本說明書實施例的基于分布式架構(gòu)的ui自動化測試方法中,所述多個測試腳本集合預(yù)先根據(jù)以下方式生成:
8、獲取全量的業(yè)務(wù)動作函數(shù),并形成業(yè)務(wù)動作函數(shù)庫;所述業(yè)務(wù)動作函數(shù)用于表征用戶的業(yè)務(wù)操作行為;
9、構(gòu)建所述業(yè)務(wù)動作函數(shù)庫對應(yīng)的業(yè)務(wù)數(shù)據(jù)集;
10、將所述業(yè)務(wù)動作函數(shù)庫與所述業(yè)務(wù)數(shù)據(jù)集進(jìn)行元素排列組合,形成ui測試組件庫;
11、構(gòu)建所述ui測試組件庫對應(yīng)的測試點集;
12、將所述ui測試組件庫與所述測試點集按需進(jìn)行元素排列組合,形成每個客戶端版本的測試腳本集合。
13、本說明書實施例的基于分布式架構(gòu)的ui自動化測試方法中,所述按照分發(fā)策略將所述測試腳本集合中的測試腳本分發(fā)至所述多個目標(biāo)執(zhí)行機(jī),包括:
14、從測試腳本集合中選擇第一個測試腳本,將所述第一個測試腳本識別為腳本分類分發(fā)集合中的第一類元素,并將所述第一個測試腳本中涉及的數(shù)據(jù)庫表集合確定為所述第一類元素的數(shù)據(jù)庫表集合;
15、從該測試腳本集合中選擇第二個測試腳本,并將所述第二個測試腳本中涉及的數(shù)據(jù)庫表集合,與所述第一類元素的數(shù)據(jù)庫表集合進(jìn)行取交集操作;
16、判斷交集是否為空;
17、如果交集為空,則將所述第二個測試腳本識別為所述腳本分類分發(fā)集合中的第二類元素,并將所述第二個測試腳本中涉及的數(shù)據(jù)庫表集合確定為所述第二類元素的數(shù)據(jù)庫表集合;
18、如果交集不為空,則將所述第二個測試腳本識別為所述腳本分類分發(fā)集合中的第一類元素,并將所述第二個測試腳本中涉及的數(shù)據(jù)庫表集合添加至所述第一類元素的數(shù)據(jù)庫表集合中;
19、以此遞推,直至確定該測試腳本集合中每個測試腳本在所述腳本分類分發(fā)集合中的類別歸屬;
20、利用所述調(diào)度機(jī)將歸屬不同類別的元素并發(fā)分發(fā)至所述多個目標(biāo)執(zhí)行機(jī)。
21、本說明書實施例的基于分布式架構(gòu)的ui自動化測試方法中,所述數(shù)據(jù)庫表集合包括涉及寫操作的數(shù)據(jù)庫表集合。
22、本說明書實施例的基于分布式架構(gòu)的ui自動化測試方法中,所述不同的客戶端版本包括:
23、不同語言版本的客戶端,和/或不同種類的客戶端。
24、另一方面,本說明書實施例還提供了一種基于分布式架構(gòu)的ui自動化測試系統(tǒng),包括:
25、存儲服務(wù)端,用于提供多個測試腳本集合;所述多個測試腳本集合基于同一套業(yè)務(wù)邏輯生成,且每個所述測試腳本集合對應(yīng)一個不同的客戶端版本;
26、心跳監(jiān)控機(jī),用于監(jiān)控執(zhí)行機(jī)集群的狀態(tài),并從所述執(zhí)行機(jī)集群中根據(jù)執(zhí)行機(jī)狀態(tài)選擇多個目標(biāo)執(zhí)行機(jī);
27、調(diào)度機(jī),用于按照分發(fā)策略將所述測試腳本集合中的測試腳本分發(fā)至所述多個目標(biāo)執(zhí)行機(jī);
28、執(zhí)行機(jī)集群,用于利用所述多個目標(biāo)執(zhí)行機(jī)并發(fā)執(zhí)行測試,并將測試結(jié)果保存至指定路徑。
29、本說明書實施例的基于分布式架構(gòu)的ui自動化測試方法中,所述多個測試腳本集合預(yù)先根據(jù)以下方式生成:
30、獲取全量的業(yè)務(wù)動作函數(shù),并形成業(yè)務(wù)動作函數(shù)庫;所述業(yè)務(wù)動作函數(shù)用于表征用戶的業(yè)務(wù)操作行為;
31、構(gòu)建所述業(yè)務(wù)動作函數(shù)庫對應(yīng)的業(yè)務(wù)數(shù)據(jù)集;
32、將所述業(yè)務(wù)動作函數(shù)庫與所述業(yè)務(wù)數(shù)據(jù)集進(jìn)行元素排列組合,形成ui測試組件庫;
33、構(gòu)建所述ui測試組件庫對應(yīng)的測試點集;
34、將所述ui測試組件庫與所述測試點集按需進(jìn)行元素排列組合,形成每個客戶端版本的測試腳本集合。
35、本說明書實施例的基于分布式架構(gòu)的ui自動化測試方法中,所述按照分發(fā)策略將所述測試腳本集合中的測試腳本分發(fā)至所述多個目標(biāo)執(zhí)行機(jī),包括:
36、從測試腳本集合中選擇第一個測試腳本,將所述第一個測試腳本識別為腳本分類分發(fā)集合中的第一類元素,并將所述第一個測試腳本中涉及的數(shù)據(jù)庫表集合確定為所述第一類元素的數(shù)據(jù)庫表集合;
37、從該測試腳本集合中選擇第二個測試腳本,并將所述第二個測試腳本中涉及的數(shù)據(jù)庫表集合,與所述第一類元素的數(shù)據(jù)庫表集合進(jìn)行取交集操作;
38、判斷交集是否為空;
39、如果交集為空,則將所述第二個測試腳本識別為所述腳本分類分發(fā)集合中的第二類元素,并將所述第二個測試腳本中涉及的數(shù)據(jù)庫表集合確定為所述第二類元素的數(shù)據(jù)庫表集合;
40、如果交集不為空,則將所述第二個測試腳本識別為所述腳本分類分發(fā)集合中的第一類元素,并將所述第二個測試腳本中涉及的數(shù)據(jù)庫表集合添加至所述第一類元素的數(shù)據(jù)庫表集合中;
41、以此遞推,直至確定該測試腳本集合中每個測試腳本在所述腳本分類分發(fā)集合中的類別歸屬;
42、利用所述調(diào)度機(jī)將歸屬不同類別的元素并發(fā)分發(fā)至所述多個目標(biāo)執(zhí)行機(jī)。
43、本說明書實施例的基于分布式架構(gòu)的ui自動化測試方法中,所述數(shù)據(jù)庫表集合包括涉及寫操作的數(shù)據(jù)庫表集合。
44、本說明書實施例的基于分布式架構(gòu)的ui自動化測試方法中,所述不同的客戶端版本包括:
45、不同語言版本的客戶端,和/或不同種類的客戶端。
46、另一方面,本說明書實施例還提供了一種計算機(jī)設(shè)備,包括存儲器、處理器、以及存儲在所述存儲器上的計算機(jī)程序,所述計算機(jī)程序被所述處理器運行時,執(zhí)行上述方法的指令。
47、另一方面,本說明書實施例還提供了一種計算機(jī)存儲介質(zhì),其上存儲有計算機(jī)程序,所述計算機(jī)程序被計算機(jī)設(shè)備的處理器運行時,執(zhí)行上述方法的指令。
48、另一方面,本說明書實施例還提供了一種計算機(jī)程序產(chǎn)品,所述計算機(jī)程序產(chǎn)品包括計算機(jī)程序,所述計算機(jī)程序被計算機(jī)設(shè)備的處理器運行時,執(zhí)行上述方法的指令。
49、由以上本說明書實施例提供的技術(shù)方案可見,本說明書實施例可以根據(jù)執(zhí)行機(jī)狀態(tài)從執(zhí)行機(jī)集群中選擇多個目標(biāo)執(zhí)行機(jī),然后由調(diào)度機(jī)根據(jù)分發(fā)策略分配測試腳本給多個目標(biāo)執(zhí)行機(jī),由多個目標(biāo)執(zhí)行機(jī)并發(fā)執(zhí)行測試并將測試結(jié)果保存至指定路徑,如此,通過這種分布式調(diào)度測試腳本和并發(fā)執(zhí)行測試腳本,可以大幅提高復(fù)雜場景下ui自動化測試的測試效率;不僅如此,由于可以預(yù)先基于同一套業(yè)務(wù)邏輯為不同的客戶端版本生成一一對應(yīng)的測試腳本集合,從而可以減少ui自動化測試在相同或相似的測試場景會產(chǎn)生多套與之對應(yīng)的測試代碼的冗余情況,極大降低了復(fù)雜場景下ui自動化測試的維護(hù)成本。