• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    自動執行驗收測試用 IronRuby

    發布: 2009-6-17 17:28 | 作者: 網絡轉載 | 來源: 領測軟件測試網采編 | 查看: 63次 | 進入軟件測試論壇討論

    領測軟件測試網 本文討論: 什么驗收測試? 自動的驗收測試 實現驗收測試 本文涉及以下技術:
    IronRuby
     內容 什么驗收測試?
    自動接受測試
    文章
    方案
    執行驗收測試
    與 C# 對象進行交互的 RSpec 方案 Runner
    驗收測試用戶界面
    向前移動
    當客戶要求可以被正確傳遞而不必浪費時間實現不完整或不正確功能日的幾乎每個開發人員 dreams。 豈不是很好如果我們未能向客戶手動清除,可讀規格并要求他們是否與匹配后中,我們可能運行不為驗證是否根據這些要求實現任何其他努力完全該同一規格其功能要求? 使用接受測試和可執行文件規范的概念,可以成功地完成此級別的客戶和開發人員之間的通信。 通過利用驅動開發 (BDD) 的行為,我們可以開始通信要求更有效地。 2 月 2009 月刊中我文章中 MSDN 雜志 》 (" 入門 IronRuby 和 RSpec,第 1 部分 "),我引入 IronRuby 并演示如何它允許您使用動態拼寫的語言與.NET 兼容代碼 (如 C# 互操作。 本文,我將向您介紹驗收測試的概念。 通過我以前的文章中引入的概念的構建,我將演示如何驗收測試才能自動使用 IronRuby 和 RSpec 驗證.NET 應用程序,并創建為系統的可執行文件規范。
    什么驗收測試?驗收測試已與許多不同的定義。 對于我,驗收測試是更多有關驗證開發系統滿足客戶的要求和有關減少在代碼中的錯誤數較少。 換句話說,驗收測試將是不是有關測試代碼,但有關生成哪些客戶或業務需要。 這聽起來很明顯,但缺少驗收測試和了解要求類似缺乏主要原因很多項目失敗。 驗收測試僅適用于支持該的客戶或在至少一個代理客戶,可幫助定義條件。 沒有人推動驗收標準您沒有要進行驗證軟件正確,這使得難以驗證要生成正確的軟件。 在客戶一起開發團隊的所有成員應一起來自定義方面可測試"方案"介紹系統必須執行和如何它必須實現它的許多系統。 例如如果我們已開發的電子開始系統,一個驗收測試可能基于購物車的交互。 典型的方案可能,"如果購物車為空,我添加產品 123,然后項目計數應增加為 1 并且分類匯總應為 ¥20"。 這提供了解如何客戶期望購物車,行為,并提供驗證實現一些步驟。 隨著系統的增長您必須驗證系統和功能集的不同部分的多個方案。 還的重要的考慮因素編寫方案時是使用的語言。 所使用的語言應反映業務如何了解該的問題不如何開發人員將實現該解決方案。 如果測試描述的實際的實現"當我單擊按鈕標簽確認更改提交",則這將向客戶提供較少的值并將依賴于如何實際實現系統。 如果這些實際的實現更改但業務要求保持不變,然后該依賴項將需要額外的維護成本為該團隊必須更新相關的測試。 通過清除的要求和傳遞條件創建測試,軟件表示會議客戶的期望的多好機會。 但是,這仍需要用戶手動驗證滿足了要求和應用程序正常工作。 這是其中自動的接受測試的理念有。 而不是文件共享上過期文檔中被要求,要求被定義為示例和方案,到與實現的項目的源代碼管理簽并可以隨時以驗證是否實現任何要求和正常運行。 您可以將同樣的方法編寫該的測試的但編寫而它們在測試用例管理軟件或電子表格中,不是您編寫其代碼中直接
    自動接受測試驗收測試有助于驗證您構建客戶而自動執行這些方案允許您不斷驗證整個開發過程的實現,和它們使用作為您的回歸測試套件的一部分,以確保以后的更改不違反存在要求需要應用的程序。 但是,具有客戶涉及編寫尤其是自動測試的測試,引入了許多潛在的問題。 一般情況下,客戶,將 nontechnical,并傾向于 shy 離實際開發的軟件。 通過與技術團隊協作,客戶可以提供輸入和測試人員時的示例,或開發人員可以快速編碼方案和可執行文件的規格。 此外,方案必須清除任何業務中。 通過 IronRuby 可以提高可讀性測試,但如何執行在實踐中的此工作的? 若要說明如何此過程可能用于實際項目,我將演示實現周圍價格計算系統的一個用戶部分。 一個簡單的示例但希望它將演示所涉及的步驟。 驗收測試的可以在如何處理該的問題是一個框架,并且有很多變種和解釋。 然而,這應提供您允許您向前轉并找出的詳細技術工作的基本概念。 此示例附帶超出"紅色、 綠色,Refactor"我為在本地用戶組的演示文稿。 之后,與會者之一要求我建議在如何他可以有效地單元測試其應用程序以確保所有價格計算,包括各種選項和添加到包,已被正確都計算。 此示例是一個完全演示驗收測試的非常有用。 通過一個文字部分和價格和您希望發生這種情況的方案,您可以確信系統正常工作。 這些驗證也將變為有用的開發團隊和客戶來演示不同的示例系統的工作方式以及各種異常文檔源。 如果客戶認為的價格不對,則團隊可以引用客戶批準作為完成工作的證據可執行文件規范。 不在位置這些測試周圍定價規則將可能中定義大試圖說明系統處理各種定價配置-本質上斷開系統開發的文檔的 Word 文檔。 這就是為什么我相信自動的驗收測試的原因。
    文章在開發使用驗收測試的目的的價格計算系統時第一個階段是讓 Everyone 一個房間內定義文字部分。 客戶定義所需使用 encouragement 從團隊的技術成員。 使用 BDD,以前的文章中提到要使用集格式用于定義內容以支持一種一致的語言之間團隊,和具體來說是客戶所需的成員。 給定以下格式,將填寫幫助客戶詳細信息: 為 [角色] 我希望 [功能] 因此 [結果]。 直接的錯誤通常是啟動包括篇文章中的實現細節。 例如: 以管理員身份,我希望在 Default.aspx,柵格視圖中顯示的價格,以便與成本將它們提供。 文字部分必須僅在特定的業務方面描述問題并調整清除的技術詳細信息。 改進了的示例可能是這樣: 作為一銷售管理員我希望被標識為客戶,以便與成本將它們提供的價格。 遺憾的是,它遵循格式時, 它提供了一些很松散的信息并它不會將起始點為實現。 更好的示例是: 作為一銷售管理員希望能夠查看價格產品 x,以便我可以為客戶提供根據其要求的準確成本。 這篇文章向我們提供更多詳細信息和有關哪些客戶需要發生和他們真正想的多個上下文。 結果,它是對我們非常有用實現系統時。 記住編寫案例和功能時的一個重要事實是使其為盡可能集中。 將使其更易于創建方案,編寫該的測試和實現完成的代碼。 某些的系統可能是文章基礎圍繞一項功能。
    方案即使有一篇的文章您仍需要發生需要的內容的詳細信息。 方案可非常用于此。 一個方案只是指出在某些上下文指定如果出現問題 (輸出應為此。 目的是提供一個更具體的示例文章的實現應在不同情況下的行為方式。 這將通信給團隊的期望,并提供用于驗證的步驟。 要使用推薦的語法稱為給定,時,然后 (GWT) 語法由 Dan North 升級: 當指定 [上下文],[出現問題],然后 [結果]。 示例方案可能如下: 不支持的方案: 單用戶許可證的產品 X 產品 X 給定當用戶請求一個用戶許可證,而這不包括支持,然后價格應為 ¥250。 使用","能用于連接多個上下文或結果,以便您可以提供更多的意義方案并提供有關所發生的情況的更多信息。 理想情況下,應該有許多情況下,以解決任何多義性,作為該可執行文件的規格并提供初始工作開始的足夠的信息。 值得注意不修復這些方案。 為工作繼續并獲得更多知識,您可能需要返回到客戶有關現有方案的問題或創建基于獲得的知識的其他方案。 編寫方案時, 會有一些事項需要注意。 與案例,方案應將側重于一個示例。 為此,主要原因是可讀性。 如果方案執行過多,然后將該核心消息會丟失。
    執行驗收測試一旦擁有文章和方案清除、 易于理解的格式下, 一階段是自動執行部分和方案。 這樣,他們要來跟蹤進度,并捕獲回歸錯誤的開發過程中運行。 同時我將會討論方面 RSpec,基本過程可以傳送到任何 BDD 框架中。 有關安裝 IronRuby 以及 RSpec 的詳細信息,請參見我前面提到的文章。 如果您按照前面示例編寫您的案例,然后您會發現方案 Runner RSpec 中很自然。 將普通的空文件中文件名為 pricing_scenarios_for_product_x,本例中您只需復制文章和方案到該文件按以下格式: 復制代碼 Story: Pricing for New Product X As a sales administrator, I want to be able to view prices for product x so that I can provide customers with an accurate cost for their requirements. Scenario: Single User License for Product X without support Given Product X When user requests a 1 user license And this does not include support Then the price should be $250 這現在基礎我們驗收標準,并驗證應用程序時將被使用。 但是,以便其作為該可執行文件的規格,您需要一些拼寫的代碼來執行它們。 IronRuby 是一個簡單的環境,以啟動寫入和執行代碼。 只需創建一個文件使用.rb 擴展名,并重開始編寫 RSpec 測試。 第一步是引用 RSpec 框架。 這是通過要求指令。 因以下兩行可以啟動使用 RSpec 文章 Runner: 復制代碼 require 'rubygems' require 'spec/story' 現在您可以定義步驟。 一步是在使用 GWT 格式的方案。 與 RSpec,一個步驟就是與代碼中的方法。 每個步驟應與執行只有一個任務關聯。 是例如在給定的步驟設置對象使用,時然后通常是聲明和驗證的出現位置。 使用 RSpec,所有步驟都需要調用 steps_for 塊中換行。 在方括號內是的步驟集標識符: 復制代碼 steps_for(:product_x) do #Steps go here end 每個篇文章中步驟直接與方案中的行。 是例如 RSpec 代碼中的"提供產品 X"的行將對應于下面的步驟方法: 復制代碼 Given("Product $productName at $price") do |productName, price| pending "Need to complete implementation for accessing C# object" end RSpec 將執行的字符串操作允許您在您的步驟中使用占位符,占位符值為一個變量設置為在步驟。 在這種情況下名稱和價格將存儲在該的變量可以重復使用多個不同的產品和基價相同的步驟。 遵循相同的方法時,然后的步驟: 復制代碼 When("user requests a $amount user license") do |amount| pending "Need to complete implementation for accessing C# object" end When("this does not include support") do pending "Need to complete implementation for accessing C# object" end Then("the price should be $price") do |price| pending "Need to complete implementation for accessing C# object" End 您不需要第二個步驟的占位符因為始終是相同的操作在塊沒有參數。 當您執行測試時,RSpec 將調用正確的方法按正確順序基于該的方案定義替換值。 最后,您需要提供文章文件首先創建路徑。 這是調用 with_steps_for,提供定義步驟時使用該標識符的另一個塊。 正文調用運行的方法具有路徑和文件存儲方案的名稱: 復制代碼 with_steps_for(:product_x) do run File.dirname(__FILE__) + "/pricing_scenarios_for_product_x" end 要執行測試,運行 IronRuby 命令行工具 (ir),將作為參數傳入拼寫文件: 復制代碼 >ir pricing_scenarios_for_product_x_story.rb 寫入步驟,時您會發現我已調用掛起的方法。 這是為了表示存在仍需要完成功能的工作。 因此,當我運行了測試,輸出將聲明的所有掛起的任務 (請參見 圖 1 )。 這是很好的可讀性和了解所發生的情況,最后的內容所需為該步驟將傳遞,因為沒有任何實現。  圖 1 的顯示掛起的方法 復制代碼 Running 1 scenarios Story: Pricing for New Product X As a sales administrator, I want to be able to view prices for product x, so that I can provide customers with an accurate cost for their requirements. Scenario: Single User License for Product X without support Given Product X at 250 (PENDING) When user orders a 1 user license (PENDING) And this does not include support (PENDING) Then the price should be 250 (PENDING) 1 scenarios: 0 succeeded, 0 failed, 1 pending Pending Steps: 1. Pricing for New Product X (Single User License for Product X without support): Product $productName at $price 2. Pricing for New Product X (Single User License for Product X without support): user orders a $amount user license 3. Pricing for New Product X (Single User License for Product X without support): this does not include support 4. Pricing for New Product X (Single User License for Product X without support): the price should be $price
    與 C# 對象進行交互的 RSpec 方案 Runner 到目前為止該文章、 方案和步驟位于的位置。 但是,我們未實現任何代碼與我們的系統進行交互。 我以前的文章我重點如何使用 RSpec 規范框架提供了我的 C# 對象工作和驗證它們的實現作為一個獨立單元的方式的示例。 此文章中, 我們正在查看如何使用 RSpec 文章 Runner 接受測試、 側重于驗證完整的應用程序堆棧,而不是獨立的塊。 在第一個任務是引用 C# 程序集。 IronRuby 保存 True 以拼寫的語言構造,并因此,引用 C# 庫與引用拼音庫相同: 復制代碼 require File.dirname(__FILE__) + '/CSharpAssembly/CSharpAssembly/bin/Debug/CSharpAssembly.dll' 現在我們可以開始編寫的我們方案,我們在上一節中定義的主體。 要傳遞方案,我們需要實現該函數用于計算訂單的總價格。 在給定的塊內您初始化該方案所需的對象。 我們方案,初始化所需的唯一對象現在是產品對象。 對象的構造函數需要產品名稱和價格。 同時從方法參數又從該方案本身獲取獲得: 復制代碼 Given("Product $productName at $price") do |productName, price| @product = CSharpNamespace::Product.new(productName, price.to_i) end 獲得初始對象后,我們需要將我們的測試的主題的這些對象上設置變量的狀態,發生時塊。 在我們的情況下,我們狀態用戶已訂購特定數量的許可證,并且我們步需要反映這并相應地設置對象狀態: 復制代碼 When("user orders a $amount user license") do |amount| @order = CSharpNamespace::Order.new(@product) @order.NumberOfLicenses = amount.to_i end 最后,我們是部分,我們實際上驗證上述操作正常。 我們然后的塊中,我們定義我們期望和聲明。 此處,我們花的順序我們創建并驗證分類匯總不會匹配在我們的方案定義該價格。 應將擴展方法創建動態由 RSpec 使我們能夠驗證我們的語句的事實的所有對象 ; 如果它并不 true,然后則會引發一個異常: 復制代碼 Then("the price should be $price") do |price| @order.Subtotal.should == price.to_i end 現在,我們可以通過使用下面的命令執行文章: 復制代碼 >ir pricing_scenarios_for_product_x_story.rb 執行每個方案、 RSpec 將輸出文章和方案以控制臺,如果某個步驟失敗時, 將突出顯示特定的問題并指示末尾總數: 復制代碼 Running 1 scenarios Story: Pricing for New Product X As a sales administrator, I want to be able to view prices for product x, so that I can provide customers with an accurate cost for their requirements. Scenario: Single User License for Product X without support Given Product X at 250 When user orders a 1 user license And this does not include support Then the price should be 250 (FAILED) 1 scenarios: 0 succeeded, 1 failed, 0 pending 如果所有成功,然后以下應顯示在命令行上: 復制代碼 Running 1 scenarios Story: Pricing for New Product X As a sales administrator, I want to be able to view prices for product x, so that I can provide customers with an accurate cost for their requirements. Scenario: Single User License for Product X without support Given Product X at 250 When user orders a 1 user license And this does not include support Then the price should be 250 1 scenarios: 1 succeeded, 0 failed, 0 pending 此時我們可以開始創建附加的、 更復雜方案,以包括更多的業務邏輯。 是例如可以查找這樣的方案中包括該的價的折扣: 復制代碼 Scenario: Single User License for Product X with 20% discount and includes 2 years unlimited premium support. Given Product X When user requests a 1 user license And including 2 years support And support length is unlimited And support type is premium And with 20% discount Then the price should be $800 如前面提到這些情況下將使用業務術語,使其在業務不僅不是客戶,但任何人都可讀。
    驗收測試用戶界面在我的示例,以便測試是否邏輯正常專注于業務邏輯和域對象在驗收測試。 但呢如何用戶與應用程序交互? 這些驗收測試應該有驗證邏輯是否正確從用戶的角度來看,該用戶的角度來看,在用戶界面。 個人,我認為驗收測試應側重于應用程序邏輯和決定要執行以下重要部分代碼。 如果您的應用程序具有,好 decoupling 和從用戶界面代碼正確分離邏輯,這會使測試更容易實現。 如果您要測試此級別,測試不會更改受影響到 UI。 測試僅應該關注邏輯時, 這并不意味著您不應具有 UI 圍繞任何驗收測試。 我喜歡有在核心"快樂路徑"UI 的目標的一組冒煙測試。 在關注用戶最可能使用的大多數值從最少量的測試目的的應用程序的部分。 如果您嘗試涵蓋所有可能的路徑和在的 UI 的使用,并且在用戶界面更改 (如移動到不同的對話框的選項),則將需要更改所有測試。 是例如如果您已測試的電子商務站點 UI,快樂的路徑將為向選擇項目、 將其添加到您的購物車、 簽出,以及查看采購的確認。 如果將失敗這種情況下您真正需要知道越早越好。 對于某些,根據上應用程序的復雜性和壽命,您可能需要有更多的驗收測試以確保在 UI 層擁有更多的信任 UI 上運行。 成功測試用戶界面是一個復雜的主題但,我沒有足以此空間。 我建議閱讀我 博客發布項目上用于測試 WPF 白色 和 用于測試 Web 應用程序的 WatiN . 此外,James McCaffrey 已寫入 使用 Windows PowerShell 的 UI 自動化 2007 年 12 月發布的 MSDN 雜志 》 .
    向前移動到目前為止,現在可以開始將 IronRuby 從事驗收測試。 該信息應讓您啟動,但您應記住的一些事項。 一個可能的問題是這時 IronRuby 不供生產使用。 雖然您可以立即使用它,有正在繼續開發和 IronRuby 和 RSpec 的優化。 這意味著 Bug 修復而且重要更改的可能性。 另外還有問題的 RSpec 的執行速度。 但是,值得評估該問題是否超過簡化測試中的優點。 有些人可能充當一些的另一個問題與上下文切換。 通常,人員想編寫測試和生產代碼相同的語言。 通常同意,單元測試執行大量的每日的開關時您可能不需要使用 IronRuby 和 RSpec。 但是,進行驗收測試,量所需的上下文切換是更低。 因此,我認為可以調整上下文切換到利用可讀性和編寫的驗證和方案,因為它們將客戶和開發團隊提供極大的好處的更自然的方式。 最后,集成驗收測試到開發過程可以是為開發組織一個 hugely 正步驟。 通過使用技術,例如案例和方案結合可讀的但自動驗收測試面向客戶的條件中, 定義的功能,將能夠使用您的客戶創建更受信任的合作關系,并始終提供更強大和可靠的軟件。
    Ben Hall 是英國 C# 開發 / 測試人員與 for Software Development 的強熱情。 他喜歡編寫代碼。 Ben 的工作方式在紅色 Gate 軟件測試工程師,并且受瀏覽包括手動和自動測試、 測試不同類型的應用程序的最佳方式所關注的測試軟件的不同的方式。 Ben 是 C# MVP,并維護在博客 Blog.BenHall.Me.uk

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: 驗收 自動 IronRuby


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>