qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請?jiān)L問 http://qaseven.github.io/

          Webgame自動(dòng)化測試之旅

           最近兩個(gè)項(xiàng)目中游蕩,首次接觸facebook游戲的測試,感觸還是很多的。與之前的web2.0的互聯(lián)網(wǎng)應(yīng)用相比,webgame的測試更多樣,也更加的復(fù)雜。留下點(diǎn)Memory,對Webgame進(jìn)行自動(dòng)化測試是挑戰(zhàn)新的開始。 根據(jù)游戲整體架構(gòu)的不同,在協(xié)議測試方面還是可以有很大的發(fā)展余地的。比較流行的facebook游戲進(jìn)行自動(dòng)化測試的還是比較多的,不過由于游戲UI方面的修改比較的多,所以在一開始選取好的測試方法是很重要的。

            在游戲測試中用的比較多的是類似于按鍵精靈的這樣的方式hook,利用windows api進(jìn)行屏幕點(diǎn)的操作,以下是比較簡單的實(shí)現(xiàn),是通過autoit3對游戲FARMVILLE進(jìn)行的操作,點(diǎn)擊這里下載。

            自動(dòng)化的實(shí)現(xiàn)主要是將FARM中的田地size化,通過在1280x800的屏幕中,進(jìn)行模擬對屏幕點(diǎn)的操作。實(shí)際效果還是很棒的,測試時(shí)遇到修改的情況的話可以通過修改excel中FARM的田地參數(shù)進(jìn)行修改。可以使用更多的API進(jìn)行定時(shí),定點(diǎn)的收割。

            以上提到的是使用windows api半hook的方式進(jìn)行的自動(dòng)化測試。

            我們還可以通過真實(shí)的tcp,http或者h(yuǎn)ttps的協(xié)議來進(jìn)行相關(guān)的自動(dòng)化測試。

            主要看在facebook中的游戲整體架構(gòu),使用flash前臺(tái)通過json或者amf協(xié)議進(jìn)行協(xié)議發(fā)送的話可以利用python的pyamf或者 perl的amf3解析包解析后進(jìn)行協(xié)議層的自動(dòng)化測試,這樣可以減輕前段UI測試的壓力,一般游戲的UI測試用例非常的多,很多涉及購買等操作的可以利 用協(xié)議自動(dòng)化測試進(jìn)行。

            flash的自動(dòng)化測試可以分為UI層面的測試及協(xié)議層面的測試。

            flash的UI層面的測試:

            UI層面的測試建議在基本UI及核心玩法已經(jīng)確定的情況下運(yùn)用,這樣比較有實(shí)效性,返工率比較低。

            主要實(shí)現(xiàn)的手法之前的Jason已經(jīng)介紹過了,windows hook技術(shù)及Browsers本身的特性。

            關(guān)于Browers本身的特性,這里需要提下iMacros這個(gè)在FF中的插件,iMacros插件版不支持flash的自動(dòng)化,pro版可以通過代碼實(shí)現(xiàn)很多的邏輯性操作。

            Pro版實(shí)現(xiàn)flash自動(dòng)化的效果也可分為屏幕定位及元素定位的方法,在整體實(shí)現(xiàn)上還是很有效果的。

            flash的協(xié)議層面測試:

            協(xié)議層面的測試做自動(dòng)化測試的效果比較好,使用性比較高。主要的做法為,通過各種編程手段及輔助工具(http watch或者charles)來共同實(shí)現(xiàn)。

            簡單介紹下python下的framework:

            首先需要python的pyamf包,可以通過這里來安裝。

            之后我們需要Mechanize包,這是發(fā)送http及https包比較easy的類。

            通過已有的python test framework框架將測試用例變量化,最后輸出報(bào)告格式化,這樣整體的測試框架就出來了。

            做協(xié)議測試的另一個(gè)方面是驗(yàn)證UI無法放松的邊界值對后臺(tái)邏輯的影響,很多游戲的失敗就是因?yàn)檫@個(gè)原因。

            pythonPyamf 解析包是對amf協(xié)議的解析利器,可以使你輕松的實(shí)現(xiàn)類似于對html-text的操作,我們也可以利用Mechanize來進(jìn)行相應(yīng)的協(xié)議自動(dòng)化測試。

            Pyamf在協(xié)議測試中我們主要需要用到的類有三類:

            1、amf3協(xié)議包體類:

            envelope = pyamf.remoting.Envelope(amfVersion=3)

            產(chǎn)生的envelope對象就是之后對你需要傳遞數(shù)據(jù)的封裝對象。

            2、pyamf amf3協(xié)議的轉(zhuǎn)換類:

            message = pyamf.remoting.encode(envelope)

            產(chǎn)生的message 就可以利用urllib2.Request進(jì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)化測試的 思路及針對flash進(jìn)行的自動(dòng)化測試的框架。在對游戲進(jìn)行自動(dòng)化測試的時(shí)候,總是會(huì)思考大部分的致命BUG都來源于隨機(jī)的操作,那么我們?nèi)绾芜M(jìn)行這些方 面的自動(dòng)化測試呢。這時(shí)FUZZ模糊的思想又體現(xiàn)到我們的面前,我們可以將需要生成的測試用例交給COMPUTER來自動(dòng)生成,并且自動(dòng)執(zhí)行得到相應(yīng)的報(bào) 告,整體FUZZ模糊測試的概念就比較清晰了。

            我們主要使用的是模糊測試中的自動(dòng)協(xié)議生成測試并與協(xié)議測試相結(jié)合進(jìn)行自動(dòng)化測試。

            利用pairwise的思想進(jìn)行模糊測試。

            我們需要考慮的模糊因素有以下幾點(diǎn)。

            1、各種類型的對象的模糊參數(shù)設(shè)計(jì),模糊參數(shù)默認(rèn)值。

            2、組合參數(shù)對象的順序模糊。

            3、非正常類型的參數(shù)模糊,針對XSS。

            利用設(shè)計(jì)的用例組合進(jìn)行窮舉算法生成相應(yīng)的用例。

            以下以最簡單的用例做個(gè)實(shí)例:假設(shè)需要參數(shù):”id=12&Goodid=12300&name=jason”。

            針對ID的設(shè)計(jì)可以為{-65536,-1,0,12,65536},針對Goodid的設(shè)計(jì)可以為 {-65536,-1,0,12300,65536},針對name的設(shè)計(jì)可以為{jason,null,None,”",…………},針對參數(shù)順序 {(id,goodid,name),(id,name,goodid)……}

            根據(jù)上面的測試用例集合自動(dòng)產(chǎn)生相應(yīng)的測試用例,然后進(jìn)行相應(yīng)的協(xié)議自動(dòng)化測試。當(dāng)然這里設(shè)計(jì)的用例不完善僅供參考思路。

            模糊測試的使用可以借助很多已有的測試用例類,類似之前Jason介紹的sulley一樣,它的用例庫比較的全,這樣測試覆蓋率會(huì)比較高。



          posted on 2012-11-05 10:04 順其自然EVO 閱讀(439) 評論(0)  編輯  收藏 所屬分類: selenium and watir webdrivers 自動(dòng)化測試學(xué)習(xí)

          <2012年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 金寨县| 沂源县| 庆城县| 汉川市| 通许县| 东台市| 黎平县| 辽宁省| 文山县| 梨树县| 石城县| 衡阳市| 水城县| 麦盖提县| 连城县| 获嘉县| 新宁县| 米泉市| 涞水县| 抚顺市| 建昌县| 伊金霍洛旗| 揭阳市| 柘荣县| 汾西县| 介休市| 贺兰县| 肇庆市| 翼城县| 曲靖市| 青岛市| 马关县| 龙井市| 贵德县| 漳州市| 和政县| 新巴尔虎右旗| 永清县| 赤壁市| 宁强县| 宁河县|