qileilove

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

          BDD自動(dòng)化測(cè)試?yán)?calabash(Android)篇(一)

          我接觸了當(dāng)前市場(chǎng)上大多數(shù)的android端的自動(dòng)化測(cè)試架構(gòu),也研究了一些偏門左道的一些測(cè)試工具,而當(dāng)我見到calabash這套框架時(shí),內(nèi)心還是小小的開心了一下。

            優(yōu)勢(shì)

            先說一下calabash的優(yōu)點(diǎn),這樣大家可能更有興趣看下去:

            1.calabash是BDD驅(qū)動(dòng)開發(fā),編寫自動(dòng)化測(cè)試腳本比Robotium提高100%

            2.calabash是腳本與TC分離設(shè)計(jì),在業(yè)務(wù)變化的情況下,只要功能存在基本只需要修改TC,在業(yè)務(wù)不變,功能變化的情況下,基本只需要修改腳本

            3.calabash既支持android也支持ios,真正實(shí)現(xiàn)了套腳本跨平臺(tái)設(shè)備運(yùn)行,小試了一把很酷

            4.calabash是支持?jǐn)U展的,而且非常容易擴(kuò),當(dāng)前也支持webview的腳本編寫

            運(yùn)行原理

            calabash-android架構(gòu)其實(shí)與IOS是相同的,不過本篇只講android,編寫calabash架構(gòu)的腳本,其實(shí)內(nèi)部使用的是cucumber(cucumber是一種BDD測(cè)試框架,有興趣的可以看看)這種核心為cucumber的calabash的腳本在運(yùn)行測(cè)試的時(shí)候會(huì)在虛擬機(jī)/真機(jī)上預(yù)裝一個(gè)web服務(wù)器,這個(gè)web服務(wù)器就是解釋calabash的腳本,將其解釋為robotium的腳本,然后這個(gè)web服務(wù)器會(huì)想測(cè)試app發(fā)送robotium的腳本,測(cè)試app拿到robotium腳本后,將其解釋為instumentation命令向被測(cè)試的app發(fā)送這些命令,被測(cè)試的app執(zhí)行這些命令,然后將結(jié)果返回給測(cè)試app,然后一級(jí)一級(jí)返得到最后的測(cè)試結(jié)果。

            結(jié)構(gòu)框架

            calabash完全采用了cucumber的結(jié)構(gòu)模式,給大家展示一下在命令行中展示出來的結(jié)構(gòu)模式



            feature為主件夾,step_definitions內(nèi)是你封裝的腳本,my_first.feature文件就是你的TC邏輯。再看一下其中的內(nèi)容:

            my_first.feature

            Feature: 登陸

            Scenario: 輸入正確的用戶名密碼能夠正常登陸

            When 打開登陸頁面

            And    輸入用戶名XXX輸入密碼XXX

            And   點(diǎn)擊登陸

            Then  驗(yàn)證登陸成功

            看起來很簡(jiǎn)單吧,想要驗(yàn)證其他功能也是類似的語言描述即可。如果你沒有用過cucumber或者calabash那么你肯定現(xiàn)在有一個(gè)疑問,計(jì)算機(jī)怎么能識(shí)別漢字來進(jìn)行測(cè)試的呢,那么看一下step_definition:

            以輸入用戶名XXX輸入密碼XXX為例:

          When /^ 輸入用戶名\"([^\\\"]*)\" 輸入密碼\"([^\\\"]*)\"  $/ do |username,password|
          performAction('enter_text_into_numbered_field',username,1)
          performAction('enter_text_into_numbered_field',password,2)
          end

            現(xiàn)在應(yīng)該能明白為什么你需要寫漢字的腳本就可以了吧。在這里解釋一下為什么如果業(yè)務(wù)存在功能修改這種情況,自動(dòng)化腳本的修改量會(huì)小,還是以這個(gè)登錄腳本為例,加入現(xiàn)在輸入用戶名和密碼的輸入框順序變了,在你的頁面顯示上,可能是從左下角移到中間了,這種變化,那么feature文件你不用改,只需要改step_definition腳本就好了。

            運(yùn)行報(bào)告

            calabash-android支持很多報(bào)告生成模式,支持html,json,junit等等報(bào)告模式,只需要你在run的時(shí)候添加-f參數(shù)-o參數(shù)就可以了。

            例如 calabash-android run xxxx.apk -f html -o report.html,上圖展示一下強(qiáng)大html報(bào)告

          posted on 2013-07-31 10:31 順其自然EVO 閱讀(641) 評(píng)論(0)  編輯  收藏 所屬分類: android

          <2013年7月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 环江| 伊宁县| 吉安市| 西安市| 贡山| 新兴县| 治县。| 石楼县| 保山市| 栾城县| 宁阳县| 增城市| 始兴县| 云阳县| 恩平市| 韩城市| 东乡族自治县| 峡江县| 平阴县| 日照市| 衢州市| 佛教| 伊吾县| 纳雍县| 黄冈市| 绥芬河市| 买车| 和田县| 余姚市| 布尔津县| 南安市| 房产| 长丰县| 西宁市| 昌平区| 东阳市| 商丘市| 吴川市| 清镇市| 盐源县| 共和县|