第七章 實(shí)現(xiàn)(wang1)_第1頁(yè)
第七章 實(shí)現(xiàn)(wang1)_第2頁(yè)
第七章 實(shí)現(xiàn)(wang1)_第3頁(yè)
第七章 實(shí)現(xiàn)(wang1)_第4頁(yè)
第七章 實(shí)現(xiàn)(wang1)_第5頁(yè)
已閱讀5頁(yè),還剩52頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、2022年5月25日1信息科學(xué)與工程學(xué)院信息科學(xué)與工程學(xué)院2022年5月25日2第7章 實(shí)現(xiàn)u 實(shí)現(xiàn):編碼和測(cè)試統(tǒng)稱為實(shí)現(xiàn) u 編碼:就是把軟件設(shè)計(jì)結(jié)果翻譯成用某種程序設(shè)計(jì)語(yǔ)言書(shū)寫(xiě)的程序 u 程序設(shè)計(jì)語(yǔ)言: 人與計(jì)算機(jī)通信的基本工具,指揮計(jì)算機(jī)按人的意志工作u19461954: 機(jī)器語(yǔ)言和匯編語(yǔ)言,與硬件操作一一對(duì)應(yīng)u1954: 第一個(gè)高級(jí)語(yǔ)言 FORTRAN 語(yǔ)言u(píng)高級(jí)語(yǔ)言的種類:u 基礎(chǔ)語(yǔ)言-Fortran, Basic, Cobol,Algolu 結(jié)構(gòu)化語(yǔ)言-Pl/1, Pascal, C, Adau專用語(yǔ)言-特殊應(yīng)用如 LISP, Prolog2022年5月25日37.1 編碼選擇語(yǔ)言

2、的理想標(biāo)準(zhǔn)為便于程序測(cè)試和維護(hù),減少生存周期的總成本,選用高級(jí)語(yǔ)言應(yīng)用理想的模塊化機(jī)制,以及可讀性好的控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。為便于調(diào)試和提高軟件可靠性,應(yīng)選用編譯程序能夠盡可能多地發(fā)現(xiàn)程序中錯(cuò)誤的語(yǔ)言。為降低軟件開(kāi)發(fā)和維護(hù)成本,選用的語(yǔ)言應(yīng)具有良好的獨(dú)立的編譯機(jī)制。2022年5月25日47.1.1 選擇程序設(shè)計(jì)語(yǔ)言選用語(yǔ)言綜合考慮標(biāo)準(zhǔn)系統(tǒng)用戶的要求 可以使用的編譯程序 可以得到的軟件工具 程序員的知識(shí) 軟件可移植性要求 軟件應(yīng)用領(lǐng)域 工程規(guī)模 如果所開(kāi)發(fā)的系統(tǒng)由用戶負(fù)責(zé)維護(hù),用戶通常要求用他們熟悉的語(yǔ)言書(shū)寫(xiě)程序。 運(yùn)行目標(biāo)系統(tǒng)的環(huán)境中可以提供的編譯程序往往限制了可以選用的語(yǔ)言的范圍。 如果某種語(yǔ)

3、言有支持程序開(kāi)發(fā)工具可以利用,則目標(biāo)的實(shí)現(xiàn)和驗(yàn)證都變得比較容易。 標(biāo)準(zhǔn)化程度高、程序可移植性好是選擇語(yǔ)言的重要標(biāo)準(zhǔn) 最好是選擇程序員最熟悉的語(yǔ)言如果工程規(guī)模龐大,應(yīng)設(shè)計(jì)供該項(xiàng)目專用的程序設(shè)計(jì)語(yǔ)言FORTRAN語(yǔ)言適合工程和科學(xué)計(jì)算;C語(yǔ)言適合系統(tǒng)和實(shí)時(shí)應(yīng)用領(lǐng)域。 2022年5月25日57.1.2 編碼風(fēng)格u源程序代碼的邏輯簡(jiǎn)明清晰、易讀易懂是好程序的一個(gè)重要標(biāo)準(zhǔn),為了做到這一點(diǎn),應(yīng)該遵循下述規(guī)則:程序內(nèi)部的文檔(包括恰當(dāng)?shù)臉?biāo)識(shí)符、適當(dāng)?shù)淖⒔夂统绦虻囊曈X(jué)組織等 )恰當(dāng)?shù)臉?biāo)識(shí)符n選取含義鮮明的名字,使它能正確地提示程序?qū)ο笏淼膶?shí)體。n如果使用縮寫(xiě),那么縮寫(xiě)規(guī)則應(yīng)該一致,并且應(yīng)該給每個(gè)名字加注解

4、。2022年5月25日67.1.2 編碼風(fēng)格恰當(dāng)?shù)淖⒔鈔通常在每個(gè)模塊開(kāi)始處有一段序言性的注解,簡(jiǎn)要描述模塊的功能、主要算法、接口特點(diǎn)、重要數(shù)據(jù)以及開(kāi)發(fā)簡(jiǎn)史。n插在程序中間與一段程序代碼有關(guān)的注解,主要解釋包含這段代碼的必要性。n對(duì)于用高級(jí)語(yǔ)言書(shū)寫(xiě)的源程序,不需要用注解的形式把每個(gè)語(yǔ)句翻譯成自然語(yǔ)言,應(yīng)該利用注解提供一些額外的信息。n應(yīng)該用空格或空行清楚地區(qū)分注解和程序。 程序的視覺(jué)組織n程序清單的布局對(duì)于程序的可讀性也有很大影響,應(yīng)該利用適當(dāng)?shù)碾A梯形式使程序的層次結(jié)構(gòu)清晰明顯2022年5月25日77.1.2 編碼風(fēng)格數(shù)據(jù)說(shuō)明 編程序時(shí)需確定數(shù)據(jù)說(shuō)明的風(fēng)格。為了使數(shù)據(jù)更容易理解和維護(hù),應(yīng)該遵循

