軟件工程理論及應(yīng)用 教學(xué)課件 作者 周屹第9章_第1頁
軟件工程理論及應(yīng)用 教學(xué)課件 作者 周屹第9章_第2頁
軟件工程理論及應(yīng)用 教學(xué)課件 作者 周屹第9章_第3頁
軟件工程理論及應(yīng)用 教學(xué)課件 作者 周屹第9章_第4頁
軟件工程理論及應(yīng)用 教學(xué)課件 作者 周屹第9章_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第9章面向?qū)ο鬁y試盡管軟件質(zhì)量保證是貫穿軟件開發(fā)全過程的活動,但最關(guān)鍵的步驟是軟件測試,軟件測試是對軟件規(guī)格說明、軟件設(shè)計和編碼的最后復(fù)審,目的是在軟件產(chǎn)品交付之前盡可能發(fā)現(xiàn)軟件中潛伏的錯誤。測試(Testing)是軟件開發(fā)時期的最后一個階段,也是軟件質(zhì)量保證中至關(guān)重要的一個環(huán)節(jié)。大量統(tǒng)計資料表明,軟件測試的工作量往往占軟件開發(fā)總工作量的40%以上,在極端情況,測試那種關(guān)系人的生命安全的軟件所花費的成本,可能相當(dāng)于軟件工程其他步驟總成本的3~5倍。因此,必須高度重視軟件測試工作,絕不要以為寫出程序之后軟件開發(fā)工作就接近完成了,實際上,大約還有同樣多的開發(fā)工作量需要完成。測試的原則:(1)測試除了發(fā)現(xiàn)軟件故障,還要檢查軟件是否滿足了用戶的需求。從用戶的角度看,用戶需求沒有滿足是最大的錯誤。(2)應(yīng)該盡早準(zhǔn)備測試計劃,一般來說做完詳細設(shè)計,就應(yīng)該準(zhǔn)備測試計劃。(3)應(yīng)該用不同的程序員進行測試。程序編寫者只能算程序的調(diào)試者,程序員調(diào)試程序應(yīng)看作編碼的一部分,而不是真正的測試。(4)相信大部分軟件錯誤集中在少數(shù)程序模塊中,特別是那些難以理解的模塊。(5)窮舉測試是不可能的,因此在準(zhǔn)備測試計劃時要很好地設(shè)計測試用例。(6)嚴(yán)格執(zhí)行測試計劃,排除測試的隨意性。(7)應(yīng)當(dāng)對每一個測試結(jié)果做全面檢查。(8)妥善保存測試計劃、測試用例、出錯統(tǒng)計和最終分析報告,為維護提供方便。測試用例和測試場景將根據(jù)這兩種測試方法的特性制定。黑盒測試完全不考慮程序的內(nèi)部結(jié)構(gòu)和處理過程,測試僅在程序界面上進行。設(shè)計測試用例旨在說明:軟件的功能是否可操作;程序能否適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)并產(chǎn)生正確的輸出結(jié)果;在可能的場景中事件驅(qū)動的效果是否盡如人意;能否保持外部信息如數(shù)據(jù)文件的完整性。9.1OOA和OOD模型的正確性9.2OOA和OOD的測試9.3OO軟件的測試案例設(shè)計的影響9.3.1OO概念的測試用例設(shè)計的含義9.3.2傳統(tǒng)測試案例設(shè)計方法的可用性9.3.3基于故障的測試9.4在類級別可用的測試方法9.4.1對OO類的測試9.4.2系統(tǒng)測試9.1OOA和OOD模型的正確性面向?qū)ο蠓椒▽W(xué)的出發(fā)點和基本原則,是盡可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識世界解決問題的方法與過程,也就是使描述問題的問題空間也稱為問題域,與實現(xiàn)解法的解空間也稱為求解域在結(jié)構(gòu)上盡可能一致??陀^世界的問題都是由客觀世界中的實體及實體相互間的關(guān)系構(gòu)成的。把客觀世界中的實體抽象為問題域中的對象(object)。因為所要解決的問題具有特殊性,因此,對象是不固定的。一個雇員可以作為一個對象,一家公司也可以作為一個對象,到底應(yīng)該把什么抽象為對象,由所要解決的問題決定。從本質(zhì)上說,用計算機解決客觀世界的問題,是借助于某種程序設(shè)計語言的規(guī)定,對計算機中的實體施加某種處理,并用處理結(jié)果去映射解。把計算機中的實體稱為解空間對象。顯然,解空間對象取決于所使用的程序設(shè)計語言。例如,匯編語言提供的對象是存儲單元;面向過程的高級語言提供的對象,是各種預(yù)定義類型的變量、數(shù)組、記錄和文件等等。一旦提供了某種解空間對象,就隱含規(guī)定了允許對該類對象施加的操作。面向?qū)ο蠓椒▽W(xué)所提供的“對象”概念,是讓軟件開發(fā)者自己定義或選取解空間對象,然后把軟件系統(tǒng)作為一系列離散的解空間對象的集合。應(yīng)該使這些解空間對象與問題空間對象盡可能一致。這些解空間對象彼此間通過發(fā)送消息而相互作用,從而得出問題的解。也就是說,面向?qū)ο蠓椒ㄊ且环N新的思維方法,它是把程序看作是相互協(xié)作而又彼此獨立的對象的集合。每個對象就像一個微型程序,有自己的數(shù)據(jù)、操作、功能和目的。這樣做就向著減少語義斷層的方向邁了一大步,在許多系統(tǒng)中解空間對象都可以直接模擬問題空間的對象,解空間與問題空間的結(jié)構(gòu)十分一致,因此,這樣的程序易于理解和維護。1.與人類習(xí)慣的思維方法一致傳統(tǒng)的程序設(shè)計技術(shù)是面向過程的設(shè)計方法,這種方法以算法為核心,把數(shù)據(jù)和過程作為相互獨立的部分,數(shù)據(jù)代表問題空間中的客體,程序代碼則用于處理這些數(shù)據(jù)。2.穩(wěn)定性好傳統(tǒng)的軟件開發(fā)方法以算法為核心,開發(fā)過程基于功能分析和功能分解。用傳統(tǒng)方法所建立起來的軟件系統(tǒng)的結(jié)構(gòu)緊密依賴于系統(tǒng)所要完成的功能,當(dāng)功能需求發(fā)生變化時將引起軟件結(jié)構(gòu)的整體修改。3.可重用性好用已有的零部件裝配新的產(chǎn)品,是典型的重用技術(shù),例如,可以用已有的預(yù)制件建筑一幢結(jié)構(gòu)和外形都不同于從前的新大樓。重用是提高生產(chǎn)率的最主要的方法。傳統(tǒng)的軟件重用技術(shù)是利用標(biāo)準(zhǔn)函數(shù)庫,也就是試圖用標(biāo)準(zhǔn)函數(shù)庫中的函數(shù)作為“預(yù)制件”來建造新的軟件系統(tǒng)。4.較易開發(fā)大型軟件產(chǎn)品在開發(fā)大型軟件產(chǎn)品時,組織開發(fā)人員的方法不恰當(dāng)往往是出現(xiàn)問題的主要原因。用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件時,構(gòu)成軟件系統(tǒng)的每個對象就像一個微型程序,有自己的數(shù)據(jù)、操作、功能和用途,因此,可以把一個大型軟件產(chǎn)品分解成一系列本質(zhì)上相互獨立的小產(chǎn)品來處理,這就不僅降低了開發(fā)的技術(shù)難度,而且也使得對開發(fā)工作的管理變得容易多了。這就是為什么對于大型軟件產(chǎn)品來說,面向?qū)ο蠓缎蛢?yōu)于結(jié)構(gòu)化范型的原因之一。5.可維護性好用傳統(tǒng)方法和面向過程語言開發(fā)出來的軟件很難維護,是長期困擾人們的一個嚴(yán)重問題,是軟件危機的突出表現(xiàn)。由于下述因素的存在,使得用面向?qū)ο蠓椒ㄋ_發(fā)的軟件可維護性好:(1)面向?qū)ο蟮能浖€(wěn)定性比較好。如前所述,當(dāng)對軟件的功能或性能的要求發(fā)生變化時,通常不會引起軟件的整體變化,往往只需對局部作一些修改。由于對軟件所需做的改動較小且限于局部,自然比較容易實現(xiàn)。(2)面向?qū)ο蟮能浖容^容易修改。(3)面向?qū)ο蟮能浖容^容易理解。在維護已有軟件的時候,首先需要對原有軟件與此次修改有關(guān)的部分有深入理解,才能正確地完成維護工作。傳統(tǒng)軟件之所以難于維護,在很大程度上是因為修改所涉及的部分分散在軟件各個地方,需要了解的面很廣,內(nèi)容很多,而且傳統(tǒng)軟件的解空間與問題空間的結(jié)構(gòu)很不一致,更增加了理解原有軟件的難度和工作量。面向?qū)ο蟮能浖夹g(shù)符合人們習(xí)慣的思維方式,用這種方法所建立的軟件系統(tǒng)的結(jié)構(gòu)與問題空間的結(jié)構(gòu)基本一致。因此,面向?qū)ο蟮能浖到y(tǒng)比較容易理解。(4)易于測試和調(diào)試。9.2OOA和OOD的測試測試軟件的經(jīng)典策略是,從“小型測試”開始,逐步過渡到“大型測試”。用軟件測試的專業(yè)術(shù)語描述,就是從單元測試開始,逐步進入集成測試,最后進行確認(rèn)測試和系統(tǒng)測試。對于傳統(tǒng)的軟件系統(tǒng)來說,單元測試集中測試最小的可編譯的程序單元(過程模塊),一旦把這些單元都測試完之后,就把它們集成到程序結(jié)構(gòu)中去;在集成過程中還應(yīng)該進行一系列的回歸測試,以發(fā)現(xiàn)模塊接口錯誤和新單元加入到程序中所帶來的副作用;最后,把軟件系統(tǒng)作為一個整體來測試,以發(fā)現(xiàn)軟件需求錯誤。9.3OO軟件的測試案例設(shè)計的影響面向?qū)ο蟪绦虻奶攸c對軟件測試的影響:信息隱蔽對測試的影響、封裝和繼承對測試的影響、單元和集成測試策略必須有很大的改變、測試用例的設(shè)計必須考慮OO軟件的特征。設(shè)計測試用例,并記錄軟件運行性能,與性能要求比較,檢驗是否達到性能要求規(guī)格。繼承的成員函數(shù)需要測試,子類的測試用例可以參照父類。類測試用例設(shè)計:基于故障的測試用例設(shè)計、基于用例的測試用例設(shè)計。9.3.1OO概念的測試用例設(shè)計的含義對象類,作為在語法上獨立的構(gòu)件,應(yīng)當(dāng)允許用在不同的應(yīng)用中。每個類都應(yīng)是可靠的,并且不需了解任何實現(xiàn)的細節(jié)就能復(fù)用。因此,對象類應(yīng)盡可能孤立地進行測試。設(shè)計操作的測試用例時需要注意:首先定義測試對象的各操作的測試用例。對于一個單獨的操作,可通過該操作的前置條件選擇測試用例,產(chǎn)生輸出,讓測試者能夠判斷后置條件是否能夠得到滿足。各個操作的測試與傳統(tǒng)對函數(shù)過程定義的測試基本相同。9.3.2傳統(tǒng)測試案例設(shè)計方法的可用性白盒測試方法可用于類定義的操作的測試,對具有簡潔結(jié)構(gòu)的類,白盒測試最好用于類級別的測試,黑盒測試方法也適合OO系統(tǒng)。9.3.3基于故障的測試人們也可以靠經(jīng)驗和直覺推測程序中可能存在的各種錯誤,從而有針對性地編寫檢查這些錯誤的例子。這就是錯誤猜測法。錯誤推測法的基本思想是:列舉出程序中所有可能有的錯誤和容易發(fā)生錯誤的特殊情況,根據(jù)它們選擇測試方案。9.4在類級別可用的測試方法9.4.1對OO類的測試在設(shè)計對象類的規(guī)格說明測試時需要注意:把對象類當(dāng)做一個黑盒,確認(rèn)類的實現(xiàn)是否遵照它的定義。對于多數(shù)的對象類,主要檢驗在類聲明的public域中的那些操作。對于子類,要檢查繼承父類的public域和protected域的那些操作。檢查所有public域,protected域及private域中的操作以完全檢查對象中定義的操作。生成多個類隨機測試用例:1.對每個客戶類,使用類操作列表來生成一系列隨機測試序列,這些操作發(fā)送消息給服務(wù)器類;2.對生成的每個消息,確定在服務(wù)器對象中的協(xié)作者類和對應(yīng)的操作;3.對服務(wù)器對象中的每個操作(已經(jīng)被來自客戶對象的消息調(diào)用),確定傳遞的消息;4.對每個消息,確定下一層被調(diào)用的操作,并把這些操作結(jié)合進測試序列中。類間測試的方法:類間測試主要測試類之間的交互和協(xié)作。在UML中通常用順序圖和通信圖來描述對象之間的交互和協(xié)作??梢愿鶕?jù)順序圖或通信圖,設(shè)計作為測試用例的消息序列,來檢查對象之間的協(xié)作是否正常。9.4.2系統(tǒng)測試系統(tǒng)測試,是將通過確認(rèn)測試的軟件,作為整個基于計算機系統(tǒng)的一個元素,與計算機硬件、外設(shè)、某些支持軟件、數(shù)據(jù)和人員等其它系統(tǒng)元素結(jié)合在一起,在實際運行環(huán)境下,對計算機系統(tǒng)進行一系列的組裝測試和確認(rèn)測試。系統(tǒng)測試的目的在于通過與系統(tǒng)的需求定義作比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合或與之矛盾的地方。在確認(rèn)測試或系統(tǒng)測試層次,不再考慮類之間相互連接的細節(jié)。和傳統(tǒng)的確認(rèn)測試一樣,面向?qū)ο筌浖拇_認(rèn)測試也集中檢查用戶可見的動作和用戶可識別的輸出。為了導(dǎo)出確認(rèn)測試用例,測試人員應(yīng)該認(rèn)真研究動態(tài)模型和描述系統(tǒng)行為的腳本,以確定最可能發(fā)現(xiàn)用戶交互需求錯誤的情景。當(dāng)然,傳統(tǒng)的黑盒測試方法也可用于設(shè)計確認(rèn)測試用例,但是,對于面向?qū)ο蟮能浖碚f,主要還是根據(jù)動態(tài)模型和描述系統(tǒng)行為的腳本來設(shè)計確認(rèn)測試用例。系統(tǒng)測試是由一系列不同的測試組成。主要目的是對以計算機為基礎(chǔ)的系統(tǒng)進行充分的測試。(1)功能測試,功能測試是在規(guī)定的一段時間內(nèi)運行軟件系統(tǒng)的所有功能,以驗證這個軟件系統(tǒng)有無嚴(yán)重錯誤。(2)可靠性測試,如果系統(tǒng)需求說明書中有對可靠性的要求,需進行可靠性測試。平均失效間隔時間MTBF(MeanTimeBetweenFailures)是否超過規(guī)定時限,因故障而停機的時間MTTR(MeanTimeToRepairs)在一年中應(yīng)不超過多少時間。(3)強度測試,強度測試是要檢查在系統(tǒng)運行環(huán)境不正常乃至發(fā)生故障的情況下,系統(tǒng)可以運行到何種程度的測試。(4)性能測試,性能測試是要檢查系統(tǒng)是否滿足在需求說明書中規(guī)定的性能。特別是對于實時系統(tǒng)或嵌入式系統(tǒng)。性能測試常常需要與強度測試結(jié)合起來進行,并常常要求同時進行硬件和軟件檢測。通常,對軟件性能的檢測表現(xiàn)在以下幾個方面:響應(yīng)時間、吞吐量、輔助存儲區(qū),例如緩沖區(qū),工作區(qū)的大小等、處理精度等。(5)恢復(fù)測試,恢復(fù)測試是要證實在克服硬件故障包括掉電、硬件或網(wǎng)絡(luò)出錯等后,系統(tǒng)能否正常地繼續(xù)進行工作,并不對系統(tǒng)造成任何損害。(6)啟動/停止測試這類測試的目的是驗證在機器啟動及關(guān)機階段,軟件系統(tǒng)正確處理的能力。這類測試包括反復(fù)啟動軟件系統(tǒng)例如,操作系統(tǒng)自舉、網(wǎng)絡(luò)的啟動、應(yīng)用程序的調(diào)用等。在盡可能多的情況下關(guān)機。(7)配置測試,這類測試是要檢查計算機系統(tǒng)內(nèi)各個設(shè)備或各種資源之間的相互聯(lián)結(jié)和功能分配中的錯誤。它主要包括以下幾種:配置命令測試:驗證全部配置命令的可操作性;特別對最大配置和最小配置要進行測試。軟件配置和硬件配置都要測試。循環(huán)配置測試:證明對每個設(shè)備物理與邏輯的,邏輯與功能的每次循環(huán)置換配置都能正常工作。修復(fù)測試:檢查每種配置狀態(tài)及哪個設(shè)備是壞的。并用自動的或手工的方式進行配置狀態(tài)間的轉(zhuǎn)換。(8)安全性測試,安全性測試是要檢驗在系統(tǒng)中已經(jīng)存在的系統(tǒng)安全性、保密性措施是否發(fā)揮作用,有無漏洞。(9)可使用性測試,可使用性測試主要從使用的合理性和方便性等角度對軟件系統(tǒng)進行檢查,發(fā)現(xiàn)人為因素或使用上的問題。要保證在足夠詳細的程度下,用戶界面便于使用;對輸入量可容錯、響應(yīng)時間和響應(yīng)方式合理可行、輸出信息有意義、正確并前后一致;出錯信息能夠引導(dǎo)用戶去解決問題;軟件文檔全面、正規(guī)、確切。(10)可支持性測試,這類測試是要驗證系統(tǒng)的支持策略對于公司與用戶方面是否切實可行。它所采用的方法是試運行支持過程(如對有錯部分打補丁的過程,熱線界面等);對其結(jié)果進行質(zhì)量分析;評審診斷工具;維護過程、內(nèi)部維護文檔;修復(fù)一個錯誤所需平均最少時間。(11)安裝測試,安裝測試的目的不是找軟件錯誤,而是找安

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論