版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2020/10/7,Institute of Computer Software Nanjing University,1,Object-Oriented Testing,面向?qū)ο鬁y試技術(shù),2020/10/7,Institute of Computer Software Nanjing University,2,摘要,軟件測試 面向?qū)ο筌浖y試 測試驅(qū)動的開發(fā),2020/10/7,Institute of Computer Software Nanjing University,3,摘要,軟件測試 面向?qū)ο筌浖y試 測試驅(qū)動的開發(fā),2020/10/7,Institute of Computer
2、 Software Nanjing University,4,軟件測試,可靠性:觀測系統(tǒng)行為是否同規(guī)格說明行為一致的一種成功標準 軟件可靠性:軟件系統(tǒng)在特定條件和特定時間下,不會導(dǎo)致系統(tǒng)失敗的可能性。 - IEEE 測試的最大目標:最大限度地發(fā)現(xiàn)錯誤,以便開發(fā)者改正它們,以增加系統(tǒng)的可靠性。,2020/10/7,Institute of Computer Software Nanjing University,5,軟件測試,軟件測試:使用人工或自動手段來運行或測試某個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或是弄清預(yù)期結(jié)果與實際結(jié)果之間的差別。 - IEEE,1993 “程序測試是為了發(fā)
3、現(xiàn)錯誤而執(zhí)行程序的過程”。 - G.J. Myers, The Art of Software Testing,2020/10/7,Institute of Computer Software Nanjing University,6,廣義的軟件測試,確認:評估將要開發(fā)的軟件產(chǎn)品是正確無誤、可行和有價值的 驗證:檢驗軟件開發(fā)的每個階段、每個步驟的結(jié)構(gòu)是否正確無誤,是否與軟件開發(fā)各階段的要求或期望的結(jié)果相一致。 測試:狹義的測試,計劃、需求分析、測試,設(shè)計、編碼,編碼、測試,2020/10/7,Institute of Computer Software Nanjing University,7
4、,軟件測試術(shù)語,測試:檢查軟件的某個方面是否正確 驗證(verification):根據(jù)需求文檔(系統(tǒng)用例)檢查軟件是否正確 有效性驗證(validation):檢查軟件是否是顧客需要的,例如它是否以顧客和最終用戶能接受的方式執(zhí)行顧客需要的函數(shù),2020/10/7,Institute of Computer Software Nanjing University,8,軟件測試的原則,“盡早和不斷地測試” 設(shè)計測試用例時應(yīng)該考慮合法的和不合法的輸入以及各種邊界條件,特殊情況下要制造極端狀態(tài)和意外狀態(tài),如網(wǎng)絡(luò)異常中斷,電源斷電 一定要注意測試中的錯誤集中發(fā)生現(xiàn)象 對測試錯誤結(jié)果一定要有一個確認過程
5、 回歸測試的關(guān)聯(lián)性要引起充分注意 妥善保存一切測試過程文檔,以便測試的重現(xiàn),2020/10/7,Institute of Computer Software Nanjing University,9,軟件測試過程,代碼會審:對程序進行靜態(tài)分析的過程 單元測試:檢查軟件設(shè)計的最小單位模塊,采用結(jié)構(gòu)測試(白盒法)+功能測試(黑盒法) 集成測試:將模塊按照設(shè)計要求組裝起來同時進行測試,主要目標是發(fā)現(xiàn)與接口有關(guān)的問題 驗收測試:向未來的用戶表明系統(tǒng)能夠像預(yù)定要求那樣工作。,2020/10/7,Institute of Computer Software Nanjing University,10,軟件
6、測試的模型,V模型:軟件開發(fā)瀑布模型的變種,主要反映測試活動與分析和設(shè)計的關(guān)系 局限性:把測試作為編碼之后的最后一個活動,需求分析等前期產(chǎn)生的錯誤直到后期的驗收測試才能發(fā)現(xiàn),2020/10/7,Institute of Computer Software Nanjing University,11,軟件測試的模型,W模型強調(diào):測試伴隨著整個軟件開發(fā)周期,而且測試的對象不僅僅是程序,需求、設(shè)計等同樣要測試,也就是說,測試與開發(fā)是同步進行的。 局限性:在W模型中,需求、設(shè)計、編碼等活動被視為串行的,同時,測試和開發(fā)活動也保持著一種線性的前后關(guān)系,上一階段完全結(jié)束,才可正式開始下一個階段工作。這樣就
7、無法支持迭代的開發(fā)模型。,2020/10/7,Institute of Computer Software Nanjing University,12,軟件測試的模型,H模型:測試活動完全獨立出來,形成了一個完全獨立的流程,將測試準備活動和測試執(zhí)行活動清晰地體現(xiàn)出來。只要測試準備完成,就可以執(zhí)行測試,2020/10/7,Institute of Computer Software Nanjing University,13,軟件測試的模型,X模型:彌補V模型的一些缺陷,例如:交接、經(jīng)常性的集成等問題。 X模型的左邊描述的是針對單獨程序片段所進行的相互分離的編碼和測試,此后將進行頻繁的交接,通過
8、集成最終合成為可執(zhí)行的程序。 右上方:這些可執(zhí)行程序還需要進行測試。已通過集成測試的成品可以進行封版并提交給用戶,也可以作為更大規(guī)模和范圍內(nèi)集成的一部分。多根并行的曲線表示變更可以在各個部分發(fā)生。 右下方:探索性測試。這是不進行事先計劃的特殊類型的測試,2020/10/7,Institute of Computer Software Nanjing University,14,摘要,軟件測試 面向?qū)ο筌浖y試 測試驅(qū)動的開發(fā),2020/10/7,Institute of Computer Software Nanjing University,15,OO技術(shù),新特點:封裝、繼承、多態(tài) 產(chǎn)生新的
9、錯誤可能性 不再是傳統(tǒng)的功能模塊結(jié)構(gòu),原有集成測試所要求的逐步將開發(fā)的模塊搭建在一起進行測試的方法已成為不可能 OO開發(fā)模式不同于傳統(tǒng)開發(fā)模式,不可能用功能細化的觀點來檢測OOA和OOD的結(jié)果。,需要一種新的測試模型!,2020/10/7,Institute of Computer Software Nanjing University,16,面向?qū)ο筌浖y試模型,面向?qū)ο箝_發(fā)模型:OOA, OOD, OOP 相應(yīng)的 OOA Test OOD Test OOP Test OO Unit Test OO Integrate Test OO System Test,2020/10/7,Instit
10、ute of Computer Software Nanjing University,17,面向?qū)ο筌浖y試模型,對分析結(jié)果的測試,對設(shè)計結(jié)果的測試,對編程風格和程序代碼的測試,單一功能模塊的測試,對服務(wù)交互進行測試,最后階段的測試,需借鑒OOA和OOD測試的結(jié)果,2020/10/7,Institute of Computer Software Nanjing University,18,OOA Test,OOA:把E-R圖和語義網(wǎng)絡(luò)模型,即信息造型中的概念,與OOP中的重要概念結(jié)合在一起而形成的設(shè)計方法。 問題空間的圖表的形式描述 OOA直接映射問題空間,全面的將問題空間中實現(xiàn)功能的現(xiàn)實抽
11、象化。將問題空間中的實例抽象為對象,用對象的結(jié)構(gòu)反映問題空間的復(fù)雜實例和復(fù)雜關(guān)系,用屬性和操作表示實例的特性和行為。,行為是相對穩(wěn)定的,結(jié)構(gòu)是相對不穩(wěn)定的!,2020/10/7,Institute of Computer Software Nanjing University,19,OOA Test,測試的劃分 對認定的對象的測試 對認定的結(jié)構(gòu)的測試 對認定的主題的測試 對定義的屬性和實例關(guān)聯(lián)的測試 對定義的服務(wù)和消息關(guān)聯(lián)的測試,OOA測試重點在其完整性和冗余性,2020/10/7,Institute of Computer Software Nanjing University,20,OOD
12、 Test,OOD:“造型的觀點”,以O(shè)OA為基礎(chǔ)歸納類,并建立類結(jié)構(gòu)或進一步構(gòu)造成類庫,實現(xiàn)分析結(jié)果對問題空間的抽象,是OOA的進一步細化和更高層的抽象。 測試的三個方面 對認定的類的測試 對構(gòu)造的類層次結(jié)構(gòu)的測試 對類庫的支持的測試,2020/10/7,Institute of Computer Software Nanjing University,21,OOD Test,對認定的類的測試:認定的類原則上應(yīng)該盡量是基礎(chǔ)類 是否涵蓋了OOA中所有認定的對象 是否能體現(xiàn)OOA中定義的屬性 是否能實現(xiàn)OOA中定義的服務(wù) 是否對應(yīng)著一個含義明確的數(shù)據(jù)抽象 是否盡可能少的依賴其它類 類中的方法是否
13、單用途,2020/10/7,Institute of Computer Software Nanjing University,22,OOD Test,對構(gòu)造的類層次結(jié)構(gòu)的測試:繼承 類層次結(jié)構(gòu)是否涵蓋了所有定義的類 是否能體現(xiàn)OOA中所定義的實例關(guān)聯(lián) 是否能實現(xiàn)OOA中所定義的消息關(guān)聯(lián) 子類是否具有父類沒有的新特性 子類間的共同特性是否完全在父類中得以體現(xiàn),2020/10/7,Institute of Computer Software Nanjing University,23,OOD Test,對類庫支持的測試:強調(diào)的重點是再次軟件開發(fā)的重用 一組子類中關(guān)于某種含義相同或基本相同的操作,
14、是否有相同的接口(包括名字和參數(shù)表) 類中方法的功能是否較單純,相應(yīng)的代碼行是否較少 類的層次結(jié)構(gòu)是否是深度大,寬度小,2020/10/7,Institute of Computer Software Nanjing University,24,OOP Test,雙刃劍! 繼承使代碼重用率提高,同時錯誤傳播的概率也提高 多態(tài)使OO程序?qū)ν獬尸F(xiàn)出強大的處理能力,但同時使得程序內(nèi)“同一”函數(shù)的行為復(fù)雜化,測試時不得不考慮不同類型具體執(zhí)行的代碼和產(chǎn)生的行為 測試的兩個方面 數(shù)據(jù)成員是否滿足數(shù)據(jù)封裝的要求 類是否實現(xiàn)了要求的功能,2020/10/7,Institute of Computer Soft
15、ware Nanjing University,25,OO Unit Test,傳統(tǒng)的單元測試對象:模塊。多采用白盒測試技術(shù)。 OO的單元測試:封裝的類或?qū)ο?。不再孤立地測試單個操作,而是將操作作為類的一部分。 兩個考慮 繼承的成員函數(shù)是否都不需要測試? 繼承的成員函數(shù)在子類中做了改動 成員函數(shù)調(diào)用了改動過的成員函數(shù)的部分 對父類的測試是否能照搬子類?,2020/10/7,Institute of Computer Software Nanjing University,26,OO Integrate Test,傳統(tǒng)的集成測試 自頂向下集成 自底向上集成 OO集成:由于“構(gòu)成類的成分的直接和間
16、接的交互”,傳統(tǒng)的增量集成方式經(jīng)常是不可能的 OO集成測試 靜態(tài)測試:針對程序的結(jié)構(gòu),“逆向工程” 動態(tài)測試:測試需要達到一定的覆蓋標準(達到類所有的服務(wù)要求或服務(wù)提供的一定覆蓋率;依據(jù)類間傳遞的消息,達到對所有執(zhí)行線程的一定覆蓋率;達到類的所有狀態(tài)的一定覆蓋率),2020/10/7,Institute of Computer Software Nanjing University,27,OO System Test,Tips: 應(yīng)該盡量搭建與用戶實際使用環(huán)境相同的測試平臺,應(yīng)該保證被測系統(tǒng)的完整性; 應(yīng)該參考OOA分析的結(jié)果,對應(yīng)描述的對象、屬性和各種服務(wù),檢測軟件是否能夠再現(xiàn)“問題”空間
17、系統(tǒng)測試需要對被測的軟件結(jié)合需求分析做仔細的測試分析,建立測試用例,2020/10/7,Institute of Computer Software Nanjing University,28,OO System Test,具體測試內(nèi)容 功能測試:最常用和必須的測試 強度測試:測試系統(tǒng)的能力最高實際限度 性能測試:測試軟件的運行性能 安全測試:測試是否確實能對系統(tǒng)進行保護,是否有安全保密漏洞 恢復(fù)測試:采用人工的干擾使軟件出錯,中斷使用,檢測系統(tǒng)的恢復(fù)能力,特別是通信系統(tǒng) 可用性測試:測試用戶是否能夠滿意使用,2020/10/7,Institute of Computer Software N
18、anjing University,29,摘要,軟件測試 面向?qū)ο筌浖y試 測試驅(qū)動的開發(fā),2020/10/7,Institute of Computer Software Nanjing University,30,eXtreme Programming,Test Driven Development (TDD)是極限編程的重要特點 思想:以不斷的測試推動代碼的開發(fā),既簡化了代碼,又保證了代碼的質(zhì)量。TDD并不僅是單純的測試工作。,2020/10/7,Institute of Computer Software Nanjing University,31,TDD,優(yōu)勢 通過編寫測試用例,先考
19、慮代碼的使用需求(包括功能、過程、接口等),而且這個描述是無二義的,可執(zhí)行驗證的。通過編寫測試用例,對其功能的分解、使用過程、接口都進行了設(shè)計。 產(chǎn)生的測試用例代碼就是對代碼的最好的解釋。 保障代碼的正確性,能夠迅速發(fā)現(xiàn)、定位bug。,2020/10/7,Institute of Computer Software Nanjing University,32,TDD基本過程,明確當前要完成的功能。可以記錄成一個 TODO 列表 快速完成針對此功能的測試用例編寫 測試代碼編譯不通過 編寫對應(yīng)的功能代碼 測試通過 對代碼進行重構(gòu),并保證測試通過 循環(huán)完成所有功能的開發(fā),2020/10/7,Inst
20、itute of Computer Software Nanjing University,33,測試框架,JUnit by Erich Gamma, Kent Beck CPPUnit XUnit,2020/10/7,Institute of Computer Software Nanjing University,34,Testing Problem,programmers,Should write,few,Do,Why?,I am so busy,It is difficult,2020/10/7,Institute of Computer Software Nanjing Univer
21、sity,35,Testing Problem,Programmers need such kind of tool: “Writing a few lines of code, then a test that should run, or even better, to write a test that wont run, then write the code that will make it run.”,JUnit is that kind of tool!,2020/10/7,Institute of Computer Software Nanjing University,36
22、,JUnit,JUnit is an open source Java testing framework used to write and run repeatable tests JUnit測試是白盒測試 JUnit本質(zhì)上是一套框架 JUnit相對獨立于所編寫的代碼,測試代碼的編寫可以先于實現(xiàn)代碼的編寫,既XP中的Test First Design ,2020/10/7,Institute of Computer Software Nanjing University,37,The Framework of JUnit,2020/10/7,Institute of Computer So
23、ftware Nanjing University,38,A Case Study,Sample Code (for JUnit 3.8) Attention: JUnit 4.x is different! - annotation,2020/10/7,Institute of Computer Software Nanjing University,39,How to Write A TestCase,Creates the objects we will interact with during the test. This testing context is commonly ref
24、erred to as a tests fixture (測試基礎(chǔ)). All we need for the testSimpleAdd test are some Money objects. Exercises the objects in the fixture. Verifies the result,2020/10/7,Institute of Computer Software Nanjing University,40,Assert,assertEquals(expected, actual) assertEquals(message, expected, actual) as
25、sertEquals(expected, actual, delta) assertEquals(message, expected, actual, delta) assertFalse(condition) assertFalse(message, condition) Assert(Not)Null(object) Assert(Not)Null(message, object) Assert(Not)Same(expected, actual) Assert(Not)Same(message, expected, actual) assertTrue(condition) assert
26、True(message, condition),2020/10/7,Institute of Computer Software Nanjing University,41,Structure,setUp() Storing the fixtures objects in instance variables of your TestCase subclass and initialize them by overriding the setUp method tearDown() Releasing the fixtures run() Defining how to run an ind
27、ividual test case. Defining how to run a test suite. testCase(),2020/10/7,Institute of Computer Software Nanjing University,42,Report,Failure:期望發(fā)生的 代碼有bug 單元測試代碼有邏輯錯誤(注意是邏輯錯誤)。 Error:不期望發(fā)生的 檢查測試所需的環(huán)境,如:數(shù)據(jù)庫連接 檢查單元測試代碼 檢查你的系統(tǒng)代碼,2020/10/7,Institute of Computer Software Nanjing University,43,Structure o
28、f Writing A Test,public class MoneyTest extends TestCase private Money f12CHF; private Money f14CHF; protected void setUp() f12CHF= new Money(12, CHF); f14CHF= new Money(14, CHF); public void testSimpleAdd() Money expected= new Money(26, CHF); Money result= f12CHF.add(f14CHF); Assert.assertTrue(expe
29、cted.equals(result); TestCase test= new MoneyTest(simple add) public void runTest() testSimpleAdd(); ,2020/10/7,Institute of Computer Software Nanjing University,44,Design Test Cases,The real world scenarios The number boundaries,Smaller than 0 such as 1, -2, , -100, 0 Bigger than 0 such as 1, 2, , 100,2020/10/7,Institute of Computer Software Nanjing University,45,The Feedback to Code,public class Money private int fAmount;/余額 private String fCurrency;/貨幣類型 public Money(int amount, String currency) fAmount= am
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校長在迎國慶歌唱比賽上的總結(jié)發(fā)言
- 小學2025年度教學工作計劃
- 《小小營養(yǎng)師》課件大班健康活動
- 路基施工質(zhì)量控制措施
- 二零二五年度講師兼職與全職工作合同3篇
- 2024年深圳信息職業(yè)技術(shù)學院高職單招語文歷年參考題庫含答案解析
- 二零二五年度新型城鎮(zhèn)化建設(shè)項目裝飾勞務(wù)分包合同模板3篇
- 二零二五年度金融借貸履約擔保合同3篇
- 三節(jié)光譜法儀器與光學器件培訓講學
- 2024年濟南工程職業(yè)技術(shù)學院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 寒假作業(yè)(試題)2024-2025學年五年級上冊數(shù)學 人教版(十二)
- 銀行信息安全保密培訓
- 市政道路工程交通疏解施工方案
- 2024年部編版初中七年級上冊歷史:部分練習題含答案
- 床旁超聲監(jiān)測胃殘余量
- 上海市松江區(qū)市級名校2025屆數(shù)學高一上期末達標檢測試題含解析
- 綜合實踐活動教案三上
- 《新能源汽車電氣設(shè)備構(gòu)造與維修》項目三 新能源汽車照明與信號系統(tǒng)檢修
- 2024年新課標《義務(wù)教育數(shù)學課程標準》測試題(附含答案)
- 醫(yī)院培訓課件:《靜脈中等長度導(dǎo)管臨床應(yīng)用專家共識》
- 中國國際大學生創(chuàng)新大賽與“挑戰(zhàn)杯”大學生創(chuàng)業(yè)計劃競賽(第十一章)大學生創(chuàng)新創(chuàng)業(yè)教程
評論
0/150
提交評論