本發(fā)明涉及軟件測試,具體而言,涉及測試方法、裝置及系統(tǒng)。
背景技術(shù):
目前,對于某個特定的軟件(或者稱為應(yīng)用)需要根據(jù)系統(tǒng)的不同制作不同的版本(稱為軟件包或者應(yīng)用包),對于每個版本均需要進行測試,例如,目前比較流行的安卓(Android)系統(tǒng)由于其系統(tǒng)的開放性,導(dǎo)致其發(fā)布渠道種類很多。據(jù)保守統(tǒng)計,目前主流的發(fā)布渠道至少有五十多個。因此,在應(yīng)用(例如,游戲)的開發(fā)和運營過程中,不同的渠道包均需要進行測試(例如,可以測試安裝、啟動、登錄、支付等)。
為了保證各個游戲渠道包功能正常,在現(xiàn)有技術(shù)中,需要人工地將每一個游戲渠道包安裝在不同的設(shè)備上,然后人為地完成各種功能的測試。這一過程需要耗費大量的人力和時間。
針對上述的問題,目前尚未提出有效的解決方案。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了測試方法、裝置及系統(tǒng),以至少解決現(xiàn)有技術(shù)不同應(yīng)用版本需要人為進行測試所導(dǎo)致的人力時間消耗較大技術(shù)問題。
根據(jù)本發(fā)明實施例的一個方面,提供了一種測試系統(tǒng),包括:服務(wù)器和一個或多個測試機,其中,所述服務(wù)器,用于向用戶提供網(wǎng)頁服務(wù)以及提供預(yù)設(shè)的不同版本的軟件包對應(yīng)的第一測試腳本,其中,所述網(wǎng)頁服務(wù)提供的一個或多個網(wǎng)頁包括以下至少之一:用于上傳待測試軟件包的網(wǎng)頁、用于上傳自定義測試信息的網(wǎng)頁,所述測試信息為對所述待測試軟件包進行測試所需要使用的用戶自定義信息;所述服務(wù)器,還用于根據(jù)所述自定義測試信息及與所述軟件包對應(yīng)的第一測試腳本生成測試任務(wù)并向所述測試機進行分發(fā),其中,所述測試任務(wù)用于在不同測試設(shè)備上測試對應(yīng)的軟件包;所述測試機,與至少一個測試設(shè)備連接,用于在接收到來自所述服務(wù)器的測試任務(wù)之后,控制與其連接測試設(shè)備,以安裝對應(yīng)的軟件包并進行測試。
進一步地,所述測試機,還用于收集與其連接的測試設(shè)備的測試結(jié)果,并將所述測試結(jié)果發(fā)送給所述服務(wù)器;所述服務(wù)器的網(wǎng)頁服務(wù)提供的網(wǎng)頁還包括:用于展示測試報告的網(wǎng)頁,其中,所述測試報告是根據(jù)所述測試結(jié)果生成的。
進一步地,所述測試信息包括以下至少之一:測試參數(shù)、用戶自定義的第二測試腳本,其中,所述第二測試腳本用于控制所述測試設(shè)備執(zhí)行軟件包的安裝,和/或,安裝所述軟件包之后控制所述軟件包對應(yīng)的軟件執(zhí)行操作,所述測試參數(shù)為所述第二測試腳本在被執(zhí)行的過程中使用到的參數(shù)。
進一步地,所述測試結(jié)果包括以下至少之一:執(zhí)行測試的測試設(shè)備的信息、安裝所述軟件包成功或失敗的信息、控制所述軟件執(zhí)行所述操作的信息。
進一步地,所述服務(wù)器,還用于獲取在線的測試機,并向在線的所述測試機分發(fā)所述測試任務(wù)。
進一步地,所述服務(wù)器,還用于為在線的所述測試機連接的至少一個測試設(shè)備分別維護任務(wù)隊列,其中,每個任務(wù)隊列記錄了該測試設(shè)備執(zhí)行的測試任務(wù);所述服務(wù)器,還用于根據(jù)每個測試設(shè)備對應(yīng)的任務(wù)隊列中測試任務(wù)的數(shù)量向測試設(shè)備分發(fā)測試任務(wù)。
進一步地,所述系統(tǒng)還包括:一個或多個所述測試設(shè)備,與所述測試機連接,用于在所述測試機的控制下安裝對應(yīng)的軟件包,以及控制所述軟件包對應(yīng)的軟件進行操作。
進一步地,所述測試設(shè)備,用于控制所述軟件進行操作包括:對所述軟件對應(yīng)的控件進行識別和操作。
進一步地,所述測試設(shè)備,用于根據(jù)控件類別、資源標識以及控件文本內(nèi)容來對控件進行識別和操作;或者,用于根據(jù)圖像匹配來獲取所述控件并對獲取到的控件進行操作。
進一步地,所述不同版本的軟件包對應(yīng)同一款軟件,所述軟件的每一版本對應(yīng)一個不同的發(fā)布該軟件的發(fā)布渠道。
根據(jù)本實施例的另一個方面,還提供了一種測試方法,包括:向用戶提供網(wǎng)頁服務(wù)以及提供預(yù)設(shè)的不同版本的軟件包對應(yīng)的第一測試腳本,通過所述網(wǎng)頁服務(wù)提供的一個或多個網(wǎng)頁獲取用戶上傳待測試軟件包以及自定義測試信息,其中,所述測試信息為對所述待測試軟件包進行測試所需要使用的用戶自定義信息;根據(jù)所述自定義測試信息及與所述軟件包對應(yīng)的第一測試腳本生成測試任務(wù)并向所述測試機進行分發(fā),其中,所述測試任務(wù)用于在所述測試機連接的不同測試設(shè)備上測試對應(yīng)的軟件包;接收來自所述測試機的測試結(jié)果并通過網(wǎng)頁展示測試報告,其中,所述測試報告是根據(jù)所述測試結(jié)果生成的。
進一步地,所述測試信息包括以下至少之一:測試參數(shù)、用戶自定義的第二測試腳本,其中,所述第二測試腳本用于控制所述測試設(shè)備執(zhí)行軟件包的安裝,和/或,安裝所述軟件包之后控制所述軟件包對應(yīng)的軟件執(zhí)行操作,所述測試參數(shù)為所述第二測試腳本在被執(zhí)行的過程中使用到的參數(shù)。
進一步地,所述測試結(jié)果包括以下至少之一:執(zhí)行測試的測試設(shè)備的信息、安裝所述軟件包成功或失敗的信息、控制所述軟件執(zhí)行所述操作的信息。
進一步地,根據(jù)所述自定義測試信息及與所述軟件包對應(yīng)的第一測試腳本生成測試任務(wù)并向所述測試機進行分發(fā)包括:獲取在線的測試機,并向在線的所述測試機分發(fā)所述測試任務(wù)。
進一步地,獲取在線的測試機,并向在線的所述測試機分發(fā)所述測試任務(wù)包括:獲取每個測試設(shè)備已經(jīng)得到的測試任務(wù);根據(jù)每個測試設(shè)備執(zhí)行的任務(wù)獲取所述每個測試設(shè)備的負荷;根據(jù)所述每個測試設(shè)備的負荷為所述每個測試設(shè)備分發(fā)測試任務(wù)。
進一步地,獲取每個測試設(shè)備已經(jīng)得到的測試任務(wù)包括:通過為測試設(shè)備分別維護任務(wù)隊列獲取所述每個測試設(shè)備已經(jīng)得到的測試任務(wù)。
根據(jù)本發(fā)明實施例的另一個方面,還提供了一種測試方法,包括:獲取來自服務(wù)器的至少一個待測試軟件包以及測試信息,其中,所述測試信息為對所述至少一個待測試軟件包中的每個待測試包進行測試所需要使用的用戶自定義信息;根據(jù)所述自定義測試信息及與所述軟件包對應(yīng)的第一測試腳本生成測試任務(wù)并向所述測試機進行分發(fā),其中,所述測試任務(wù)用于在所述測試機連接的不同測試設(shè)備上測試對應(yīng)的軟件包;接收來自所述至少一個測試設(shè)備的測試結(jié)果并發(fā)送給所述服務(wù)器。
進一步地,根據(jù)所述自定義測試信息及與所述軟件包對應(yīng)的第一測試腳本生成測試任務(wù)并向所述測試機進行分發(fā)包括:獲取所述至少一個測試設(shè)備的硬件信息、操作系統(tǒng)的信息和/或資源使用情況;根據(jù)所述測試信息中的對測試設(shè)備的要求向符合所述要求的測試機分發(fā)所述測試任務(wù)。
根據(jù)本發(fā)明實施例的另一個方面,還提供了一種測試裝置,包括:提供模塊,用于向用戶提供網(wǎng)頁服務(wù)以及提供預(yù)設(shè)的不同版本的軟件包對應(yīng)的第一測試腳本;第一獲取模塊,通過所述網(wǎng)頁服務(wù)提供的一個或多個網(wǎng)頁獲取用戶上傳待測試軟件包以及自定義測試信息,其中,所述測試信息為對所述待測試軟件包進行測試所需要使用的用戶自定義信息;第一分發(fā)模塊,根據(jù)所述自定義測試信息及與所述軟件包對應(yīng)的第一測試腳本生成測試任務(wù)并向所述測試機進行分發(fā),其中,所述測試任務(wù)用于在所述測試機連接的不同測試設(shè)備上測試對應(yīng)的軟件包;展示模塊,用于接收來自所述測試機的測試結(jié)果并通過網(wǎng)頁展示測試報告,其中,所述測試報告是根據(jù)所述測試結(jié)果生成的。
根據(jù)本發(fā)明實施例的另一個方面,還提供了一種測試裝置,包括:第二獲取模塊,用于獲取來自服務(wù)器的至少一個待測試軟件包以及測試信息,其中,所述測試信息為對所述至少一個待測試軟件包中的每個待測試包進行測試所需要使用的用戶自定義信息;第二分發(fā)模塊,根據(jù)所述自定義測試信息及與所述軟件包對應(yīng)的第一測試腳本生成測試任務(wù)并向所述測試機進行分發(fā),其中,所述測試任務(wù)用于在所述測試機連接的不同測試設(shè)備上測試對應(yīng)的軟件包;發(fā)送模塊,用于接收來自所述至少一個測試設(shè)備的測試結(jié)果并發(fā)送給所述服務(wù)器。
在本發(fā)明實施例中,采用服務(wù)器和一個或多個測試機,其中,所述服務(wù)器,用于向用戶提供網(wǎng)頁服務(wù),其中,所述網(wǎng)頁服務(wù)提供的一個或多個網(wǎng)頁包括以下至少之一:用于上傳待測試軟件包的網(wǎng)頁、用于上傳測試信息的網(wǎng)頁,所述測試信息為對所述待測試軟件包進行測試所使用的信息;所述服務(wù)器,還用于向所述測試機分發(fā)測試任務(wù),其中,所述測試任務(wù)用于在不同測試設(shè)備上測試對應(yīng)的軟件包;所述測試機,與至少一個測試設(shè)備連接,用于在接收到來自所述服務(wù)器的測試任務(wù)之后,控制與其連接測試設(shè)備,以安裝對應(yīng)的軟件包并進行測試。通過上述實施例解決了人力時間消耗較大的技術(shù)問題,提高了測試效率。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當限定。在附圖中:
圖1是根據(jù)本發(fā)明實施例的測試系統(tǒng)的示意圖;
圖2是根據(jù)本發(fā)明實施例的測試方法的流程圖;
圖3是根據(jù)本發(fā)明實施例的另一測試方法的流程圖;
圖4是根據(jù)本發(fā)明實施例的測試裝置的結(jié)構(gòu)框圖;
圖5是根據(jù)本發(fā)明實施例的另一測試裝置的結(jié)構(gòu)框圖;
圖6是根據(jù)本發(fā)明實施例的可選的游戲測試示意圖;
圖7是根據(jù)本發(fā)明實施例的任務(wù)分發(fā)的示意圖;
圖8是根據(jù)本發(fā)明實施例的執(zhí)行測試任務(wù)的示意圖;以及
圖9是根據(jù)本發(fā)明實施例的Server-Agent的分布式架構(gòu)示意圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當屬于本發(fā)明保護的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當情況下可以互換,以便這里描述的本發(fā)明的實施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤4送?,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
在本實施例中,提供了一種測試系統(tǒng),圖1是根據(jù)本發(fā)明實施例的測試系統(tǒng)的示意圖,如圖1所示,本測試系統(tǒng)包括:服務(wù)器和一個或多個測試機。下面對此進行說明。
本實施例中的服務(wù)至少具有兩個功能:
功能一:
向用戶提供網(wǎng)頁服務(wù)以及提供預(yù)設(shè)的不同版本的軟件包對應(yīng)的第一測試腳本,其中,網(wǎng)頁服務(wù)提供的一個或多個網(wǎng)頁包括以下至少之一:用于上傳待測試軟件包的網(wǎng)頁、用于上傳自定義測試信息的網(wǎng)頁,該測試信息為對待測試軟件包進行測試所需要使用的用戶自定義信息。
提供網(wǎng)頁服務(wù)可以采用多種形式來進行,例如,可以使用開源的web服務(wù)器,也可以使用windows系統(tǒng)提供的網(wǎng)頁服務(wù)。提供網(wǎng)頁服務(wù)的優(yōu)勢在于,可以讓用戶(即測試人員)通過比較便利的方式上傳軟件包以及測試所需要使用的信息。
功能二:
根據(jù)所述自定義測試信息及與軟件包對應(yīng)的第一測試腳本生成測試任務(wù)并向測試機進行分發(fā),其中,測試任務(wù)用于在不同測試設(shè)備上測試對應(yīng)的軟件包。
同一款軟件可能對應(yīng)不同的軟件包,這些軟件包可以安裝在不同的設(shè)備上,此時,服務(wù)器還承擔了向測試機分發(fā)測試任務(wù)的功能。
由于涉及了多個測試設(shè)備,在本系統(tǒng)中,使用了測試機于服務(wù)和測試設(shè)備連接。即每一臺測試機都可以與至少一個測試設(shè)備連接,用于在接收到來自服務(wù)器的測試任務(wù)之后,控制與其連接測試設(shè)備,以安裝對應(yīng)的軟件包并進行測試。
在一個可選的實施方式中,不同版本的軟件包對應(yīng)同一款軟件,這一款軟件的每一版本對應(yīng)一個不同的發(fā)布該軟件的發(fā)布渠道,對渠道包測試時,測試腳本包括兩部分:第一部分是web服務(wù)提供各個渠道的測試腳本,用于模擬渠道登陸的各個操作步驟,例如:點擊哪個圖標進行登陸、點擊哪個控件進行用戶名/密碼輸入等等,第一部分是核心的測試腳本,也即第一測試腳本;第二部分是用戶自定義的測試腳本,也即第二測試腳本,主要用于模擬在進入登陸界面前的點擊操作,例如,有的游戲在登陸界面之前,需要點擊用戶電子協(xié)議、游戲公告等等。
網(wǎng)頁服務(wù)器會提供各個渠道的游戲登錄、渠道支付、卸載包體、回發(fā)測試結(jié)果等核心功能的測試腳本,用戶通過網(wǎng)頁選擇指定的渠道即可。
游戲軟件包括游戲邏輯主體部分和用于實現(xiàn)登陸、支付等功能的SDK,同一個游戲由于接入不同的渠道SDK就會形成不同的渠道包,(例如:華為渠道包、騰訊渠道包),接不同的渠道SDK游戲的登陸、付費方式會有差異,例如:騰訊SDK一般可用微信、QQ登陸,而華為SDK用戶可用華為賬號登陸。正是由于不同SDK登陸、付費的步驟、需點擊的控件位置等存在差異,不同渠道包登陸、付費的測試腳本就會有差異,而常規(guī)的游戲渠道有50-100家,如果每個游戲要自行測試,工作量巨大,本發(fā)明實施例的web服務(wù)器會提供不同渠道的測試腳本,用戶只需上傳自定義的部分并選擇在web服務(wù)器提供的渠道列表上選擇渠道包對應(yīng)的渠道測試腳本即可。
在一個可選的實施方式中,由于服務(wù)器連接多個測試機,為了更加便于分發(fā)測試任務(wù),服務(wù)器可以獲取在線的測試機,并向在線的測試機分發(fā)測試任務(wù)。服務(wù)器可以通過向測試機發(fā)送消息看其是否有響應(yīng)消息來判斷測試機是否在線,或者,測試機也可以通過心跳消息來向服務(wù)器說明在線。在另外一個實施方式中,服務(wù)器還可以通過測試機得知其連接的測試設(shè)備的情況,然后記錄每個測試設(shè)備正在執(zhí)行的測試,即服務(wù)器,可以為在線的測試機連接的至少一個測試設(shè)備分別維護任務(wù)隊列,其中,每個任務(wù)隊列記錄了該測試設(shè)備執(zhí)行的測試任務(wù),由于記錄了每個測試設(shè)備已經(jīng)被分發(fā)的測試任務(wù),從而可以根據(jù)每個測試設(shè)備對應(yīng)的任務(wù)隊列中測試任務(wù)的數(shù)量向測試設(shè)備分發(fā)測試任務(wù)。通過該可選實施方式可以做到負載均衡。
通過上述系統(tǒng)中的服務(wù)器和測試機,測試人員只需要通過網(wǎng)頁選擇指定的渠道,而網(wǎng)頁服務(wù)器提供各個渠道的游戲登錄、渠道支付、卸載包體、回發(fā)測試結(jié)果等核心功能的測試腳本,服務(wù)器和測試機相互配合既可以完成測試。相比于現(xiàn)有技術(shù)中需要人工進行安裝測試包并進行測試的技術(shù)方案,解決了人力時間消耗較大的問題,提高了測試效率。
在一個可選的實施方式中,不僅僅可以做到測試任務(wù)的自動執(zhí)行,還可以自動得到測試結(jié)果,在本可選實施方式中,每個測試機,還可以用于收集與其連接的測試設(shè)備的測試結(jié)果,并將測試結(jié)果發(fā)送給服務(wù)器。此時為了便于測試人員查看測試結(jié)果,服務(wù)器的網(wǎng)頁服務(wù)還可以提供用于展示測試報告的網(wǎng)頁,其中,測試報告是根據(jù)測試結(jié)果生成的。測試報告可以是由服務(wù)器根據(jù)各個測試機上報的測試結(jié)果生成的,或者,也可以是由測試機直接生成測試報告,服務(wù)器僅僅用于展示測試上報的測試報告即可。
為了便于測試人員使用,測試人員可以通過網(wǎng)頁選擇指定的渠道,無需上傳測試使用的腳本,該腳本可以理解為需要控制測試設(shè)備所執(zhí)行的動作,例如,控制測試設(shè)備執(zhí)行軟件包的安裝,和/或,安裝軟件包之后控制軟件包對應(yīng)的軟件執(zhí)行操作。在執(zhí)行用戶自定義的第二測試腳本的時候還有可能使用到相應(yīng)的參數(shù),這些測試參數(shù)可以為測試腳本在執(zhí)行過程中所使用的參數(shù)。測試參數(shù)和用戶自定義的第二測試腳本都可以理解為是測試信息的一部分。
作為另一個可選的實施例,測試結(jié)果中包括的內(nèi)容也可以由測試人員來進行配置,例如,測試結(jié)果可以包括以下至少之一:執(zhí)行測試的測試設(shè)備的信息、安裝軟件包成功或失敗的信息、控制軟件執(zhí)行操作的信息。測試結(jié)果的定制可以根據(jù)目前軟件包的狀態(tài)來配置,例如,在軟件包剛開始進行測試的,需要展示更多的測試結(jié)果;而在軟件包鄰近發(fā)布的時候,可以配置展示相對少一點的內(nèi)容。為了便于測試人員的使用,可以提供結(jié)果模板供測試人員選擇,不同的測試模板展示了不同的測試結(jié)果包括的內(nèi)容。這樣的一種處理方式使測試人員對測試結(jié)果可以更加靈活的配置。
對于測試設(shè)備而言,其可以隨時連接到測試機上,這些測試設(shè)備可以至專門用于測試的,也可以是通常所使用的設(shè)備,僅僅為了測試的需要而連接到測試機上的。因此,作為測試系統(tǒng)而言,該可以包括一個或多個測試設(shè)備,與測試機連接,用于在測試機的控制下安裝對應(yīng)的軟件包,以及控制軟件包對應(yīng)的軟件進行操作。這些測試設(shè)備也可以不包括系統(tǒng)中,每個測試人員可以隨時連接自己需要的設(shè)備到測試機上即可。測試機可以自動識別連接到其上的測試設(shè)備,也可以由測試人員在服務(wù)器或者測試機上進行配置以添加新的測試設(shè)備。
控制測試設(shè)備在對軟件執(zhí)行操作的過程中,軟件中如果涉及到控件需要進行操作,則需要對軟件中的控件進行識別和操作。進行識別和操作的方式有很多種,例如,可以根據(jù)控件類別、資源標識以及控件文本內(nèi)容來對控件進行識別和操作;或者,也可以根據(jù)圖像匹配來獲取控件并對獲取到的控件進行操作。
作為一種可選的實施方式,不同版本的軟件包對應(yīng)同一款軟件,軟件的每一版本對應(yīng)一個不同的發(fā)布該軟件的發(fā)布渠道。
在上述系統(tǒng)中,服務(wù)器執(zhí)行了一種測試的方法,圖2是根據(jù)本發(fā)明實施例的測試方法的流程圖,如圖2所示,該方法包括如下步驟:
步驟S202,向用戶提供網(wǎng)頁服務(wù)以及提供預(yù)設(shè)的不同版本的軟件包對應(yīng)的第一測試腳本,通過網(wǎng)頁服務(wù)提供的一個或多個網(wǎng)頁獲取用戶上傳待測試軟件包以及自定義測試信息,其中,測試信息為對待測試軟件包進行測試所需要使用的用戶自定義信息;
步驟S204,根據(jù)自定義測試信息及與軟件包對應(yīng)的第一測試腳本生成測試任務(wù)并向測試機進行分發(fā),其中,測試任務(wù)用于在測試機連接的不同測試設(shè)備上測試對應(yīng)的軟件包;
步驟S206,接收來自測試機的測試結(jié)果并通過網(wǎng)頁展示測試報告,其中,測試報告是根據(jù)測試結(jié)果生成的。
通過上述步驟,可以做到自動的測試,上述執(zhí)行的步驟可以是服務(wù)器,也可以是其他的裝置或者設(shè)備,只要能夠做到上述步驟就可以解決本發(fā)明所解決的技術(shù)問題。
作為一個可選的實施方式,步驟S204,在分發(fā)測試任務(wù)的時候,可以獲取每個測試設(shè)備已經(jīng)得到的測試任務(wù);根據(jù)每個測試設(shè)備執(zhí)行的任務(wù)獲取每個測試設(shè)備的負荷;根據(jù)每個測試設(shè)備的負荷為每個測試設(shè)備分發(fā)測試任務(wù)。作為另一個可選的實施方式,測試設(shè)備的測試任務(wù)可以通過任務(wù)隊列的方式來進行維護。
在本實施例中還提供了一種測試方法,該測試方式可以在測試機中執(zhí)行,當然,也可以在其他設(shè)備或裝置中執(zhí)行,無論在什么設(shè)備或裝置中執(zhí)行,只要執(zhí)行了以下步驟就可以實現(xiàn)相應(yīng)的功能。圖3是根據(jù)本發(fā)明實施例的另一種測試方法的流程圖,如圖3所示,該流程包括如下步驟:
步驟S302,獲取來自服務(wù)器的至少一個待測試軟件包以及測試信息,其中,測試信息為對至少一個待測試軟件包中的每個待測試包進行測試所需要使用的用戶自定義信息;
步驟S304,根據(jù)自定義測試信息及與軟件包對應(yīng)的第一測試腳本生成測試任務(wù)并向測試機進行分發(fā),其中,測試任務(wù)用于在測試機連接的不同測試設(shè)備上測試對應(yīng)的軟件包;
步驟S306,接收來自至少一個測試設(shè)備的測試結(jié)果并發(fā)送給服務(wù)器。
步驟S204和步驟S304均涉及到測試任務(wù)的分發(fā),測試任務(wù)的分發(fā)可以由服務(wù)器來進行,服務(wù)器將測試任務(wù)直接分發(fā)給測試設(shè)備,也可以將測試任務(wù)分發(fā)給測試機,然后由測試機向測試設(shè)備分發(fā)。同理,服務(wù)器也可以不執(zhí)行任務(wù)分發(fā),而由測試機來進行分發(fā),測試機獲取至少一個測試設(shè)備的硬件信息、操作系統(tǒng)的信息和/或資源使用情況;根據(jù)測試信息中的對測試設(shè)備的要求向符合要求的測試機分發(fā)測試任務(wù)。不同的測試機之間還可以進行消息的互通,測試機可以將原本自己執(zhí)行的任務(wù)分發(fā)給其他的測試機。如果分發(fā)給其他測試機的任務(wù)是服務(wù)器分發(fā)的,此時可以告知服務(wù)器任務(wù)被分發(fā)給其他測試機了。通過該可選的實施方式可以使測試更加靈活。
對應(yīng)于上述圖2中的步驟,在本實施例中還提供了一種測試裝置,圖4是根據(jù)本發(fā)明實施例的測試裝置的結(jié)構(gòu)框圖,如圖4所示,該裝置可以包括如下模塊:
提供模塊42,用于向用戶提供網(wǎng)頁服務(wù)以及提供預(yù)設(shè)的不同版本的軟件包對應(yīng)的第一測試腳本;
第一獲取模塊44,通過網(wǎng)頁服務(wù)提供的一個或多個網(wǎng)頁獲取用戶上傳待測試軟件包以及自定義測試信息,其中,測試信息為對待測試軟件包進行測試所需要使用的用戶自定義信息;
第一分發(fā)模塊46,根據(jù)自定義測試信息及與軟件包對應(yīng)的第一測試腳本生成測試任務(wù)并向測試機進行分發(fā),其中,測試任務(wù)用于在測試機連接的不同測試設(shè)備上測試對應(yīng)的軟件包;
展示模塊48,用于接收來自測試機的測試結(jié)果并通過網(wǎng)頁展示測試報告,其中,測試報告是根據(jù)測試結(jié)果生成的。
對應(yīng)于上述圖3中的步驟,在本實施例中還提供了一種測試裝置,圖5是根據(jù)本發(fā)明實施例的另一測試裝置的結(jié)構(gòu)框圖,如圖5所示,該裝置可以包括如下模塊:
第二獲取模塊52,用于獲取來自服務(wù)器的至少一個待測試軟件包以及測試信息,其中,測試信息為對至少一個待測試軟件包中的每個待測試包進行測試所需要使用的用戶自定義信息;
第二分發(fā)模塊54,根據(jù)自定義測試信息及與軟件包對應(yīng)的第一測試腳本生成測試任務(wù)并向測試機進行分發(fā),其中,測試任務(wù)用于在測試機連接的不同測試設(shè)備上測試對應(yīng)的軟件包;
發(fā)送模塊56,用于接收來自至少一個測試設(shè)備的測試結(jié)果并發(fā)送給服務(wù)器。
通過上述實施例解決了人力時間消耗較大的技術(shù)問題,提高了測試效率。下面以游戲測試為例進行說明。
在本可選實施例中提供了一種渠道自動化測試的技術(shù)并設(shè)計了一個渠道自動化測試的系統(tǒng)。該渠道自動化測試系統(tǒng)可以基于該渠道自動化測試技術(shù)對用戶上傳的游戲渠道包進行安裝、啟動、渠道登錄、渠道支付的自動化測試,并形成詳細的報告呈現(xiàn)給用戶。
圖6是根據(jù)本發(fā)明實施例的可選的游戲測試示意圖,如圖6所示,可以將待測游戲渠道包自動分配到不同地待測設(shè)備上,自動完成游戲渠道包的安裝、啟動、渠道登錄、渠道支付測試流程,并自動生成詳細完整的渠道測試報告。
在本實施例中,可以利用服務(wù)器(或稱為web平臺)對待測的渠道包、測試設(shè)備、測試腳本、測試結(jié)果進行控制和管理。用戶(測試人員)通過訪問web平臺,上傳待測的游戲渠道包,用戶自定義的腳本以及渠道測試參數(shù)(渠道登錄用戶名、密碼、支付密碼等);web服務(wù)端自動將待測任務(wù)分發(fā)到各個測試設(shè)備上,并開啟自動測試流程。
web服務(wù)端從各個測試機獲取現(xiàn)有的所有在線測試設(shè)備,維護任務(wù)分發(fā)隊列,將渠道測試任務(wù)分發(fā)到各個測試機所對應(yīng)的測試設(shè)備上面。服務(wù)端為每個測試機上接入的測試設(shè)備(例如,手機)維護一個任務(wù)隊列。如果用戶指定測試設(shè)備,則將測試任務(wù)分發(fā)至相應(yīng)的測試設(shè)備;如果用戶沒有指定測試設(shè)備,則將任務(wù)分發(fā)至測試任務(wù)最小的測試設(shè)備。
測試完成后,web服務(wù)端從測試設(shè)備獲取測試數(shù)據(jù),生成測試報告并web展示。一方面,測試報告包含了待測設(shè)備的詳細信息和所有渠道在相應(yīng)測試設(shè)備上的測試統(tǒng)計結(jié)果,包括安裝統(tǒng)計信息(成功、失敗)、啟動統(tǒng)計信息(成功、失敗)、渠道登錄統(tǒng)計信息(渠道登錄是否成功、失敗的渠道和對應(yīng)的機型)、渠道支付統(tǒng)計信息、卸載統(tǒng)計信息;另一方面,測試報告還包含了每一個測試任務(wù)(一個渠道包在一個測試設(shè)備上的執(zhí)行過程)的詳細執(zhí)行信息:平臺既提供了任務(wù)執(zhí)行的LOG供用戶查看,同時提供了執(zhí)行過程中的截圖供用戶查看執(zhí)行過程及相應(yīng)畫面表現(xiàn)。對用戶而言,只需上傳待測的游戲渠道包、渠道測試參數(shù)、以及自定義的測試腳本,無需關(guān)心測試設(shè)備的選擇和具體測試流程。
下面對本實施例中涉及到的技術(shù)方案按照步驟進行說明。
步驟一,上傳待測游戲渠道包、測試參數(shù)(渠道登錄用戶名、密碼、支付密碼等)以及用戶自定義的測試腳本。上傳待測游戲渠道包時需標定渠道名稱(渠道名稱列表由web平臺提供,用戶選擇即可),測試參數(shù)按照平臺規(guī)定的格式填寫即可。自定義測試腳本中主要完成游戲交互彈框的點擊操作以及調(diào)用web平臺的渠道登錄測試接口。
步驟二,渠道測試任務(wù)創(chuàng)建與分發(fā)。根據(jù)步驟一中用戶上傳的游戲渠道包、測試參數(shù)和測試腳本,渠道測試web平臺從各個測試機獲取現(xiàn)有的所有在線測試設(shè)備,維護任務(wù)分發(fā)隊列,將渠道測試任務(wù)分發(fā)到各個測試機所對應(yīng)的測試設(shè)備上面。圖7是根據(jù)本發(fā)明實施例的任務(wù)分發(fā)的示意圖,如圖7所示,服務(wù)端為每個測試機上接入的測試設(shè)備(例如,手機)維護一個任務(wù)隊列。如果用戶指定測試設(shè)備,則將測試任務(wù)分發(fā)至相應(yīng)的測試設(shè)備;如果用戶沒有指定測試設(shè)備,則將任務(wù)分發(fā)至測試任務(wù)最小的測試設(shè)備。而每臺測試機會為其所連接的測試設(shè)備設(shè)置任務(wù)超時時間,并維護設(shè)備狀態(tài)(空閑,任務(wù)中)。
步驟三渠道測試任務(wù)的執(zhí)行。測試機在接收到來自渠道測試web平臺的測試任務(wù)后,開始執(zhí)行渠道測試流程。圖8是根據(jù)本發(fā)明實施例的執(zhí)行測試任務(wù)的示意圖,如圖8所示,首先其從測試設(shè)備獲取設(shè)備的參數(shù),包括品牌、內(nèi)存、cpu、系統(tǒng)版本等信息(其會在測試報告中顯示);然后,逐步完成包體的解析、包體安裝、包體的啟動;當有系統(tǒng)彈框時,平臺根據(jù)用戶自定義腳本點擊彈框,進入到渠道登錄界面;通過平臺提供的渠道自動化登錄技術(shù),平臺會自動識別渠道登錄界面的用戶名輸入框和密碼輸入框,然后自動填充用戶提供的用戶名和密碼,最后點擊相關(guān)按鈕完成渠道登錄;繼而,根據(jù)用戶自定義腳本完成選服等操作,登錄到游戲服務(wù)器;通過平臺提供的渠道自動化測試技術(shù),完成渠道支付測試,具體實現(xiàn)原理為:利用Automator測試框架,對于Android原生的UI,根據(jù)控件類別(Class Name),資源ID(Resource ID)以及控件文字(Text)來實現(xiàn)控件的識別和點擊,對于非Android原生的UI,根據(jù)模板匹配和SIFT匹配兩種圖像匹配方法來完成控件的識別和點擊,從而可以自動完成渠道支付的流程;最后,卸載包體,將上述測試結(jié)果從測試機回發(fā)至web平臺服務(wù)器。
步驟四,渠道測試結(jié)果報告生成。Web平臺在收到步驟三回發(fā)的測試結(jié)果后,會對測試結(jié)果進行統(tǒng)計處理,形成完整的測試報告。用戶通過Web前端即可瀏覽相應(yīng)的測試報告。一方面,測試報告包含了待測設(shè)備的詳細信息和所有渠道在相應(yīng)測試設(shè)備上的測試統(tǒng)計結(jié)果,包括安裝統(tǒng)計信息(成功、失敗)、啟動統(tǒng)計信息(成功、失敗)、渠道登錄統(tǒng)計信息(渠道登錄是否成功、失敗的渠道和對應(yīng)的機型)、渠道支付統(tǒng)計信息、卸載統(tǒng)計信息;另一方面,測試報告還包含了每一個測試任務(wù)(一個渠道包在一個測試設(shè)備上的執(zhí)行過程)的詳細執(zhí)行信息:平臺既提供了任務(wù)執(zhí)行的LOG供用戶查看,同時提供了執(zhí)行過程中的截圖供用戶查看執(zhí)行過程及相應(yīng)畫面表現(xiàn)。
利用步驟二,可以方便快捷地將渠道測試任務(wù)分發(fā)至不同型號的測試設(shè)備上,以達到渠道兼容性測試的目的。
利用步驟三,可以自動化地進行渠道的安裝、啟動、登錄、支付、卸載測試,脫離人工,可以節(jié)省大量的人力成本和時間成本,提高測試效率。
利用步驟四,可以給用戶呈現(xiàn)完整且直觀的測試報告。用戶僅僅需要查看測試報告即可知道渠道測試的整體測試概況,同時又可以查看失敗渠道測試任務(wù)的具體失敗詳情,可協(xié)助開發(fā)者及時快速地定位bug。
在本實施例中,整個平臺可以采用Server-Agent的分布式架構(gòu)。圖9是根據(jù)本發(fā)明實施例的Server-Agent的分布式架構(gòu)示意圖,如圖9所示,采用分布式架構(gòu)有利于橫向擴展,當需要接入更多的測試設(shè)備時,可以通過擴展Agent節(jié)點來完成這一功能。用戶在Web平臺上創(chuàng)建渠道測試任務(wù)后,Web平臺通過http協(xié)議將任務(wù)分發(fā)至Agent節(jié)點,Agent節(jié)點再通過任務(wù)執(zhí)行模塊調(diào)用各個測試設(shè)備執(zhí)行渠道測試任務(wù)。任務(wù)完成后,Agent節(jié)點通過http協(xié)議將測試結(jié)果回發(fā)至Server。Server通過報告生成模塊生成最終供用戶查看的報告。整個平臺的核心模塊包括任務(wù)分發(fā)模塊、任務(wù)執(zhí)行模塊、設(shè)備管理模塊、數(shù)據(jù)回發(fā)模塊、報告生成模塊。
各模塊實現(xiàn)方式可以如下:
任務(wù)分發(fā)模塊:該模塊主要用于將用戶創(chuàng)建的渠道測試任務(wù)分發(fā)到各個Agent,其基本原理見步驟二,渠道測試任務(wù)創(chuàng)建與分發(fā)。該模塊定時從各Agent獲取各個測試設(shè)備的狀態(tài)(空閑、忙碌)并為每個測試設(shè)備維護一個任務(wù)隊列。其定時從Server的數(shù)據(jù)庫中讀取任務(wù)并通過http協(xié)議將任務(wù)分發(fā)至各個Agent。即Server端實時獲取Agent上所接入的測試設(shè)備狀態(tài)并為每個測試設(shè)備維護一個任務(wù)隊列,將用戶創(chuàng)建的渠道測試任務(wù)按要求分發(fā)至各Agent。
任務(wù)執(zhí)行模塊:該模塊主要用于接收來自Server的調(diào)度任務(wù)并執(zhí)行渠道測試任務(wù)。同一個Agent可能并行執(zhí)行多個渠道測試任務(wù),該模塊的核心功能是彈框點擊、渠道登錄測試和渠道支付測試。三者的具體實現(xiàn)原理為:對于Android原生的UI,通過UI控件的控件類別(Class Name)、資源ID(Resource ID)、以及控件上的文字(Text)三個屬性的正則匹配來尋找UI的位置,從而完成相應(yīng)的點擊、滑動操作。對于游戲內(nèi)非Android原生的UI,通過圖像匹配的方式來獲取UI的位置,從而完成相應(yīng)的點擊、滑動操作。圖像匹配采用模板卷積匹配和SIFT算法兩種方式。
設(shè)備管理模塊:該模塊主要是各個Agent用來管理與其連接的所有測試設(shè)備。Agent通過adb來與連接設(shè)備進行通信,獲取在線設(shè)備參數(shù)、設(shè)備串號,同時維護設(shè)備狀態(tài):當設(shè)備接收測試任務(wù)時,設(shè)備狀態(tài)置為忙碌;當設(shè)備完成測試任務(wù)時,設(shè)備狀態(tài)置為空閑;當設(shè)備測試任務(wù)超時的時候,設(shè)備狀態(tài)置為空閑;當已連接設(shè)備斷開時,設(shè)備狀態(tài)置為斷開。
數(shù)據(jù)回發(fā)模塊:該模塊主要將各Agent上的渠道測試結(jié)果采用http協(xié)議回發(fā)至Server并存入數(shù)據(jù)庫。回發(fā)的渠道測試結(jié)果包括設(shè)備基本信息、測試時間信息、安裝、啟動、渠道登錄、渠道支付信息。同時還包括整個測試任務(wù)執(zhí)行過程中所產(chǎn)生的LOG文件以及測試設(shè)備截圖。
報告生成模塊:該模塊主要將回發(fā)至Server的測試結(jié)果信息進行統(tǒng)計處理,形成測試報告,通過web前端展示。利用web前端技術(shù)如jQuery,ajax,AngularJS以及echart等開源插件將測試結(jié)果以圖形化的形式展現(xiàn)出來。用戶既可以看到各渠道在各測試設(shè)備上的測試概況,同時也可以查看每個測試任務(wù)的詳細數(shù)據(jù),包括:測試任務(wù)的執(zhí)行日志,測試任務(wù)每一步的執(zhí)行情況及相應(yīng)的截圖。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
在本發(fā)明的上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實現(xiàn)。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可為個人計算機、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。