Rails Rspec測(cè)試(內(nèi)部培訓(xùn))_第1頁
Rails Rspec測(cè)試(內(nèi)部培訓(xùn))_第2頁
Rails Rspec測(cè)試(內(nèi)部培訓(xùn))_第3頁
Rails Rspec測(cè)試(內(nèi)部培訓(xùn))_第4頁
Rails Rspec測(cè)試(內(nèi)部培訓(xùn))_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Rspec測(cè)試軟件測(cè)試Rails測(cè)試Rspec/RspecRailsMockStubWayneDengw@頭腦風(fēng)暴2|ReachConstructionConsultingLtd.什么是測(cè)試?你怎么做測(cè)試?測(cè)試其實(shí)無處不在為了驗(yàn)證程序是否運(yùn)行正常,其實(shí)每個(gè)人都會(huì)做測(cè)試。只不過有人總結(jié)歸納了一下,變成了一套測(cè)試的理論和方法。人們可以牙咬來測(cè)試黃金的硬度、“真金不怕火煉”測(cè)試它的熔點(diǎn),用化學(xué)方法測(cè)試它的純度。電視機(jī)生產(chǎn)線上的彩虹條紋測(cè)試。3|ReachConstructionConsultingLtd.軟件測(cè)試的概念

軟件測(cè)試就是利用測(cè)試工具按照測(cè)試方案和流程對(duì)產(chǎn)品進(jìn)行功能和性能測(cè)試,甚至根據(jù)需要編寫不同的測(cè)試工具,設(shè)計(jì)和維護(hù)測(cè)試系統(tǒng),對(duì)測(cè)試方案可能出現(xiàn)的問題進(jìn)行分析和評(píng)估。執(zhí)行測(cè)試用例后,需要跟蹤故障,以確保開發(fā)的產(chǎn)品適合需求。

軟件測(cè)試的經(jīng)典定義是:在規(guī)定的條件下對(duì)程序進(jìn)行操作,以發(fā)現(xiàn)程序錯(cuò)誤,衡量軟件品質(zhì),并對(duì)其是否能滿足設(shè)計(jì)要求進(jìn)行評(píng)估的過程。4|ReachConstructionConsultingLtd.測(cè)試的目的和作用

發(fā)現(xiàn)錯(cuò)誤驗(yàn)證功能需求5|ReachConstructionConsultingLtd.還有其他好處使用代碼實(shí)現(xiàn)自動(dòng)化測(cè)試,避免重復(fù)手動(dòng)測(cè)試提高代碼質(zhì)量測(cè)試的類型

功能測(cè)試按照測(cè)試軟件的各個(gè)功能劃分進(jìn)行有條理的測(cè)試,在功能測(cè)試部分要保證測(cè)試項(xiàng)覆蓋所有功能和各種功能條件組合。系統(tǒng)測(cè)試對(duì)一個(gè)完整的軟件以用戶的角度來進(jìn)行測(cè)試,系統(tǒng)測(cè)試和功能測(cè)試的區(qū)別是,系統(tǒng)測(cè)試?yán)玫乃袦y(cè)試數(shù)據(jù)和測(cè)試的方法都要模擬成和用戶的實(shí)際使用環(huán)境完全一樣,測(cè)試的軟件也是經(jīng)過系統(tǒng)集成以后的完整軟件系統(tǒng),而不是在功能測(cè)試階段利用的每個(gè)功能模塊單獨(dú)編譯后生成的可執(zhí)行程序。極限值測(cè)試/壓力測(cè)試對(duì)軟件在各種特殊條件,特殊環(huán)境下能否正常運(yùn)行和軟件的性能進(jìn)行測(cè)試。特殊條件一般指的是軟件規(guī)定的最大值,最小值,以及在超過最大,小值條件下的測(cè)試。特殊環(huán)境一般指的是軟件運(yùn)行的機(jī)器處于CPU高負(fù)荷,或是網(wǎng)絡(luò)高負(fù)荷狀態(tài)下的測(cè)試,根據(jù)軟件的不同,特殊環(huán)境也有過不同。性能測(cè)試性能測(cè)試是對(duì)軟件性能的評(píng)價(jià)。簡單的說,軟件性能衡量的是軟件具有的響應(yīng)及時(shí)度能力。因此,性能測(cè)試是采用測(cè)試手段對(duì)軟件的響應(yīng)及時(shí)性進(jìn)行評(píng)價(jià)的一種方式。根據(jù)軟件的不同類型,性能測(cè)試的側(cè)重點(diǎn)也不同。6|ReachConstructionConsultingLtd.單元測(cè)試

