Webgame自動(dòng)化測(cè)試之旅
在游戲測(cè)試中用的比較多的是類似于按鍵精靈的這樣的方式hook,利用windows api進(jìn)行屏幕點(diǎn)的操作,以下是比較簡(jiǎn)單的實(shí)現(xiàn),是通過(guò)autoit3對(duì)游戲FARMVILLE進(jìn)行的操作,點(diǎn)擊這里下載。
自動(dòng)化的實(shí)現(xiàn)主要是將FARM中的田地size化,通過(guò)在1280x800的屏幕中,進(jìn)行模擬對(duì)屏幕點(diǎn)的操作。實(shí)際效果還是很棒的,測(cè)試時(shí)遇到修改的情況的話可以通過(guò)修改excel中FARM的田地參數(shù)進(jìn)行修改。可以使用更多的API進(jìn)行定時(shí),定點(diǎn)的收割。
以上提到的是使用windows api半hook的方式進(jìn)行的自動(dòng)化測(cè)試。
我們還可以通過(guò)真實(shí)的tcp,http或者h(yuǎn)ttps的協(xié)議來(lái)進(jìn)行相關(guān)的自動(dòng)化測(cè)試。
主要看在facebook中的游戲整體架構(gòu),使用flash前臺(tái)通過(guò)json或者amf協(xié)議進(jìn)行協(xié)議發(fā)送的話可以利用python的pyamf或者 perl的amf3解析包解析后進(jìn)行協(xié)議層的自動(dòng)化測(cè)試,這樣可以減輕前段UI測(cè)試的壓力,一般游戲的UI測(cè)試用例非常的多,很多涉及購(gòu)買(mǎi)等操作的可以利 用協(xié)議自動(dòng)化測(cè)試進(jìn)行。
flash的UI層面的測(cè)試:
UI層面的測(cè)試建議在基本UI及核心玩法已經(jīng)確定的情況下運(yùn)用,這樣比較有實(shí)效性,返工率比較低。
主要實(shí)現(xiàn)的手法之前的Jason已經(jīng)介紹過(guò)了,windows hook技術(shù)及Browsers本身的特性。
關(guān)于
Pro版實(shí)現(xiàn)flash自動(dòng)化的效果也可分為屏幕定位及元素定位的方法,在整體實(shí)現(xiàn)上還是很有效果的。
flash的協(xié)議層面測(cè)試:
協(xié)議層面的測(cè)試做自動(dòng)化測(cè)試的效果比較好,使用性比較高。主要的做法為,通過(guò)各種編程手段及輔助工具(http watch或者charles)來(lái)共同實(shí)現(xiàn)。
簡(jiǎn)單介紹下python下的framework:
首先需要python的pyamf包,可以通過(guò)這里來(lái)安裝。
之后我們需要Mechanize包,這是發(fā)送http及https包比較easy的類。
通過(guò)已有的python test framework框架將測(cè)試用例變量化,最后輸出報(bào)告格式化,這樣整體的測(cè)試框架就出來(lái)了。
做協(xié)議測(cè)試的另一個(gè)方面是驗(yàn)證UI無(wú)法放松的邊界值對(duì)后臺(tái)邏輯的影響,很多游戲的失敗就是因?yàn)檫@個(gè)原因。
Pyamf在協(xié)議測(cè)試中我們主要需要用到的類有三類:
1、amf3協(xié)議包體類:
envelope = pyamf.remoting.Envelope(amfVersion=3)
產(chǎn)生的envelope對(duì)象就是之后對(duì)你需要傳遞數(shù)據(jù)的封裝對(duì)象。
2、pyamf amf3協(xié)議的轉(zhuǎn)換類:
message = pyamf.remoting.encode(envelope)
產(chǎn)生的
3、pyamf amf3協(xié)議的解碼類:
res = urllib2.urlopen(req);
content = res.read();
content = pyamf.remoting.decode(content)
這里最后產(chǎn)生的content就是返回amf3整體解析好的數(shù)據(jù),可以根據(jù)需要將返回值進(jìn)行解析,返回值可能是list{list{……},”jason”=jason},可以根據(jù)需要最后做相應(yīng)的assert。更多pyamf類相關(guān)信息,查詢這里。
之前介紹了如何進(jìn)行webgame自動(dòng)化測(cè)試的 思路及針對(duì)flash進(jìn)行的自動(dòng)化測(cè)試的框架。在對(duì)游戲進(jìn)行自動(dòng)化測(cè)試的時(shí)候,總是會(huì)思考大部分的致命BUG都來(lái)源于隨機(jī)的操作,那么我們?nèi)绾芜M(jìn)行這些方 面的自動(dòng)化測(cè)試呢。這時(shí)FUZZ模糊的思想又體現(xiàn)到我們的面前,我們可以將需要生成的測(cè)試用例交給COMPUTER來(lái)自動(dòng)生成,并且自動(dòng)執(zhí)行得到相應(yīng)的報(bào) 告,整體FUZZ模糊測(cè)試的概念就比較清晰了。
我們主要使用的是模糊測(cè)試中的自動(dòng)協(xié)議生成測(cè)試并與協(xié)議測(cè)試相結(jié)合進(jìn)行自動(dòng)化測(cè)試。
利用
我們需要考慮的模糊因素有以下幾點(diǎn)。
1、各種類型的對(duì)象的模糊參數(shù)設(shè)計(jì),模糊參數(shù)默認(rèn)值。
2、組合參數(shù)對(duì)象的順序模糊。
3、非正常類型的參數(shù)模糊,針對(duì)XSS。
利用設(shè)計(jì)的用例組合進(jìn)行窮舉算法生成相應(yīng)的用例。
以下以最簡(jiǎn)單的用例做個(gè)實(shí)例:假設(shè)需要參數(shù):”id=12&Goodid=12300&name=jason”。
針對(duì)ID的設(shè)計(jì)可以為{-65536,-1,0,12,65536},針對(duì)Goodid的設(shè)計(jì)可以為 {-65536,-1,0,12300,65536},針對(duì)name的設(shè)計(jì)可以為{jason,null,None,”",…………},針對(duì)參數(shù)順序 {(id,goodid,name),(id,name,goodid)……}
根據(jù)上面的測(cè)試用例集合自動(dòng)產(chǎn)生相應(yīng)的測(cè)試用例,然后進(jìn)行相應(yīng)的協(xié)議自動(dòng)化測(cè)試。當(dāng)然這里設(shè)計(jì)的用例不完善僅供參考思路。
模糊測(cè)試的使用可以借助很多已有的測(cè)試用例類,類似之前Jason介紹的sulley一樣,它的用例庫(kù)比較的全,這樣測(cè)試覆蓋率會(huì)比較高。
posted on 2012-11-05 10:04 順其自然EVO 閱讀(439) 評(píng)論(0) 編輯 收藏 所屬分類: selenium and watir webdrivers 自動(dòng)化測(cè)試學(xué)習(xí)