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

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

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

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

    (一)跨越邊界: 在集成框架中進行測試-在 Ruby on Rails 中進行單元測試

    發布: 2009-4-02 10:15 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 41次 | 進入軟件測試論壇討論

    領測軟件測試網 Java ™ 社區在推進自動單元測試方面已經做了一項激動人心的工作。越來越多的開放源碼框架支持在構建項目的同時構建自動測試套件。Spring framework、JUnit、TestNG 和其他幾個框架的一些或全部靈感都來自自動測試的思想。盡管如此,一些非 Java 語言和框架具有更多的測試動機、更合適的測試工具和更統一的測試視角。通過觀察其他框架的測試方式,可以改進 Java 語言中的測試方式,甚至使用更合適的語言來測試Java 代碼。這篇文章是關于在 Ruby on Rails 上進行測試的兩篇文章中的第一篇,將介紹 Rails 單元測試的方式。


    捕獲 bug

      我還記得當我第一次得到自動測試的 bug 時的情況。在一次大會上,當我做完叫做 Bitter Java 的演講之后,Mike Clark(Java 社區的自動測試大師,性能調整工具 JUnitPerf 的作者(請參閱 參考資料),現在是 Ruby on Rails 專家)走近我。Mike 告訴我有一種方法可以通過自動測試改進我的演講。在那次大會的剩余時間里,我跟著他四處走,看到了我能看到的盡可能多的他的測試會議。我開始使用他推薦的技術,并對把紅條(代表測試失。┳兂删G條(代表測試通過)上了癮。自動測試改變了我思考軟件開發的方式。

      Java 社區絕對有自動測試的 bug。坦白地說,我們別無選擇。競爭壓力迫使許多公司編寫越來越多的代碼,而測試人員越來越少,同時每個開發人員的又必須有更高的生產率。如果不進行自動測試,得到測試的內容就會更少,面對現代應用程序不斷增長的復雜性,較少的測試不是一個可行的選擇方案。

      在過去十年中,我們已經看到了對測試工具和技術的研究。JUnit 和 TestNG 都是支持自動單元測試的優秀工具,而且由日常的開發人員所驅動。Selenium 是改進集成和功能測試的工具。一套稱作敏捷技術 的新開發過程告訴人們要更加重視自動測試,不要太多地依賴正式的設計工具,將它們作為提高質量的惟一工具。Java 社區已經走了很長的路。其他編程社區也有 bug 工具, 其中一些社區使用的自動測試要比 Java 開發人員還有多,他們使用自動測試經驗有完全不同的原因:

      Smalltalk 程序員使用自動測試已經幾乎有 30 年的時間了,所以通過動態類型化語言使用的一些技術更加先進。


      集成框架的開發人員的優勢是了解框架元素的結構和組合。有些框架,例如 Ruby on Rails,能夠生成測試用例,而且在默認情況下提供測試特性。


      具有高級元編程(metaprogramming)能力的語言,例如 Ruby and Lisp,允許使用其他語言不支持的一些測試技巧,例如更容易訪問 mock 對象。
    在這一篇和下一篇文章中,將全面理解在 Ruby on Rails 集成開發框架中的測試方式。第 1 部分側重于測試模型對象,并提供一些從 Rails 獲得啟發的策略,可以用這些策略使 Java 單元測試更有效。第 2 部分把更多時間花在功能測試和集成測試上。作為 Java 程序員,您對一些概念可能比較熟悉,特別是在測試的時候,而其他一些概念可以拓展您的理解。

    補漏

      在這個系列的 前一期 中,了解了動態類型化會帶來某些 bug 種類,靜態類型化語言將在編譯時捕捉到這些 bug。清單 1 的 Ruby 代碼片段包含四個不同的 bug,這四個 bug 在運行時之前都不會顯露出來:


    清單 1. 帶 bug 的 Ruby 代碼
     
    position = "2"               #string, where a number was intended
    position = positoin + 4      #position is misspelled, evaluates to 0
    puts "The position is:" +
          position.to_string     #The method should be to_s 
     


      如果編譯器能夠捕捉 bug,那么這類 bug 解決起來是小菜一碟,但是如果依賴解釋器,那么管理這些 bug 就困難得多。為了處理這些微妙的錯誤,動態語言的用戶長期以來一直依賴于自動測試。在進行測試的時候,比起其他語言,動態語言及其集成環境在一般意義和特殊意義上都具有顯著的優勢:

      語言更簡潔。測試基本上是腳本編程,許多最好的腳本語言都是動態類型化的。

     
      集成環境支持的假設可以讓集成測試更容易,也可能更強大。在 Rails 環境中將看到一些示例。


      動態語言允許使用更松散的耦合,使一些測試格式更容易實現。
      在了解動態語言開發人員為什么這么熱衷于測試之后,現在是構建一個需要一些真正測試的實際應用程序的時候了。

    延伸閱讀

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

    TAG: Rails RAILS ruby Ruby 單元 框架


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(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>