單元測(cè)試(又稱為模塊測(cè)試)是針對(duì)程序模塊(軟件設(shè)計(jì)的最小單位)來進(jìn)行正確性檢驗(yàn)的測(cè)試工作。序單元是應(yīng)用的最小可測(cè)試部件。在過程化編程中,一個(gè)單元就是單個(gè)程序、函數(shù)、過程等;對(duì)于面向?qū)ο缶幊蹋钚卧褪欠椒?,包括基類(超類)、抽象類、或者派生類(子類)中的方法?/p>

單元測(cè)試的一個(gè)很重要的特點(diǎn)就是獨(dú)立性。作為一個(gè)獨(dú)立的模塊,它應(yīng)該實(shí)現(xiàn)什么功能,是一個(gè)獨(dú)立的個(gè)體。每個(gè)理想的測(cè)試案例獨(dú)立于其它案例;為測(cè)試時(shí)隔離模塊,經(jīng)常使用stubs、mock[1]或fake等測(cè)試馬甲程序。7|ReachConstructionConsultingLtd.一臺(tái)電腦由很多組件構(gòu)成,顯示屏、主板、顯卡、硬盤等等,單獨(dú)對(duì)每個(gè)部件進(jìn)行功能的測(cè)試,每個(gè)組件的正常運(yùn)轉(zhuǎn)是整臺(tái)電腦運(yùn)行的基礎(chǔ),性能的保證。其他概念集成測(cè)試、系統(tǒng)測(cè)試

在電腦里面運(yùn)行各種程序,拷機(jī)。

白盒測(cè)試、黑盒測(cè)試

白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試和邏輯驅(qū)動(dòng)測(cè)試。白盒測(cè)試法的覆蓋標(biāo)準(zhǔn)有邏輯覆蓋、循環(huán)覆蓋和基本路徑測(cè)試。其中邏輯覆蓋包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。

黑盒測(cè)試不需要了解軟件的內(nèi)部構(gòu)造,是從用戶的角度對(duì)程序進(jìn)行的測(cè)試,只知道程序的輸入(將測(cè)試數(shù)據(jù)輸入軟件)、輸出(確認(rèn)輸出結(jié)果是否正確)和系統(tǒng)的功能就可以,因此被稱為黑盒測(cè)試。對(duì)象->方法,傳入各種可能的參數(shù),是否能返回期待的結(jié)果,是則通過,否則失??!

參考:/zh-cn/軟件測(cè)試8|ReachConstructionConsultingLtd.Rails中的測(cè)試Rails自帶的測(cè)試框架RSpec框架/RSpecistheoriginalBehaviourDrivenDevelopmentframeworkforRuby.Webrat/brynary/webratBrowserSimulatorforexpressive,highlevelacceptancetestingwithouttheperformancehitandbrowserdependencyofSeleniumorWatir(SeeWebrat::Session)UsethesameAPIforBrowserSimulatorandrealSeleniumtestsusingWebrat::Seleniumwhennecessary(eg.fortestingAJAXinteractions)Webrat::MatchersAPIforverifyingrenderedHTMLusingCSS,XPath,etc.Selenium/Seleniumisasuiteoftoolstoautomatewebapptestingacrossmanyplatforms.9|ReachConstructionConsultingLtd.比較(適用于不同的場(chǎng)合)

單元測(cè)試單元測(cè)試集成測(cè)試集成測(cè)試RspecModelTestRspecControllerTestWebratSelenium模型的單元測(cè)試僅需準(zhǔn)備少量需要使用的數(shù)據(jù),而且無需經(jīng)過數(shù)據(jù)庫可以使用mock、stub無需運(yùn)行RailsApp,速度非常快

控制器的單元測(cè)試(控制器也是一個(gè)Class),通常一個(gè)測(cè)試僅測(cè)試一個(gè)method僅需準(zhǔn)備少量需要使用的數(shù)據(jù),而且也可以不經(jīng)過數(shù)據(jù)庫可以使用mock、stub,甚至直接對(duì)session賦值可以對(duì)控制器中的變量進(jìn)行驗(yàn)證速度也很快

測(cè)試某個(gè)系統(tǒng)功能(修改密碼、快速搜索等等)需要準(zhǔn)備部分?jǐn)?shù)據(jù)可以使用mock、stub非常接近使用瀏覽器操作,并進(jìn)行測(cè)試驗(yàn)證缺點(diǎn)是無法測(cè)試Javascript