5、一些比較簡(jiǎn)單的原則:v數(shù)據(jù)說(shuō)明的次序應(yīng)該標(biāo)準(zhǔn)化 ,如按照數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)類型確定說(shuō)明的次序 ;v當(dāng)多個(gè)變量名在一個(gè)語(yǔ)句中說(shuō)明時(shí),應(yīng)該按字母順序排列這些變量。 v如果設(shè)計(jì)時(shí)使用了一個(gè)復(fù)雜的數(shù)據(jù)結(jié)構(gòu),則應(yīng)該用注釋說(shuō)明用程序設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)這個(gè)數(shù)據(jù)結(jié)構(gòu)的方法和特點(diǎn)。 含義及規(guī)則2022年5月25日87.1.2 編碼風(fēng)格語(yǔ)句構(gòu)造語(yǔ)句構(gòu)造基本規(guī)則不要為了節(jié)省空間而把多個(gè)語(yǔ)句寫(xiě)在同一行 盡量避免復(fù)雜的條件測(cè)試 盡量減少對(duì)“非”條件的測(cè)試 避免大量使用循環(huán)嵌套和條件嵌套 利用括號(hào)使邏輯表達(dá)式或算術(shù)表達(dá)式的運(yùn)算次序清晰直觀 2022年5月25日97.1.2 編碼風(fēng)格輸入輸出 I/O是幾乎所有應(yīng)用程序都要涉及到的,設(shè)

6、計(jì)和編寫(xiě)程序時(shí),應(yīng)考慮相關(guān)規(guī)則v 對(duì)所有輸入數(shù)據(jù)都進(jìn)行檢驗(yàn);v 檢查輸入項(xiàng)重要組合的合法性;v保持輸入格式簡(jiǎn)單;v 用數(shù)據(jù)結(jié)構(gòu)標(biāo)記,不要要求用戶指定數(shù)據(jù)的數(shù)目;v 明確提示交互式輸入的請(qǐng)求,詳細(xì)說(shuō)明可用的選擇或邊界數(shù)值;v 當(dāng)程序設(shè)計(jì)語(yǔ)言的格式有嚴(yán)格要求時(shí),保持輸入格式一致;v 設(shè)計(jì)良好的輸出報(bào)表;v 給所有輸出數(shù)據(jù)加標(biāo)志。 2022年5月25日107.1.2 編碼風(fēng)格效率q效率主要指處理機(jī)時(shí)間和存儲(chǔ)器容量?jī)蓚€(gè)方面。效率主要指處理機(jī)時(shí)間和存儲(chǔ)器容量?jī)蓚€(gè)方面。q在討論提高效率前,應(yīng)該記住在討論提高效率前,應(yīng)該記住3 3條原則:條原則:n效率是性能要求,因此應(yīng)該在需求分析階段確定效率方面的要求。n

7、效率是靠好設(shè)計(jì)來(lái)提高的。n程序的效率和程序的簡(jiǎn)單程度是一致的。不要犧牲程序的清晰性和可讀性來(lái)不必要地提高效率。 q從三個(gè)方面進(jìn)一步討論效率問(wèn)題:從三個(gè)方面進(jìn)一步討論效率問(wèn)題:2022年5月25日117.1.2 編碼風(fēng)格效率1 1. .程序運(yùn)行時(shí)間程序運(yùn)行時(shí)間n寫(xiě)程序之前先簡(jiǎn)化算術(shù)的和邏輯的表達(dá)式;n仔細(xì)研究嵌套的循環(huán),以確定是否有語(yǔ)句可以從內(nèi)層往外移n盡量避免使用多維數(shù)組;n盡量避免使用指針和復(fù)雜的表;n使用執(zhí)行時(shí)間短的算術(shù)運(yùn)算;n不要混合使用不同的數(shù)據(jù)類型;n盡量使用整數(shù)運(yùn)算和布爾表達(dá)式。2022年5月25日127.1.2 編碼風(fēng)格效率2 2. .存儲(chǔ)器效率存儲(chǔ)器效率n在大型計(jì)算機(jī)中必須考慮

8、操作系統(tǒng)頁(yè)式調(diào)度的特點(diǎn),一般說(shuō)來(lái),使用能保持功能域的結(jié)構(gòu)化控制結(jié)構(gòu),是提高效率的好方法。n在微處理機(jī)中,如果要求使用最少的存儲(chǔ)單元,則應(yīng)選用有緊縮存儲(chǔ)器特性的編譯程序,在非常必要時(shí)可以使用匯編語(yǔ)言。2022年5月25日137.1.2 編碼風(fēng)格效率3 3. . 輸入輸出的效率輸入輸出的效率簡(jiǎn)單清晰同樣是提高人機(jī)通信效率的關(guān)鍵。硬件之間的通信效率比較復(fù)雜,但從寫(xiě)程序的角度看,有些簡(jiǎn)單原則可以提高輸入輸出效率:n所有輸入輸出都應(yīng)該有緩存,以減少用于通信的額外開(kāi)銷。n對(duì)二級(jí)存儲(chǔ)器應(yīng)該選用最簡(jiǎn)單的訪問(wèn)方法。n二級(jí)緩存器的輸入輸出應(yīng)該以信息組為單位進(jìn)行。n如果“超高效的”輸入輸出很難被人理解,則不采用這種

