qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          使用Jazz Automation編寫自動化測試

            Jazz Automation是一個測試框架,構建它的目的是為所有類型的Web系統或者靜態網站自動化同時加速驗收/功能測試。它還能夠容易地實現自動化集成測試。以前的時候這種類型的測試需要人工完成,勞動強度大又不準確。借助于自動化測試,公司能夠創造高質量的應用程序,創造的產品bug更少,同時又加快了投入市場的速度。Jazz Automation支持以下Web瀏覽器:IE、Firefox、Safari和Chrome。
            Jazz Automation和其他的自動化測試框架不同,它允許測試編寫者使用純英語描述軟件的工作原理。
            大多數自動化測試框架在執行測試之前必須使用Java和Ruby這樣的語言編程,例如Selenium和Cucumber。Jazz Automation提供了一個抽象層,測試編寫者和配置人員不需要編程。
            編寫第一個測試腳本
            讓我們看看下面這個測試一個電子商務網站的規格。
          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?
           上面顯示的測試用例所使用的語言是Gherkin。Gherkin是一種領域特定語言(DSL),它允許用戶使用純的、可理解的英語描述一個應用程序應該如何工作。在開發測試腳本的時候,腳本編寫者不需要理解或者描述實現。上面的規格大部分都是自由的文本,但是Gherkin也有一些關鍵詞:Feature、Scenario、Given、When、And和Then。Jazz Automation擴展了這個關鍵詞列表,增加了Expect、On、Click、Hover、Wait、Refresh、Enter、Select、Forward、Backward、Visible和Invisible。
            與Gherkin相關的內容有很多,本文只討論了其中的一部分;但是必須要清楚的一件事情是:它使用基于行的格式,必須保證完整性讓它能夠清楚如何為每一個功能執行相關步驟。
            借助于Jazz Automation,執行上面的測試我們不需要使用Java、Ruby等語言編寫任何代碼。使用Jazz Automation,每一個網站頁面都必須被定義為一個頁面(Page)。JSON和XML都可用于頁面配置。每一個頁面都包含了能夠讓Jazz Automation驗證頁面是否被正確加載的高層屬性。同時,每一個頁面還應該有一個或者多個元素的定義。仔細看看上面的這個規格,你將會注意到有一些單詞是用雙引號括起來的。雙引號中的對象對于Jazz Automation而言是非常重要的。它們代表了頁面對象或者頁面上的元素。對于每一個項目,這些元素定義在一個或者多個頁面文件中。
            讓我們看看測試文件夾的目錄結構。
            首先我們注意一下/features目錄。我們應該將所有的測試規格都保存在這里。文件是.feature類型的,Jazz Automation可以一次性執行一個或者多個功能。功能和它們的執行順序定義在jazz.properties文件中。其次,我們注意到在/pages目錄下有一些“頁面文件”。該目錄是測試配置程序(Test Configurator)定義每一個頁面和頁面元素的地方,定義的內容將會在測試期間訪問。測試規格只能引用在這里定義的頁面和在頁面文件中定義的頁面元素。稍后我們將會介紹如何為頁面文件自定義位置。在文章的最后,我們將會介紹強制的jazz.properties文件,現在我們先跳過它。
            繼續頁面配置
            測試配置程序是正確配置一個Jazz Automation測試的關鍵。Jazz Automation支持使用JSON和XML進行頁面配置。
            測試配置員需要對jQuery這樣的web技術有一定的經驗。測試配置員需要為要訪問的每一個Web頁面創建一個頁面(Page)。
            一個頁面有一些必須的屬性。每一個頁面必須有一個pageName屬性,同時至少有一個domElement。功能會頻繁地使用pageName,同時它應該是有意義的,這樣測試員才能夠準確地知道它所引用的Web頁面。DomElements是用于驗證軟件的Web頁面元素。通常情況下它們指標簽值、下拉框值、圖片、按鈕、顯示的數據(定價等)。這些元素的名稱應該是有意義的,這樣測試編寫者才能夠理解每一個組件的目的。
            讓我們看看下面這個JSON頁面配置。
          {
          "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')"
          }
          }
          }
          我們定義一個頁面配置文件的關鍵組件。
            就是這樣!
            一旦剩下的頁面被定義完,我們就能夠通過“完成”運行場景了。測試配置員必須要清楚下面的內容之一:jQuery、XPath或者CSS。我們使用它們“選擇”需要測試的Web元素。jQuery是Jazz Automation最喜歡的選擇器機制,同時對于大多數QA分析師而言他們要學會jQuery只需要幾天的時間,特別是有那么多的在線教程并且可以使用現代Web瀏覽器的開發者工具。
            普通配置
            要討論的最后一部分內容是必須的jazz.properties文件。該配置文件包含一些普通的配置項,例如項目名稱(用于報告)、一個表明測試應該在遠程運行還是在本地系統上運行的標記、動作和頁面速度以及要執行的功能。其他的可選配置屬性我們就不在此一一介紹了。
          #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
            報告
            對于每一個測試,Jazz Automation都會產生一個描述測試運行詳細信息的報告。如果測試執行成功了,那么會生成一個展示成功率為100%的簡單報告。如果測試執行失敗了,那么會對錯誤發生的地方創建一個屏幕截圖并插入到報告中。除此之外,報告是根據測試運行期間產生的數據文件生成的。該數據文件可用于歷史追蹤、圖表和趨勢分析。
            讓我們看看下面這個失敗的測試報告:
            
            結論
            到現在為止我們已經結束了使用Jazz Automation編寫自動化測試的旅程。對于好奇的讀者,還有大量的內容需要學習。例如,Jazz Automation還能夠通過Sauce Labs這樣的公司所提供的技術在遠程使用,這樣的話你的組織就不需要維護進行全范圍測試所必須的每一種瀏覽器和操作系統的可能組合。你還能夠深入探索Jazz Automation如何應用于沒有使用jQuery的網站。提示:這需要使用動態插入。
            Jazz Automation還通過用戶界面測試和提供即時反饋完成了持續集成的循環。這比以往任何時候都要更加重要,因為產業已經轉移到富HTML5和JavaScript用戶界面上了。組織需要立即知道應用程序自上而下都在按照期望運行。另外,使用Gherkin作為我們的領域特定語言還允許關鍵的利益相關方明確地表達出他們對系統應該如何工作、如何與技術資源有效溝通的理解,讓開發團隊能夠解放出來專心構建產品。
            我們不能將Jazz Automation錯誤地理解為可以替代傳統的單元測試和集成測試框架,例如JUnit和TestNG。單元測試和集成測試在成功的軟件開發中依然非常重要,Jazz Automation只是更進了一步,用戶能夠使用它編寫針對用戶界面的自動化測試。另外,Jazz Automation是DOM級別的測試,所以你能夠在一個Web頁面中到處移動條目,這樣并不會導致測試錯誤。
            自動化用戶界面測試并不是每一個組織優先考慮的事情,但是如果首先考慮了它,那么前端測試和回歸測試就不會讓你再次慢下來。
            關于作者
            Dedrick Boyd 是一位老道的IT專家,他在完整軟件開發和產品生命周期等領域有豐富的經驗。他有技術技能,同時擁有管理各種產業中的大型和小型開發團隊的經驗,包括零售業、制藥業、媒體及娛樂、醫療保健和金融服務業。Dedrick現在就職于Statement,在那里他是一位技術創新者,同時也是一位關系經理。他擁有佛羅里達州立大學管理信息系統(Management Information Systems)的學士學位。Dedrick的業余愛好包括:環游世界、讀書、烹飪、美式足球和與家人共度光陰。

          posted on 2014-06-30 18:48 順其自然EVO 閱讀(204) 評論(0)  編輯  收藏 所屬分類: selenium and watir webdrivers 自動化測試學習

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

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 武功县| 习水县| 那坡县| 兴安盟| 星子县| 通江县| 原阳县| 元谋县| 漳平市| 平远县| 手机| 章丘市| 娄底市| 万安县| 凤凰县| 临桂县| 四川省| 潼南县| 高雄市| 普兰县| 淳化县| 墨竹工卡县| 西峡县| 荔波县| 巢湖市| 开鲁县| 汶川县| 家居| 黄山市| 巴林右旗| 鹤庆县| 沁源县| 高碑店市| 天等县| 北安市| 乐陵市| 云林县| 通辽市| 库尔勒市| 光山县| 巴彦县|