qileilove

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

          使用Jazz Automation編寫自動(dòng)化測(cè)試

            Jazz Automation是一個(gè)測(cè)試框架,構(gòu)建它的目的是為所有類型的Web系統(tǒng)或者靜態(tài)網(wǎng)站自動(dòng)化同時(shí)加速驗(yàn)收/功能測(cè)試。它還能夠容易地實(shí)現(xiàn)自動(dòng)化集成測(cè)試。以前的時(shí)候這種類型的測(cè)試需要人工完成,勞動(dòng)強(qiáng)度大又不準(zhǔn)確。借助于自動(dòng)化測(cè)試,公司能夠創(chuàng)造高質(zhì)量的應(yīng)用程序,創(chuàng)造的產(chǎn)品bug更少,同時(shí)又加快了投入市場(chǎng)的速度。Jazz Automation支持以下Web瀏覽器:IE、Firefox、Safari和Chrome。
            Jazz Automation和其他的自動(dòng)化測(cè)試框架不同,它允許測(cè)試編寫者使用純英語(yǔ)描述軟件的工作原理。
            大多數(shù)自動(dòng)化測(cè)試框架在執(zhí)行測(cè)試之前必須使用Java和Ruby這樣的語(yǔ)言編程,例如Selenium和Cucumber。Jazz Automation提供了一個(gè)抽象層,測(cè)試編寫者和配置人員不需要編程。
            編寫第一個(gè)測(cè)試腳本
            讓我們看看下面這個(gè)測(cè)試一個(gè)電子商務(wù)網(wǎng)站的規(guī)格。
          Feature: Go to the Amazon web site, search for Harry Porter in the book section. Find
          Harry Potter and the Chamber of Secrets (book2) and then add it to the cart.
          Background: Establish the test settings for the test
          Given the following settings:
          | url             | http://www.amazon.com |
          | platform        | Vista                 |
          | browser         | firefox               |
          | browser version | 23                    |
          Scenario: Verify that we have an empty cart on the amazon home page
          Given I am ON the "HomePage"
          Then I should EXPECT
          | cartCount       | 0                     |
          Scenario: Search for Harry Porter from the books category
          Given I am ON "HomePage"
          And I click "allButton"
          And I select
          | selectCategory  | Books                  |
          And I enter
          | searchField     | Harry Potter           |
          And I click "go"
          And I wait 5 seconds
          Then I should be ON the "SearchResultsPage"
          Scenario: From the Search Results Page, verify the first result Special
          Edition Harry Potter Paperback Box Set
          Given I am ON "SearchResultsPage"
          Then I should EXPECT
          | firstResult           | Special Edition Harry Potter Paperback Box Set |
          | chamberOfSecretsBook2 | visible
          |
          Scenario: Click on the Chamber Of Secrets Book2 to reveal the details
          Given I am ON "SearchResultsPage"
          And I CLICK "chamberOfSecretsBook2"
          Then I should be ON the "BookDetailPage"
          Scenario: Verify the details
          Given I am ON the "BookDetailPage"
          Then I should EXPECT
          | kindlePrice          | $7.99                    |
          | hardcoverPrice       | $13.94                   |
          | paperbackPrice       | $8.56                    |
          Scenario: Add the book to my cart
          Given I am ON the "BookDetailPage"
          And I click "hardcover"
          And I click "addToCart"
          Then I should be ON the "PreCheckoutPage"
          Scenario: On the pre-checkout page, verify the details
          Given I am ON the "PreCheckoutPage"
          Then I should EXPECT
          | orderSubtotal            | 13.94       |
          | cartCount                | 1           |
          Scenario: proceed to checkout
          Given I am ON the "PreCheckoutPage"
          And I click "proceedToCheckout"
          Then I should be ON the "SignInPage"
          The test script should be extremely easy to read and understand, right?
           上面顯示的測(cè)試用例所使用的語(yǔ)言是Gherkin。Gherkin是一種領(lǐng)域特定語(yǔ)言(DSL),它允許用戶使用純的、可理解的英語(yǔ)描述一個(gè)應(yīng)用程序應(yīng)該如何工作。在開發(fā)測(cè)試腳本的時(shí)候,腳本編寫者不需要理解或者描述實(shí)現(xiàn)。上面的規(guī)格大部分都是自由的文本,但是Gherkin也有一些關(guān)鍵詞:Feature、Scenario、Given、When、And和Then。Jazz Automation擴(kuò)展了這個(gè)關(guān)鍵詞列表,增加了Expect、On、Click、Hover、Wait、Refresh、Enter、Select、Forward、Backward、Visible和Invisible。
            與Gherkin相關(guān)的內(nèi)容有很多,本文只討論了其中的一部分;但是必須要清楚的一件事情是:它使用基于行的格式,必須保證完整性讓它能夠清楚如何為每一個(gè)功能執(zhí)行相關(guān)步驟。
            借助于Jazz Automation,執(zhí)行上面的測(cè)試我們不需要使用Java、Ruby等語(yǔ)言編寫任何代碼。使用Jazz Automation,每一個(gè)網(wǎng)站頁(yè)面都必須被定義為一個(gè)頁(yè)面(Page)。JSON和XML都可用于頁(yè)面配置。每一個(gè)頁(yè)面都包含了能夠讓Jazz Automation驗(yàn)證頁(yè)面是否被正確加載的高層屬性。同時(shí),每一個(gè)頁(yè)面還應(yīng)該有一個(gè)或者多個(gè)元素的定義。仔細(xì)看看上面的這個(gè)規(guī)格,你將會(huì)注意到有一些單詞是用雙引號(hào)括起來(lái)的。雙引號(hào)中的對(duì)象對(duì)于Jazz Automation而言是非常重要的。它們代表了頁(yè)面對(duì)象或者頁(yè)面上的元素。對(duì)于每一個(gè)項(xiàng)目,這些元素定義在一個(gè)或者多個(gè)頁(yè)面文件中。
            讓我們看看測(cè)試文件夾的目錄結(jié)構(gòu)。
            首先我們注意一下/features目錄。我們應(yīng)該將所有的測(cè)試規(guī)格都保存在這里。文件是.feature類型的,Jazz Automation可以一次性執(zhí)行一個(gè)或者多個(gè)功能。功能和它們的執(zhí)行順序定義在jazz.properties文件中。其次,我們注意到在/pages目錄下有一些“頁(yè)面文件”。該目錄是測(cè)試配置程序(Test Configurator)定義每一個(gè)頁(yè)面和頁(yè)面元素的地方,定義的內(nèi)容將會(huì)在測(cè)試期間訪問(wèn)。測(cè)試規(guī)格只能引用在這里定義的頁(yè)面和在頁(yè)面文件中定義的頁(yè)面元素。稍后我們將會(huì)介紹如何為頁(yè)面文件自定義位置。在文章的最后,我們將會(huì)介紹強(qiáng)制的jazz.properties文件,現(xiàn)在我們先跳過(guò)它。
            繼續(xù)頁(yè)面配置
            測(cè)試配置程序是正確配置一個(gè)Jazz Automation測(cè)試的關(guān)鍵。Jazz Automation支持使用JSON和XML進(jìn)行頁(yè)面配置。
            測(cè)試配置員需要對(duì)jQuery這樣的web技術(shù)有一定的經(jīng)驗(yàn)。測(cè)試配置員需要為要訪問(wèn)的每一個(gè)Web頁(yè)面創(chuàng)建一個(gè)頁(yè)面(Page)。
            一個(gè)頁(yè)面有一些必須的屬性。每一個(gè)頁(yè)面必須有一個(gè)pageName屬性,同時(shí)至少有一個(gè)domElement。功能會(huì)頻繁地使用pageName,同時(shí)它應(yīng)該是有意義的,這樣測(cè)試員才能夠準(zhǔn)確地知道它所引用的Web頁(yè)面。DomElements是用于驗(yàn)證軟件的Web頁(yè)面元素。通常情況下它們指標(biāo)簽值、下拉框值、圖片、按鈕、顯示的數(shù)據(jù)(定價(jià)等)。這些元素的名稱應(yīng)該是有意義的,這樣測(cè)試編寫者才能夠理解每一個(gè)組件的目的。
            讓我們看看下面這個(gè)JSON頁(yè)面配置。
          {
          "pageName":"HomePage",
          "title": "Amazon.com: Online Shopping for Electronics, Apparel,
          Computers, Books, DVDs & more",
          "urlExtension": "www.amazon.com",
          "keyDomElementName": "searchField",
          "domElements" :
          {
          "cartCount" :
          {
          "jquery": "$('#nav-cart-count')"
          },
          "allButton" :
          {
          "jquery": "$('#nav-search-in')"
          },
          "selectCategory" :
          {
          "jquery": "$('#searchDropdownBox')"
          },
          "searchField" :
          {
          "jquery": "$('#twotabsearchtextbox')"
          },
          "go" :
          {
          "jquery": "$('.nav-submit-input')"
          }
          }
          }
          我們定義一個(gè)頁(yè)面配置文件的關(guān)鍵組件。
            就是這樣!
            一旦剩下的頁(yè)面被定義完,我們就能夠通過(guò)“完成”運(yùn)行場(chǎng)景了。測(cè)試配置員必須要清楚下面的內(nèi)容之一:jQuery、XPath或者CSS。我們使用它們“選擇”需要測(cè)試的Web元素。jQuery是Jazz Automation最喜歡的選擇器機(jī)制,同時(shí)對(duì)于大多數(shù)QA分析師而言他們要學(xué)會(huì)jQuery只需要幾天的時(shí)間,特別是有那么多的在線教程并且可以使用現(xiàn)代Web瀏覽器的開發(fā)者工具。
            普通配置
            要討論的最后一部分內(nèi)容是必須的jazz.properties文件。該配置文件包含一些普通的配置項(xiàng),例如項(xiàng)目名稱(用于報(bào)告)、一個(gè)表明測(cè)試應(yīng)該在遠(yuǎn)程運(yùn)行還是在本地系統(tǒng)上運(yùn)行的標(biāo)記、動(dòng)作和頁(yè)面速度以及要執(zhí)行的功能。其他的可選配置屬性我們就不在此一一介紹了。
          #project name
          projectName: Amazon
          # turn on remote support. if useRemote true, you must specify the following
          remoteWebDriverUrl property.
          useRemote: false
          # remote web driver url - usually your sauceLabs url
          remoteWebDriverUrl: http://jazzautomation:****@ondemand.saucelabs.com:80/wd/hub
          # you can customize you folder name of pages. By default it is pages
          #pagesDirectoryName: pages
          # page pacing between two pages loading
          pagePace: 10
          #action pacing between two actions on the same page. The default value is "1 second".
          actionPace: 1
          # features: can be a list of features, separated by comma
          features:searchForHarryPotter
            報(bào)告
            對(duì)于每一個(gè)測(cè)試,Jazz Automation都會(huì)產(chǎn)生一個(gè)描述測(cè)試運(yùn)行詳細(xì)信息的報(bào)告。如果測(cè)試執(zhí)行成功了,那么會(huì)生成一個(gè)展示成功率為100%的簡(jiǎn)單報(bào)告。如果測(cè)試執(zhí)行失敗了,那么會(huì)對(duì)錯(cuò)誤發(fā)生的地方創(chuàng)建一個(gè)屏幕截圖并插入到報(bào)告中。除此之外,報(bào)告是根據(jù)測(cè)試運(yùn)行期間產(chǎn)生的數(shù)據(jù)文件生成的。該數(shù)據(jù)文件可用于歷史追蹤、圖表和趨勢(shì)分析。
            讓我們看看下面這個(gè)失敗的測(cè)試報(bào)告:
            
            結(jié)論
            到現(xiàn)在為止我們已經(jīng)結(jié)束了使用Jazz Automation編寫自動(dòng)化測(cè)試的旅程。對(duì)于好奇的讀者,還有大量的內(nèi)容需要學(xué)習(xí)。例如,Jazz Automation還能夠通過(guò)Sauce Labs這樣的公司所提供的技術(shù)在遠(yuǎn)程使用,這樣的話你的組織就不需要維護(hù)進(jìn)行全范圍測(cè)試所必須的每一種瀏覽器和操作系統(tǒng)的可能組合。你還能夠深入探索Jazz Automation如何應(yīng)用于沒(méi)有使用jQuery的網(wǎng)站。提示:這需要使用動(dòng)態(tài)插入。
            Jazz Automation還通過(guò)用戶界面測(cè)試和提供即時(shí)反饋完成了持續(xù)集成的循環(huán)。這比以往任何時(shí)候都要更加重要,因?yàn)楫a(chǎn)業(yè)已經(jīng)轉(zhuǎn)移到富HTML5和JavaScript用戶界面上了。組織需要立即知道應(yīng)用程序自上而下都在按照期望運(yùn)行。另外,使用Gherkin作為我們的領(lǐng)域特定語(yǔ)言還允許關(guān)鍵的利益相關(guān)方明確地表達(dá)出他們對(duì)系統(tǒng)應(yīng)該如何工作、如何與技術(shù)資源有效溝通的理解,讓開發(fā)團(tuán)隊(duì)能夠解放出來(lái)專心構(gòu)建產(chǎn)品。
            我們不能將Jazz Automation錯(cuò)誤地理解為可以替代傳統(tǒng)的單元測(cè)試和集成測(cè)試框架,例如JUnit和TestNG。單元測(cè)試和集成測(cè)試在成功的軟件開發(fā)中依然非常重要,Jazz Automation只是更進(jìn)了一步,用戶能夠使用它編寫針對(duì)用戶界面的自動(dòng)化測(cè)試。另外,Jazz Automation是DOM級(jí)別的測(cè)試,所以你能夠在一個(gè)Web頁(yè)面中到處移動(dòng)條目,這樣并不會(huì)導(dǎo)致測(cè)試錯(cuò)誤。
            自動(dòng)化用戶界面測(cè)試并不是每一個(gè)組織優(yōu)先考慮的事情,但是如果首先考慮了它,那么前端測(cè)試和回歸測(cè)試就不會(huì)讓你再次慢下來(lái)。
            關(guān)于作者
            Dedrick Boyd 是一位老道的IT專家,他在完整軟件開發(fā)和產(chǎn)品生命周期等領(lǐng)域有豐富的經(jīng)驗(yàn)。他有技術(shù)技能,同時(shí)擁有管理各種產(chǎn)業(yè)中的大型和小型開發(fā)團(tuán)隊(duì)的經(jīng)驗(yàn),包括零售業(yè)、制藥業(yè)、媒體及娛樂(lè)、醫(yī)療保健和金融服務(wù)業(yè)。Dedrick現(xiàn)在就職于Statement,在那里他是一位技術(shù)創(chuàng)新者,同時(shí)也是一位關(guān)系經(jīng)理。他擁有佛羅里達(dá)州立大學(xué)管理信息系統(tǒng)(Management Information Systems)的學(xué)士學(xué)位。Dedrick的業(yè)余愛好包括:環(huán)游世界、讀書、烹飪、美式足球和與家人共度光陰。

          posted on 2014-06-30 18:48 順其自然EVO 閱讀(205) 評(píng)論(0)  編輯  收藏 所屬分類: selenium and watir webdrivers 自動(dòng)化測(cè)試學(xué)習(xí)

          <2014年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 潍坊市| 杭锦后旗| 井冈山市| 宁城县| 惠安县| 错那县| 石柱| 固镇县| 宁蒗| 沅陵县| 克东县| 双峰县| 沁源县| 海南省| 甘孜| 水城县| 阿巴嘎旗| 东乌珠穆沁旗| 夏邑县| 大关县| 九龙县| 桦甸市| 马尔康县| 浦北县| 巴中市| 蓬安县| 滨州市| 赣州市| 伊川县| 札达县| 洱源县| 建湖县| 读书| 准格尔旗| 隆子县| 阿拉善右旗| 肃南| 普宁市| 新巴尔虎右旗| 会同县| 息烽县|