9、方法2022年5月25日147.1.2 編碼風(fēng)格不要一味地追求程序的效率,應(yīng)當(dāng)在滿足正確性、可靠性、健壯性、可讀性等質(zhì)量因素的前提下,設(shè)法提高程序的效率;以提高程序的全局效率(指站在整個(gè)系統(tǒng)的角度上考慮的效率)為主,提高局部效率(是指站在模塊或函數(shù)角度上考慮的效率)為輔;不要追求緊湊的代碼,因?yàn)榫o湊的代碼并不能產(chǎn)生高效的機(jī)器碼; 有時(shí)候時(shí)間效率和空間效率可能對(duì)立,此時(shí)應(yīng)當(dāng)分析那個(gè)更重要,作出適當(dāng)?shù)恼壑裕?程序員使用語(yǔ)言編寫(xiě)程序,但不知道源程序究竟如何變成可執(zhí)行代碼、變成什么可執(zhí)行代碼,這些可執(zhí)行代碼的執(zhí)行時(shí)間是長(zhǎng)是短。因此,要從根本上提高程序的效率,需要程序員長(zhǎng)時(shí)間的編程經(jīng)驗(yàn)積累。 程序效率的

10、提高是無(wú)止盡的程序效率的提高是無(wú)止盡的2022年5月25日157.2 軟件測(cè)試基礎(chǔ)u 測(cè)試與測(cè)試的目標(biāo)(G. Myers)u測(cè)試:為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過(guò)程u好的測(cè)試方案是極可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案u成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試7.2.1 軟件測(cè)試的目標(biāo)2022年5月25日167.2.2軟件測(cè)試準(zhǔn)則n所有測(cè)試都應(yīng)該能追溯到用戶需求n應(yīng)該在測(cè)試前制定測(cè)試計(jì)劃n把Pareto原理應(yīng)用到軟件測(cè)試中n應(yīng)該從“小規(guī)?!遍_(kāi)始測(cè)試,逐步進(jìn)行大規(guī)模測(cè)試。n窮舉測(cè)試是不可能的n為了達(dá)到最佳的測(cè)試效果,應(yīng)該由獨(dú)立的第三方從事測(cè)試工作。2022年5月25日177.2.3測(cè)

11、試方法u測(cè)試方法u黑盒測(cè)試:已經(jīng)知道了軟件產(chǎn)品應(yīng)該具有的功能,通過(guò)測(cè)試來(lái)檢驗(yàn)是否每個(gè)功能都能正常使用。該測(cè)試方法又稱功能測(cè)試u黑盒測(cè)試是在程序接口進(jìn)行的測(cè)試,它只檢查程序功能是否能按照規(guī)格說(shuō)明書(shū)的規(guī)定正常使用,程序是否能適當(dāng)?shù)亟邮蛰斎霐?shù)據(jù)產(chǎn)生正確的輸出信息,并且保持外部信息的完整性u(píng)白盒測(cè)試:知道軟件產(chǎn)品內(nèi)部的工作過(guò)程,通過(guò)測(cè)試來(lái)檢驗(yàn)產(chǎn)品內(nèi)部動(dòng)作是否按照規(guī)格說(shuō)明書(shū)的規(guī)定正常進(jìn)行。這種測(cè)試方法又稱結(jié)構(gòu)測(cè)試u白盒測(cè)試方法按照程序內(nèi)部的邏輯測(cè)試程序,檢驗(yàn)程序中的每條通路是否都能按預(yù)定要求正確工作2022年5月25日187.2.4測(cè)試步驟模塊測(cè)試子系統(tǒng)測(cè)試系統(tǒng)測(cè)試平行運(yùn)行 目的:保證每個(gè)模塊作為一個(gè)單

12、元能夠正確運(yùn)行,又稱為單元測(cè)試 集成測(cè)試、組裝測(cè)試、聯(lián)合測(cè)試 重點(diǎn)在于測(cè)試模塊之間的接口 將經(jīng)過(guò)測(cè)試的子系統(tǒng)裝配成一個(gè)完整的系統(tǒng)來(lái)測(cè)試; 發(fā)現(xiàn)設(shè)計(jì)和編碼的錯(cuò)誤,驗(yàn)證系統(tǒng)是否滿足需求說(shuō)明所定義的功能及其動(dòng)態(tài)特性; 也稱為集成測(cè)試。同時(shí)運(yùn)行新舊兩個(gè)系統(tǒng),并且對(duì)處理的結(jié)果進(jìn)行比較,以確定新系統(tǒng)是否滿足相關(guān)性能指標(biāo)。驗(yàn)收測(cè)試 有用戶參加的系統(tǒng)測(cè)試 驗(yàn)證是否滿足用戶的需要2022年5月25日197.2.5測(cè)試階段的信息流測(cè)試測(cè)試軟件配置測(cè)試配置測(cè)試結(jié)果預(yù)期結(jié)果評(píng)價(jià)評(píng)價(jià)錯(cuò)誤錯(cuò)誤率數(shù)據(jù)調(diào)試調(diào)試可靠性可靠性模型模型正確可靠性預(yù)測(cè)包括需求說(shuō)明書(shū)、設(shè)計(jì)說(shuō)明書(shū)、源程序清單等包括測(cè)試計(jì)劃和測(cè)試方案測(cè)試與軟件開(kāi)發(fā)各個(gè)階

