您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源軟件測(cè)試解決方案 > 開(kāi)源測(cè)試工具二次方案
使用 RSpec 進(jìn)行行為驅(qū)動(dòng)測(cè)試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2012/12/19 15:41:13 ] 推薦標(biāo)簽:

  測(cè)試熱潮現(xiàn)在傳播到了 Ruby 編程社區(qū),并且愈演愈熱。在過(guò)去一年里,測(cè)試領(lǐng)域中為矚目的創(chuàng)新應(yīng)屬 RSpec 的引入和快速發(fā)展,這是一種行為驅(qū)動(dòng)測(cè)試工具。通過(guò)本文了解 RSpec 如何改變?nèi)藗兯伎紲y(cè)試的方式。
        在過(guò)去十年中,軟件開(kāi)發(fā)人員對(duì)測(cè)試的熱情日漸低迷。同一時(shí)期出現(xiàn)的動(dòng)態(tài)語(yǔ)言并沒(méi)有提供編譯程序來(lái)捕捉基本的錯(cuò)誤,這使得測(cè)試變得更加重要。隨著測(cè)試社區(qū)的成長(zhǎng),開(kāi)發(fā)人員開(kāi)始注意到,除了捕獲 bug 等基本的優(yōu)點(diǎn)外,測(cè)試還具有以下優(yōu)勢(shì):

        測(cè)試能夠改進(jìn)您的設(shè)計(jì)。進(jìn)行測(cè)試的每個(gè)目標(biāo)對(duì)象必須具備至少兩個(gè)客戶(hù)機(jī):生產(chǎn)代碼和測(cè)試用例。這些客戶(hù)機(jī)強(qiáng)制您對(duì)代碼進(jìn)行解耦。測(cè)試還鼓勵(lì)開(kāi)發(fā)人員使用更小、更簡(jiǎn)單的方法。
        測(cè)試減少了不必要的代碼。在編寫(xiě)測(cè)試用例時(shí),您養(yǎng)成了很好的測(cè)試習(xí)慣,即只編寫(xiě)運(yùn)行測(cè)試用例所需的少代碼。您抵制住了對(duì)功能進(jìn)行編碼的誘惑,因?yàn)槟壳斑不需要它。

        推動(dòng)了測(cè)試優(yōu)先開(kāi)發(fā)。您編寫(xiě)的每個(gè)測(cè)試用例會(huì)確定一個(gè)小問(wèn)題。使用代碼解決這個(gè)問(wèn)題非常有用并且可以推動(dòng)開(kāi)發(fā)。當(dāng)我進(jìn)行測(cè)試驅(qū)動(dòng)開(kāi)發(fā)時(shí),時(shí)間過(guò)得飛快。
測(cè)試提供了更多的自主權(quán)。在使用測(cè)試用例捕獲可能的錯(cuò)誤時(shí),您會(huì)發(fā)現(xiàn)自己非常愿意對(duì)代碼進(jìn)行改進(jìn)。


測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)和 RSpec
        有關(guān)測(cè)試的優(yōu)點(diǎn)無(wú)需贅述,我將向您介紹一個(gè)簡(jiǎn)單的使用 RSpec 的測(cè)試驅(qū)動(dòng)開(kāi)發(fā)示例。RSpec 工具是一個(gè) Ruby 軟件包,可以用它構(gòu)建有關(guān)您的軟件的規(guī)范。該規(guī)范實(shí)際上是一個(gè)描述系統(tǒng)行為的測(cè)試。使用 RSpec 的開(kāi)發(fā)流程如下:

        編寫(xiě)一個(gè)測(cè)試。該測(cè)試描述系統(tǒng)中某個(gè)較小元素的行為。
        運(yùn)行測(cè)試。由于尚沒(méi)有為系統(tǒng)中的相應(yīng)部分構(gòu)建代碼,測(cè)試失敗。這一重要步驟將測(cè)試您的測(cè)試用例,檢驗(yàn)測(cè)試用例是否在應(yīng)當(dāng)失敗的時(shí)候失敗。
        編寫(xiě)足夠的代碼,使測(cè)試通過(guò)。
        運(yùn)行測(cè)試,檢驗(yàn)測(cè)試是否成功。
        實(shí)質(zhì)上,RSpec 開(kāi)發(fā)人員所做的工作是將失敗的測(cè)試用例調(diào)試為成功的測(cè)試用例。這是一個(gè)主動(dòng)的過(guò)程。本文中,我將介紹 RSpec 的基本用法。

        首先,假設(shè)您已安裝了 Ruby 和 gems。您還需要安裝 RSpec。輸入下面的內(nèi)容:

gem install rspec

使用示例
        接下來(lái),我將逐步構(gòu)建一個(gè)狀態(tài)機(jī)。我將遵循TDD 規(guī)則。首先編寫(xiě)自己的測(cè)試用例,并且直到測(cè)試用例需要時(shí)才編寫(xiě)代碼。Rake 的創(chuàng)建者 Jim Weirich 認(rèn)為這有助于角色扮演。在編寫(xiě)實(shí)際的生產(chǎn)代碼時(shí),您希望充當(dāng)一回 jerk 開(kāi)發(fā)人員的角色,只完成少量的工作來(lái)使測(cè)試通過(guò)。在編寫(xiě)測(cè)試時(shí),您則扮演測(cè)試人員的角色,試圖為開(kāi)發(fā)人員提供一些有益的幫助。

        以下的示例展示了如何構(gòu)建一個(gè)狀態(tài)機(jī)。如果您以前從未接觸過(guò)狀態(tài)機(jī),請(qǐng)查閱 參考資料。狀態(tài)機(jī)具有多種狀態(tài)。每種狀態(tài)支持可以轉(zhuǎn)換狀態(tài)機(jī)狀態(tài)的事件。測(cè)試驅(qū)動(dòng)開(kāi)發(fā)入門(mén)的關(guān)鍵是從零入手,盡量少地使用假設(shè)條件。針對(duì)測(cè)試進(jìn)行程序設(shè)計(jì)。

        使用清單 1 的內(nèi)容創(chuàng)建名為 machine_spec.rb 的文件。該文件是您的規(guī)范。您還不了解 machine.rb 文件的作用,目前先創(chuàng)建一個(gè)空文件。

  清單 1. 初的 machine_spec.rb 文件
  require 'machine'

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