遊戲測試過程

遊戲測試過程<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

遊戲測試起因

?????? 近兩年,IT業一直經歷着寒冬,但是遊戲軟件業卻呈現出了勃勃生機。網絡遊戲僅在中國遊戲市場出現不過兩年,到今年1月,正式投入商業運營的遊戲數目已超過100款,但衆所周知,都是國外的(主要是韓國的遊戲)統治着國內大部分的市場,國內遊戲軟件想要突圍而出,主要從二個方面,一是可玩性,由於中國有上下五千年的傳統文化,博大精深,是我們得天獨厚的優勢,二是遊戲的質量,遊戲測試作爲遊戲開發中質量保證的最重要的環節,在遊戲設計與開發的過程中發揮着越來越重要的作用。

遊戲測試與軟件測試的差異

?????? 遊戲測試作爲軟件測試的一部分,它具備了軟件測試所有的一切共同的特性:

l???? 測試的目的是發現軟件中存在的缺陷。

l???? 測試都是需要測試人員按照產品行爲描述來實施。產品行爲描述可以是書面的規格說明書,需求文檔,產品文件,或是用戶手冊,源代碼,或是工作的可執行程序。

l???? 每一種測試都需要產品運行於真實的或是模擬環境之下。

l???? 每一種測試都要求以系統方法展示產品功能,以證明測試結果是否有效,以及發現其中出錯的原因,從而讓程序人員進行改進。

總而言之,測試就是發現問題並進行改進,從而提升軟件產品的質量。遊戲測試也具備了以上的所有特性,不過由於遊戲的特殊性,所以遊戲測試則主要分爲兩部分組成,一是傳統的軟件測試,二遊戲本身的測試,由於遊戲特別是網絡遊戲,它相當於網上的虛擬世界,是人類社會的另一種方式的體現,所以也包含了人類社會的一部分特性,同時它又是遊戲所以還涉及到娛樂性,可玩性等獨有特性,所以測試的面相當的廣。 我們稱之爲遊戲世界測試,主要有以下幾個特性:

l???????????? 遊戲情節的測試,主要指遊戲世界中的任務系統的組成,有人也稱爲遊戲世界的事件驅動,我喜歡稱爲遊戲情感世界的測試。

l???????????? 遊戲世界的平衡測試,主要表現在經濟平衡,能力平衡(包含技能,屬性等等),保證遊戲世界競爭公平。

l???????????? 遊戲文化的測試,比如整個遊戲世界的風格,是中國文化主導,還是日韓風格等等,大到遊戲整體,小到NPC(遊戲世界人物)對話,比如一個書生,他的對話就必需斯文,不可以用江湖語言J

遊戲測試概述

?????? 很多人有這樣一個關點:“就是在軟件開發完畢後,再進行測試。”殊不知,這種關點是有悖於軟件開發的生命週期的,軟件缺陷的發現必須是越早越好,這樣纔可以有效的規避風險,而在“最後進行測試”的測試觀念的指導下測試工作必將會產生很多問題,這種觀念的錯誤在於:生命週期中的“測試階段”表明在該階段測試工作是主要的工作,而不是說,測試工作只發生在“測試階段”。通常,到了測試階段,測試的主要任務是運行測試,形成測試報告。而想要提高遊戲的質量,則必需要做到測試的早期介入,諸如測試計劃,測試用例的確定以及測試代碼的編寫等等都是要在更早的階段進行。如果你把測試完全放在最後階段,就錯過了發現構架設計和遊戲邏輯設計中存在嚴重問題的最好時機,到那時,要修復這些缺陷將很不方便,因爲缺陷已經擴散到系統中去了,所以這樣的錯誤將很難尋找與修復,代價更高。

?????? 要了解如何測試遊戲必需瞭解如何做遊戲,瞭解它的開發過程,才能真正的測好遊戲。遊戲要成功,其基本的必要條件有三。分別爲Vision(設計)technology(技術)Process(過程)。三個條件,缺一不可如圖所示:

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

Vision

Technology

Process

<?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" />

?

?

?

圖:遊戲開發三大基石

l???? Vision則是對遊戲還沒有實現的總體上的把握,前瞻性的理解與策略的考量。

l???? Technology:有了vision,如果沒有技術的話,則各種美妙的想法只能停留在虛無縹緲的階段,通過技術來實現Vision

