版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
Rspec測試軟件測試Rails測試Rspec/RspecRailsMockStubWayneDengw@頭腦風暴2|ReachConstructionConsultingLtd.什么是測試?你怎么做測試?測試其實無處不在為了驗證程序是否運行正常,其實每個人都會做測試。只不過有人總結(jié)歸納了一下,變成了一套測試的理論和方法。人們可以牙咬來測試黃金的硬度、“真金不怕火煉”測試它的熔點,用化學方法測試它的純度。電視機生產(chǎn)線上的彩虹條紋測試。3|ReachConstructionConsultingLtd.軟件測試的概念
軟件測試就是利用測試工具按照測試方案和流程對產(chǎn)品進行功能和性能測試,甚至根據(jù)需要編寫不同的測試工具,設計和維護測試系統(tǒng),對測試方案可能出現(xiàn)的問題進行分析和評估。執(zhí)行測試用例后,需要跟蹤故障,以確保開發(fā)的產(chǎn)品適合需求。
軟件測試的經(jīng)典定義是:在規(guī)定的條件下對程序進行操作,以發(fā)現(xiàn)程序錯誤,衡量軟件品質(zhì),并對其是否能滿足設計要求進行評估的過程。4|ReachConstructionConsultingLtd.測試的目的和作用
發(fā)現(xiàn)錯誤驗證功能需求5|ReachConstructionConsultingLtd.還有其他好處使用代碼實現(xiàn)自動化測試,避免重復手動測試提高代碼質(zhì)量測試的類型
功能測試按照測試軟件的各個功能劃分進行有條理的測試,在功能測試部分要保證測試項覆蓋所有功能和各種功能條件組合。系統(tǒng)測試對一個完整的軟件以用戶的角度來進行測試,系統(tǒng)測試和功能測試的區(qū)別是,系統(tǒng)測試利用的所有測試數(shù)據(jù)和測試的方法都要模擬成和用戶的實際使用環(huán)境完全一樣,測試的軟件也是經(jīng)過系統(tǒng)集成以后的完整軟件系統(tǒng),而不是在功能測試階段利用的每個功能模塊單獨編譯后生成的可執(zhí)行程序。極限值測試/壓力測試對軟件在各種特殊條件,特殊環(huán)境下能否正常運行和軟件的性能進行測試。特殊條件一般指的是軟件規(guī)定的最大值,最小值,以及在超過最大,小值條件下的測試。特殊環(huán)境一般指的是軟件運行的機器處于CPU高負荷,或是網(wǎng)絡高負荷狀態(tài)下的測試,根據(jù)軟件的不同,特殊環(huán)境也有過不同。性能測試性能測試是對軟件性能的評價。簡單的說,軟件性能衡量的是軟件具有的響應及時度能力。因此,性能測試是采用測試手段對軟件的響應及時性進行評價的一種方式。根據(jù)軟件的不同類型,性能測試的側(cè)重點也不同。6|ReachConstructionConsultingLtd.單元測試
單元測試(又稱為模塊測試)是針對程序模塊(軟件設計的最小單位)來進行正確性檢驗的測試工作。序單元是應用的最小可測試部件。在過程化編程中,一個單元就是單個程序、函數(shù)、過程等;對于面向?qū)ο缶幊?,最小單元就是方法,包括基類(超類)、抽象類、或者派生類(子類)中的方法?/p>
單元測試的一個很重要的特點就是獨立性。作為一個獨立的模塊,它應該實現(xiàn)什么功能,是一個獨立的個體。每個理想的測試案例獨立于其它案例;為測試時隔離模塊,經(jīng)常使用stubs、mock[1]或fake等測試馬甲程序。7|ReachConstructionConsultingLtd.一臺電腦由很多組件構(gòu)成,顯示屏、主板、顯卡、硬盤等等,單獨對每個部件進行功能的測試,每個組件的正常運轉(zhuǎn)是整臺電腦運行的基礎,性能的保證。其他概念集成測試、系統(tǒng)測試
在電腦里面運行各種程序,拷機。
白盒測試、黑盒測試
白盒測試又稱為結(jié)構(gòu)測試和邏輯驅(qū)動測試。白盒測試法的覆蓋標準有邏輯覆蓋、循環(huán)覆蓋和基本路徑測試。其中邏輯覆蓋包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。
黑盒測試不需要了解軟件的內(nèi)部構(gòu)造,是從用戶的角度對程序進行的測試,只知道程序的輸入(將測試數(shù)據(jù)輸入軟件)、輸出(確認輸出結(jié)果是否正確)和系統(tǒng)的功能就可以,因此被稱為黑盒測試。對象->方法,傳入各種可能的參數(shù),是否能返回期待的結(jié)果,是則通過,否則失?。?/p>
參考:/zh-cn/軟件測試8|ReachConstructionConsultingLtd.Rails中的測試Rails自帶的測試框架RSpec框架/RSpecistheoriginalBehaviourDrivenDevelopmentframeworkforRuby.Webrat/brynary/webratBrowserSimulatorforexpressive,highlevelacceptancetestingwithouttheperformancehitandbrowserdependencyofSeleniumorWatir(SeeWebrat::Session)UsethesameAPIforBrowserSimulatorandrealSeleniumtestsusingWebrat::Seleniumwhennecessary(eg.fortestingAJAXinteractions)Webrat::MatchersAPIforverifyingrenderedHTMLusingCSS,XPath,etc.Selenium/Seleniumisasuiteoftoolstoautomatewebapptestingacrossmanyplatforms.9|ReachConstructionConsultingLtd.比較(適用于不同的場合)
單元測試單元測試集成測試集成測試RspecModelTestRspecControllerTestWebratSelenium模型的單元測試僅需準備少量需要使用的數(shù)據(jù),而且無需經(jīng)過數(shù)據(jù)庫可以使用mock、stub無需運行RailsApp,速度非???/p>
控制器的單元測試(控制器也是一個Class),通常一個測試僅測試一個method僅需準備少量需要使用的數(shù)據(jù),而且也可以不經(jīng)過數(shù)據(jù)庫可以使用mock、stub,甚至直接對session賦值可以對控制器中的變量進行驗證速度也很快
測試某個系統(tǒng)功能(修改密碼、快速搜索等等)需要準備部分數(shù)據(jù)可以使用mock、stub非常接近使用瀏覽器操作,并進行測試驗證缺點是無法測試Javascript
測試系統(tǒng)的某個功能最接近傳統(tǒng)的在瀏覽器中人為控制的測試需要準備大量數(shù)據(jù),必須通過數(shù)據(jù)庫支持Javascript10|ReachConstructionConsultingLtd.選擇的標準我們的目標是要尋找一種簡單、快捷但是有非常有效,可以代替重復的人手測試的測試解決方案。編寫起來簡單、快捷,這就是為什么不用Cucumber的原因。要是覺得測試寫起來很煩?1、對測試了解的不夠,不熟悉,沒有找到合適的方法2、選擇了錯誤的工具或方法11|ReachConstructionConsultingLtd.沒有最好的,只有最合適的12|ReachConstructionConsultingLtd.開始測試的第一步吧!RSpec小試牛刀
基本概念*rspec測試代碼文件以_spec結(jié)尾,例如user_spec.rb*運行測試:specuser_spec.rb*測試代碼結(jié)構(gòu)(describer-it-should三部曲)
describeAAdoit'shoulddosomething'dosomething.should...endend13|ReachConstructionConsultingLtd.最簡單的測試一個加減法的計算器14|ReachConstructionConsultingLtd.要測試的無非就是plus、minus方法是否正確測試calc_spec.rb
describeitshould15|ReachConstructionConsultingLtd.運行測試16|ReachConstructionConsultingLtd.改正代碼17|ReachConstructionConsultingLtd.18|ReachConstructionConsultingLtd.馬上在自己電腦上試試!MockStub
虛擬對象,mock(模仿,模擬)
單元測試的一個很重要的特點就是獨立性。系統(tǒng)總是很復雜的,不同的模塊功能耦合在一起,A調(diào)用B,B調(diào)用C甚至A。但是我們在測試A的某個方法的時候,應該把注意力集中在A這個方法功能上,而沒有必要把這個方法中需要的其他方法(A的或者B、C的)都測試一遍,雖然這些其他方法的正確是A的這個方法正確的保證!B、C的方法應該在各自的測試中獨立進行。19|ReachConstructionConsultingLtd.示例例如一個方法,讀取rss,然后解析,生成viewurl="/api/posts/meetings.xml"require'net/http'require'uri'xml=Net::HTTP.get_printURI.parse(url)...
這段代碼核心在后面解析生成view的功能,測試的時候,完全不需要真的去從上面獲取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ù)/對象;要測試的方法中使用了Time.now,但是想固定一個時間進行測試Time.stub!(:now).and_return(Time.parse('2010-09-0100:00:00'))20|ReachConstructionConsultingLtd.Mock使用方法Creatingamockobject創(chuàng)建一個mock對象,隨意指定對象的方法,以及方法返回的值aa=mock("Name",:aa=>1,:bb=>2)putsaa.aaputsaa.bb
MessageExpectations在mock對象的時候,同時驗證對象方法被調(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())應該調(diào)用my_mock的msg方法(如果沒有調(diào)用會拋出測試未通過的錯誤)可以指定調(diào)用的參數(shù)、次數(shù)21|ReachConstructionConsultingLtd.Mock使用方法-MethodStubs
僅mock對象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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025廣東廣州生物院聯(lián)合生科院張笑人教授課題組科研助理招聘參考考試試題及答案解析
- 廣安市前鋒區(qū)就業(yè)保障中心2025年12月公開招聘公益性崗位備考筆試題庫及答案解析
- 2026遼寧本溪市教育系統(tǒng)冬季名校優(yōu)生引進急需緊缺人才4人(本溪市第一中學)參考筆試題庫附答案解析
- 2025云南麗江市華坪縣擇優(yōu)招聘云南省職業(yè)教育省級公費師范畢業(yè)生4人備考考試試題及答案解析
- 2025貴州黔南州面向社會招聘國有企業(yè)工作人員考察(第三批)參考考試題庫及答案解析
- 2026甘肅甘南州夏河縣兵役登記暨征兵參考筆試題庫附答案解析
- 2026年玉溪澄江市教育體育系統(tǒng)招聘畢業(yè)生(20人)參考考試試題及答案解析
- 四川省大英中學2025年臨聘教師招聘備考筆試試題及答案解析
- 2026年莆田市荔城區(qū)公開考核新任教師招聘53人備考筆試題庫及答案解析
- 網(wǎng)址注冊合同范本
- 浙江省臺州市海山教育聯(lián)盟2024-2025學年七年級上學期期末語文試題(含答案)
- 2021《超星爾雅》舞蹈鑒賞章節(jié)測試答案
- 繪本故事《逃家小兔》講故事課件
- 事業(yè)單位考試職業(yè)能力傾向測驗(綜合管理類A類)試題與參考答案(2024年)
- (質(zhì)量認證)中藥飲片GMP檢查指南
- 《大學計算機基礎》試題庫(附答案)
- 利港標段二-技術(shù)投標文件-承包人實施計劃
- 部編版五年級上冊《25 古人談讀書》課件
- DL-T-1928-2018火力發(fā)電廠氫氣系統(tǒng)安全運行技術(shù)導則
- 第五單元:幼兒行為規(guī)范與道德教育活動
- 塑料成型工藝與模具設計課程說課內(nèi)容課件市公開課一等獎省賽課微課金獎課件
評論
0/150
提交評論