13、段的關(guān)系測(cè)試與軟件開(kāi)發(fā)各個(gè)階段的關(guān)系l軟件開(kāi)發(fā)過(guò)程是一個(gè)自頂向下,逐步細(xì)化的過(guò)程l軟件計(jì)劃階段定義軟件作用域l軟件需求分析建立軟件信息域、功能和性能需求、約束等l軟件設(shè)計(jì)l把設(shè)計(jì)用某種程序設(shè)計(jì)語(yǔ)言轉(zhuǎn)換成程序代碼l測(cè)試過(guò)程是依相反順序安排的自底向上,逐步集成的過(guò)程2022年5月25日202022年5月25日217.3 單元測(cè)試u單元測(cè)試又稱模塊測(cè)試,是針對(duì)軟件設(shè)計(jì)的最小單位 程序模塊,進(jìn)行正確性檢驗(yàn)的測(cè)試工作。其目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯(cuò)u單元測(cè)試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測(cè)試用例。多個(gè)模塊可以平行地獨(dú)立進(jìn)行單元測(cè)試u在單元測(cè)試時(shí),測(cè)試者需要依據(jù)詳細(xì)設(shè)計(jì)說(shuō)明書(shū)和源程序清單,了解該

14、模塊的I/O條件和模塊的邏輯結(jié)構(gòu),主要采用白盒測(cè)試技術(shù),輔之以黑盒測(cè)試的測(cè)試用例,使之對(duì)任何合理的輸入和不合理的輸入,都能鑒別和響應(yīng)2022年5月25日227.3 單元測(cè)試 單元測(cè)試重點(diǎn)u模塊接口u局部數(shù)據(jù)結(jié)構(gòu)u重要的執(zhí)行通路u出錯(cuò)處理通路u影響上述各方面特性的邊界條件(1)模塊接口u在單元測(cè)試的開(kāi)始,應(yīng)對(duì)通過(guò)被測(cè)模塊的數(shù)據(jù)流進(jìn)行測(cè)試,測(cè)試項(xiàng)目包括u調(diào)用本模塊的輸入?yún)?shù)是否正確u本模塊調(diào)用子模塊時(shí)輸入給子模塊的參數(shù)是否正確u全局量的定義在各模塊中是否一致2022年5月25日237.3 單元測(cè)試(2) (2) 局部數(shù)據(jù)結(jié)構(gòu)測(cè)試局部數(shù)據(jù)結(jié)構(gòu)測(cè)試u不正確或不一致的數(shù)據(jù)類型說(shuō)明u使用尚未賦值或尚未初始

15、化的變量u錯(cuò)誤的初始值或錯(cuò)誤的缺省值u變量名拼寫(xiě)錯(cuò)或書(shū)寫(xiě)錯(cuò)u不一致的數(shù)據(jù)類型u全局?jǐn)?shù)據(jù)對(duì)模塊的影響 (3) (3) 重要執(zhí)行通路測(cè)試重要執(zhí)行通路測(cè)試u選擇適當(dāng)?shù)臏y(cè)試用例,對(duì)模塊中重要的執(zhí)行路徑進(jìn)行測(cè)試u應(yīng)當(dāng)設(shè)計(jì)測(cè)試用例查找由于錯(cuò)誤的計(jì)算、不正確的比較或不正常的控制流而導(dǎo)致的錯(cuò)誤u對(duì)基本執(zhí)行路徑和循環(huán)進(jìn)行測(cè)試可以發(fā)現(xiàn)大量的路徑錯(cuò)誤2022年5月25日247.3 單元測(cè)試(4) (4) 錯(cuò)誤處理測(cè)試錯(cuò)誤處理測(cè)試u 出錯(cuò)的描述是否難以理解u出錯(cuò)的描述是否能夠?qū)﹀e(cuò)誤定位u顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤是否相符u對(duì)錯(cuò)誤條件的處理正確與否u在對(duì)錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件是否已經(jīng)引起系統(tǒng)的干預(yù)等(5) (5) 邊界

16、測(cè)試邊界測(cè)試u注意數(shù)據(jù)流、控制流中剛好等于、大于或小于確定的比較值時(shí)出錯(cuò)的可能性。對(duì)這些地方要仔細(xì)地選擇測(cè)試用例,認(rèn)真加以測(cè)試u如果對(duì)模塊運(yùn)行時(shí)間有要求的話,還要專門進(jìn)行關(guān)鍵路徑測(cè)試,以確定最壞情況下和平均意義下影響模塊運(yùn)行時(shí)間的因素2022年5月25日257.4 集成測(cè)試u 集成測(cè)試是組裝軟件的系統(tǒng)化技術(shù);組裝測(cè)試,聯(lián)合測(cè)試u 通常,在單元測(cè)試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng)。這時(shí)需要考慮的問(wèn)題是: u 在把各個(gè)模塊連接起來(lái)的時(shí)侯,穿越模塊接口的數(shù)據(jù)是否會(huì)丟失;u 一個(gè)模塊的功能是否會(huì)對(duì)另一個(gè)模塊的功能產(chǎn)生不利的影響;u 各個(gè)子功能組合起來(lái),能否達(dá)到預(yù)期要求的父功能;u 全局

17、數(shù)據(jù)結(jié)構(gòu)是否有問(wèn)題;u 單個(gè)模塊的誤差累積起來(lái),是否會(huì)放大,從而達(dá)到不能接受的程度。發(fā)現(xiàn)并排除在模塊連接中可能出現(xiàn)的問(wèn)題,最終構(gòu)成要求的軟件系統(tǒng)2022年5月25日267.4 集成測(cè)試u子系統(tǒng)的組裝測(cè)試特別稱為部件測(cè)試,它所做的工作是要找出組裝后的子系統(tǒng)與系統(tǒng)需求規(guī)格說(shuō)明之間的不一致。u通常,把模塊組裝成為程序的方式有兩種u 一次性組裝方式:又稱為非漸增式測(cè)試u 增殖式組裝方式:其中又分為自頂向下、自底向上和兩種方法混合測(cè)試方式,又稱漸增式測(cè)試一次性組裝方式u它是一種非增殖式組裝方式。也叫做整體拼裝u使用這種方式,首先對(duì)每個(gè)模塊分別進(jìn)行模塊測(cè)試,然后再把所有模塊組裝在一起進(jìn)行測(cè)試,最終得到要求

18、的軟件系統(tǒng)2022年5月25日277.4 集成測(cè)試系 統(tǒng)結(jié)構(gòu)圖單元測(cè)試整體組裝2022年5月25日287.4 集成測(cè)試增殖式組裝(漸增式組裝)方式u 首先對(duì)一個(gè)個(gè)模塊進(jìn)行模塊測(cè)試,然后將這些模塊逐步組裝成較大的系統(tǒng)u 組裝過(guò)程中邊連接邊測(cè)試,以發(fā)現(xiàn)連接過(guò)程中產(chǎn)生的問(wèn)題u 通過(guò)增殖逐步組裝成為要求的軟件系統(tǒng)u 采用漸增式方式把模塊結(jié)合到程序中時(shí),有自頂向下和自底向上兩種集成策略(1) 自頂向下集成u 該組裝方式將模塊按系統(tǒng)程序結(jié)構(gòu),從主控制模塊開(kāi)始,沿程序的控制層次自頂向下進(jìn)行組裝,逐漸把各個(gè)模塊結(jié)合起來(lái)u 可以采用深度優(yōu)先策略或?qū)挾葍?yōu)先策略,把附屬于主控制模塊的那些模塊組裝到程序結(jié)構(gòu)中去202

19、2年5月25日297.4 集成測(cè)試u深度優(yōu)先策略:先組裝在軟件結(jié)構(gòu)的一條主控制通路上的所有模塊u選用按深度方向組裝的方式,可以首先實(shí)現(xiàn)和驗(yàn)證一個(gè)完整的軟件功能M1M2M3S4M5M8M6S7自頂向下結(jié)合u寬度優(yōu)先策略:沿軟件結(jié)構(gòu)水平移動(dòng),把處于同一個(gè)控制層次上的所有模塊組裝起來(lái)2022年5月25日307.4 集成測(cè)試自頂向下集成實(shí)現(xiàn)的步驟u 對(duì)主控制模塊進(jìn)行測(cè)試u 根據(jù)選定的結(jié)合策略(深度優(yōu)先或?qū)挾葍?yōu)先),每次用一個(gè)實(shí)際模塊代換一個(gè)存根程序u 在結(jié)合進(jìn)一個(gè)模塊的同時(shí)進(jìn)行測(cè)試u 進(jìn)行回歸測(cè)試(全部或部分重復(fù)以前做過(guò)的測(cè)試)自頂向下的結(jié)合策略能夠?qū)χ饕目刂苹蜿P(guān)鍵的抉擇進(jìn)行檢驗(yàn)2022年5月25日

20、317.4 集成測(cè)試(2) 自底向上集成u 自底向上測(cè)試是從程序模塊結(jié)構(gòu)的最底層的模塊開(kāi)始組裝和測(cè)試u 實(shí)現(xiàn)步驟u 把低層模塊組合成實(shí)現(xiàn)某個(gè)特定的軟件功能的族u 寫(xiě)一個(gè)驅(qū)動(dòng)程序,協(xié)調(diào)測(cè)試數(shù)據(jù)的輸入和輸出u 對(duì)由模塊組成的子功能族進(jìn)行測(cè)試u 去掉驅(qū)動(dòng)程序,沿軟件結(jié)構(gòu)自下向上移動(dòng),把子功能族組合起來(lái)形成更大的子功能族2022年5月25日327.4 集成測(cè)試兩種集成測(cè)試策略的優(yōu)缺點(diǎn)比較:u 自頂向下測(cè)試方法的主要優(yōu)點(diǎn)是不需要測(cè)試驅(qū)動(dòng)程序,能夠在測(cè)試階段的早期實(shí)現(xiàn)并驗(yàn)證系統(tǒng)的主要功能,而且能在早期發(fā)現(xiàn)上層模塊的接口錯(cuò)誤u 自頂向下測(cè)試方法的主要缺點(diǎn)是需要存根程序,低層關(guān)鍵模塊中的錯(cuò)誤發(fā)現(xiàn)較晚u 自底向