l???? Process:有了Vision作爲指導,有了技術作爲保證,也不一定能夠把好的想法轉換成高質量的遊戲。要創造高品質的遊戲,尚缺重要的一環,即過程,製造遊戲是一個非常是一個長時間的動態過程。遊戲產品的質量則是要靠動態過程的動態質量來進行保證。過程由很多複雜的相互牽制的環節與部件組成,如果任意的環節或者是部件出了問題都會對最終的產品形成質量上的影響。因此對這個動態的過程,一定要有規劃與控制,以保證按部就班,按質按時完成工作。

遊戲測試與開發過程的關係

CMMSoftware Capability Maturity Model)軟件成熟模型,大家都比較熟悉了,但在實施的過程中卻存在這樣那樣的問題,對於遊戲開發就更沒有一個固定的路可以講了,我們的團隊是一個長期的遊戲開發團隊,對遊戲開發有着很深的認識,我們認爲遊戲的Process(過程)實際上也是軟件過程,不過是特殊的遊戲軟件開發過程,各個生命週期還是相通的。所以我們總結一套以測試作爲質量驅動的、屬於自己的開發過程。下圖是遊戲的迭代式開發過:

?

?

?

圖:遊戲迭代式開發與測試

由於網絡遊戲的生命週期也是34年,所以採用迭代式的開發過程,既可以適應網絡遊戲本身這種長週期的開發,又可以利用RUP的迭代式開發的優點與CMM的里程碑控制,從而達到對遊戲產品的全生命週期的保證。

在遊戲開發過程中,通用軟件的需求分析階段被策劃所代替,但起的作用是一樣的,明確遊戲的設計目標(包括風格,遊戲玩家羣),遊戲世界的組成,爲後期的程序設計,美工設計,測試提出的明確的要求。由於開發是一個階段的過程,所以測試與開發的結合就比較容易,從圖上我們可以看到測試的工作與遊戲的開發是同步進行的,每一個開發階段中測試都進行了參與,能夠深入的瞭解到系統的整體與大部分的技術細節,從而從很大程度上提高了測試人員對錯誤問題判斷的準確性,並且可以有效的保證重要遊戲系統的穩定。

遊戲策劃與測試計劃

?????? 測試過程不可能在真空中進行。如果測試人員不瞭解遊戲是由那幾個部分組成的,那麼執行測試就非常的困難,同時測試計劃可以明確測試的目標,需要什麼資源,進度的安排,通過測試計劃,既可以讓測試人員瞭解此次遊戲測試中那些是測試重點,又可以與產品開發小組進行交流。在企業開發中,測試計劃書來源於需求說明文檔,同樣在遊戲開發過程中,測試計劃的來源則是策劃書。策劃書包含了遊戲定位,風格,故事情節,要求的配製等等。在策劃評審中我們的高級測試人員可以參與進來,得到詳細的遊戲策劃書,從裏面瞭解到遊戲的組成,可玩性,平衡(經濟與能力),與形式(單機版還是網絡遊戲),而我們測試在這一階段主要的事情就是通過策劃書來制定詳細的測試計劃,主要分兩個方面一是遊戲程序本身的測試計劃,比如任務系統,聊天,組隊,地圖等等由程序來實現的功能測試計劃,二是遊戲可玩性有測試計劃,比如經濟平衡標準是否達到要求,各個門派技能平衡測試參數與方法,遊戲風格的測試,三是關於性能測試的計劃,比如客戶端的要求,網絡版的對服務器的性能要求。同時測試計劃書中還寫明瞭基本的測試方法,要設計的自動化工具的需求,爲後期的測試打下良好的基礎。同時由於測試人員參與到策劃評審,資深的遊戲測試人員與產品經理由於對遊戲也有很深入的瞭解,會對策劃提出自己的看法,包含可玩性,用戶羣,性能要求等等並形成對產品的風險評估分析報告,但這份報告不同於策劃部門自己的風險分析報告,主要從旁觀者的角度對遊戲本身的品質作充分的論證,從而更有效的對策劃起到控制的作用。

?

遊戲設計與測試

?????? 設計階段是做測試案例設計的最好時機。很多組織要麼根本不做測試計劃和測試設計,要麼在即將開始執行測試之前才飛快地完成測試計劃和設計。在這種情況下,測試只是驗證了程序的正確性,而不是驗證整個系統本該實現的東西。而我們的測試則會很明確,因爲我們的測試計劃已經寫的很明確,需要測試那些遊戲系統,但是我們還需要了解系統的組成,而設計階段則是設計系統的過程,所有的重要系統均是用UML狀態圖進行了詳細的描述,比如用戶登陸情況。