測(cè)試系統(tǒng)的某個(gè)功能最接近傳統(tǒng)的在瀏覽器中人為控制的測(cè)試需要準(zhǔn)備大量數(shù)據(jù),必須通過數(shù)據(jù)庫支持Javascript10|ReachConstructionConsultingLtd.選擇的標(biāo)準(zhǔn)我們的目標(biāo)是要尋找一種簡單、快捷但是有非常有效,可以代替重復(fù)的人手測(cè)試的測(cè)試解決方案。編寫起來簡單、快捷,這就是為什么不用Cucumber的原因。要是覺得測(cè)試寫起來很煩?1、對(duì)測(cè)試了解的不夠,不熟悉,沒有找到合適的方法2、選擇了錯(cuò)誤的工具或方法11|ReachConstructionConsultingLtd.沒有最好的,只有最合適的12|ReachConstructionConsultingLtd.開始測(cè)試的第一步吧!RSpec小試牛刀

基本概念*rspec測(cè)試代碼文件以_spec結(jié)尾,例如user_spec.rb*運(yùn)行測(cè)試:specuser_spec.rb*測(cè)試代碼結(jié)構(gòu)(describer-it-should三部曲)

describeAAdoit'shoulddosomething'dosomething.should...endend13|ReachConstructionConsultingLtd.最簡單的測(cè)試一個(gè)加減法的計(jì)算器14|ReachConstructionConsultingLtd.要測(cè)試的無非就是plus、minus方法是否正確測(cè)試calc_spec.rb

describeitshould15|ReachConstructionConsultingLtd.運(yùn)行測(cè)試16|ReachConstructionConsultingLtd.改正代碼17|ReachConstructionConsultingLtd.18|ReachConstructionConsultingLtd.馬上在自己電腦上試試!MockStub

虛擬對(duì)象,mock(模仿,模擬)

單元測(cè)試的一個(gè)很重要的特點(diǎn)就是獨(dú)立性。系統(tǒng)總是很復(fù)雜的,不同的模塊功能耦合在一起,A調(diào)用B,B調(diào)用C甚至A。但是我們?cè)跍y(cè)試A的某個(gè)方法的時(shí)候,應(yīng)該把注意力集中在A這個(gè)方法功能上,而沒有必要把這個(gè)方法中需要的其他方法(A的或者B、C的)都測(cè)試一遍,雖然這些其他方法的正確是A的這個(gè)方法正確的保證!B、C的方法應(yīng)該在各自的測(cè)試中獨(dú)立進(jìn)行。19|ReachConstructionConsultingLtd.示例例如一個(gè)方法,讀取rss,然后解析,生成viewurl="/api/posts/meetings.xml"require'net/http'require'uri'xml=Net::HTTP.get_printURI.parse(url)...

這段代碼核心在后面解析生成view的功能,測(cè)試的時(shí)候,完全不需要真的去從上面獲取xml的數(shù)據(jù),覆蓋Net::HTTP.get_print方法即可。xml="<meetings>...</meetings>"Net::HTTP.stub!(:get_print).and_return(xml)

還有很多情況,要從數(shù)據(jù)庫中find數(shù)據(jù),但是可以mock返回指定的數(shù)據(jù)/對(duì)象;要測(cè)試的方法中使用了Time.now,但是想固定一個(gè)時(shí)間進(jìn)行測(cè)試Time.stub!(:now).and_return(Time.parse('2010-09-0100:00:00'))20|ReachConstructionConsultingLtd.Mock使用方法Creatingamockobject創(chuàng)建一個(gè)mock對(duì)象,隨意指定對(duì)象的方法,以及方法返回的值aa=mock("Name",:aa=>1,:bb=>2)putsaa.aaputsaa.bb

MessageExpectations在mock對(duì)象的時(shí)候,同時(shí)驗(yàn)證對(duì)象方法被調(diào)用my_mock.should_receive(<message>)my_mock.should_not_receive(:msg)my_mock.should_receive(:msg).with(1,2,3)my_mock.should_receive(:msg).once.with(1,2,3)my_mock.should_receive(:msg).with(no_args())my_mock.should_receive(:msg).with(any_args())應(yīng)該調(diào)用my_mock的msg方法(如果沒有調(diào)用會(huì)拋出測(cè)試未通過的錯(cuò)誤)可以指定調(diào)用的參數(shù)、次數(shù)21|ReachConstructionConsultingLtd.Mock使用方法-MethodStubs

僅mock對(duì)象my_instance.stub!(:msg).and_return(value)MyClass.stub!(:msg).and_return(value)

A.stub!(:msg).and_return(:default_value)A.should_receive(:msg).with(:arg).and_return(:special_value)A.msg=>:default_valueA.msg(:any_other_arg)=>:default_valueA.msg(:arg)=>:special_valueA.msg(:any_other_other_arg)=>:default_valueA.msg=>:default_value22|ReachConstructionConsultingLtd.Mock參考文檔/documentation/mocks//documentation/mo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論