您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
從JUnit到Rspec的嘗試
作者:網絡轉載 發(fā)布時間:[ 2013/4/11 13:27:28 ] 推薦標簽:

  如今,各種測試框架層出不窮,每一種框架都有其獨特性以及各自的優(yōu)勢。由于工作的原因,分別先后接觸了JUnit以及Respec兩套測試框架,雖然研究的不深,但也這兩套框架談一談自己的理解。重點主要針對于Rspec框架。

  JUnit介紹

  眾所周知,JUnit是一個用Java編寫而成的單元測試框架。利用JUnit,我們可以通過編寫簡單的測試代碼,方便的進行白盒測試,也可以說:在了解了被測代碼如何工作的前提下,對其內部結構的正確性進行自動化的測試。在JUnit的官網上,我們可以看到有關JUnit更為正統(tǒng)的釋義——JUnit是一個開放源代碼的簡單框架,用來編寫和運行可重復的測試(也被稱為回歸測試)。它是致力于單元測試框架的XUnit架構的一種實現。其中包含了:

  1.用于檢測預期結果的Assertions

  2.用于共享測試數據的Test Fixtures

  3.用于運行測試的Test Runners

  在使用JUnit時,其主要投放場景是:a.與開發(fā)人員約定好要測的內部方法、或是對外接口(方法名稱、參數個數、參數類型等),兩邊同時開工,開發(fā)提測,運行JUnit測試代碼。b.根據開發(fā)已寫好的代碼,編寫測試代碼,校驗其正確性。這兩種情景都很常見,具體采用哪種,視時間寬松程度而定。

  由于JUnit在很多平臺工具上的集成(ANT,Maven,Eclipse,IntelliJ IDEA等),以及配有大量的插件(dbUnit,xmlUnit等),以及其易用性,使其仍是當今單元測試框架的。

  Rspec介紹

  前不久,由于需要對Kelude平臺建立起一套測試體系,于是便研究起來Respec這一BDD測試框架。說起B(yǎng)DD,我想大家都不陌生,其英文全稱為Behaviour Driven Development,即行為驅動開發(fā)。Respec是Ruby社區(qū)中為流行的行為驅動測試框架。關于BDD更詳細的介紹,大家可以參考http://qa.taobao.com/?p=11630這篇文章,這里不再過多介紹。

  要想真正用好Respec,要遵循其背后的測試思想——測試先行。這也是與JUnit等單元測試框架大的不同之處。所謂測試先行,是要求我們,在開發(fā)人員編碼工作之前,先寫好測試用例,然后由測試來推動開發(fā)工作。通俗解釋為:在設計實現一個功能之前,先考慮好如何來測試這個功能,測試的代碼完成后,再編寫功能實現代碼,并且使得該測試用例運行通過,即完成了系統(tǒng)的一個功能模塊。這與通常的JUnit使用場景背道而馳。

  如果在接觸Respec的初期,要求編寫Respec測試用例,和編寫功能代碼的人員角色分開,我想這對于開發(fā)人員來說,應該是非常被動和痛苦的,同時也會很大程度上限制開發(fā)人員的創(chuàng)造性。因為功能代碼的編寫目的由原來的實現功能,變?yōu)榱巳缃竦耐ㄟ^測試用例,無論如何對于開發(fā)人員都是一種挑戰(zhàn)。因此,初期嘗試Respec階段,我建議測試用例和功能代碼的編寫都由一個人來承擔。也是說,自己根據業(yè)務需求,先寫好Respec測試用例,然后再編寫功能代碼,而編寫功能代碼的目的是為了通過測試。這樣做的好處,不僅可以大程度的理解Resepc背后的思想,同時也會逼迫開發(fā)人員為了滿足易測性,從而寫出簡潔、高質量的代碼。這些優(yōu)點,只有真正嘗試過Respec后,才會深有感觸。

  Respec在Rails框架中,不僅能針對MVC的Controller層、Model層、View層,進行分層測試,同時也可以針對例如路由等其它層面進行測試,可以說是功能非常全面。

  Rspec初體驗

  后,針對于Rails應用搭建Respec環(huán)境、以及一些常用的插件做一下簡短介紹:

  1.假設Ruby、Rails環(huán)境均已安裝完成,安裝Rspec插件

  gem install rspec

  2. 安裝測試數據準備工具Factory Girl

  gem install factory_girl_rails

  3. 安裝測試腳本對代碼覆蓋率的檢測工具RCov

  gem install rcov

  以上三步安裝了進行Respec測試常用的幾個工具。

  所有測試代碼放在spec目錄下,并且與功能代碼的目錄結構相對應。

  下面附上一個Rspec代碼文件:

  如上圖:

  let 方法主要針對數據準備聲明

  Factory :XXX 從FactoryGirl 插件中取出預先準備好的數據

  describe 對應于一個測試集

  it 對應于一個測試用例

  每個測試集和測試用例都配有各自的描述信息(測試集名、用例名),這些都是寫進測試代碼中的,這樣做,不僅增加了代碼的可讀性,同時在執(zhí)行用例時,一旦用例報錯,可以很方便的查看到是對應于哪一部分業(yè)務規(guī)則的代碼出了問題。在測試用例中用通用語言把系統(tǒng)的行為描述出來,把測試代碼作為系統(tǒng)的定義文檔,將系統(tǒng)的設計和測試用例結合起來,這即是BDD所倡導的。

  當想查看測試用例腳本對于功能代碼的覆蓋情況時,我們可以使用RCov這個工具,通過它,不僅可以通過命令行的形式查看到覆蓋率數據,也可以以HTML網頁形式查看,非常清晰、具體。

軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd