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