?

2用戶登陸情況

?

在我們的團隊中資深的測試人員要具備的一項基本的素質就是可以針對UML的用例圖,時序圖,狀態圖來設計出重要系統的測試案例,只有重要系統的質量得到充分的測試,遊戲程序的質量纔可以得到充分的保證。比如上圖中就是一個用戶登陸游戲系統的時序圖。從這裏我們可以很明確的瞭解玩家是如何驗證並登陸系統的,在這個過程中要與那些對象進行交互,比如這裏我們就是三個系統之間的交互,客戶端(玩家部分),網關,賬號服務之間的一個時序變化關係,爲了能夠完整的對這個流程進行測試,我們必需設計出可以覆蓋整個流程的測試案例,並考慮其中可能的非法情況,因爲這個時序圖只是考慮了用戶正常登陸成功的情況,並沒有考慮密碼錯誤,通信失敗等許多可能存有的情況,並形成完整的測試案例庫,從而對登陸系統的系統化測試做了充分的準備。同時通過這張圖,性能分析人員還可以分析出可能存的性能瓶頸,比如這裏可能有的瓶頸如下,總網關是否可以達到多少用戶的併發,是如果達不到,是否可以採用分佈式部署或是支持負載平衡,三者之間的網絡帶寬的比例分配,賬號服務器是否可以承載多個網關的連接請求,最大連接請求可以達到多少等等,同時會針對這些風險做性能測試的設計,並提出自動化測試的需求,比如模擬玩家登陸的壓力工具等等。

同時在設計評審時,測試人員的介入可以充分的對當前的系統構架發表自己的意見,由於測試人員的眼光是最苛刻的,並且有多年的測試經驗,可以比較早的發現曾經出現的設計上的問題,比如在玩家轉換服務器時是否作了事務的支持與數據的校驗,在過去設計中由於沒有事務支持與數據的校驗從而導致玩家數據丟失,而這些風險可以在早期就規避掉。上面所說的是對遊戲程序本身的測試設計,對於遊戲情節的測試則可以從策劃獲得,由於前期的策劃階段只是對遊戲情節大方向上的描述,並沒有針對某一個具體的情節進行設計,進入設計階段時,某個遊戲情節邏輯已經完整的形成了,策劃可以給出情節的詳細設計說明書,稱爲任務說明書,通過任務說明書我們可以設計出任務測試案例,比如某一個門派的任務由那些組成,我們可以設計出完整的任務測試案例,從而保證測試可能最大化的覆蓋到所有的任務邏輯,如果是簡單任務,還可以提出自動化需求,採用機器人自動完成。

遊戲測試與開發

?????? 開發與測試一直有人認爲是不可以平行進行的,必需要先開發後測試,但是軟件的開發過程又要求測試必須早期介入,但在這裏這種矛盾得到了很好的解決。我們採用了每日編譯,將測試執行和開發結合在一起,並在開發階段以編碼--測試--編碼--測試的方式來體現。也就是說,程序片段一旦編寫完成,就會立即進行測試。普通情況下,先進行的測試是單元測試,但是一個程序片段也需要相關的集成測試,甚至有時還需要一些特殊測試。特別是關於接口測試,像遊戲程序與任務角本、圖片的結合,大家都認爲需要提前測試,通過每日編你可以把已經寫好的程序片段接合起來,形成部分的集成測試,從而有效的體現的接口優先測試的原則。同時由於軟件測試與開發是並行進行的,並且實行的是軟件缺陷優先修改的策略,所以很少會出現缺陷後期無法修改的情況,並且由於前期的測試案例的設計與自動化工具的準備,我們不需要投入太多的人力就可以極高的保證遊戲軟件的產品質量,特別是重要系統的質量。由於我們的遊戲程序是每日不斷的完善,所以集成測試也在同步的進行之中,當開發進入最後階段時,集成測試也同步的完成了。這裏有一個原則,也就是我前面所說的,測試的主體方法和結構應在遊戲設計階段完成,並在開發階段進行補充(比如在遊戲開發中會有相應的變動,或是某個轉移變地址的變化,這就需要實時的更新)。這種方法會對基於代碼的測試(開發階段與集成階段)產生很重要的影響,但是不管在那個階段,如果在執行前多做一點計劃和設計,都會大幅度的提高測試效率,改善測試結果,同時還有利於測試案例的重用與測試數據的分析,所以我們的測試計劃是在策劃時就形成了,爲後繼的測試形成了良好的基礎。

