<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

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

    使用ruby 1.9新特性進(jìn)行自動(dòng)化腳本的編寫

    昨天因?yàn)橐bwatir-webdriver的原因?qū)⒂昧丝煲荒甑膔uby1.8.6升級(jí)到了1.9。由于1.9是原生支持unicode編碼,所以我們可以使用中文進(jìn)行自動(dòng)化腳本的編寫工作

      做了簡(jiǎn)單的封裝后,我們可以實(shí)現(xiàn)如下的自動(dòng)化測(cè)試代碼。請(qǐng)注意,這些代碼是可以正確運(yùn)行并作為正式的自動(dòng)化測(cè)試用例的。這樣一來,自動(dòng)化測(cè)試腳本跟手工測(cè)試用例就非常相似了,大言不慚的說相似程度可以達(dá)到60%。

      這樣做有什么好處呢?

      ■ 手工測(cè)試用例更加容易“翻譯”正自動(dòng)化測(cè)試用例:

    測(cè)試瀏覽器 = Watir::Browser.new :firefox
    測(cè)試瀏覽器.轉(zhuǎn)到 'www.google.com'
    在(測(cè)試瀏覽器.的.text_field(:name, "q")).中.輸入 "qq"
    點(diǎn)擊 測(cè)試瀏覽器.的.button(:name, "btnG")
    等待(測(cè)試瀏覽器.的.div(:id, "resultStats"))
    斷言 '測(cè)試通過' if 測(cè)試瀏覽器.的.text.包含('騰訊QQ')
    關(guān)閉 測(cè)試瀏覽器

      由于加入了符合自然語義的”的”及“在”函數(shù),整個(gè)測(cè)試用例的自然度得到大大提升,基本可以做到不熟悉自動(dòng)化代碼的人員可以大致猜測(cè)到用例的真實(shí)用例。讓用例自己說話,這比反復(fù)釋疑和解惑要好上一些;

      ■ 手工測(cè)試人員編寫用例的門檻相對(duì)降低:

      由于代碼的靈活度及兼容性相對(duì)較大(ruby語言的特性)及測(cè)試api相對(duì)簡(jiǎn)單(watir的特性),手工測(cè)試人員應(yīng)該可以更加方便的理解和編寫代碼,這樣用例編寫的門檻降低;

      ■ 用例維護(hù)成本降低:

      中文化的用例代碼可以很容易的進(jìn)行review。大家應(yīng)該有這樣的經(jīng)驗(yàn),在有些代碼中會(huì)出現(xiàn)一些隨意的ab, zb之類難以理解的變量或方法名。糾其原因無非是不好的編程習(xí)慣或詞窮的英文積淀。用上中文之后這些情況會(huì)有很大好轉(zhuǎn)。代碼本地化這項(xiàng)工作日本這些年一直在做,而且成果豐碩。我們完全可以通過ruby借鑒這一點(diǎn);

      ■ webdriver的強(qiáng)大特性

      上面的測(cè)試代碼是基于watir-webdriver編寫的。由于webdriver支持多種瀏覽器,如ff,chrome,safiri,ie等,代碼的擴(kuò)展性非常強(qiáng)。在配置合理及框架支撐的前提下,基本可以做到一套腳本多瀏覽器運(yùn)行,這對(duì)回歸測(cè)試來說應(yīng)該是一個(gè)利好消息;

      當(dāng)然,測(cè)試腳本中文化,自然化口語化也會(huì)帶來一些列的問題,這點(diǎn)我們也必須清楚認(rèn)識(shí)到。

      1.用例編寫會(huì)相對(duì)費(fèi)時(shí)一些;中英文結(jié)合編碼在輸入速度上確實(shí)不如純英文;

      2.對(duì)程序員來說上面的代碼會(huì)有些怪異或者是令人難以忍受的;對(duì)于完美主義者來說,上面的代碼是“不純粹”且有些難看的;

      總結(jié)一下,個(gè)人的觀點(diǎn)如下:

      對(duì)于產(chǎn)品代碼來說,中英文混編的風(fēng)格目前來說應(yīng)該是不合時(shí)宜的。但對(duì)于測(cè)試腳本來說,中文越多,用例可讀性越高,自動(dòng)化測(cè)試代碼越接近手動(dòng)用例,這反而應(yīng)該是一件不錯(cuò)的事情。這在里先拋磚引玉,希望有志同道合者可以一起研究,讓自動(dòng)化腳本更加的人性、自然、可讀、可維護(hù)。也許在不遠(yuǎn)的將來,手動(dòng)用例可以直接拿來當(dāng)自動(dòng)化用例執(zhí)行也未嘗不可能。

      下面是用例的完整代碼,由于只是演示興致,因此只是隨意在Module層進(jìn)行了簡(jiǎn)單的可視化封裝,過于簡(jiǎn)陋和demo,還望磚家手下留情。

    # encoding: utf-8
    require 'rubygems'
    require 'watir-webdriver'
    module CWrap
        def 點(diǎn)擊(obj)
            obj.click rescue obj.class.to_s + '對(duì)象無法進(jìn)行點(diǎn)擊'
        end
        def 加載完畢()
            self
        end
        alias :中 :加載完畢
        alias :的 :中
        alias :應(yīng)該 :的
        def 在(obj)
            obj
        end
        def 等待(obj)
            obj.wait_until_present rescue puts('該' + obj.class.to_s + '對(duì)象無法進(jìn)行等待操作')
        end
        def 關(guān)閉(obj)
            obj.close rescue puts('無法關(guān)閉這個(gè)' + obj.class.to_s + '對(duì)象')
        end
        def 輸入(text)
            self.set text rescue puts('這個(gè)' + self.class.to_s + '對(duì)象無法進(jìn)行輸入')
        end
        def 轉(zhuǎn)到(url)
            self.goto url rescue puts(self.class.to_s + '對(duì)象不是一個(gè)瀏覽器對(duì)象')
        end
        def 包含(text)
            self.include? text rescue puts self.class.to_s + '對(duì)象無法進(jìn)行包含操作'
        end
        def 斷言(text)
            puts text
        end
    end
    include CWrap

    測(cè)試瀏覽器 = Watir::Browser.new :firefox
    測(cè)試瀏覽器.轉(zhuǎn)到 'www.google.com'
    在(測(cè)試瀏覽器.的.text_field(:name, "q")).中.輸入 "qq"
    點(diǎn)擊 測(cè)試瀏覽器.的.button(:name, "btnG")
    等待(測(cè)試瀏覽器.的.div(:id, "resultStats"))
    斷言 '測(cè)試通過' if 測(cè)試瀏覽器.的.text.包含('騰訊QQ')
    關(guān)閉 測(cè)試瀏覽器

    posted on 2013-09-18 11:23 順其自然EVO 閱讀(380) 評(píng)論(0)  編輯  收藏 所屬分類: ruby languages


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2013年9月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 久久精品亚洲精品国产色婷| 亚洲狠狠爱综合影院婷婷| 美女视频黄a视频全免费网站色| 久久精品国产亚洲av日韩| 亚洲免费无码在线| 免费观看AV片在线播放| 一日本道a高清免费播放| 亚洲AV无码久久久久网站蜜桃| 亚洲AV成人精品日韩一区18p| 91嫩草国产在线观看免费| 中文字幕乱码一区二区免费| 精品特级一级毛片免费观看| 亚洲成a人片在线观看播放| 国产AV无码专区亚洲AWWW| 国产成人免费ā片在线观看| 天天影视色香欲综合免费| 久久九九全国免费| 国产精品青草视频免费播放| 免费看美女午夜大片| 亚洲欧美日韩中文二区| 亚洲日本乱码卡2卡3卡新区| 亚洲韩国—中文字幕| 亚洲av无码成h人动漫无遮挡| 亚洲午夜av影院| 丁香亚洲综合五月天婷婷| 午夜私人影院免费体验区| 成人a免费α片在线视频网站| 国产精品视频免费观看| 日韩免费电影网址| 一级做a免费视频观看网站| 无码 免费 国产在线观看91| 亚洲av无码专区青青草原| 亚洲一区二区三区国产精华液| 亚洲一区二区三区在线网站| 亚洲视屏在线观看| 亚洲精品乱码久久久久久| 国产aⅴ无码专区亚洲av| 国产精品国产亚洲精品看不卡| 亚洲综合图色40p| 国产精品国产亚洲精品看不卡| 亚洲成人精品久久|