本發明涉及性能測試技術領域,具體而言,涉及一種游戲性能的測試方法、測試裝置、可讀介質和電子設備。
背景技術:
在mmo(massivemultiplayeronline,大型多人在線)游戲測試中,經常需要模擬玩家的行為來對服務器的性能進行測試,以衡量服務器的負載,以及檢查服務器在多人環境下可能出現的bug,保證服務器的穩定運行。
在相關技術中,玩家行為的模擬測試方案主要采用如下兩種:一種是有限狀態機(finitestatemachine),另一種是行為樹(behaviortree)。但是這兩種方式在測試中的應用效果并不好,這是由于這兩種方式是沿用了游戲中的怪物ai(artificialintelligence,人工智能)實現,游戲中的ai側重的是怪物的行為表現更加細膩,更加智能,而測試中的ai更加偏重于增強壓力、增強隨機性和增加覆蓋面來暴露問題。除此之外,上述的兩種測試方案還存在如下問題:
對于有限狀態機的方案,當狀態較多之后,難以組織和理清狀態之間的邏輯;并且有限狀態機構成的行為ai難以復用;同時有限狀態機的方案維護較為困難,每個環節出錯都會導致狀態錯誤。
對于行為樹的方案,由于行為樹ai邏輯復雜,且邏輯與平時的思考邏輯不一致,導致分析困難;并且行為樹ai沒有模塊化,復用性較差;同時,編寫和調試行為樹的時間較長,耗費大量的時間和精力;此外,行為樹ai的邏輯消耗比較大,不適合作為測試機器人ai。
需要說明的是,在上述背景技術部分公開的信息僅用于加強對本發明的背景的理解,因此可以包括不構成對本領域普通技術人員已知的現有技術的信息。
技術實現要素:
本發明的目的在于提供一種游戲性能的測試方法、測試裝置、可讀介質和電子設備,進而至少在一定程度上克服由于相關技術的限制和缺陷而導致的一個或者多個問題。
本發明的其他特性和優點將通過下面的詳細描述變得顯然,或部分地通過本發明的實踐而習得。
根據本發明的第一方面,提供了一種游戲性能的測試方法,包括:獲取配置的多種動作執行模式;從所述多種動作執行模式中選擇與待測試的游戲行為相匹配的至少一種動作執行模式;根據所述待測試的游戲行為和所述至少一種動作執行模式,生成測試用例;基于所述測試用例對游戲的性能進行測試。
在本發明的一些實施例中,基于前述方案,根據所述待測試的游戲行為和所述至少一種動作執行模式,生成測試用例的步驟,包括:將所述待測試的游戲行為所關聯的動作添加至所述至少一種動作執行模式中,以生成所述測試用例。
在本發明的一些實施例中,基于前述方案,所述多種動作執行模式包括第一動作執行模式,所述第一動作執行模式的執行過程包括:執行設定的動作;若所述設定的動作執行失敗,則重復執行所述設定的動作,直到所述設定的動作執行成功或達到設定的結束條件;若所述設定的動作執行成功,則確定所述第一動作執行模式執行完成。
在本發明的一些實施例中,基于前述方案,所述多種動作執行模式包括第二動作執行模式,所述第二動作執行模式的執行過程包括:按照設定的順序依次執行設定的多個動作,其中,執行所述多個動作中的任一動作的過程包括:執行所述任一動作;若所述任一動作執行失敗,則繼續執行所述任一動作,直到所述任一動作執行成功或達到設定的結束條件。
在本發明的一些實施例中,基于前述方案,所述多種動作執行模式包括第三動作執行模式,所述第三動作執行模式的執行過程包括:按照固定的時間間隔重復執行設定的動作。
在本發明的一些實施例中,基于前述方案,所述多種動作執行模式包括第四動作執行模式,所述第四動作執行模式的執行過程包括:按照隨機產生的時間間隔重復執行設定的動作。
在本發明的一些實施例中,基于前述方案,在生成所述測試用例時,還包括:根據所述待測試的游戲行為,設置所述至少一種動作執行模式之間的執行邏輯。
根據本發明的第二方面,提供了一種游戲性能的測試裝置,包括:獲取單元,用于獲取配置的多種動作執行模式;選擇單元,用于從所述多種動作執行模式中選擇與待測試的游戲行為相匹配的至少一種動作執行模式;生成單元,用于根據所述待測試的游戲行為和所述至少一種動作執行模式,生成測試用例;處理單元,用于基于所述測試用例對游戲的性能進行測試。
根據本發明的第三方面,提供了一種可讀介質,其上存儲有程序,該程序被處理器執行時實現如上述第一方面所述的游戲性能的測試方法。
根據本發明的第四方面,提供了一種電子設備,包括:處理器和存儲器,所述存儲器存儲有可執行指令,所述處理器用于調用所述存儲器存儲的可執行指令執行如上述第一方面所述的游戲性能的測試方法。
在本發明的一些實施例所提供的技術方案中,通過配置多種動作執行模式,以從中選擇與待測試的游戲行為相匹配的至少一種動作執行模式,并根據待測試的游戲行為和選擇出的至少一種動作執行模式,生成測試用例,進而基于生成的測試用例對游戲的性能進行測試,使得在對游戲性能進行測試時,能夠基于可復用的多種動作執行模式來生成測試用例,進而能夠降低測試用例的編寫難度,同時能夠快速生成測試用例,提高了性能測試的效率。
此外,本發明實施例的技術方案也能夠減少對游戲性能測試時的邏輯消耗,減少了對系統的軟硬件資源的消耗,進而能夠在游戲性能測試時提高測試的模擬量,在一定程度上提高了測試質量。
應當理解的是,以上的一般描述和后文的細節描述僅是示例性和解釋性的,并不能限制本發明。
附圖說明
此處的附圖被并入說明書中并構成本說明書的一部分,示出了符合本發明的實施例,并與說明書一起用于解釋本發明的原理。顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。在附圖中:
圖1示意性示出了根據本發明的實施例的游戲性能的測試方法的流程圖;
圖2示意性示出了根據本發明的實施例的第一動作執行模式的執行過程圖;
圖3示意性示出了根據本發明的實施例的第二動作執行模式的執行過程圖;
圖4示意性示出了根據本發明的實施例的第三動作執行模式的執行過程圖;
圖5示意性示出了根據本發明的實施例的第四動作執行模式的執行過程圖;
圖6示出了根據本發明的實施例的通過單次動作執行模式添加動作的示意圖;
圖7示出了根據本發明的實施例的通過順序動作執行模式添加動作的示意圖;
圖8示出了根據本發明的實施例的通過重復動作執行模式和隨機動作執行模式添加動作的示意圖;
圖9示出了根據本發明的實施例的通過多種動作執行模式構成測試方案的示意圖;
圖10示意性示出了根據本發明的一個實施例的游戲性能的測試裝置的框圖。
具體實施方式
現在將參考附圖更全面地描述示例實施方式。然而,示例實施方式能夠以多種形式實施,且不應被理解為限于在此闡述的范例;相反,提供這些實施方式使得本發明將更加全面和完整,并將示例實施方式的構思全面地傳達給本領域的技術人員。
此外,所描述的特征、結構或特性可以以任何合適的方式結合在一個或更多實施例中。在下面的描述中,提供許多具體細節從而給出對本發明的實施例的充分理解。然而,本領域技術人員將意識到,可以實踐本發明的技術方案而沒有特定細節中的一個或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細示出或描述公知方法、裝置、實現或者操作以避免模糊本發明的各方面。
附圖中所示的方框圖僅僅是功能實體,不一定必須與物理上獨立的實體相對應。即,可以采用軟件形式來實現這些功能實體,或在一個或多個硬件模塊或集成電路中實現這些功能實體,或在不同網絡和/或處理器裝置和/或微控制器裝置中實現這些功能實體。
附圖中所示的流程圖僅是示例性說明,不是必須包括所有的內容和操作/步驟,也不是必須按所描述的順序執行。例如,有的操作/步驟還可以分解,而有的操作/步驟可以合并或部分合并,因此實際執行的順序有可能根據實際情況改變。
在本發明實施例的一種游戲性能的測試方案中,可以通過有限狀態機的方案來進行測試。有限狀態機用于表示有限多個狀態以及在這些狀態之間轉移和動作的數學模型。一般情況下,有限狀態機主要分為以下幾個部分:
1、狀態:主要用于存儲過去的信息,并描述現在的狀態;
2、轉移條件:用于描述狀態間相互轉移的條件;
3、進入動作:用于表示在進入狀態時的動作;
4、退出動作:用于表示在退出狀態時的動作;
5、轉移動作:用于表示在進行狀態轉移的動作。
有限狀態機是很多游戲ai算法的基礎,可以為更深奧的游戲ai算法提供支持,有限狀態機編程快速簡單,易于圖形化表示邏輯,并且易于調試。
在本發明實施例的另一種游戲性能的測試方案中,可以通過行為樹的方案來進行測試。
行為樹就是一棵節點層次分明的樹,其是以樹的層次邏輯來表示執行控制。從樹延伸出的葉子節點執行控制ai物體的指令,各種工具節點組成樹的分支,并控制ai指令的走向以形成一系列的指令。
其中,行為樹主要包括合成節點、修飾節點和葉子節點,以下分別進行說明:
合成節點可以有一個或多個子節點,它們處理子節點的順序可以是從第一個到最后一個,或者某些特定的合成節點的隨機順序,在某一階段會根據它的子節點的處理結果向它的父節點返回success(成功)或者failure(失敗),通常這取決于它的子節點的success或者failure。當它在處理子節點時,會向它的父節點持續發送running(運行)信息。最常用的合成節點是sequence(順序)節點,它按照順序運行每一個子節點,如果任何一個子節點返回了failure,它返回failure;如果所有子節點返回成功狀態,它才返回成功。
修飾節點同合成節點相似,可以擁有子節點,與合成節點的不同點在于,修飾節點有且只有一個子節點。修飾節點的功能就是將子節點的結果傳遞給父節點,停止子節點;或者重復執行子節點,這取決于具體的修飾節點類型。一個常用的修飾節點的用法就是inverter(反相器),它只是把子節點的結果反相,當它的子節點返回了失敗,它給它的父節點返回成功,反之亦反。
葉子節點是最底層的節點類型,不能擁有子節點。但葉子節點是最強大的節點類型,因為它在游戲中被定義和實現具體游戲或具體角色的檢測或者動作。舉例而言,一個walk節點(該walk節點為葉子節點)會讓角色行走到指定的地點,然后根據行走的結果來返回成功或者失敗。
上述介紹了在進行游戲性能測試時使用的有限狀態機的方案和行為樹的方案,以下介紹本發明實施例的另一種游戲性能的測試方案。
如圖1所示,根據本發明的實施例的游戲性能的測試方法,包括:
步驟s102,獲取配置的多種動作執行模式。
在本發明的實施例中,所述的多種動作執行模式可以根據實際的測試需求來進行配置,以下列舉幾種優選的動作執行模式:
(1)上述的多種動作執行模式包括第一動作執行模式,所述第一動作執行模式的執行過程包括:
執行設定的動作;
若所述設定的動作執行失敗,則重復執行所述設定的動作,直到所述設定的動作執行成功或達到設定的結束條件;
若所述設定的動作執行成功,則確定第一動作執行模式執行完成。
根據本發明的示例性實施例,如圖2所示,該實施例中設定的結束條件是超時,具體地,若動作執行失敗,則判斷是否超時,如果沒有超時,則等待x秒后繼續執行動作,直到動作執行成功或超時。其中,x可以為0秒。
需要說明的是,第一動作執行模式可以是單次動作執行模式。即在執行時會不斷重試直到成功或者超時(超時時間可以為無限)。這種動作可以用于對ai的環境進行初始化,或者設定ai的起始狀態,比如設置游戲中人物的等級、技能水平、金錢、經驗等等。
(2)上述的多種動作執行模式包括第二動作執行模式,所述第二動作執行模式的執行過程包括:
按照設定的順序依次執行設定的多個動作,其中,執行所述多個動作中的任一動作的過程包括:執行所述任一動作;若所述任一動作執行失敗,則繼續執行所述任一動作,直到所述任一動作執行成功或達到設定的結束條件。
根據本發明的示例性實施例,如圖3所示,該實施例中設定的結束條件是超時,若任一動作執行失敗,則判斷該動作的執行時長是否超時,如果沒有超時,則等待一定時長(可以為0)后繼續執行動作,直到動作執行成功或超時之后,再按順序執行下一動作。
需要說明的是,第二動作執行模式可以是順序動作執行模式。這種動作模式會按照順序(可以插入和刪除)依次執行動作,每個動作執行完畢后才會按照定義的時間間隔(可以為0)執行下一個動作,在動作執行時會不斷重試直到成功或者超時(超時時間可以為無限)。同時,當所有動作執行完畢后可以選擇循環執行,這個動作模式可以用于對流程化的方法進行測試處理。
(3)上述的多種動作執行模式包括第三動作執行模式,所述第三動作執行模式的執行過程包括:按照固定的時間間隔重復執行設定的動作。
根據本發明的示例性實施例,如圖4所示,在動作執行完畢之后,等待x秒(x可以為0)后重復執行動作。
需要說明的是,第三動作執行模式可以是重復動作執行模式。這種動作模式會按照定義的時間間隔不斷執行某個動作,其主要用于定時觸發一些動作,比如游戲中人物技能的釋放、操作方式的切換等等。
(4)上述的多種動作執行模式包括第四動作執行模式,所述第四動作執行模式的執行過程包括:按照隨機產生的時間間隔重復執行設定的動作。
根據本發明的示例性實施例,如圖5所示,在動作執行完畢之后,隨機等待一定時長后重復執行動作。
需要說明的是,第四動作執行模式可以是隨機動作執行模式。這種動作模式會按照定義的隨機時間范圍,產生隨機時間間隔以不斷地執行動作。可見,這種動作執行模式可以針對動作的執行引入很強的隨機性,進而能夠易于暴露游戲中的bug,這種動作執行模式可以用于測試技能的釋放、玩法的切換和怪物切換等等。
需要說明的是,本發明實施例的動作執行模式并不限于上述所列舉的四種動作執行模式,本領域技術人員在實際測試過程中,可以根據實際需要進行配置。
繼續參照圖1,所示的游戲性能的測試方法還包括:
步驟s104,從所述多種動作執行模式中選擇與待測試的游戲行為相匹配的至少一種動作執行模式。
具體來說,比如在測試參加競技比賽的場景時,需要玩家等級60級,并需要100個游戲幣,那么可以選擇上述的第一動作執行模式(即單次動作執行模式)來設置玩家等級60,并增加100游戲幣。
再比如,在測試參加競技比賽的流程時,由于整個流程包括:報名、等待匹配、進入競技場、等待競技結束、退出競技場,因此可以選擇上述的第二動作執行模式(即順序動作執行模式)。
步驟s106,根據所述待測試的游戲行為和所述至少一種動作執行模式,生成測試用例。
根據本發明的示例性實施例,步驟s106包括:將所述待測試的游戲行為所關聯的動作添加至所述至少一種動作執行模式中,以生成所述測試用例。
在本發明的一些實施例中,基于前述方案,在生成所述測試用例時,還包括:根據所述待測試的游戲行為,設置所述至少一種動作執行模式之間的執行邏輯。比如,在基于上述的第三動作執行模式進行測試的過程中,可以通過設置的執行邏輯來調用第一動作執行模式來進行輔助測試。
步驟s108,基于所述測試用例對游戲的性能進行測試。
在圖1所示的游戲性能的測試方案中,并沒有沿用游戲開發中的有限狀態機和行為樹機制,而是設計了新的測試方案,使得測試方案中的測試用例的邏輯更簡單,調試更方便,復用性更強,使用成本更低。
具體來說,上述的游戲性能測試方案是通過預定動作執行模式的組合來模擬玩家行為,進而實現對游戲服務器的性能、壓力,以及對游戲的各個玩法的綜合測試。本發明實施例的測試方案容易引發和暴露游戲中的bug,從而達到提高測試質量的目的。
在本發明實施例的技術方案中,當進行玩家行為模擬測試時,具體由如下步驟完成:
首先是測試的初始化,所有的測試都需要制造測試環境,或者說測試的起點,當需要對測試點進行測試時,這個測試點并不一定是可以直接執行的,往往測試點都是有執行前提的,這個執行前提多種多樣。比如,游戲設定了只有玩家等級達到10級以后才能進行玩家之間的交易,那么在測試玩家交易時,就需要將玩家的等級設置在十級以上,然后制造交易物品,增加交易所需的金幣,才能進行交易測試,這一步驟可以通過上述的單次動作執行模式來完成。
然后是進行測試的流程控制。當進行玩家模擬測試時,往往需要模擬玩家進行某項玩法的完整流程,因此在測試時,需要對玩家進行流程控制,以保證測試能順利走完也能順利重復。比如在進行副本玩法測試的時候,需要玩家組隊,然后申請副本,然后通關副本a點再通關b點直到通關成功,最后退出副本重新申請。這個流程的控制可以使用上述的順序動作執行模式來完成。
接下來是模擬行為控制。進行多玩家模擬測試的時候,為了盡量遍歷到多種組合,需要讓玩家具有不斷重復的或隨機重復的行為,比如玩家按一定的頻率進行世界聊天,而世界聊天是會在整個服務器進行廣播的,這個可以用來測試服務器的消息通訊能力,同時玩家可以進行隨機技能釋放,技能釋放信息是在副本內廣播的,副本廣播是服務器的部分信息廣播,這樣就可以測試同時在整個服務器的消息廣播和部分消息廣播時的服務器壓力、負載和表現情況,然后可以控制玩家隨機地進行一些意外操作,以檢測服務器在玩家進行一些非法操作時是否能夠正常工作。這個流程可以用上述的重復動作執行模式和隨機動作執行模式,以及順序動作執行模式來完成。
最后是測試結束。在測試結束時需要進行測試結算,所有模擬玩家需要隨機或定時地停止行為狀態,并等待服務器進行結算,然后統計結算結果,觀察服務器是否有錯誤或者模擬玩家身上是否發生了異常的狀態,并輸出測試結果。這個流程可以使用上述的順序動作執行模式來進行順序測試狀態結算清點控制。
需要說明的是,本發明實施例中的多種動作執行模式是并行執行的,如果某一動作執行模式沒有對其他動作執行模式進行調用(即不同動作執行模式之間不存在調用邏輯調用),則這多種動作執行模式之間是獨立的,這種獨立性也帶來了邏輯的簡化和設計的方便。在進行實際的模擬測試時,只需要往這多種動作模式中增添刪改動作就可以實現一個完整的玩家行為模擬。此外,在動作執行的過程中,也可以對其他動作模式進行操作從而實現更高級的動作行為,比如在通過一個動作執行模式進行模擬測試的過程中,可以調用另一個動作執行模式來進行輔助測試。
以下以具體的測試場景對本發明實施例的技術方案進行詳細說明:
在本發明的實施例中,如要進行一個玩法測試時,首先需要根據這個玩法的需求門檻對模擬的機器人進行初始化。如圖6所示,比如參加競技比賽的時候,需要玩家等級60級,且需要100個游戲幣,那么測試用例可以通過單次動作執行模式設置玩家等級60,并增加100游戲幣。
接下來,需要進行游戲流程的模擬,由于參加競技比賽的游戲流程是:報名、等待匹配、進入競技場、等待競技結束、退出競技場,因此可以在順序動作執行模式中依次添加這些動作,具體如圖7所示。
再接下進行戰斗行為的模擬,玩家的行為模擬比較簡單,只需要跳到敵人身邊,進行技能釋放即可。技能分為兩種,一種是連招技能,需要固定時間內釋放,可以采用重復動作執行模式;另一種是帶冷卻的技能,進行隨機時間釋放,可以采用隨機動作執行模式,具體如圖8所示。
如此能夠快速地構成一個競技比賽的測試方案,具體如圖9所示,進而能夠進行高效率的游戲性能測試。
圖10示意性示出了根據本發明的一個實施例的游戲性能的測試裝置的框圖。
參照圖10,根據本發明的一個實施例的游戲性能的測試裝置1000,包括:獲取單元1002、選擇單元1004、生成單元1006和處理單元1008。
具體地,獲取單元1002用于獲取配置的多種動作執行模式;選擇單元1004用于從所述多種動作執行模式中選擇與待測試的游戲行為相匹配的至少一種動作執行模式;生成單元1006用于根據所述待測試的游戲行為和所述至少一種動作執行模式,生成測試用例;處理單元1008用于基于所述測試用例對游戲的性能進行測試。
需要說明的是,上述游戲性能的測試裝置中各模塊/單元的具體細節已經在對應的游戲性能的測試方法中進行了詳細的描述,因此此處不再贅述。
此外,本發明的實施方式還提供一種電子設備,可以包括:處理器和存儲器,其中,所述存儲器存儲有可執行指令,所述處理器用于調用所述存儲器存儲的可執行指令執行如本發明上述實施例中所述的游戲性能的測試方法。
在示例性實施例中,還提供了一種包括指令的非臨時性計算機可讀存儲介質,例如包括指令的存儲器,上述指令可由電子設備的處理器執行以完成在示例性實施例中的上述技術方案。例如,所述非臨時性計算機可讀存儲介質可以是rom、隨機存取存儲器(ram)、cd-rom、磁帶、軟盤和光數據存儲設備等。
本發明上述實施例的技術方案能夠實現如下的技術效果:
1、本發明的實施例在進行游戲性能測試時,游戲行為的模擬方案是由多種定義明確的動作模式組成,邏輯清晰,編寫簡單方便。
2、本發明實施例中的動作模式相互之間都是獨立的,調試方便,開發成本較低。
3、本發明實施例中的動作模式包括隨機動作執行模式,通過這種動作模式進行測試的隨機性較強,能更好地引發和暴露游戲問題。
4、本發明實施例中的游戲性能測試在模擬玩家的游戲行為時,簡化了ai的邏輯,開發門檻低,更方便測試人員設計測試用例。
5、本發明實施例中的動作模式可以模擬定時行為,執行效率高,ai上的消耗更低。
應當注意,盡管在上文詳細描述中提及了用于動作執行的設備的若干模塊或者單元,但是這種劃分并非強制性的。實際上,根據本發明的實施方式,上文描述的兩個或更多模塊或者單元的特征和功能可以在一個模塊或者單元中具體化。反之,上文描述的一個模塊或者單元的特征和功能可以進一步劃分為由多個模塊或者單元來具體化。
通過以上的實施方式的描述,本領域的技術人員易于理解,這里描述的示例實施方式可以通過軟件實現,也可以通過軟件結合必要的硬件的方式來實現。因此,根據本發明實施方式的技術方案可以以軟件產品的形式體現出來,該軟件產品可以存儲在一個非易失性存儲介質(可以是cd-rom,u盤,移動硬盤等)中或網絡上,包括若干指令以使得一臺計算設備(可以是個人計算機、服務器、觸控終端、或者網絡設備等)執行根據本發明實施方式的方法。
本領域技術人員在考慮說明書及實踐這里公開的發明后,將容易想到本發明的其它實施方案。本申請旨在涵蓋本發明的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本發明的一般性原理并包括本發明未公開的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本發明的真正范圍和精神由下面的權利要求指出。
應當理解的是,本發明并不局限于上面已經描述并在附圖中示出的精確結構,并且可以在不脫離其范圍進行各種修改和改變。本發明的范圍僅由所附的權利要求來限制。