吳召堅
摘要:近年來,網(wǎng)頁游戲發(fā)展迅猛,其游戲測試也越來越受重視,目前已經(jīng)成為開發(fā)過程中的重要環(huán)節(jié)。該文主要介紹網(wǎng)頁游戲測試的方法、特點、技術(shù)技巧等。
關(guān)鍵詞:網(wǎng)頁游戲;游戲測試;接口測試;性能測試;內(nèi)存泄露
中圖分類號:TP3 文獻標(biāo)識碼:A 文章編號:1009-3044(2015)11-0185-02
On Test Method of Web Game
WU Zhao-jian
(Shanghai Game Reign Network Technology Co., Ltd, Shanghai 201317, China)
Abstract: With the rapid development of web game , the web-game testing is getting more attention in recent years. It has become an important part of game software development process. This article mainly introduces the test method, feature and test skills of web game.
Key words:Web game; game testing; interface testing; performance testing; memory leak
1 概述
網(wǎng)頁游戲就是基于Web瀏覽器的網(wǎng)絡(luò)在線多人游戲,因為無需下載客戶端,用戶進入和上手都比較容易。隨著互聯(lián)網(wǎng)的快速發(fā)展以及社會快節(jié)奏的生活,越來越多的玩家投入到操作簡單且不那么費時的網(wǎng)頁游戲中。據(jù)2014年的《中國游戲產(chǎn)業(yè)報告》數(shù)據(jù)顯示,中國網(wǎng)頁游戲市場實際銷售收入為202.7億元人民幣,網(wǎng)頁游戲用戶數(shù)量達3.07億人。在這樣一個成熟龐大的行業(yè)中,對游戲運營商來說,收益永遠是最重要的。而游戲質(zhì)量直接影響著運營收入。因此,游戲測試開始成為大家關(guān)注的話題。
2 游戲測試的重要性
游戲是計算機軟件的一個特殊種類,因此游戲測試也是軟件測試的一個分支,具備了軟件測試大部分特性。在工作中,軟件測試的一些理論方法同樣也適用于游戲測試。
在互聯(lián)網(wǎng)高速發(fā)展的今天,如果同時有10萬人在線玩一款游戲,這款游戲最好能保持運行良好,玩家才會愿意不斷的付費充值。對游戲廠商而言,為運營商提供質(zhì)量保證的重要性不言而喻,否則直接影響到公司的聲譽及收益。
因此,越來越多的游戲廠商已經(jīng)不把游戲測試保留到開發(fā)末期才做了,相反的,他們都遵循了軟件工程學(xué)中對于測試的一個基本原則:盡早測試。游戲測試已經(jīng)被當(dāng)做游戲開發(fā)過程中極其重要的一個環(huán)節(jié)。測試工作的好壞,直接決定著游戲產(chǎn)品的質(zhì)量。
3 游戲測試的方法
網(wǎng)頁游戲基于web瀏覽器,而web瀏覽器的B/S架構(gòu),其實只是一種特殊的C/S架構(gòu)。相對于傳統(tǒng)的客戶端網(wǎng)絡(luò)游戲,網(wǎng)頁游戲有著類似的結(jié)構(gòu),游戲網(wǎng)頁的前端就是client,游戲服務(wù)器后端就是server。后端是游戲程序的邏輯功能設(shè)計,前端主要是游戲UI設(shè)計。這就意味著,游戲的前端和后端要分開測試。而且,后端程序邏輯的正確性、安全性更加重要,是測試的重點。
比如,當(dāng)游戲中某個角色沒有金幣時仍嘗試去購買裝備,前端的邏輯判斷中已經(jīng)返回出“金幣不足無法購買”的message,進而不會向游戲服發(fā)包。但是如果繞過前端直接向后端游戲服發(fā)包,而后端邏輯中沒有這一層邏輯判斷,那么玩家就能在沒有金幣的條件下非法獲得裝備,造成游戲的不平衡。一些網(wǎng)頁游戲的外掛制作者,可以輕松的通過瀏覽器截包工具查詢到游戲后端接口,進而自己直接向后端游戲服發(fā)包。如果后端接口的邏輯不嚴(yán)謹(jǐn),利用外掛的玩家就能非法獲利。因此,測試工程師的大量精力,會放在后端測試上。
3.1 游戲后端測試
3.1.1 接口功能測試
接口用于游戲前后端的數(shù)據(jù)交互,前端通過網(wǎng)絡(luò)協(xié)議傳遞的數(shù)據(jù)往后端接口的輸入數(shù)據(jù)。網(wǎng)頁游戲的測試工作量主要偏向于接口測試。測試工程師首先通過游戲策劃文檔確定需求,而后針對需求以及后端工程師提供的接口定義文檔進行測試用例設(shè)計,通過后端接口功能測試來確保游戲功能的正確實現(xiàn)。
后端接口的測試用例設(shè)計主要從有游戲業(yè)務(wù)場景、基本功能以及異常測試幾個方面,利用等價類、邊界值、流程分析等基本方法考慮。除了這些,接口測試還需要注意一下幾點:
1)參數(shù)檢查:對接口的輸入?yún)?shù)務(wù)必進行有效性檢查,比如整型數(shù)值的上限,字符串長度上限等。
2)數(shù)據(jù)庫數(shù)據(jù)測試:接口的輸入項不只是前端所傳的參數(shù),還包括數(shù)據(jù)庫中的現(xiàn)有數(shù)據(jù)。比如,玩家花費金幣購買裝備的接口,輸入項包括花費金幣值的接口參數(shù)和存在數(shù)據(jù)庫中的現(xiàn)有金幣值。因此,必須對數(shù)據(jù)庫中的相應(yīng)數(shù)據(jù)進行邊界值測試,比如在金幣不足的情況下調(diào)用購買裝備接口。
3)接口依賴關(guān)系檢查:上面的策略只是對單個接口的測試方法。在線上游戲中,玩家的一個操作在程序中可能已經(jīng)多次發(fā)包,即對游戲后端調(diào)用了多個接口來完成的。因此,還需要從業(yè)務(wù)處理的角度,對游戲需求中所設(shè)計的多個接口之間依賴調(diào)用進行測試。
3.1.2 后端性能測試
網(wǎng)頁游戲的性能測試主要是后端服務(wù)器負(fù)載測試,以及一些特殊接口的并發(fā)量測試。使用LoadRunner自動化性能測試工具不是為一種簡單高效的方式。
一款新游戲剛上線時,大量玩家會受新鮮感好奇心的驅(qū)使注冊賬號進行試玩,此時游戲服通常會處于最大的用戶數(shù)的階段。成千上萬個玩家頻繁向游戲服發(fā)包,如果服務(wù)器承受不了這么大的壓力,造成玩家的體驗將會相當(dāng)差,那么這款游戲從剛出生就沒法吸引玩家。
做游戲服負(fù)載測試時,通常使用LoadRunner構(gòu)造成千上萬個虛擬用戶,執(zhí)行游戲的“新手教程”所包含的一系列接口,測試游戲服務(wù)器在此壓力下是否會有響應(yīng)錯誤、響應(yīng)緩慢、數(shù)據(jù)丟失等錯誤。
對于一些特殊場景,比如SLG游戲的大型國戰(zhàn)期間,也需要執(zhí)行多用戶并發(fā)測試。在這種場景下,可能會產(chǎn)生某些隱藏問題,如內(nèi)存泄露、線程鎖等問題。
3.2 游戲前端測試
3.2.1 前端內(nèi)存泄露測試
網(wǎng)頁游戲的前端一般用Flash制作,除了達到策劃文檔的需求,更需要考慮的是性能的優(yōu)化,界面流暢度等內(nèi)在體驗的問題。對于測試工程師來說,測試前端性能時最需要關(guān)注的地方就是是否有內(nèi)存泄露。
內(nèi)存泄露是指由于疏忽或錯誤造成程序未能釋放已經(jīng)不再使用的內(nèi)存的情況。應(yīng)用程序分配某段內(nèi)存后,由于設(shè)計錯誤,失去了對該段內(nèi)存的控制,因而造成了內(nèi)存的浪費。內(nèi)存泄露會使玩家的網(wǎng)頁隨著時間越來越卡,嚴(yán)重影響玩家的游戲體驗。
舉個例子,游戲策劃要求當(dāng)玩家沒有金幣時購買裝備,前端彈出一個金幣不足的提示框,顯示2秒后消失。Flash程序構(gòu)造出提示框時,提示框是一個有效對象,2秒之后這個框消失,在程序中這個提示框?qū)ο缶蜎]有用了,正確的做法應(yīng)把這個提示框?qū)ο蠡厥詹⑨尫潘純?nèi)存,因為下一次再出現(xiàn)這種提示框,實際上是程序構(gòu)造的一個新的對象。但是在某種條件下,程序中存在另一個對象對這個提示框的引用,則Flash的GC(垃圾收集器)認(rèn)為這個提示框?qū)ο笫怯杏玫亩换厥?,?dāng)玩家不斷的點擊購買裝備,F(xiàn)lash程序也就不斷的構(gòu)造出新的提示框?qū)嵗?,就會造成?nèi)存泄露,久而久之,玩家的網(wǎng)頁會卡爆。
對于Flash前端的內(nèi)存泄露問題,通常使用Adobe Flash Builder中自帶的內(nèi)存概要分析功能進行測試。重復(fù)加載某個動畫,使這個類的實例數(shù)不斷增加,再使用Flash的垃圾收集器清掉之前構(gòu)造的無效實例。如果垃圾收集器無法回收這些無效實例,那么程序中就存在內(nèi)存泄露。
3.2.2 游戲界面友好性測試
由于游戲行業(yè)中激烈的市場競爭,以及其特殊的娛樂目的,游戲界面的友好性、易用性、合理性設(shè)計相對于其他行業(yè)的軟件界面有更為重要的意義。在進行游戲界面測試時,大到需要評定游戲是否容易上手,小到需要關(guān)注各個按鍵布局是否合理等。
4 結(jié)論
本文針對網(wǎng)頁游戲的前后端不同方向,簡單綜述了其各自的通用性測試方法和特點。其中提到的網(wǎng)頁游戲測試方法,大部分是筆者工作經(jīng)驗的整理,但仍然存在一定的局限性。比如對于接口測試,除了完成功能測試,還需考慮如何構(gòu)建自動化回歸測試以提高效率。
其實,網(wǎng)頁游戲中最常見的缺陷,通常都是游戲金幣復(fù)制、裝備復(fù)制、無限刷資源等技術(shù)性漏洞。以及游戲業(yè)務(wù)判斷不嚴(yán)謹(jǐn)、條件不合法之類的邏輯漏洞。如何設(shè)計出更完善的測試用例以防止線上發(fā)生漏洞,才是每一位測試工程師有待研究的必要課題。
參考文獻:
[1] Charles P.Schultz.游戲測試精通[M].北京:清華大學(xué)出版社,2007
[2] 張紅艷.淺談游戲測試技術(shù)[J].硅谷,2009(22)
[3] 孟繁雅.游戲測試的用例設(shè)計[J].程序員:游戲創(chuàng)造,2008(5).
[4] 李智勇.ActionScript3.0垃圾回收機制及優(yōu)化策略[J].信息技術(shù),2012(10).
[5] 華鑫.游戲軟件開發(fā)流程探討[J].中國科技博覽,2012(38).
[6] 王志森.探索式測試方法在網(wǎng)絡(luò)游戲軟件測試中的應(yīng)用[D].上海:上海交通大學(xué),2011.