21、上測(cè)試方法的優(yōu)缺點(diǎn)與自頂向下方法剛好相反u自頂向下增殖的方式和自底向上增殖的方式各有優(yōu)缺點(diǎn)u一般來(lái)講,一種方式的優(yōu)點(diǎn)是另一種方式的缺點(diǎn)2022年5月25日337.4 集成測(cè)試非漸增式和漸增式測(cè)試方法的優(yōu)缺點(diǎn)比較:u 非漸增式方法要對(duì)每個(gè)模塊編寫(xiě)驅(qū)動(dòng)模塊,工作量較大;而漸增式方法可以利用部分已測(cè)試過(guò)的模塊作為測(cè)試軟件u 非漸增式方法發(fā)現(xiàn)模塊間的接口錯(cuò)誤較晚,而漸增式方法則要早一些u 非漸增式方法發(fā)現(xiàn)錯(cuò)誤后較難定位;而漸增式方法則要容易一些u 非漸增式方法可以并行測(cè)試所有模塊,可充分利用人力,加快工程進(jìn)度u 漸增式方法接近全真運(yùn)行環(huán)境,需要較多的測(cè)試運(yùn)行時(shí)間,但對(duì)程序模塊的測(cè)試較為徹底2022年5

22、月25日347.4 集成測(cè)試回歸測(cè)試:u 在集成測(cè)試過(guò)程中,每當(dāng)一個(gè)新模塊結(jié)合進(jìn)來(lái)時(shí),程序就發(fā)生了變化,這些變化可能使原來(lái)工作正常的功能出現(xiàn)問(wèn)題u 所謂回歸測(cè)試是指重新執(zhí)行已經(jīng)做過(guò)的測(cè)試的某個(gè)子集,以保證上述變化沒(méi)有帶來(lái)非預(yù)期的副作用回歸測(cè)試集的3類不同測(cè)試用例u 檢測(cè)軟件全部功能的代表性測(cè)試用例u 專門針對(duì)可能受修改影響的軟件功能的附加測(cè)試u 針對(duì)被修改過(guò)的軟件成分的測(cè)試2022年5月25日357.5 確認(rèn)測(cè)試u 確認(rèn)測(cè)試(驗(yàn)收測(cè)試)的目的:驗(yàn)證軟件的有效性u(píng) 軟件有效性:如果軟件的功能和性能符合用戶的期待,那么軟件就是有效的u 軟件有效性的標(biāo)準(zhǔn):需求分析階段產(chǎn)生的軟件需求規(guī)格說(shuō)明書(shū)7.5.

23、1 確認(rèn)測(cè)試的范圍u 確認(rèn)測(cè)試必須有用戶積極參與,或者以用戶為主進(jìn)行u 確認(rèn)測(cè)試一般使用黑盒測(cè)試法u 測(cè)試計(jì)劃包括要進(jìn)行的測(cè)試的種類和進(jìn)度安排u 測(cè)試過(guò)程規(guī)定了用來(lái)檢測(cè)軟件是否與需求一致的測(cè)試方案u 通過(guò)測(cè)試和調(diào)試要保證軟件能滿足所有功能要求,能達(dá)到每個(gè)性能要求,文檔資料是準(zhǔn)確而完整的2022年5月25日367.5.2 軟件配置復(fù)查u復(fù)查軟件配置的目的是:保證軟件配置的所有成分都齊全,各方面的質(zhì)量都符合要求,文檔與程序一致u具有維護(hù)階段所必須的細(xì)節(jié),而且已經(jīng)編排好目錄u在驗(yàn)收測(cè)試的過(guò)程中應(yīng)該嚴(yán)格遵循用戶指南以及其他操作程序,以便檢驗(yàn)這些使用手冊(cè)的完整性和正確性u(píng)必須仔細(xì)記錄發(fā)現(xiàn)的遺漏或錯(cuò)誤,并

24、且適當(dāng)?shù)匮a(bǔ)充和改正2022年5月25日377.5.3 Alpha和Beta測(cè)試u如果軟件是專為某個(gè)客戶開(kāi)發(fā)的,可以進(jìn)行一系列驗(yàn)收測(cè)試,它是由最終用戶而不是系統(tǒng)開(kāi)發(fā)者進(jìn)行的u如果一個(gè)軟件是為許多客戶開(kāi)發(fā)的,那么讓每個(gè)客戶都進(jìn)行正式的驗(yàn)收測(cè)試是不可能的,這種情況下,軟件開(kāi)發(fā)商需要經(jīng)歷Alpha和Beta測(cè)試。uAlpha測(cè)試:由用戶在開(kāi)發(fā)者的場(chǎng)所進(jìn)行,并且在開(kāi)發(fā)者對(duì)用戶的“指導(dǎo)”下測(cè)試。是在“受控”的環(huán)境下進(jìn)行的測(cè)試uBeta測(cè)試:由軟件的最終用戶在一個(gè)或多個(gè)客戶場(chǎng)所進(jìn)行2022年5月25日387.6 白盒測(cè)試技術(shù)u 測(cè)試階段關(guān)鍵技術(shù)問(wèn)題:設(shè)計(jì)測(cè)試方案u 測(cè)試方案:包括具體的測(cè)試目的,應(yīng)該輸入的測(cè)