集成測試階段

集成測試是對整個系統的測試。由於前期測試與開發的並行,集成測試已經基本完成,這時只需要對前期在設計階段中設計的系統測試案例運行一下就OK了。我們主要的重心在集成測試中的兼容性測試,由於遊戲測試的特殊性,對兼容性的要求特別高,所以我們採用了外部與內部同部進行的方式,內部我們有自己的平臺試驗室,搭建主流的硬軟件測試環境,同時我們還通過一些專業的兼容性測試機構對我們的遊戲軟件做兼容性分析,讓我們的遊戲軟件可以跑在更多的機器上。

遊戲可玩性測試

遊戲可玩性測試也是非常重要的一塊,主要包含四個方面:

1.???????? 遊戲世界的搭建,包含聊天功能,交易系統,組隊等可以讓玩家在遊戲世界交互的平臺。

2.???????? 遊戲世界事件的驅動,主要指任務。

3.???????? 遊戲世界的競爭與平衡。

4.???????? 遊戲世界文化蘊涵,遊戲的風格與體現。

這種測試主要體現在遊戲可玩性方面,雖然策劃時我們對可玩性作了一定的評估,但這是總體上的,但一些具體的涉及到某個數據的分析,比如PK參數的調整,技能的增加等一些增強可玩性的測試則需要職業玩家對它進行分析,這裏我們主要通過三種方式來進行:

1.???????? 內部的測試人員,他們都是精選的職業玩家分析人員,對遊戲有很深的認識,在內部測試時,對上面的四點進行分析。

2.???????? 利用外部遊戲媒體專業人員對遊戲作分析與介紹,既可以達到宣傳的效果,又可以達到測試的目的,通常這種方式是比較好的。

3.???????? 利用外部一定數量的玩家,對外圍系統的測試,他們是普通的玩家,但卻是我們最主要的目標,主要的來源是大中院校的學生等等,主要測試遊戲的可玩性與易用性,發現一些外圍的Bug

4.???????? 遊戲進入到最後階段時,還要做內測,公測,有點像應用軟件的beta版的測試,讓更多的人蔘與測試,測試大量玩家下的運行情況。

可玩性測試是遊戲最重要的一塊,只有玩家的認同,我們纔可能成功。

性能測試與優化

?????? 最後要單獨提一下的是性能優化,在單機版的時代,性能的要求並不是很高,但是在網絡版的時代,則是兩個完全不同的概念,主要包含了以下幾個方面:應用在客戶端性能的測試、應用在網絡上性能的測試和應用在服務器端性能的測試。通常情況下,三方面有效、合理的結合,可以達到對系統性能全面的分析和瓶頸的預測。不過在測試過程中有這樣一個原則,就是由於測試是在集成測試完成或接近完成時進行,要求測試的功能點能夠走通,這時你首先要進行優化的是數據庫或是網絡本身的配製,只有這樣纔可以規避改動程序的風險。同時性能的測試與優化是一個逐步完善的過程,需要前期的很多的工作,比如性能需求,測試工具等等,不過由於前期工作的完善,這些都在前期完成了。這裏我只做原則性的描述。

?????? 數據庫的優化的原則主要是這樣的,首先是索引進行優化,由於索引的優化不需要對錶結構進行任何改動,是最簡單的一種,又不需要改動程序就可能提升性能若干倍,不過要注意的是索引不是萬能的,若是無限的增加會對增刪改造成很大的影響。其次是對錶,視圖,存儲過程的優化。不過在分析之前需要知道優化的目標,客戶行爲中那些SQL是執行的最多的,所以我們必需藉助些SQL的跟蹤分析工具,例如SQLProfile,SQLExpert,等工具,這樣會迅速的定位問題。

?????? 關於網絡的優化,這裏我所說的並不是針對網絡本身的優化,而是對遊戲本身的網絡通信的優化,所以它是與程序的優化是結合在一起的,首先也是發現問題,通過MonitorSniff先定位是什麼應用佔用了較多的網絡流量,由於網絡遊戲的用戶巨大,所以這也是一個重在的問題。對於程序的性能優化,最主要的是找到運行時間最長的函數,只有優化它,性能纔有大幅度的提升,具體的方法我就不做詳細的描述了。

總述

?????? 遊戲測試是一個新的領域,它既有通用測試的特點,又有自己的特點,有許多未知的路要走,每天都在總結,希望給大家帶來一些幫助,同時在這裏也謝謝所有支持我的同事。

??????

??????

?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章