25、試數(shù)據(jù)和預(yù)期的結(jié)果u 設(shè)計(jì)測(cè)試方案的基本目標(biāo):確定一組可能發(fā)現(xiàn)某個(gè)(類)錯(cuò)誤的測(cè)試數(shù)據(jù) u 不同的測(cè)試數(shù)據(jù)發(fā)現(xiàn)程序錯(cuò)誤的能力差別很大,為提高測(cè)試效率降低測(cè)試成本,應(yīng)選用高效的測(cè)試數(shù)據(jù)u 測(cè)試用例設(shè)計(jì)技術(shù):u 黑盒測(cè)試的等價(jià)劃分、邊界值分析、錯(cuò)誤推測(cè)法u 白盒測(cè)試的邏輯覆蓋法2022年5月25日39u 邏輯覆蓋:邏輯覆蓋是以的設(shè)計(jì)測(cè)試用例的技術(shù)。它屬白盒測(cè)試 7.6.1 邏輯覆蓋語(yǔ)句覆蓋判定覆蓋條件覆蓋判定/條件覆蓋條件組合覆蓋路徑覆蓋 語(yǔ)句覆蓋: 選擇足夠多的測(cè)試數(shù)據(jù),使被測(cè)程序中的每個(gè)語(yǔ)句至少執(zhí)行一次2022年5月25日40(A1) and (B=0)(A=2) or (X1)X = X /

26、 AX=X+1入口返回PROCEDURE Example(A,B:real; X:real );Begin IF (A1) AND (B=0) THEN X:= X / A; IF ( A=2 ) OR (X1) THEN X:=X+1END;I. A=2, B= 0, X=4 - sacbed語(yǔ)句覆蓋所有的語(yǔ)句至少執(zhí)行一次!語(yǔ)句覆蓋2022年5月25日41(A1) and (B=0)(A=2) or (X1)X = X / AX=X+1入口返回判定覆蓋u每個(gè)判定的每種可能都至少執(zhí)行一次!u即每個(gè)判定的每個(gè)分支都至少執(zhí)行一次!I: A=3, B=0,X=3: sacbdII: A=2, B=1

27、,X=1: sabed 滿足判定覆蓋的測(cè)試用例滿足判定覆蓋的測(cè)試用例一定滿足語(yǔ)句覆蓋:判定覆蓋一定滿足語(yǔ)句覆蓋:判定覆蓋比語(yǔ)句覆蓋強(qiáng)比語(yǔ)句覆蓋強(qiáng)判定覆蓋2022年5月25日42 條件覆蓋一般情況下比判定覆蓋要強(qiáng),但是也有滿足條件覆蓋但不能滿足判定覆蓋的情況條件覆蓋 每個(gè)語(yǔ)句至少執(zhí)行一次,而且判定表達(dá)式中的每個(gè)條件都要取得各種可能的結(jié)果(A1)(A1)(B=0)(B0)(A=2)(A2)(X1)(X1)II: A=1, B=1,X=1: sabdI: A=2, B=0,X=4: sacbedI: A=2, B=0,X=1: sacbedII: A=1, B=1,X=1: sabed(A1) an

28、d (B=0)(A=2) or (X1)X = X / AX=X+1入口返回2022年5月25日43條件組合覆蓋(A1) and (B=0)(A=2) or (X1)X = X / AX=X+1入口返回 條件組合覆蓋要求選取足夠多的測(cè)試數(shù)據(jù),使得每個(gè)判定表達(dá)式中條件的各種可能組合都至少出現(xiàn)一次(A1)(A1)(B=0)(B0)(A=2)(A2)(X1)(X1)I. A=2,B=0,X=4II. A=2,B=1,X=1III. A=1,B=0,X=2IV. A=1,B=1,X=1I: sacbedII: sabedIII: sabedIV: sabd覆蓋路徑 滿足條件組合覆蓋標(biāo)準(zhǔn)的測(cè)試數(shù)據(jù),也一

29、定滿足判定覆蓋、條件覆蓋和判定/條件覆蓋標(biāo)準(zhǔn)。2022年5月25日44點(diǎn)覆蓋、邊覆蓋、路徑覆蓋u 點(diǎn)覆蓋:如果連通圖 G 的子圖G是連通的,而且包含G的所有節(jié)點(diǎn),則稱G是G的點(diǎn)覆蓋u 點(diǎn)覆蓋與語(yǔ)句覆蓋標(biāo)準(zhǔn)相同u 邊覆蓋:如果連通圖 G 的子圖G是連通的,而且包含G的所有邊,則稱G是G的邊覆蓋u 通常與判定覆蓋標(biāo)準(zhǔn)相同u 路徑覆蓋:選取足夠多的測(cè)試數(shù)據(jù),使程序的每條可能路徑都至少執(zhí)行一次(如果程序圖中有環(huán),則要求每個(gè)環(huán)至少經(jīng)過(guò)一次)u 路徑覆蓋是較強(qiáng)的邏輯覆蓋標(biāo)準(zhǔn)2022年5月25日45u 很多白盒測(cè)試技術(shù)是根據(jù)程序的控制結(jié)構(gòu)設(shè)計(jì)測(cè)試數(shù)據(jù)的技術(shù)u 幾種常用的控制結(jié)構(gòu)測(cè)試技術(shù):7.6.2 控制結(jié)構(gòu)

30、測(cè)試1. 基本路徑測(cè)試u 基本路徑測(cè)試是Tom McCabe提出的一種白盒測(cè)試技術(shù)。u 使用該技術(shù)設(shè)計(jì)測(cè)試用例時(shí),通過(guò)計(jì)算程序的環(huán)形復(fù)雜度,并以該復(fù)雜度為指南定義執(zhí)行路徑的基本集合,從該基本集合導(dǎo)出的測(cè)試用例保證程序中的每條語(yǔ)句至少執(zhí)行一次2022年5月25日46u 基本路徑測(cè)試技術(shù)設(shè)計(jì)測(cè)試用例的步驟:u 根據(jù)過(guò)程設(shè)計(jì)結(jié)果畫(huà)出相應(yīng)的流圖u 計(jì)算流圖的環(huán)形復(fù)雜度u 確定線路獨(dú)立路徑的基本集合u 設(shè)計(jì)可強(qiáng)制執(zhí)行基本集合中每條路徑的測(cè)試用例u 求平均值的例子7.6.2 控制結(jié)構(gòu)測(cè)試2. 條件測(cè)試u 條件測(cè)試的目的:不僅是檢測(cè)程序條件中的錯(cuò)誤,而且檢測(cè)程序中的其它錯(cuò)誤2022年5月25日477.6.2

31、 控制結(jié)構(gòu)測(cè)試u 條件測(cè)試方法著重測(cè)試程序中的每個(gè)條件。人們提出了許多條件測(cè)試策略u(píng) 分支測(cè)試:對(duì)于復(fù)合條件C,C的真分支和假分支以及C中的每個(gè)簡(jiǎn)單條件,都應(yīng)該至少執(zhí)行一次u 域測(cè)試:要求對(duì)一個(gè)關(guān)系表達(dá)式執(zhí)行3個(gè)或4個(gè)測(cè)試u BRO測(cè)試:如果在條件中所有布爾變量和關(guān)系算符都只出現(xiàn)一次而且沒(méi)有公共變量,則BRO測(cè)試保證能發(fā)現(xiàn)該條件中的分支錯(cuò)和關(guān)系算符錯(cuò)2022年5月25日487.6.2 控制結(jié)構(gòu)測(cè)試u 循環(huán)測(cè)試是一種白盒測(cè)試技術(shù),它專注于測(cè)試循環(huán)結(jié)構(gòu)的有效性u(píng) 在結(jié)構(gòu)化程序中通常只有3種循環(huán):u 簡(jiǎn)單循環(huán)u 嵌套循環(huán)u 串接循環(huán)3. 循環(huán)測(cè)試2022年5月25日497.7.1 等價(jià)劃分u 等價(jià)劃

32、分是把程序的輸入域劃分成若干個(gè)數(shù)據(jù)類,并據(jù)此導(dǎo)出測(cè)試用例的一種黑盒測(cè)試技術(shù)u 若將所有可能的輸入數(shù)據(jù)劃分成N個(gè)等價(jià)類,則可以從每個(gè)等價(jià)類中只取一組數(shù)據(jù)作為測(cè)試數(shù)據(jù)。這樣選取的數(shù)據(jù)最有代表性,最可能發(fā)現(xiàn)程序中的錯(cuò)誤 2022年5月25日507.7.1 等價(jià)劃分u 等價(jià)分類法是將輸入數(shù)據(jù)的可能值分成若干“等價(jià)類”,每一類以一個(gè)代表性的測(cè)試數(shù)據(jù)進(jìn)行測(cè)試,這個(gè)數(shù)據(jù)就等價(jià)于這一類中的其它數(shù)據(jù)u 該法的關(guān)鍵在于如何將輸入數(shù)據(jù)分類u 例如:輸入的數(shù)據(jù)范圍是1999,我們可以劃分三類:x999u 劃分等價(jià)類可以參考一些啟發(fā)式規(guī)則進(jìn)行u 為了正確劃分等價(jià)類,一是要注意經(jīng)驗(yàn),二是要正確分析被測(cè)程序的功能2022年

33、5月25日51把 數(shù) 字 串轉(zhuǎn)換成整數(shù) 無(wú)效輸入的等價(jià)類非法輸出的等價(jià)類l 16個(gè)數(shù)字字符組成的數(shù)字串(最高位不是零)l 最高位是零的數(shù)字串l 最高位數(shù)字左鄰是負(fù)號(hào)的數(shù)字串 空字符串(全是空格) 左部填充的字符既不是零也不是空格 最高位數(shù)字右邊由數(shù)字和空格混合組成 最高位數(shù)字右邊由數(shù)字和其他字符混合組成 負(fù)號(hào)與最高位數(shù)字之間有空格l 計(jì)算機(jī)能表示的最小負(fù)整數(shù)和零之間的負(fù)整數(shù)l 零l 計(jì)算機(jī)能表示的最大正整數(shù)和零之間的正整數(shù) 有效輸入的等價(jià)類合法輸出的等價(jià)類 比計(jì)算機(jī)能表示的最小負(fù)整數(shù)還小的負(fù)整數(shù) 計(jì)算機(jī)能表示的最大正整數(shù)還大的正整數(shù)7.7.1 等價(jià)劃分2022年5月25日527.7.2 邊界值分析u 處理邊界情況時(shí)程序最容易發(fā)生錯(cuò)誤,因此,設(shè)計(jì)使程序運(yùn)行在邊界情況附近的測(cè)試方案,暴露出錯(cuò)誤的可能性更大 u 使用邊界值分析方法設(shè)計(jì)測(cè)試方案首先應(yīng)確定邊界情況u 對(duì)等價(jià)劃分法中的不同等價(jià)類的邊界情況進(jìn)行重點(diǎn)測(cè)試 u 通常設(shè)計(jì)測(cè)試方案時(shí)總是綜合使用等價(jià)劃分和邊界值分析技術(shù)7.7.3 錯(cuò)誤推測(cè)u 不同類型不同特點(diǎn)的程序通常有一些特殊的容易出錯(cuò)的情況; 有時(shí)測(cè)試數(shù)據(jù)的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論